mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh /etc/rc.common
 | |
| 
 | |
| START=99
 | |
| 
 | |
| adb_exec() {
 | |
| 	adb -s "$serial" shell "( $1 ) >/dev/null 2>&1"'; printf "\nEXIT_CODE: %i\n" $?' | head -c 64 | grep -qx 'EXIT_CODE: 0\r\?'
 | |
| }
 | |
| 
 | |
| enablemodem_do() {
 | |
| 	logger -t adb-enablemodem 'INFO: waiting for device'
 | |
| 	adb wait-for-device
 | |
| 	serial="$(adb get-serialno)"
 | |
| 
 | |
| 	vendor_id="$(adb -s "$serial" shell 'uci get product.usb.vid' | head -c 16 | tr -d '\r\n')"
 | |
| 	product_id="$(adb -s "$serial" shell 'uci get product.usb.pid' | head -c 16 | tr -d '\r\n')"
 | |
| 
 | |
| 	case "$vendor_id:$product_id" in
 | |
| 	"0x2357:0x000D") # TP-LINK LTE MODULE
 | |
| 		case "$1" in
 | |
| 		start)
 | |
| 			if adb_exec '
 | |
| 				chmod +x /WEBSERVER/www/cgi-bin/*
 | |
| 				fds="$(ls /proc/$$/fd | grep -v "^[012]$")"
 | |
| 				for fd in $fds; do
 | |
| 					eval "exec $fd>&-"
 | |
| 				done
 | |
| 				start-stop-daemon -x httpd -S -- -h /WEBSERVER/www/
 | |
| 			'; then
 | |
| 				logger -t adb-enablemodem 'INFO: httpd on modem started'
 | |
| 			else
 | |
| 				logger -t adb-enablemodem 'ERROR: failed to start httpd on modem'
 | |
| 			fi
 | |
| 			option_newid='/sys/bus/usb-serial/drivers/option1/new_id'
 | |
| 			if [ -e "$option_newid" ]; then
 | |
| 				printf '%s %s' "$vendor_id" "$product_id" > "$option_newid"
 | |
| 			fi
 | |
| 			;;
 | |
| 		stop)
 | |
| 			if adb_exec 'start-stop-daemon -x httpd -K'; then
 | |
| 				logger -t adb-enablemodem 'INFO: httpd on modem stopped'
 | |
| 			else
 | |
| 				logger -t adb-enablemodem 'ERROR: failed to stop httpd on modem'
 | |
| 			fi
 | |
| 			;;
 | |
| 		esac
 | |
| 		;;
 | |
| 	*)
 | |
| 		logger -t adb-enablemodem "ERROR: unknown device $vendor_id:$product_id"
 | |
| 		;;
 | |
| 	esac
 | |
| }
 | |
| 
 | |
| start() {
 | |
| 	( enablemodem_do start ) &
 | |
| }
 | |
| 
 | |
| stop() {
 | |
| 	( enablemodem_do stop ) &
 | |
| }
 | |
| 
 | |
| restart() {
 | |
| 	( enablemodem_do stop; enablemodem_do start ) &
 | |
| }
 | |
| 
 |