From f4f4bd5f571a88bed087ea7ec7c6b4e2088a5215 Mon Sep 17 00:00:00 2001 From: cronyx Date: Sun, 8 Oct 2023 23:12:01 +0300 Subject: [PATCH] some improvements for previous commit (#1025) --- .../configs/hi3536dv100_fpv_defconfig | 2 +- general/package/datalink/datalink.mk | 5 +- general/package/datalink/files/S98datalink | 1 - .../package/datalink/files/air/channels.sh | 5 ++ general/package/datalink/files/air/telemetry | 4 +- .../package/datalink/files/air/telemetry.conf | 3 + general/package/datalink/files/tweaksys | 60 ++++++++------- general/package/mavfwd/mavfwd.mk | 6 +- general/package/venc-openipc/files/S98venc | 73 +++++-------------- .../package/venc-openipc/files/channels.sh | 3 - general/package/venc-openipc/files/telemetry | 50 ------------- general/package/venc-openipc/venc-openipc.mk | 6 +- .../wifibroadcast/files/air/wifibroadcast | 2 +- 13 files changed, 71 insertions(+), 149 deletions(-) create mode 100755 general/package/datalink/files/air/channels.sh mode change 100644 => 100755 general/package/venc-openipc/files/S98venc delete mode 100644 general/package/venc-openipc/files/channels.sh delete mode 100644 general/package/venc-openipc/files/telemetry diff --git a/br-ext-chip-hisilicon/configs/hi3536dv100_fpv_defconfig b/br-ext-chip-hisilicon/configs/hi3536dv100_fpv_defconfig index feb93898..c9b90874 100644 --- a/br-ext-chip-hisilicon/configs/hi3536dv100_fpv_defconfig +++ b/br-ext-chip-hisilicon/configs/hi3536dv100_fpv_defconfig @@ -111,7 +111,7 @@ BR2_PACKAGE_LINUX_FIRMWARE_OPENIPC_ATHEROS_9271=y BR2_PACKAGE_RTL8812AU_OPENIPC=y # FPV -# BR2_PACKAGE_VDEC is not set +# BR2_PACKAGE_VDEC_OPENIPC is not set BR2_PACKAGE_DATALINK=y BR2_PACKAGE_WIFIBROADCAST=y # BR2_PACKAGE_WFBOPENHD is not set diff --git a/general/package/datalink/datalink.mk b/general/package/datalink/datalink.mk index 12f129c4..d42ed6b9 100644 --- a/general/package/datalink/datalink.mk +++ b/general/package/datalink/datalink.mk @@ -16,7 +16,7 @@ define DATALINK_INSTALL_TARGET_CMDS $(INSTALL) -m 755 -d $(TARGET_DIR)/etc cp $(DATALINK_PKGDIR)/files/datalink.conf $(TARGET_DIR)/etc - $(INSTALL) -m 755 -d $(TARGET_DIR)/etc + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc cp $(DATALINK_PKGDIR)/files/$(DATALINK_FPATH)/telemetry.conf $(TARGET_DIR)/etc $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d @@ -25,6 +25,9 @@ define DATALINK_INSTALL_TARGET_CMDS $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin cp $(DATALINK_PKGDIR)/files/$(DATALINK_FPATH)/telemetry $(TARGET_DIR)/usr/bin + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/sbin + cp $(DATALINK_PKGDIR)/files/$(DATALINK_FPATH)/channels.sh $(TARGET_DIR)/usr/sbin + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin cp $(DATALINK_PKGDIR)/files/tweaksys $(TARGET_DIR)/usr/bin endef diff --git a/general/package/datalink/files/S98datalink b/general/package/datalink/files/S98datalink index ed0ae9df..78b6cb74 100755 --- a/general/package/datalink/files/S98datalink +++ b/general/package/datalink/files/S98datalink @@ -11,7 +11,6 @@ fw=$(grep "BUILD_OPTION" "/etc/os-release" | cut -d= -f2) case "$1" in start) if ! [ -f /etc/system.ok ]; then - killall majestic tweaksys ${chip} fi diff --git a/general/package/datalink/files/air/channels.sh b/general/package/datalink/files/air/channels.sh new file mode 100755 index 00000000..8d682316 --- /dev/null +++ b/general/package/datalink/files/air/channels.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +echo $1 $2 >> /tmp/channels.log + +exit 1 diff --git a/general/package/datalink/files/air/telemetry b/general/package/datalink/files/air/telemetry index 528a3cc6..be2e192a 100755 --- a/general/package/datalink/files/air/telemetry +++ b/general/package/datalink/files/air/telemetry @@ -29,9 +29,9 @@ case "$1" in if [ ${router} -eq 1 ] || [ ${fw} = "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} & + mavfwd --channels ${channels} --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} & fi - if [ ${fw} = "fpv" ]; then + if [ ${fw} = "fpv" ] || [ ${fw} = "venc" ]; then start_telemetry fi echo "Done." diff --git a/general/package/datalink/files/air/telemetry.conf b/general/package/datalink/files/air/telemetry.conf index bf1e5fdc..a0ee64a9 100644 --- a/general/package/datalink/files/air/telemetry.conf +++ b/general/package/datalink/files/air/telemetry.conf @@ -18,3 +18,6 @@ fec_n=2 fec_timeout=0 guard_interval=long one_way=false + +### for mavfwd: RC override channels to parse after first 4 and call /usr/sbin/channels.sh $ch $val, default 0 +channels=14 diff --git a/general/package/datalink/files/tweaksys b/general/package/datalink/files/tweaksys index af3f6bf6..99c50bd8 100755 --- a/general/package/datalink/files/tweaksys +++ b/general/package/datalink/files/tweaksys @@ -28,39 +28,45 @@ hisi_goke() { all_other() { # don't load f2fs module (disabled in kernel) sed -i "s!f2fs!#f2fs!g" /etc/modules - # 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 - # enable digital image stabilization - # cli -s .isp.dis true - cli -s .image.contrast 50 - cli -s .image.luminance 50 - cli -s .video0.bitrate 4096 - cli -s .video0.codec h264 - cli -s .video0.rcMode cbr - cli -s .video0.gopSize 0.2 - cli -s .hls.enabled false - cli -s .netip.enabled false - cli -s .jpeg.enabled false - # lowdelay support only imx307 sensor - if [ ${sensor} = "imx307" ]; then - cli -s .video0.size 1280x720 - # cli -s .video0.fps 30 - cli -s .isp.lowDelay true - # cli -s .video0.sliceUnits 4 + if [ -f /usr/bin/mavlink-routerd ]; then + # disable mavlink routerd autostart + sed -i "s!/usr/bin/mavlink-routerd &!#/usr/bin/mavlink-routerd &!g" /etc/init.d/S97mavlink fi + if [ -f /usr/bin/majestic ]; then + # majestic basic settings + cli -s .isp.slowShutter disabled + cli -s .isp.drc 350 + # enable digital image stabilization + # cli -s .isp.dis true + cli -s .image.contrast 50 + cli -s .image.luminance 50 + cli -s .video0.bitrate 4096 + cli -s .video0.codec h264 + cli -s .video0.rcMode cbr + cli -s .video0.gopSize 0.2 + cli -s .hls.enabled false + cli -s .netip.enabled false + cli -s .jpeg.enabled false + # lowdelay support only imx307 sensor + if [ ${sensor} = "imx307" ]; then + cli -s .video0.size 1280x720 + # cli -s .video0.fps 30 + cli -s .isp.lowDelay true + # cli -s .video0.sliceUnits 4 + fi +# outgoing rtp stream to udp +cat >> /etc/majestic.yaml << EOF +outgoing: + - udp://127.0.0.1:5600 +EOF + 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: - - udp://127.0.0.1:5600 -EOF + # complete tweaks touch /etc/system.ok echo "Preparing system done." diff --git a/general/package/mavfwd/mavfwd.mk b/general/package/mavfwd/mavfwd.mk index e4cf2438..b16038d2 100644 --- a/general/package/mavfwd/mavfwd.mk +++ b/general/package/mavfwd/mavfwd.mk @@ -6,7 +6,7 @@ MAVFWD_SITE_METHOD = git MAVFWD_SITE = https://github.com/openipc/mavfwd -MAVFWD_VERSION = 220d30e118d26008e94445887a03d77ba73c2d29 +MAVFWD_VERSION = c95613e241e03782fc6acc4780e60d8b4316a736 MAVFWD_LICENSE = MIT MAVFWD_LICENSE_FILES = LICENSE @@ -18,8 +18,8 @@ define MAVFWD_BUILD_CMDS endef define MAVFWD_INSTALL_TARGET_CMDS - $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/sbin - $(INSTALL) -m 0755 -D $(@D)/mavfwd $(TARGET_DIR)/usr/sbin/mavfwd + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + $(INSTALL) -m 0755 -D $(@D)/mavfwd $(TARGET_DIR)/usr/bin/mavfwd endef $(eval $(generic-package)) diff --git a/general/package/venc-openipc/files/S98venc b/general/package/venc-openipc/files/S98venc old mode 100644 new mode 100755 index 21e1232a..ed0213d8 --- a/general/package/venc-openipc/files/S98venc +++ b/general/package/venc-openipc/files/S98venc @@ -1,60 +1,21 @@ #!/bin/sh - -DAEMON="venc" -PIDFILE="/var/run/$DAEMON.pid" -DAEMON_ARGS="-s" -[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON" -load_venc() { - [ -f /usr/bin/$DAEMON ] || echo -en "DISABLED, " - [ -f /etc/coredump.conf ] && . /etc/coredump.conf - if [ "$coredump_enabled" ]; then - [ "$(cli -g .watchdog.timeout)" -lt "30" ] && cli -s .watchdog.timeout 30 - ulimit -c unlimited && echo "|/usr/sbin/sendcoredump.sh" >/proc/sys/kernel/core_pattern - fi - start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "/usr/bin/$DAEMON" -- $DAEMON_ARGS - ln -s /dev/venc /dev/ven - /usr/bin/./venc -p 5600 -f 30 -r 7168 -n 1400 -c 265cbr -d frame -v 200_imx307F -s 720p & - status=$? - if [ "$status" -eq 0 ]; then - echo "OK" - else - echo "FAIL" - fi - return "$status" -} -start() { - logger -s -p daemon.info -t $(ipcinfo -v) "Loading video system has started..." - export SENSOR=$(fw_printenv -n sensor) - load_venc -} -stop() { - printf 'Stopping %s: ' "$DAEMON" - [ -f /usr/bin/$DAEMON ] || echo -en "DISABLED, " - start-stop-daemon -K -q -p "$PIDFILE" - status=$? - if [ "$status" -eq 0 ]; then - rm -f "$PIDFILE" - echo "OK" - else - echo "FAIL" - fi - return "$status" -} - -restart() { - stop - sleep 1 - reload -} - -reload() { - load_venc -} +# +# Start venc encoder +# case "$1" in - start|stop|restart|reload) - "$1";; - *) - echo "Usage: $0 {start|stop|restart|reload}" - exit 1 + start) + if ! [ -f /dev/ven ]; then + ln -s /dev/venc /dev/ven + fi + echo "Starting venc encoder service..." + venc -p 5600 -f 30 -r 7168 -n 1400 -c 265cbr -d frame -v 200_imx307F -s 720p & + ;; + stop) + echo "Stopping venc encoder services..." + kill -9 $(pidof venc) + ;; + *) + echo "Usage: $0 {start|stop}" + exit 1 esac diff --git a/general/package/venc-openipc/files/channels.sh b/general/package/venc-openipc/files/channels.sh deleted file mode 100644 index 03b69fed..00000000 --- a/general/package/venc-openipc/files/channels.sh +++ /dev/null @@ -1,3 +0,0 @@ -echo $1 $2 >>/tmp/channels.log - -exit 1 diff --git a/general/package/venc-openipc/files/telemetry b/general/package/venc-openipc/files/telemetry deleted file mode 100644 index 32c6b645..00000000 --- a/general/package/venc-openipc/files/telemetry +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -# -# Start telemetry -# - -. /etc/datalink.conf -. /etc/telemetry.conf - -keydir="/etc" - -fw=$(grep "BUILD_OPTION" "/etc/os-release" | cut -d= -f2) - -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 -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 -} - -case "$1" in - start) - echo "Loading MAVLink telemetry service..." - - if [ ${router} -eq 1 ] || [ ${fw} = "lte" ]; then - /usr/bin/mavlink-routerd & - else - mavfwd -c 14 --master ${serial} --baudrate ${baud} --out 127.0.0.1:${port_tx} --in 127.0.0.1:${port_rx} & - fi - echo "Firmware is ${fw}" - if [ ${fw} = "fpv" ] || [ ${fw} = "venc" ]; then - start_telemetry - fi - echo "Done." - ;; - stop) - 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}" - exit 1 -esac diff --git a/general/package/venc-openipc/venc-openipc.mk b/general/package/venc-openipc/venc-openipc.mk index a0cfa446..5ec9e8c6 100644 --- a/general/package/venc-openipc/venc-openipc.mk +++ b/general/package/venc-openipc/venc-openipc.mk @@ -7,13 +7,11 @@ VENC_OPENIPC_LICENSE = MIT define VENC_OPENIPC_INSTALL_TARGET_CMDS - $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin + $(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin cp $(VENC_OPENIPC_PKGDIR)/files/venc $(TARGET_DIR)/usr/bin/venc - cp $(VENC_OPENIPC_PKGDIR)/files/telemetry $(TARGET_DIR)/usr/bin/telemetry + $(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d cp $(VENC_OPENIPC_PKGDIR)/files/S98venc $(TARGET_DIR)/etc/init.d/S98venc - $(INSTALL) -m 755 -d $(TARGET_DIR)/root - cp $(VENC_OPENIPC_PKGDIR)/files/channels.sh $(TARGET_DIR)/root/channels.sh endef $(eval $(generic-package)) diff --git a/general/package/wifibroadcast/files/air/wifibroadcast b/general/package/wifibroadcast/files/air/wifibroadcast index 21ec896b..734c75ae 100755 --- a/general/package/wifibroadcast/files/air/wifibroadcast +++ b/general/package/wifibroadcast/files/air/wifibroadcast @@ -135,7 +135,7 @@ case "$1" in fi else - echo "Wifibroadcast service disabled in wfb.conf..." + echo "Wifibroadcast service disabled in wfb.conf..." fi ;; stop)