diff --git a/Makefile b/Makefile index af69e481..646fcc3f 100644 --- a/Makefile +++ b/Makefile @@ -52,8 +52,11 @@ clean: prepare: $(BR_DIR) $(ROOT_DIR)/buildroot-$(BR_VER).tar.gz: wget -O $@ -nv \ - --retry-connrefused --continue --timeout=15 \ - http://buildroot.org/downloads/buildroot-$(BR_VER).tar.gz + --retry-connrefused --continue --timeout=3 \ + http://buildroot.org/downloads/buildroot-$(BR_VER).tar.gz || \ + wget -O $@ -nv \ + --retry-connrefused --continue --timeout=3 \ + https://github.com/buildroot/buildroot/archive/refs/tags/$(BR_VER).tar.gz $(BR_DIR): $(ROOT_DIR)/buildroot-$(BR_VER).tar.gz tar -C $(ROOT_DIR) -xf buildroot-$(BR_VER).tar.gz diff --git a/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig b/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig index 7a9eaecd..67a41277 100644 --- a/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig +++ b/br-ext-chip-goke/configs/gk7205v200_fpv_defconfig @@ -100,7 +100,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV BR2_PACKAGE_WIFIBROADCAST=y -# BR2_PACKAGE_MAVLINK_ROUTER is not set +BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y # DEBUG diff --git a/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig b/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig index b0f55d56..b7164d5e 100644 --- a/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig +++ b/br-ext-chip-goke/configs/gk7205v300_fpv_defconfig @@ -100,7 +100,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV BR2_PACKAGE_WIFIBROADCAST=y -# BR2_PACKAGE_MAVLINK_ROUTER is not set +BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y # DEBUG diff --git a/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig b/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig index b4da1dca..2d9d8b91 100644 --- a/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3516ev200_fpv_defconfig @@ -100,7 +100,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV BR2_PACKAGE_WIFIBROADCAST=y -# BR2_PACKAGE_MAVLINK_ROUTER is not set +BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y # DEBUG diff --git a/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig b/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig index 71ab3cf4..e5d2529b 100644 --- a/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3516ev300_fpv_defconfig @@ -100,7 +100,7 @@ BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV BR2_PACKAGE_WIFIBROADCAST=y -# BR2_PACKAGE_MAVLINK_ROUTER is not set +BR2_PACKAGE_MAVLINK_ROUTER=y BR2_PACKAGE_MAVFWD=y # DEBUG diff --git a/building.sh b/building.sh index 58433852..100bc550 100755 --- a/building.sh +++ b/building.sh @@ -92,7 +92,7 @@ log_and_run() { clone() { sudo apt-get update -y - sudo apt-get install -y automake autotools-dev bc build-essential curl fzf git libtool rsync unzip + sudo apt-get install -y automake make wget cpio file autotools-dev bc build-essential curl fzf git libtool rsync unzip git clone --depth=1 https://github.com/OpenIPC/firmware.git } @@ -139,7 +139,8 @@ fresh() { log_and_run "cp -rvf ${SRC_CACHE_DIR}/* buildroot-${BR_VER}/dl/" echo_c 34 "Done.\n" - make prepare + # prevent to double download buildroot + # make prepare echo_c 33 "Start building OpenIPC Firmware ${OPENIPC_VER} for ${SOC}." echo "The start-stop times" >/tmp/openipc_buildtime.txt diff --git a/general/package/mavlink-router/files/mavlink-routerd b/general/package/mavlink-router/files/mavlink-routerd index e1874891..ed80a1ae 100755 Binary files a/general/package/mavlink-router/files/mavlink-routerd and b/general/package/mavlink-router/files/mavlink-routerd differ diff --git a/general/package/mavlink-router/files/mavlink.conf b/general/package/mavlink-router/files/mavlink.conf index ba5d0e70..520e5d50 100644 --- a/general/package/mavlink-router/files/mavlink.conf +++ b/general/package/mavlink-router/files/mavlink.conf @@ -2,7 +2,7 @@ TcpServerPort = 0 [UartEndpoint drone] -Device = /dev/ttyAMA2 +Device = /dev/ttyAMA0 Baud = 115200 [UdpEndpoint telemetry_tx] diff --git a/general/package/rtl8812au-openipc/rtl8812au-openipc.mk b/general/package/rtl8812au-openipc/rtl8812au-openipc.mk index 41a11b43..b7a764cb 100644 --- a/general/package/rtl8812au-openipc/rtl8812au-openipc.mk +++ b/general/package/rtl8812au-openipc/rtl8812au-openipc.mk @@ -3,8 +3,7 @@ # rtl8812au-openipc # ################################################################################ - -RTL8812AU_OPENIPC_VERSION = 92433c4e9cf37ff67dd69df8ddbb32198ec3c6fd +RTL8812AU_OPENIPC_VERSION = 01616b79358f1225d4def42af34d842a63777495 RTL8812AU_OPENIPC_SITE = $(call github,svpcom,rtl8812au,$(RTL8812AU_OPENIPC_VERSION)) RTL8812AU_OPENIPC_LICENSE = GPL-2.0 RTL8812AU_OPENIPC_LICENSE_FILES = COPYING diff --git a/general/package/wifibroadcast/0001-makefile.patch b/general/package/wifibroadcast/0001-makefile.patch index 1cc9cf5f..b83fb2a7 100644 --- a/general/package/wifibroadcast/0001-makefile.patch +++ b/general/package/wifibroadcast/0001-makefile.patch @@ -1,71 +1,11 @@ ---- a/Makefile 2022-09-12 12:30:23.273638715 +0300 -+++ b/Makefile 2022-09-12 12:37:26.310596402 +0300 -@@ -1,58 +1,29 @@ - ARCH ?= $(shell uname -i) --PYTHON ?= /usr/bin/python3 --COMMIT ?= $(shell git rev-parse HEAD) --VERSION ?= $(shell $(PYTHON) ./version.py $(shell git show -s --format="%ct" $(shell git rev-parse HEAD)) $(shell git rev-parse --abbrev-ref HEAD)) -+VERSION ?= $(shell git rev-parse HEAD) - SOURCE_DATE_EPOCH ?= $(shell git show -s --format="%ct" $(shell git rev-parse HEAD)) - - export VERSION COMMIT SOURCE_DATE_EPOCH - --_LDFLAGS := $(LDFLAGS) -lrt -lpcap -lsodium --_CFLAGS := $(CFLAGS) -Wall -O2 -DWFB_VERSION='"$(VERSION)-$(shell /bin/bash -c '_tmp=$(COMMIT); echo $${_tmp::8}')"' -+LDFLAGS := -lrt -lpcap -lsodium -+CFLAGS := -Wall -O2 -DWFB_VERSION='"$(VERSION)"' +--- a/Makefile 2023-01-17 00:40:51.000000000 +0300 ++++ b/Makefile 2023-01-17 15:05:24.252471083 +0300 +@@ -9,7 +9,7 @@ + _LDFLAGS := $(LDFLAGS) -lrt -lpcap -lsodium + _CFLAGS := $(CFLAGS) -Wall -O2 -DWFB_VERSION='"$(VERSION)-$(shell /bin/bash -c '_tmp=$(COMMIT); echo $${_tmp::8}')"' -all: all_bin gs.key test -- --env: -- virtualenv env --python=$(PYTHON) -- ./env/bin/pip install --upgrade pip setuptools stdeb -- --all_bin: wfb_rx wfb_tx wfb_keygen -- --gs.key: wfb_keygen -- @if ! [ -f gs.key ]; then ./wfb_keygen; fi -+all: wfb_rx wfb_tx wfb_keygen - - src/%.o: src/%.c src/*.h -- $(CC) $(_CFLAGS) -std=gnu99 -c -o $@ $< -+ $(CC) $(CFLAGS) -std=gnu99 -c -o $@ $< - - src/%.o: src/%.cpp src/*.hpp src/*.h -- $(CXX) $(_CFLAGS) -std=gnu++11 -c -o $@ $< -+ $(CXX) $(CFLAGS) -std=gnu++11 -c -o $@ $< - - wfb_rx: src/rx.o src/radiotap.o src/fec.o src/wifibroadcast.o -- $(CXX) -o $@ $^ $(_LDFLAGS) -+ $(CXX) -o $@ $^ $(LDFLAGS) - - wfb_tx: src/tx.o src/fec.o src/wifibroadcast.o -- $(CXX) -o $@ $^ $(_LDFLAGS) -+ $(CXX) -o $@ $^ $(LDFLAGS) - - wfb_keygen: src/keygen.o -- $(CC) -o $@ $^ $(_LDFLAGS) -- --test: -- PYTHONPATH=`pwd` trial3 wfb_ng.tests -- --rpm: all_bin env -- rm -rf dist -- ./env/bin/python ./setup.py bdist_rpm --force-arch $(ARCH) -- rm -rf wfb_ng.egg-info/ -- --deb: all_bin env -- rm -rf deb_dist -- ./env/bin/python ./setup.py --command-packages=stdeb.command bdist_deb -- rm -rf wfb_ng.egg-info/ wfb-ng-$(VERSION).tar.gz -- --bdist: all_bin -- rm -rf dist -- $(PYTHON) ./setup.py bdist --plat-name linux-$(ARCH) -- rm -rf wfb_ng.egg-info/ -+ $(CC) -o $@ $^ $(LDFLAGS) - - clean: -- rm -rf env wfb_rx wfb_tx wfb_keygen dist deb_dist build wfb_ng.egg-info wfb-ng-*.tar.gz _trial_temp *~ src/*.o -+ rm -rf wfb_rx wfb_tx wfb_keygen *~ src/*.o ++all: all_bin + env: + virtualenv env --python=$(PYTHON) diff --git a/general/package/wifibroadcast/Config.in b/general/package/wifibroadcast/Config.in index 5071c009..3cc83f2b 100644 --- a/general/package/wifibroadcast/Config.in +++ b/general/package/wifibroadcast/Config.in @@ -1,5 +1,8 @@ config BR2_PACKAGE_WIFIBROADCAST bool "wifibroadcast" + select BR2_PACKAGE_LIBPCAP + select BR2_PACKAGE_LIBSODIUM + select BR2_PACKAGE_IW help Transmit hd video over wifi for the UAV. diff --git a/general/package/wifibroadcast/files/S98wfb b/general/package/wifibroadcast/files/S98wfb index 2edb4b58..1a26819d 100755 --- a/general/package/wifibroadcast/files/S98wfb +++ b/general/package/wifibroadcast/files/S98wfb @@ -27,8 +27,9 @@ detect_wifi_card() { ;; "148f:3070") driver="ralink" - modprobe rt2800usb + modprobe mac80211 modprobe rt2x00usb + modprobe rt2800usb ;; esac done diff --git a/general/package/wifibroadcast/files/telemetry b/general/package/wifibroadcast/files/telemetry index f73a338a..a93c00f8 100755 --- a/general/package/wifibroadcast/files/telemetry +++ b/general/package/wifibroadcast/files/telemetry @@ -13,7 +13,7 @@ start_telemetry() { 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} -i ${link_id} ${wlan} & + telemetry_rx -p ${stream_rx} -u ${port_rx} -K ${keydir}/drone.key -i ${link_id} ${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} -i ${link_id} ${wlan} & fi @@ -21,20 +21,24 @@ start_telemetry() { case "$1" in start) - echo "Loading MAVLink telemetry service..." + echo "Loading MAVLink telemetry service..." + if [ ${router} -eq 1 ]; 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 + start_telemetry - echo "Done." - ;; + echo "Done." + ;; stop) - echo "Stopping telemetry service..." - kill -9 $(pidof telemetry_rx) - kill -9 $(pidof telemetry_tx) - ;; + echo "Stopping telemetry service..." + kill -9 $(pidof telemetry_rx) + kill -9 $(pidof telemetry_tx) + ;; *) - echo "Usage: $0 {start|stop}" - exit 1 + echo "Usage: $0 {start|stop}" + exit 1 esac diff --git a/general/package/wifibroadcast/files/telemetry.conf b/general/package/wifibroadcast/files/telemetry.conf index 648d812d..b4e40b5b 100644 --- a/general/package/wifibroadcast/files/telemetry.conf +++ b/general/package/wifibroadcast/files/telemetry.conf @@ -15,3 +15,5 @@ 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/wifibroadcast/files/tweaksys index 78e78950..c2e6e137 100755 --- a/general/package/wifibroadcast/files/tweaksys +++ b/general/package/wifibroadcast/files/tweaksys @@ -27,6 +27,8 @@ all_other() { # change fps 25 -> 30 sed -i "s!Isp_FrameRate=25!Isp_FrameRate=30!g" /etc/sensors/imx307_i2c_2l_1080p.ini sed -i "s!Isp_FrameRate=25!Isp_FrameRate=30!g" /etc/sensors/smtsec_imx307_i2c_4l_1080p.ini + # disable mavlink routerd autostart + sed -i "s!/usr/bin/mavlink-routerd &!#/usr/bin/mavlink-routerd &!g" /etc/init.d/S97mavlink # majestic basic settings ${cli} -s .isp.slowShutter disabled ${cli} -s .isp.drc 350 @@ -34,7 +36,7 @@ all_other() { # ${cli} -s .isp.dis true ${cli} -s .image.contrast 50 ${cli} -s .image.luminance 50 - ${cli} -s .video0.bitrate 5120 + ${cli} -s .video0.bitrate 4096 ${cli} -s .video0.codec h264 ${cli} -s .video0.rcMode cbr ${cli} -s .video0.gopSize 0.2 @@ -43,7 +45,7 @@ all_other() { ${cli} -s .jpeg.enabled false # lowdelay support only imx307 sensor if [ ${sensor} = "imx307" ]; then - # ${cli} -s .video0.size 1280x720 + ${cli} -s .video0.size 1280x720 # ${cli} -s .video0.fps 30 ${cli} -s .isp.lowDelay true # ${cli} -s .video0.sliceUnits 4 diff --git a/general/package/wifibroadcast/readme.md b/general/package/wifibroadcast/readme.md index ebdff98a..308d86a5 100644 --- a/general/package/wifibroadcast/readme.md +++ b/general/package/wifibroadcast/readme.md @@ -6,12 +6,6 @@ daemon=1 ``` -указать используемый драйвер: - -``` -driver=rtl или driver=ath - -``` нужный wlan если их больше одного, если адаптер один, то оставить как есть: ``` @@ -27,21 +21,14 @@ region=BO канал: ``` -channel=6 +channel=14 ``` -В конец /etc/majestic.yaml добавить секцию: - -``` -outgoing: - - udp://127.0.0.1:5600 -``` - -Выполнить настройки majestic, отключить все лишнее кроме необходимого потока, выполнить настройки по битрейту и ключевым кадрам, после чего перезапустить камеру. +Выполнить настройки majestic по разрешению, битрейту и ключевым кадрам, после чего перезапустить камеру. При первом запуске сгенерируются ключи drone.key и gs.key, ключ для наземной станции находится по пути /etc/gs.key, копируем его. -Изменить канал при необходимости можно стандартными командами из консоли: +Изменить канал (до первой перезагрузки), при необходимости, можно стандартными командами из консоли: ``` iwconfig wlan0 channel X @@ -51,8 +38,6 @@ iwconfig wlan0 channel X Включается в /etc/wfb.conf, настройки в /etc/telemetry.conf -Важно! Для работы телеметрии, придется экспериментировать с выделением памяти для системы. Отключить ВСЕ не нужное в камере кроме основного потока, проверить сколько свободной памяти осталось после выделения видео подсистеме и передать свободную в OS. (для GK7205v300: fw_setenv osmem 64M) - P.S. Это минимальная обвязка, возможно что-то не учтено или сделано не так как хотелось бы, все предложения приветствуются в issues. diff --git a/general/package/wifibroadcast/wifibroadcast.mk b/general/package/wifibroadcast/wifibroadcast.mk index 907a5fc5..4766e922 100644 --- a/general/package/wifibroadcast/wifibroadcast.mk +++ b/general/package/wifibroadcast/wifibroadcast.mk @@ -3,9 +3,8 @@ # wifibroadcast # ################################################################################ - -WIFIBROADCAST_VERSION = c00f4ca0817919e6ba5780212781e03dada206a6 -WIFIBROADCAST_SITE = $(call github,svpcom,wfb-ng,$(WIFIBROADCAST_VERSION)) +WIFIBROADCAST_VERSION = 23.01 +WIFIBROADCAST_SITE = $(call github,svpcom,wfb-ng,wfb-ng-$(WIFIBROADCAST_VERSION)) WIFIBROADCAST_LICENSE = GPL-2.0 WIFIBROADCAST_DEPENDENCIES += libpcap libsodium iw