mirror of https://github.com/OpenIPC/firmware.git
rework fpv scripts for use wfb or lte transport (#693)
parent
a38084bab6
commit
fa92f2a2ae
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../../general/package/datalink
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../../general/package/datalink
|
|
@ -0,0 +1,4 @@
|
|||
config BR2_PACKAGE_DATALINK
|
||||
bool "datalink"
|
||||
help
|
||||
Base package for build video link over wifi or lte.
|
|
@ -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))
|
|
@ -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
|
|
@ -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=
|
|
@ -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
|
||||
|
||||
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}"
|
|
@ -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
|
|
@ -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:
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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..."
|
||||
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}"
|
|
@ -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.
|
|
@ -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))
|
||||
|
|
Loading…
Reference in New Issue