rework fpv scripts for use wfb or lte transport (#693)

pull/699/head
cronyx 2023-03-28 07:29:42 +03:00 committed by GitHub
parent a38084bab6
commit fa92f2a2ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 137 additions and 78 deletions

View File

@ -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/aura-httpd/Config.in"
source "$BR2_EXTERNAL_GOKE_PATH/package/baresip-openipc/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/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/dropbear-openipc/Config.in"
source "$BR2_EXTERNAL_GOKE_PATH/package/df_sdwan_edge/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/df_sdwan_edge/Config.in"
source "$BR2_EXTERNAL_GOKE_PATH/package/fdk-aac-openipc/Config.in" source "$BR2_EXTERNAL_GOKE_PATH/package/fdk-aac-openipc/Config.in"

View File

@ -99,6 +99,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
# BR2_PACKAGE_WIREGUARD_TOOLS is not set # BR2_PACKAGE_WIREGUARD_TOOLS is not set
# FPV # FPV
BR2_PACKAGE_DATALINK=y
BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVLINK_ROUTER=y
BR2_PACKAGE_MAVFWD=y BR2_PACKAGE_MAVFWD=y
@ -107,7 +108,5 @@ BR2_PACKAGE_MAVFWD=y
BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y BR2_PACKAGE_GDB=y
#
# Compression and decompression # Compression and decompression
#
BR2_PACKAGE_LIBZIP=y BR2_PACKAGE_LIBZIP=y

View File

@ -99,15 +99,17 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
# BR2_PACKAGE_WIREGUARD_TOOLS is not set # BR2_PACKAGE_WIREGUARD_TOOLS is not set
# FPV # FPV
BR2_PACKAGE_DATALINK=y
BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVLINK_ROUTER=y
BR2_PACKAGE_MAVFWD=y BR2_PACKAGE_MAVFWD=y
# ZEROTIER
# BR2_PACKAGE_ZEROTIER_ONE is not set
# DEBUG # DEBUG
BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y BR2_PACKAGE_GDB=y
#
# Compression and decompression # Compression and decompression
#
BR2_PACKAGE_LIBZIP=y BR2_PACKAGE_LIBZIP=y

View File

@ -0,0 +1 @@
../../general/package/datalink

View File

@ -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/aura-httpd/Config.in"
source "$BR2_EXTERNAL_HISILICON_PATH/package/baresip-openipc/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/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/dropbear-openipc/Config.in"
source "$BR2_EXTERNAL_HISILICON_PATH/package/f2fs-tools-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" source "$BR2_EXTERNAL_HISILICON_PATH/package/fdk-aac-openipc/Config.in"

View File

@ -99,6 +99,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
# BR2_PACKAGE_WIREGUARD_TOOLS is not set # BR2_PACKAGE_WIREGUARD_TOOLS is not set
# FPV # FPV
BR2_PACKAGE_DATALINK=y
BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVLINK_ROUTER=y
BR2_PACKAGE_MAVFWD=y BR2_PACKAGE_MAVFWD=y
@ -107,7 +108,5 @@ BR2_PACKAGE_MAVFWD=y
BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y BR2_PACKAGE_GDB=y
#
# Compression and decompression # Compression and decompression
#
BR2_PACKAGE_LIBZIP=y BR2_PACKAGE_LIBZIP=y

View File

@ -99,15 +99,17 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y
# BR2_PACKAGE_WIREGUARD_TOOLS is not set # BR2_PACKAGE_WIREGUARD_TOOLS is not set
# FPV # FPV
BR2_PACKAGE_DATALINK=y
BR2_PACKAGE_WIFIBROADCAST=y BR2_PACKAGE_WIFIBROADCAST=y
BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVLINK_ROUTER=y
BR2_PACKAGE_MAVFWD=y BR2_PACKAGE_MAVFWD=y
# ZEROTIER
# BR2_PACKAGE_ZEROTIER_ONE is not set
# DEBUG # DEBUG
BR2_PACKAGE_HOST_GDB=y BR2_PACKAGE_HOST_GDB=y
BR2_PACKAGE_GDB=y BR2_PACKAGE_GDB=y
#
# Compression and decompression # Compression and decompression
#
BR2_PACKAGE_LIBZIP=y BR2_PACKAGE_LIBZIP=y

View File

@ -0,0 +1 @@
../../general/package/datalink

View File

@ -0,0 +1,4 @@
config BR2_PACKAGE_DATALINK
bool "datalink"
help
Base package for build video link over wifi or lte.

View File

@ -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))

View File

@ -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

View File

@ -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=

View File

