Adding vtx_info.yaml and generator (#1699)

pull/1700/head
snokvist 2025-02-08 14:41:47 +01:00 committed by GitHub
parent 5a882f12a2
commit f8de54cf41
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 226 additions and 0 deletions

View File

@ -0,0 +1,16 @@
#!/bin/sh
case "$1" in
start)
echo "Generating or updating /etc/vtx_info.yaml..."
generate_vtx_info.sh
;;
stop)
echo "Generating or updating /etc/vtx_info.yaml only done when starting..."
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

View File

@ -0,0 +1,208 @@
#!/bin/sh
CFG_FILE="/etc/vtx_info.yaml"
### 1. Fetch SoC from fw_printenv
soc=$(fw_printenv soc 2>/dev/null | awk -F= '/soc=/ {print $2}')
[ -z "$soc" ] && soc="ssc338q"
### 2. Determine min/max bitrate based on SoC
case "$soc" in
"ssc30kq")
min_bitrate="2800"
max_bitrate="18000"
;;
"ssc338q")
min_bitrate="2800"
max_bitrate="28000"
;;
*)
# Fallback if an unexpected SoC is found
min_bitrate="2800"
max_bitrate="28000"
;;
esac
### 3. Fetch sensor from fw_printenv
sensor=$(fw_printenv sensor 2>/dev/null | awk -F= '/sensor=/ {print $2}')
[ -z "$sensor" ] && sensor="imx335"
### 4. Fetch build_option from /etc/os-release
build_option=$(awk -F= '/^BUILD_OPTION=/ {print $2}' /etc/os-release)
[ -z "$build_option" ] && build_option="fpv"
### 5. Detect Wi-Fi card from lsusb, map to known adapter
raw_driver="none"
for card in $(lsusb | awk '{print $6}' | sort | uniq); do
case "$card" in
"0bda:8812"|"0bda:881a"|"0b05:17d2"|"2357:0101"|"2604:0012")
raw_driver="rtl8812au"
break
;;
"0bda:a81a")
raw_driver="rtl8812eu"
break
;;
"0bda:f72b"|"0bda:b733")
raw_driver="rtl8733bu"
break
;;
esac
done
### 6. Determine Wi-Fi settings based on adapter
case "$raw_driver" in
"rtl8812au")
min_bw="5"
max_bw="40"
ldpc="1"
stbc="1"
max_mcs="7"
# MCS0..7 -> stepped down from 63 to 40
mcs0_max_tx="63"
mcs1_max_tx="60"
mcs2_max_tx="57"
mcs3_max_tx="54"
mcs4_max_tx="51"
mcs5_max_tx="48"
mcs6_max_tx="44"
mcs7_max_tx="40"
;;
"rtl8812eu")
min_bw="5"
max_bw="20"
ldpc="1"
stbc="1"
max_mcs="7"
# MCS0..7 -> stepped down from 63 to 40
mcs0_max_tx="63"
mcs1_max_tx="60"
mcs2_max_tx="57"
mcs3_max_tx="54"
mcs4_max_tx="51"
mcs5_max_tx="48"
mcs6_max_tx="44"
mcs7_max_tx="40"
;;
"rtl8733bu")
min_bw="20"
max_bw="40"
ldpc="0"
stbc="0"
max_mcs="7"
# MCS0..7 -> stepped down from 63 to 40
mcs0_max_tx="63"
mcs1_max_tx="60"
mcs2_max_tx="57"
mcs3_max_tx="54"
mcs4_max_tx="51"
mcs5_max_tx="48"
mcs6_max_tx="44"
mcs7_max_tx="40"
;;
*)
# Default if no known adapter
raw_driver="none"
min_bw="20"
max_bw="20"
ldpc="0"
stbc="0"
max_mcs="7"
# All MCS min=1, max=30
mcs0_max_tx="30"
mcs1_max_tx="30"
mcs2_max_tx="30"
mcs3_max_tx="30"
mcs4_max_tx="30"
mcs5_max_tx="30"
mcs6_max_tx="30"
mcs7_max_tx="30"
;;
esac
# For all adapters (recognized or not), mcsN_min_tx=1
mcs0_min_tx="1"
mcs1_min_tx="1"
mcs2_min_tx="1"
mcs3_min_tx="1"
mcs4_min_tx="1"
mcs5_min_tx="1"
mcs6_min_tx="1"
mcs7_min_tx="1"
### 7. If /etc/vtx_info.yaml doesn't exist, create it; else update via yaml-cli
if [ ! -f "$CFG_FILE" ]; then
cat <<EOF > "$CFG_FILE"
vtx_info:
vtx_id: ff00
build_option: $build_option
soc: $soc
wifi:
wifi_adapter: $raw_driver
min_bw: $min_bw
max_bw: $max_bw
ldpc: $ldpc
stbc: $stbc
max_mcs: $max_mcs
tx_power:
mcs0_min_tx: $mcs0_min_tx
mcs0_max_tx: $mcs0_max_tx
mcs1_min_tx: $mcs1_min_tx
mcs1_max_tx: $mcs1_max_tx
mcs2_min_tx: $mcs2_min_tx
mcs2_max_tx: $mcs2_max_tx
mcs3_min_tx: $mcs3_min_tx
mcs3_max_tx: $mcs3_max_tx
mcs4_min_tx: $mcs4_min_tx
mcs4_max_tx: $mcs4_max_tx
mcs5_min_tx: $mcs5_min_tx
mcs5_max_tx: $mcs5_max_tx
mcs6_min_tx: $mcs6_min_tx
mcs6_max_tx: $mcs6_max_tx
mcs7_min_tx: $mcs7_min_tx
mcs7_max_tx: $mcs7_max_tx
video:
sensor: $sensor
min_bitrate: $min_bitrate
max_bitrate: $max_bitrate
EOF
echo "Created $CFG_FILE with default/auto-detected values."
else
echo "$CFG_FILE found. Updating values with yaml-cli..."
# Update existing keys with yaml-cli
yaml-cli -i "$CFG_FILE" -s .vtx_info.vtx_id ff00
yaml-cli -i "$CFG_FILE" -s .vtx_info.build_option "$build_option"
yaml-cli -i "$CFG_FILE" -s .vtx_info.soc "$soc"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.wifi_adapter "$raw_driver"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.min_bw "$min_bw"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.max_bw "$max_bw"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.ldpc "$ldpc"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.stbc "$stbc"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.max_mcs "$max_mcs"
# Update tx_power subsection
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs0_min_tx "$mcs0_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs0_max_tx "$mcs0_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs1_min_tx "$mcs1_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs1_max_tx "$mcs1_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs2_min_tx "$mcs2_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs2_max_tx "$mcs2_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs3_min_tx "$mcs3_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs3_max_tx "$mcs3_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs4_min_tx "$mcs4_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs4_max_tx "$mcs4_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs5_min_tx "$mcs5_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs5_max_tx "$mcs5_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs6_min_tx "$mcs6_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs6_max_tx "$mcs6_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs7_min_tx "$mcs7_min_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.wifi.tx_power.mcs7_max_tx "$mcs7_max_tx"
yaml-cli -i "$CFG_FILE" -s .vtx_info.video.sensor "$sensor"
yaml-cli -i "$CFG_FILE" -s .vtx_info.video.min_bitrate "$min_bitrate"
yaml-cli -i "$CFG_FILE" -s .vtx_info.video.max_bitrate "$max_bitrate"
echo "Updated $CFG_FILE with new auto-detected or default values via yaml-cli."
fi

View File

@ -22,6 +22,7 @@ define WIFIBROADCAST_NG_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -d $(TARGET_DIR)/etc/init.d
$(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(WIFIBROADCAST_NG_PKGDIR)/files/S98wifibroadcast
$(INSTALL) -m 755 -t $(TARGET_DIR)/etc/init.d $(WIFIBROADCAST_NG_PKGDIR)/files/S75generate_vtx_info
$(INSTALL) -m 755 -d $(TARGET_DIR)/usr/bin
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/keygen
@ -31,6 +32,7 @@ define WIFIBROADCAST_NG_INSTALL_TARGET_CMDS
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(@D)/wfb_tun
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(WIFIBROADCAST_NG_PKGDIR)/files/wfb-cli
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(WIFIBROADCAST_NG_PKGDIR)/files/wifibroadcast
$(INSTALL) -m 755 -t $(TARGET_DIR)/usr/bin $(WIFIBROADCAST_NG_PKGDIR)/files/generate_vtx_info.sh
$(INSTALL) -m 755 -d $(TARGET_DIR)/var/www
$(INSTALL) -m 644 -t $(TARGET_DIR)/var/www $(WIFIBROADCAST_NG_PKGDIR)/www/*