From a0626194f760c682ec5e47d7313502546cfeafd5 Mon Sep 17 00:00:00 2001 From: viktorxda <35473052+viktorxda@users.noreply.github.com> Date: Sun, 21 Jan 2024 20:36:20 +0100 Subject: [PATCH] [no ci] Package: add rtl8733bu to wifibroadcast (#1272) --- general/package/datalink/files/telemetry | 28 ++- .../package/wifibroadcast/files/wifibroadcast | 227 +++++++++--------- 2 files changed, 133 insertions(+), 122 deletions(-) diff --git a/general/package/datalink/files/telemetry b/general/package/datalink/files/telemetry index bb6d8d97..647dbb2f 100755 --- a/general/package/datalink/files/telemetry +++ b/general/package/datalink/files/telemetry @@ -7,24 +7,27 @@ . /etc/telemetry.conf keydir="/etc" - fw=$(grep "BUILD_OPTION" "/etc/os-release" | cut -d= -f2) if [ ! -f /usr/bin/telemetry_rx -a ! -f /usr/bin/telemetry_tx ]; then - ln -s /usr/bin/wfb_rx /usr/bin/telemetry_rx ; chmod +x /usr/bin/telemetry_rx - ln -s /usr/bin/wfb_tx /usr/bin/telemetry_tx ; chmod +x /usr/bin/telemetry_tx + ln -s /usr/bin/wfb_rx /usr/bin/telemetry_rx; chmod +x /usr/bin/telemetry_rx + ln -s /usr/bin/wfb_tx /usr/bin/telemetry_tx; chmod +x /usr/bin/telemetry_tx fi start_drone_telemetry() { if [ ${one_way} = "false" ]; then telemetry_rx -p ${stream_rx} -u ${port_rx} -K ${keydir}/${unit}.key -i ${link_id} ${wlan} > /dev/null & fi - telemetry_tx -p ${stream_tx} -u ${port_tx} -K ${keydir}/${unit}.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${pool_timeout} -i ${link_id} -f ${frame_type} ${wlan} > /dev/null & + telemetry_tx -p ${stream_tx} -u ${port_tx} -K ${keydir}/${unit}.key -B ${bandwidth} \ + -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} \ + -T ${pool_timeout} -i ${link_id} -f ${frame_type} ${wlan} > /dev/null & } start_gs_telemetry() { if [ ${one_way} = "false" ]; then - telemetry_tx -p ${stream_tx} -u ${port_tx} -K ${keydir}/${unit}.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${pool_timeout} -i ${link_id} -f ${frame_type} ${wlan} > /dev/null & + telemetry_tx -p ${stream_tx} -u ${port_tx} -K ${keydir}/${unit}.key -B ${bandwidth} \ + -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} \ + -T ${pool_timeout} -i ${link_id} -f ${frame_type} ${wlan} > /dev/null & fi telemetry_rx -p ${stream_rx} -u ${port_rx} -K ${keydir}/${unit}.key -i ${link_id} ${wlan} > /dev/null & } @@ -32,25 +35,28 @@ start_gs_telemetry() { case "$1" in start) echo "Loading MAVLink telemetry service..." - if [ ${router} -eq 1 ] || [ ${fw} = "lte" ]; then mavlink-routerd -c /etc/mavlink.conf > /dev/null 2>&1 & else - mavfwd --channels ${channels} --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} > /dev/null & + mavfwd --channels ${channels} --master ${serial} --baudrate ${baud} \ + --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} > /dev/null & fi if [ ${fw} = "fpv" ] || [ ${fw} = "venc" ]; then start_${unit}_telemetry fi echo "Done." ;; + stop) echo "Stopping telemetry services..." - kill -9 $(pidof telemetry_rx) - kill -9 $(pidof telemetry_tx) - kill -9 $(pidof mavlink-routerd) - kill -9 $(pidof mavfwd) + killall -q telemetry_rx + killall -q telemetry_tx + killall -q mavlink-routerd + killall -q mavfwd ;; + *) echo "Usage: $0 {start|stop}" exit 1 + ;; esac diff --git a/general/package/wifibroadcast/files/wifibroadcast b/general/package/wifibroadcast/files/wifibroadcast index 03e8c72f..99bdd38b 100755 --- a/general/package/wifibroadcast/files/wifibroadcast +++ b/general/package/wifibroadcast/files/wifibroadcast @@ -9,152 +9,157 @@ keydir="/etc" chip=$(ipcinfo -c) vendor=$(ipcinfo -v) - driver="" set_mcs() { - if [ ${vendor} = "ingenic" ]; then - mcs=$(ls -l /lib/firmware | grep "htc_9271" | awk {'print $11'} | cut -d "." -f3) - else - mcs=$(ls -l /lib/firmware/ath9k_htc | grep "htc_9271-1.4.0.fw" | cut -d "." -f6) - fi - if [ -z "${mcs}" ]; then - setmcs ${mcs_index} - fi - if [ ${mcs_index} -eq 1 ] || [ ${mcs_index} -eq 3 ]; then - if [ ! ${mcs_index} -eq ${mcs} ]; then + if [ ${vendor} = "ingenic" ]; then + mcs=$(ls -l /lib/firmware | grep "htc_9271" | awk {'print $11'} | cut -d "." -f3) + else + mcs=$(ls -l /lib/firmware/ath9k_htc | grep "htc_9271-1.4.0.fw" | cut -d "." -f6) + fi + + if [ -z "${mcs}" ]; then setmcs ${mcs_index} - sleep 3 - fi - fi + fi + + if [ ${mcs_index} -eq 1 ] || [ ${mcs_index} -eq 3 ]; then + if [ ! ${mcs_index} -eq ${mcs} ]; then + setmcs ${mcs_index} + sleep 3 + fi + fi } # "0bda:8813" -> (8814) -> 8814au # "0846:9052" -> (8811) -> 8821au detect_wifi_card() { - echo "Detecting wifi card vendor..." - devices=$(lsusb | cut -d ' ' -f6 | sort | uniq) - for card in ${devices} - do - case "${card}" in - "0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101" | "2604:0012") - driver="realtek" - modprobe 88XXau rtw_tx_pwr_idx_override=${driver_txpower_override} - ;; - "0cf3:9271" | "040d:3801") - driver="atheros" - if ! [ ${unit} = "gs" ]; then - set_mcs - fi - modprobe mac80211 - modprobe ath9k_hw txpower=${txpower} - modprobe ath9k_htc - ;; - esac - done + echo "Detecting wifi card vendor..." + devices=$(lsusb | cut -d ' ' -f6 | sort | uniq) + for card in ${devices}; do + case "${card}" in + "0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101" | "2604:0012") + driver="realtek" + modprobe 88XXau rtw_tx_pwr_idx_override=${driver_txpower_override} + ;; - if [ -z "${driver}" ]; then - echo "No usb wifi card detected. Check wifi stick connection, usb power or possible bad soldering." - exit - else - echo "Detected:" ${driver} - fi + "0bda:f72b") + driver="realtek" + modprobe 8733bu + ;; - echo "Awaiting interface ${wlan} in system..." + "0cf3:9271" | "040d:3801") + driver="atheros" + if ! [ ${unit} = "gs" ]; then + set_mcs + fi + modprobe mac80211 + modprobe ath9k_hw txpower=${txpower} + modprobe ath9k_htc + ;; + esac + done - local n=0 - while ! $(ifconfig -a | grep -q ${wlan}) - do - if [ ${n} -ge 5 ]; then - echo "No interface ${wlan}. Check wifi stick connection, usb power or possible bad soldering." - exit + if [ -z "${driver}" ]; then + echo "No usb wifi card detected. Check wifi stick connection, usb power or possible bad soldering." + exit + else + echo "Detected:" ${driver} fi - sleep 0.5 - n=$(expr ${n} + 1) - done + + echo "Awaiting interface ${wlan} in system..." + + local n=0 + while ! $(ifconfig -a | grep -q ${wlan}); do + if [ ${n} -ge 5 ]; then + echo "No interface ${wlan}. Check wifi stick connection, usb power or possible bad soldering." + exit + fi + sleep 0.5 + n=$(expr ${n} + 1) + done } load_modules() { - modprobe cfg80211 - detect_wifi_card + modprobe cfg80211 + detect_wifi_card } load_interface() { - if [ ${driver} = "realtek" ]; then - ifconfig ${wlan} up - iwconfig ${wlan} mode monitor - elif [ ${driver} = "atheros" ]; then - iwconfig ${wlan} mode monitor - ifconfig ${wlan} up - fi + if [ ${driver} = "realtek" ]; then + ifconfig ${wlan} up + iwconfig ${wlan} mode monitor + elif [ ${driver} = "atheros" ]; then + iwconfig ${wlan} mode monitor + ifconfig ${wlan} up + fi - iw reg set ${region} + iw reg set ${region} - if [ ! -z "${frequency}" ]; then - iwconfig ${wlan} freq ${frequency} - else - iwconfig ${wlan} channel ${channel} - fi - # dirty fix crash if txpower set. setting txpower disabled because patched driver always set txpower level 58 - # iw dev ${wlan} set txpower fixed $((${txpower} * 100)) + if [ ! -z "${frequency}" ]; then + iwconfig ${wlan} freq ${frequency} + else + iwconfig ${wlan} channel ${channel} + fi + + # dirty fix crash if txpower set. setting txpower disabled because patched driver always set txpower level 58 + # iw dev ${wlan} set txpower fixed $((${txpower} * 100)) } start_drone_wfb() { - wfb_tx -p ${stream} -u ${udp_port} -R ${rcv_buf} -K ${keydir}/${unit}.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${pool_timeout} -i ${link_id} -f ${frame_type} ${wlan} > /dev/null & + wfb_tx -p ${stream} -u ${udp_port} -R ${rcv_buf} -K ${keydir}/${unit}.key -B ${bandwidth} \ + -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} \ + -T ${pool_timeout} -i ${link_id} -f ${frame_type} ${wlan} > /dev/null & } start_gs_wfb() { - wfb_rx -c ${udp_addr} -u ${udp_port} -p ${stream} -K ${keydir}/${unit}.key -i ${link_id} ${wlan} > /dev/null & + wfb_rx -c ${udp_addr} -u ${udp_port} -p ${stream} -K ${keydir}/${unit}.key -i ${link_id} ${wlan} > /dev/null & } case "$1" in - start) - if [ ${daemon} -eq 1 ]; then + start) + if [ ${daemon} -eq 1 ]; then + echo "Loading modules and wifi card driver..." + load_modules - echo "Loading modules and wifi card driver..." + echo "Preparing interface wlan..." + load_interface - load_modules + if ! cat ${keydir}/${unit}.key > /dev/null 2>&1; then + echo "Generating drone & ground station keys..." + cd ${keydir}; wfb_keygen + else + echo ${unit} "key exist..." + fi - echo "Preparing interface wlan..." - - load_interface - - if ! cat ${keydir}/${unit}.key > /dev/null 2>&1; then - echo "Generating drone & ground station keys..." - cd ${keydir} ; wfb_keygen - else - echo ${unit} "key exist..." - fi + echo "Starting Wifibroadcast service..." + start_${unit}_wfb + echo "Done." - echo "Starting Wifibroadcast service..." - - start_${unit}_wfb - - echo "Done." - - if [ ${telemetry} = "true" ]; then - if [ ${chip} = "gk7205v200" ]; then - # UART2_RX mux - devmem 0x120c0010 32 0x1e04 + if [ ${telemetry} = "true" ]; then + if [ ${chip} = "gk7205v200" ]; then + # UART2_RX mux + devmem 0x120c0010 32 0x1e04 + fi + telemetry start + fi + else + echo "Wifibroadcast service disabled in wfb.conf..." fi - telemetry start - fi + ;; - else - echo "Wifibroadcast service disabled in wfb.conf..." - fi - ;; - stop) - echo "Stopping all services..." - kill -9 $(pidof wfb_tx) - kill -9 $(pidof wfb_rx) - kill -9 $(pidof telemetry_rx) - kill -9 $(pidof telemetry_tx) - kill -9 $(pidof mavlink-routerd) - kill -9 $(pidof mavfwd) - ;; - *) - echo "Usage: $0 {start|stop}" - exit 1 + stop) + echo "Stopping all services..." + killall -q wfb_tx + killall -q wfb_rx + killall -q telemetry_rx + killall -q telemetry_tx + killall -q mavlink-routerd + killall -q mavfwd + ;; + + *) + echo "Usage: $0 {start|stop}" + exit 1 + ;; esac