@ -3,6 +3,7 @@
# Start telemetry # Start telemetry
# #
. /etc/datalink.conf
. /etc/telemetry.conf . /etc/telemetry.conf
keydir="/etc" keydir="/etc"
@ -23,20 +24,22 @@ case "$1" in
start) start)
echo "Loading MAVLink telemetry service..." echo "Loading MAVLink telemetry service..."
if [ ${router} -eq 1 ]; then if [ ${router} -eq 1 ] || [ ${transport} = "lte" ]; then
/usr/bin/mavlink-routerd & /usr/bin/mavlink-routerd &
else else
mavfwd --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} & mavfwd --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} &
fi fi
if [ ${transport} = "wfb" ]; then
start_telemetry start_telemetry
fi
echo "Done." echo "Done."
;; ;;
stop) stop)
echo "Stopping telemetry service..." echo "Stopping telemetry services..."
kill -9 $(pidof telemetry_rx) kill -9 $(pidof telemetry_rx)
kill -9 $(pidof telemetry_tx) kill -9 $(pidof telemetry_tx)
kill -9 $(pidof mavlink-routerd)
kill -9 $(pidof mavfwd)
;; ;;
*) *)
echo "Usage: $0 {start|stop}" echo "Usage: $0 {start|stop}"

View File

@ -1,6 +1,9 @@
serial=/dev/ttyAMA0 serial=/dev/ttyAMA0
wlan=wlan0
baud=115200 baud=115200
### router: use simple mavfwd (0) or classic mavlink-routerd (1)
router=0
wlan=wlan0
bandwidth=20 bandwidth=20
stbc=1 stbc=1
ldpc=1 ldpc=1
@ -15,5 +18,3 @@ fec_n=2
fec_timeout=0 fec_timeout=0
guard_interval=long guard_interval=long
one_way=false one_way=false
### router: use simple mavfwd (0) or classic mavlink-routerd (1)
router=0

View File

@ -50,6 +50,11 @@ all_other() {
${cli} -s .isp.lowDelay true ${cli} -s .isp.lowDelay true
# ${cli} -s .video0.sliceUnits 4 # ${cli} -s .video0.sliceUnits 4
fi 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 # add outgoing rtp stream to udp
cat >> /etc/majestic.yaml << EOF cat >> /etc/majestic.yaml << EOF
outgoing: outgoing:

View File

@ -3,6 +3,7 @@ config BR2_PACKAGE_WIFIBROADCAST
select BR2_PACKAGE_LIBPCAP select BR2_PACKAGE_LIBPCAP
select BR2_PACKAGE_LIBSODIUM select BR2_PACKAGE_LIBSODIUM
select BR2_PACKAGE_IW select BR2_PACKAGE_IW
select BR2_PACKAGE_DATALINK
help help
Transmit hd video over wifi for the UAV. Transmit hd video over wifi for the UAV.

View File

@ -1,4 +1,3 @@
daemon=1
wlan=wlan0 wlan=wlan0
region=BO region=BO
channel=14 channel=14
@ -15,4 +14,3 @@ fec_k=8
fec_n=12 fec_n=12
fec_timeout=0 fec_timeout=0
guard_interval=long guard_interval=long
telemetry=true

View File

@ -3,6 +3,7 @@
# Start wifibroadcast # Start wifibroadcast
# #
. /etc/datalink.conf
. /etc/wfb.conf . /etc/wfb.conf
keydir="/etc" keydir="/etc"
@ -83,11 +84,6 @@ start_wfb() {
case "$1" in case "$1" in
start) start)
if ! [ -f /etc/system.ok ]; then
killall majestic
/usr/bin/tweaksys ${chip}
fi
if [ ${daemon} -eq 1 ]; then if [ ${daemon} -eq 1 ]; then
echo "Loading modules and wifi card driver..." echo "Loading modules and wifi card driver..."
@ -124,8 +120,12 @@ case "$1" in
fi fi
;; ;;
stop) stop)
echo "Stopping wifibroadcast service..." echo "Stopping all services..."
kill -9 $(pidof wfb_tx) 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}" echo "Usage: $0 {start|stop}"

View File

@ -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.

View File

@ -25,17 +25,8 @@ define WIFIBROADCAST_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc $(INSTALL) -m 755 -d $(TARGET_DIR)/etc
cp ../general/package/wifibroadcast/files/wfb.conf $(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 $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
cp ../general/package/wifibroadcast/files/telemetry $(TARGET_DIR)/usr/bin cp ../general/package/wifibroadcast/files/wifibroadcast $(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
endef endef
$(eval $(generic-package)) $(eval $(generic-package))