diff --git a/general/package/mavlink-router/files/mavlink.conf b/general/package/mavlink-router/files/mavlink.conf index 09fae7d7..c3ee677e 100644 --- a/general/package/mavlink-router/files/mavlink.conf +++ b/general/package/mavlink-router/files/mavlink.conf @@ -5,7 +5,7 @@ TcpServerPort = 0 Device = /dev/ttyAMA1 Baud = 115200 -[UdpEndpoint wfb] +[UdpEndpoint telemetry_tx] Mode = Normal Address = 127.0.0.1 -Port = 14550 +Port = 14701 diff --git a/general/package/wifibroadcast/files/S98wfb b/general/package/wifibroadcast/files/S98wfb index a3a3b8aa..9c7e57d7 100755 --- a/general/package/wifibroadcast/files/S98wfb +++ b/general/package/wifibroadcast/files/S98wfb @@ -22,11 +22,11 @@ load_ath() { load_interface() { if [ ${driver} = "rtl" ]; then - ifconfig ${wlan} up - iwconfig ${wlan} mode monitor + ifconfig ${wlan} up + iwconfig ${wlan} mode monitor elif [ ${driver} = "ath" ]; then - iwconfig ${wlan} mode monitor - ifconfig ${wlan} up + iwconfig ${wlan} mode monitor + ifconfig ${wlan} up fi iw reg set ${region} @@ -34,7 +34,7 @@ load_interface() { } start_wfb() { - wfb_tx -p ${radio_port} -u ${udp_port} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${rs_k} -n ${rs_n} ${wlan} & + wfb_tx -p ${radio_port} -u ${udp_port} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${fec_timeout} ${wlan} & } case "$1" in @@ -74,6 +74,10 @@ case "$1" in echo "Done." + if [ ${telemetry} = "true" ]; then + sh /usr/bin/telemetry start + fi + else echo "Wifibroadcast service disabled in wfb.conf..." fi @@ -81,7 +85,6 @@ case "$1" in stop) echo "Stopping wifibroadcast service..." kill -9 $(pidof wfb_tx) - ifconfig ${wlan} down ;; *) echo "Usage: $0 {start|stop}" diff --git a/general/package/wifibroadcast/files/telemetry b/general/package/wifibroadcast/files/telemetry new file mode 100755 index 00000000..b475f9d8 --- /dev/null +++ b/general/package/wifibroadcast/files/telemetry @@ -0,0 +1,38 @@ +#!/bin/sh +# +# Start telemetry +# + +. /etc/telemetry.conf + +keydir="/etc" + +start_telemetry() { + 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 + else + if [ ${one_way} = "false" ]; then + telemetry_rx -p ${stream_rx} -u ${port_rx} -K ${keydir}/drone.key -k ${fec_k} -n ${fec_n} ${wlan} & + fi + telemetry_tx -p ${stream_tx} -u ${port_tx} -K ${keydir}/drone.key -B ${bandwidth} -M ${mcs_index} -S ${stbc} -L ${ldpc} -G ${guard_interval} -k ${fec_k} -n ${fec_n} -T ${fec_timeout} ${wlan} & + fi +} + +case "$1" in + start) + echo "Loading MAVLink telemetry service..." + + start_telemetry + + echo "Done." + ;; + stop) + echo "Stopping telemetry service..." + kill -9 $(pidof telemetry_rx) + kill -9 $(pidof telemetry_tx) + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 +esac diff --git a/general/package/wifibroadcast/files/telemetry.conf b/general/package/wifibroadcast/files/telemetry.conf new file mode 100644 index 00000000..a29ab855 --- /dev/null +++ b/general/package/wifibroadcast/files/telemetry.conf @@ -0,0 +1,14 @@ +wlan=wlan0 +bandwidth=20 +stbc=1 +ldpc=1 +mcs_index=1 +stream_rx=1 +stream_tx=2 +port_rx=14700 +port_tx=14701 +fec_k=1 +fec_n=2 +fec_timeout=0 +guard_interval=long +one_way=true diff --git a/general/package/wifibroadcast/files/wfb.conf b/general/package/wifibroadcast/files/wfb.conf index c0194902..a8e5f901 100644 --- a/general/package/wifibroadcast/files/wfb.conf +++ b/general/package/wifibroadcast/files/wfb.conf @@ -1,14 +1,16 @@ -daemon=0 +daemon=1 driver=rtl wlan=wlan0 region=BO channel=14 bandwidth=20 -stbc=0 -ldpc=0 +stbc=1 +ldpc=1 mcs_index=1 radio_port=3 udp_port=5600 -rs_k=8 -rs_n=12 +fec_k=8 +fec_n=12 +fec_timeout=0 guard_interval=long +telemetry=false diff --git a/general/package/wifibroadcast/readme.md b/general/package/wifibroadcast/readme.md index 9ac2f1fd..ebdff98a 100644 --- a/general/package/wifibroadcast/readme.md +++ b/general/package/wifibroadcast/readme.md @@ -47,7 +47,11 @@ outgoing: iwconfig wlan0 channel X ``` -Никаких дополнительных настроек для wfb_tx пока не вынесено в конфиг, для тестов их можно добавлять в функции start_wfb в скрипте инициализации /etc/init.d/S98wfb +# Телеметрия + +Включается в /etc/wfb.conf, настройки в /etc/telemetry.conf + +Важно! Для работы телеметрии, придется экспериментировать с выделением памяти для системы. Отключить ВСЕ не нужное в камере кроме основного потока, проверить сколько свободной памяти осталось после выделения видео подсистеме и передать свободную в OS. (для GK7205v300: fw_setenv osmem 64M) diff --git a/general/package/wifibroadcast/wifibroadcast.mk b/general/package/wifibroadcast/wifibroadcast.mk index 54704d32..60d27e27 100644 --- a/general/package/wifibroadcast/wifibroadcast.mk +++ b/general/package/wifibroadcast/wifibroadcast.mk @@ -20,6 +20,7 @@ endef define WIFIBROADCAST_INSTALL_TARGET_CMDS $(INSTALL) -m 0755 -D $(@D)/wfb_tx $(TARGET_DIR)/usr/bin + $(INSTALL) -m 0755 -D $(@D)/wfb_rx $(TARGET_DIR)/usr/bin $(INSTALL) -m 0755 -D $(@D)/wfb_keygen $(TARGET_DIR)/usr/bin $(INSTALL) -m 755 -d $(TARGET_DIR)/etc @@ -27,6 +28,12 @@ define WIFIBROADCAST_INSTALL_TARGET_CMDS $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d cp ../general/package/wifibroadcast/files/S98wfb $(TARGET_DIR)/etc/init.d + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + cp ../general/package/wifibroadcast/files/telemetry $(TARGET_DIR)/usr/bin + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc + cp ../general/package/wifibroadcast/files/telemetry.conf $(TARGET_DIR)/etc endef $(eval $(generic-package))