From fa92f2a2ae9e9ef28bf043a194b91556d9156ef8 Mon Sep 17 00:00:00 2001 From: cronyx Date: Tue, 28 Mar 2023 07:29:42 +0300 Subject: [PATCH] rework fpv scripts for use wfb or lte transport (#693) --- br-ext-chip-goke/Config.in | 1 + .../configs/gk7205v200_fpv_defconfig | 3 +- .../configs/gk7205v300_fpv_defconfig | 6 +- br-ext-chip-goke/package/datalink | 1 + br-ext-chip-hisilicon/Config.in | 1 + .../configs/hi3516ev200_fpv_defconfig | 3 +- .../configs/hi3516ev300_fpv_defconfig | 6 +- br-ext-chip-hisilicon/package/datalink | 1 + general/package/datalink/Config.in | 4 ++ general/package/datalink/datalink.mk | 27 +++++++++ general/package/datalink/files/S98datalink | 55 +++++++++++++++++++ general/package/datalink/files/datalink.conf | 11 ++++ .../files/telemetry | 13 +++-- .../files/telemetry.conf | 7 ++- .../files/tweaksys | 5 ++ general/package/wifibroadcast/Config.in | 1 + general/package/wifibroadcast/files/wfb.conf | 2 - .../files/{S98wfb => wifibroadcast} | 14 ++--- general/package/wifibroadcast/readme.md | 43 --------------- .../package/wifibroadcast/wifibroadcast.mk | 11 +--- 20 files changed, 137 insertions(+), 78 deletions(-) create mode 120000 br-ext-chip-goke/package/datalink create mode 120000 br-ext-chip-hisilicon/package/datalink create mode 100644 general/package/datalink/Config.in create mode 100644 general/package/datalink/datalink.mk create mode 100755 general/package/datalink/files/S98datalink create mode 100644 general/package/datalink/files/datalink.conf rename general/package/{wifibroadcast => datalink}/files/telemetry (81%) rename general/package/{wifibroadcast => datalink}/files/telemetry.conf (99%) rename general/package/{wifibroadcast => datalink}/files/tweaksys (96%) rename general/package/wifibroadcast/files/{S98wfb => wifibroadcast} (92%) delete mode 100644 general/package/wifibroadcast/readme.md diff --git a/br-ext-chip-goke/Config.in b/br-ext-chip-goke/Config.in index 402c30f0..b927479a 100644 --- a/br-ext-chip-goke/Config.in +++ b/br-ext-chip-goke/Config.in @@ -3,6 +3,7 @@ source "$BR2_EXTERNAL_GOKE_PATH/package/goke_patcher/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/aura-httpd/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/baresip-openipc/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/comgt/Config.in" +source "$BR2_EXTERNAL_GOKE_PATH/package/datalink/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/dropbear-openipc/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/df_sdwan_edge/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/fdk-aac-openipc/Config.in" diff --git a/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig b/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig index 21f3c17c..c3900ecc 100644 --- a/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig +++ b/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig @@ -99,6 +99,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # BR2_PACKAGE_WIREGUARD_TOOLS is not set # FPV +BR2_PACKAGE_DATALINK=y BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y @@ -107,7 +108,5 @@ BR2_PACKAGE_MAVFWD=y BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_GDB=y -# # Compression and decompression -# BR2_PACKAGE_LIBZIP=y diff --git a/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig b/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig index 1995bfd2..320c142a 100644 --- a/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig +++ b/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig @@ -99,15 +99,17 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # BR2_PACKAGE_WIREGUARD_TOOLS is not set # FPV +BR2_PACKAGE_DATALINK=y BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y +# ZEROTIER +# BR2_PACKAGE_ZEROTIER_ONE is not set + # DEBUG BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_GDB=y -# # Compression and decompression -# BR2_PACKAGE_LIBZIP=y diff --git a/br-ext-chip-goke/package/datalink b/br-ext-chip-goke/package/datalink new file mode 120000 index 00000000..53bae00c --- /dev/null +++ b/br-ext-chip-goke/package/datalink @@ -0,0 +1 @@ +../../general/package/datalink \ No newline at end of file diff --git a/br-ext-chip-hisilicon/Config.in b/br-ext-chip-hisilicon/Config.in index 2e9ca602..96a704d8 100644 --- a/br-ext-chip-hisilicon/Config.in +++ b/br-ext-chip-hisilicon/Config.in @@ -5,6 +5,7 @@ source "$BR2_EXTERNAL_HISILICON_PATH/package/hisi_patcher/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/aura-httpd/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/baresip-openipc/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/comgt/Config.in" +source "$BR2_EXTERNAL_HISILICON_PATH/package/datalink/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/dropbear-openipc/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/f2fs-tools-openipc/Config.in" source "$BR2_EXTERNAL_HISILICON_PATH/package/fdk-aac-openipc/Config.in" diff --git a/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig b/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig index 42515d70..20353d57 100644 --- a/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig @@ -99,6 +99,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # BR2_PACKAGE_WIREGUARD_TOOLS is not set # FPV +BR2_PACKAGE_DATALINK=y BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y @@ -107,7 +108,5 @@ BR2_PACKAGE_MAVFWD=y BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_GDB=y -# # Compression and decompression -# BR2_PACKAGE_LIBZIP=y diff --git a/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig b/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig index 151771f1..efebb5a6 100644 --- a/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig @@ -99,15 +99,17 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # BR2_PACKAGE_WIREGUARD_TOOLS is not set # FPV +BR2_PACKAGE_DATALINK=y BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y +# ZEROTIER +# BR2_PACKAGE_ZEROTIER_ONE is not set + # DEBUG BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_GDB=y -# # Compression and decompression -# BR2_PACKAGE_LIBZIP=y diff --git a/br-ext-chip-hisilicon/package/datalink b/br-ext-chip-hisilicon/package/datalink new file mode 120000 index 00000000..53bae00c --- /dev/null +++ b/br-ext-chip-hisilicon/package/datalink @@ -0,0 +1 @@ +../../general/package/datalink \ No newline at end of file diff --git a/general/package/datalink/Config.in b/general/package/datalink/Config.in new file mode 100644 index 00000000..cb22ad4c --- /dev/null +++ b/general/package/datalink/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_DATALINK + bool "datalink" + help + Base package for build video link over wifi or lte. diff --git a/general/package/datalink/datalink.mk b/general/package/datalink/datalink.mk new file mode 100644 index 00000000..f16330c9 --- /dev/null +++ b/general/package/datalink/datalink.mk @@ -0,0 +1,27 @@ +################################################################################ +# +# datalink +# +################################################################################ +DATALINK_VERSION = +DATALINK_SITE = +DATALINK_LICENSE = GPL-2.0 + +define DATALINK_INSTALL_TARGET_CMDS + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc + cp ../general/package/datalink/files/datalink.conf $(TARGET_DIR)/etc + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc + cp ../general/package/datalink/files/telemetry.conf $(TARGET_DIR)/etc + + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d + cp ../general/package/datalink/files/S98datalink $(TARGET_DIR)/etc/init.d + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + cp ../general/package/datalink/files/telemetry $(TARGET_DIR)/usr/bin + + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + cp ../general/package/datalink/files/tweaksys $(TARGET_DIR)/usr/bin +endef + +$(eval $(generic-package)) diff --git a/general/package/datalink/files/S98datalink b/general/package/datalink/files/S98datalink new file mode 100755 index 00000000..75d287f0 --- /dev/null +++ b/general/package/datalink/files/S98datalink @@ -0,0 +1,55 @@ +#!/bin/sh +# +# Start fpv datalink +# + +. /etc/datalink.conf + +chip=$(ipcinfo -c) +cli="yaml-cli -i /etc/majestic.yaml" + +case "$1" in + start) + if ! [ -f /etc/system.ok ]; then + killall majestic + tweaksys ${chip} + fi + + echo "Starting FPV datalink..." + + if [ ${transport} = "lte" ]; then + if [ ${usb_modem} = "true" ]; then + echo "Starting lte modem configuration..." + echo "Running usb_modswitch or other shit here..." + fi + # for the future + #cli -s .outgoing.url1 udp://${gs_ipaddr}:${gs_port} + if [ ${use_zt} = "true" ]; then + echo "Starting ZeroTier-One daemon..." + /usr/sbin/zerotier-one -d & + if [ ! -f /var/lib/zerotier-one/networks.d/${zt_netid}.conf ]; then + sleep 8 + zerotier-cli join ${zt_netid} &> /dev/null + echo "Don't forget authorize in the my.zerotier.com!" + fi + fi + if [ ${telemetry} = "true" ]; then + /usr/bin/telemetry start + fi + else + echo "Starting wifibroadcast service..." + /usr/bin/wifibroadcast start + fi + ;; + stop) + echo "Stopping all services..." + kill -9 $(pidof wfb_tx) + 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 +esac diff --git a/general/package/datalink/files/datalink.conf b/general/package/datalink/files/datalink.conf new file mode 100644 index 00000000..b687e213 --- /dev/null +++ b/general/package/datalink/files/datalink.conf @@ -0,0 +1,11 @@ +daemon=1 +transport=wfb +telemetry=true + +usb_modem=false +gs_ipaddr=127.0.0.1 +gs_port=5600 + +# firmware for 8Mb flash do not contain zerotier +use_zt=false +zt_netid= diff --git a/general/package/wifibroadcast/files/telemetry b/general/package/datalink/files/telemetry similarity index 81% rename from general/package/wifibroadcast/files/telemetry rename to general/package/datalink/files/telemetry index a93c00f8..75019e92 100755 --- a/general/package/wifibroadcast/files/telemetry +++ b/general/package/datalink/files/telemetry @@ -3,6 +3,7 @@ # Start telemetry # +. /etc/datalink.conf . /etc/telemetry.conf keydir="/etc" @@ -23,20 +24,22 @@ case "$1" in start) echo "Loading MAVLink telemetry service..." - if [ ${router} -eq 1 ]; then + if [ ${router} -eq 1 ] || [ ${transport} = "lte" ]; then /usr/bin/mavlink-routerd & else mavfwd --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} & fi - - start_telemetry - + if [ ${transport} = "wfb" ]; then + start_telemetry + fi echo "Done." ;; stop) - echo "Stopping telemetry service..." + echo "Stopping telemetry services..." kill -9 $(pidof telemetry_rx) kill -9 $(pidof telemetry_tx) + kill -9 $(pidof mavlink-routerd) + kill -9 $(pidof mavfwd) ;; *) echo "Usage: $0 {start|stop}" diff --git a/general/package/wifibroadcast/files/telemetry.conf b/general/package/datalink/files/telemetry.conf similarity index 99% rename from general/package/wifibroadcast/files/telemetry.conf rename to general/package/datalink/files/telemetry.conf index b4e40b5b..bf1e5fdc 100644 --- a/general/package/wifibroadcast/files/telemetry.conf +++ b/general/package/datalink/files/telemetry.conf @@ -1,6 +1,9 @@ serial=/dev/ttyAMA0 -wlan=wlan0 baud=115200 +### router: use simple mavfwd (0) or classic mavlink-routerd (1) +router=0 + +wlan=wlan0 bandwidth=20 stbc=1 ldpc=1 @@ -15,5 +18,3 @@ fec_n=2 fec_timeout=0 guard_interval=long one_way=false -### router: use simple mavfwd (0) or classic mavlink-routerd (1) -router=0 diff --git a/general/package/wifibroadcast/files/tweaksys b/general/package/datalink/files/tweaksys similarity index 96% rename from general/package/wifibroadcast/files/tweaksys rename to general/package/datalink/files/tweaksys index c2e6e137..19cc641c 100755 --- a/general/package/wifibroadcast/files/tweaksys +++ b/general/package/datalink/files/tweaksys @@ -50,6 +50,11 @@ all_other() { ${cli} -s .isp.lowDelay true # ${cli} -s .video0.sliceUnits 4 fi +# tune socket buffer +cat >> /etc/sysctl.conf << EOF +net.core.rmem_default=524288 +net.core.rmem_max=2048000 +EOF # add outgoing rtp stream to udp cat >> /etc/majestic.yaml << EOF outgoing: diff --git a/general/package/wifibroadcast/Config.in b/general/package/wifibroadcast/Config.in index 3cc83f2b..4d8485f5 100644 --- a/general/package/wifibroadcast/Config.in +++ b/general/package/wifibroadcast/Config.in @@ -3,6 +3,7 @@ config BR2_PACKAGE_WIFIBROADCAST select BR2_PACKAGE_LIBPCAP select BR2_PACKAGE_LIBSODIUM select BR2_PACKAGE_IW + select BR2_PACKAGE_DATALINK help Transmit hd video over wifi for the UAV. diff --git a/general/package/wifibroadcast/files/wfb.conf b/general/package/wifibroadcast/files/wfb.conf index cee4b487..5fe266d8 100644 --- a/general/package/wifibroadcast/files/wfb.conf +++ b/general/package/wifibroadcast/files/wfb.conf @@ -1,4 +1,3 @@ -daemon=1 wlan=wlan0 region=BO channel=14 @@ -15,4 +14,3 @@ fec_k=8 fec_n=12 fec_timeout=0 guard_interval=long -telemetry=true diff --git a/general/package/wifibroadcast/files/S98wfb b/general/package/wifibroadcast/files/wifibroadcast similarity index 92% rename from general/package/wifibroadcast/files/S98wfb rename to general/package/wifibroadcast/files/wifibroadcast index 7882ff03..3380d57e 100755 --- a/general/package/wifibroadcast/files/S98wfb +++ b/general/package/wifibroadcast/files/wifibroadcast @@ -3,6 +3,7 @@ # Start wifibroadcast # +. /etc/datalink.conf . /etc/wfb.conf keydir="/etc" @@ -83,11 +84,6 @@ start_wfb() { case "$1" in start) - if ! [ -f /etc/system.ok ]; then - killall majestic - /usr/bin/tweaksys ${chip} - fi - if [ ${daemon} -eq 1 ]; then echo "Loading modules and wifi card driver..." @@ -124,8 +120,12 @@ case "$1" in fi ;; stop) - echo "Stopping wifibroadcast service..." - kill -9 $(pidof wfb_tx) + echo "Stopping all services..." + kill -9 $(pidof wfb_tx) + kill -9 $(pidof telemetry_rx) + kill -9 $(pidof telemetry_tx) + kill -9 $(pidof mavlink-routerd) + kill -9 $(pidof mavfwd) ;; *) echo "Usage: $0 {start|stop}" diff --git a/general/package/wifibroadcast/readme.md b/general/package/wifibroadcast/readme.md deleted file mode 100644 index 308d86a5..00000000 --- a/general/package/wifibroadcast/readme.md +++ /dev/null @@ -1,43 +0,0 @@ -# Настройка - -В конфигурационном файле /etc/wfb.conf включить автозапуск сервиса: - -``` -daemon=1 -``` - -нужный wlan если их больше одного, если адаптер один, то оставить как есть: - -``` -wlan=wlan0 -``` - -страна: - -``` -region=BO -``` - -канал: - -``` -channel=14 -``` - -Выполнить настройки majestic по разрешению, битрейту и ключевым кадрам, после чего перезапустить камеру. - -При первом запуске сгенерируются ключи drone.key и gs.key, ключ для наземной станции находится по пути /etc/gs.key, копируем его. - -Изменить канал (до первой перезагрузки), при необходимости, можно стандартными командами из консоли: - -``` -iwconfig wlan0 channel X -``` - -# Телеметрия - -Включается в /etc/wfb.conf, настройки в /etc/telemetry.conf - - - -P.S. Это минимальная обвязка, возможно что-то не учтено или сделано не так как хотелось бы, все предложения приветствуются в issues. diff --git a/general/package/wifibroadcast/wifibroadcast.mk b/general/package/wifibroadcast/wifibroadcast.mk index 4766e922..0dd97182 100644 --- a/general/package/wifibroadcast/wifibroadcast.mk +++ b/general/package/wifibroadcast/wifibroadcast.mk @@ -25,17 +25,8 @@ define WIFIBROADCAST_INSTALL_TARGET_CMDS $(INSTALL) -m 755 -d $(TARGET_DIR)/etc cp ../general/package/wifibroadcast/files/wfb.conf $(TARGET_DIR)/etc - $(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)/usr/bin - cp ../general/package/wifibroadcast/files/tweaksys $(TARGET_DIR)/usr/bin - - $(INSTALL) -m 755 -d $(TARGET_DIR)/etc - cp ../general/package/wifibroadcast/files/telemetry.conf $(TARGET_DIR)/etc + cp ../general/package/wifibroadcast/files/wifibroadcast $(TARGET_DIR)/usr/bin endef $(eval $(generic-package))