mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			157 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			157 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| wfb_soc=$(ipcinfo -c)
 | |
| wfb_key=/etc/drone.key
 | |
| wfb_dev=wlan0
 | |
| 
 | |
| wfb_yaml() {
 | |
| 	if [ -e "$1" ]; then
 | |
| 		while IFS=": " read -r key value; do
 | |
| 			[ -n "$value" ] && export "$key=$value"
 | |
| 		done < "$1"
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| load_config() {
 | |
| 	wfb_yaml /rom/etc/wfb.yaml
 | |
| 	wfb_yaml /etc/wfb.yaml
 | |
| }
 | |
| 
 | |
| load_modules() {
 | |
| 	for card in $(lsusb | awk '{print $6}' | sort | uniq); do
 | |
| 		case "$card" in
 | |
| 			"0bda:8812" | "0bda:881a" | "0b05:17d2" | "2357:0101" | "2604:0012")
 | |
| 				driver=88XXau
 | |
| 				modprobe "$driver"
 | |
| 				;;
 | |
| 
 | |
| 			"0bda:a81a")
 | |
| 				driver=8812eu
 | |
| 				modprobe "$driver" rtw_regd_src=1 rtw_tx_pwr_by_rate=0 rtw_tx_pwr_lmt_enable=0
 | |
| 				;;
 | |
| 
 | |
| 			"0bda:f72b" | "0bda:b733")
 | |
| 				driver=8733bu
 | |
| 				modprobe "$driver" rtw_regd_src=1 rtw_tx_pwr_by_rate=0 rtw_tx_pwr_lmt_enable=0
 | |
| 				;;
 | |
| 		esac
 | |
| 	done
 | |
| 
 | |
| 	if [ -z "$driver" ]; then
 | |
| 		echo "- Wireless module not detected!"
 | |
| 		exit 1
 | |
| 	else
 | |
| 		echo "- Detected driver: $driver"
 | |
| 	fi
 | |
| 
 | |
| 	if ! ifconfig "$wfb_dev" up; then
 | |
| 		echo "- Wireless driver not found!"
 | |
| 		exit 1
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| load_interface() {
 | |
| 	iw "$wfb_dev" set monitor none
 | |
| 	iw "$wfb_dev" set channel "$channel" "$mode"
 | |
| 	iw reg set "$region"
 | |
| 
 | |
| 	if [ "$driver" = "88XXau" ]; then
 | |
| 		iw "$wfb_dev" set txpower fixed $((txpower * -100))
 | |
| 	else
 | |
| 		iw "$wfb_dev" set txpower fixed $((txpower * 50))
 | |
| 	fi
 | |
| 
 | |
| 	case "$mode" in
 | |
| 		"HT20")
 | |
| 			bandwidth=20
 | |
| 			;;
 | |
| 		"HT40+" | "HT40-")
 | |
| 			bandwidth=40
 | |
| 			;;
 | |
| 	esac
 | |
| }
 | |
| 
 | |
| start_broadcast() {
 | |
| 	echo "- Starting wfb_tx"
 | |
| 	wfb_tx -K "$wfb_key" -M "$wfb_index" -B "$bandwidth" -C 8000 \
 | |
| 		-k "$fec_k" -n "$fec_n" -i "$link_id" "$wfb_dev" &> /dev/null &
 | |
| }
 | |
| 
 | |
| start_tunnel() {
 | |
| 	echo "- Starting wfb_tun"
 | |
| 	wfb_rx -p 160 -u 5800 -K "$wfb_key" -i "$link_id" "$wfb_dev" &> /dev/null &
 | |
| 	wfb_tx -p 32 -u 5801 -K "$wfb_key" -M "$tun_index" \
 | |
| 		-k "$fec_k" -n "$fec_n" -i "$link_id" "$wfb_dev" &> /dev/null &
 | |
| 	wfb_tun -a 10.5.0.10/24 > /dev/null &
 | |
| }
 | |
| 
 | |
| start_telemetry() {
 | |
| 	if [ "$wfb_soc" = "ssc33x" ]; then
 | |
| 		devmem 0x1F207890 16 0x8
 | |
| 	fi
 | |
| 
 | |
| 	if [ "$router" = "msposd" ]; then
 | |
| 		echo "- Starting $router"
 | |
| 		msposd --baudrate 115200 --channels 8 -osd --ahi 0 -r "$osd_fps" \
 | |
| 			--master "$serial" --out 10.5.0.1:14551 > /dev/null &
 | |
| 	elif [ "$router" = "mavfwd" ]; then
 | |
| 		echo "- Starting $router"
 | |
| 		mavfwd --baudrate 115200 --channels 8 -p 100 -a 15 -t \
 | |
| 			--master "$serial" --in 0.0.0.0:14550 --out 10.5.0.1:14551 > /dev/null &
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| majestic_sigmastar() {
 | |
| 	if [ "$(ipcinfo -s)" = "imx415" ]; then
 | |
| 		cli -s .isp.sensorConfig /etc/sensors/imx415_fpv.bin
 | |
| 	fi
 | |
| 	cli -s .isp.exposure 5
 | |
| 	cli -s .video0.codec h265
 | |
| 	cli -s .video0.fps 60
 | |
| 	cli -s .video0.rcMode cbr
 | |
| 	cli -s .outgoing.enabled true
 | |
| 	cli -s .outgoing.server udp://0.0.0.0:5600
 | |
| }
 | |
| 
 | |
| start() {
 | |
| 	load_config
 | |
| 	load_modules
 | |
| 	load_interface
 | |
| 
 | |
| 	start_broadcast
 | |
| 	start_tunnel
 | |
| 	start_telemetry
 | |
| 
 | |
| 	if [ ! -e /etc/system.ok ]; then
 | |
| 		if [ "$wfb_soc" = "ssc33x" ]; then
 | |
| 			majestic_sigmastar
 | |
| 		fi
 | |
| 
 | |
| 		touch /etc/system.ok
 | |
| 		killall -1 majestic
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| stop() {
 | |
| 	killall -q wfb_rx
 | |
| 	killall -q wfb_tx
 | |
| 	killall -q wfb_tun
 | |
| 	killall -q msposd
 | |
| 	killall -q mavfwd
 | |
| }
 | |
| 
 | |
| case "$1" in
 | |
| 	start|stop)
 | |
| 		$1
 | |
| 		;;
 | |
| 
 | |
| 	restart|reload)
 | |
| 		stop
 | |
| 		start
 | |
| 		;;
 | |
| 
 | |
| 	*)
 | |
| 		echo "Usage: $0 {start|stop|restart|reload}"
 | |
| 		exit 1
 | |
| 		;;
 | |
| esac
 |