 313444a79e
			
		
	
	313444a79e
	
	
	
		
			
			All protos for wwan (ncm,qmi,mbim) do have a delay option. To standardize that add also the missing delay option to the 3g proto. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
		
			
				
	
	
		
			117 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| [ -n "$INCLUDE_ONLY" ] || {
 | |
| 	NOT_INCLUDED=1
 | |
| 	INCLUDE_ONLY=1
 | |
| 
 | |
| 	. ../netifd-proto.sh
 | |
| 	. ./ppp.sh
 | |
| 	init_proto "$@"
 | |
| }
 | |
| 
 | |
| proto_3g_init_config() {
 | |
| 	no_device=1
 | |
| 	available=1
 | |
| 	ppp_generic_init_config
 | |
| 	proto_config_add_string "device:device"
 | |
| 	proto_config_add_string "apn"
 | |
| 	proto_config_add_string "service"
 | |
| 	proto_config_add_string "pincode"
 | |
| 	proto_config_add_string "delay"
 | |
| 	proto_config_add_string "dialnumber"
 | |
| }
 | |
| 
 | |
| proto_3g_setup() {
 | |
| 	local interface="$1"
 | |
| 	local chat
 | |
| 
 | |
| 	json_get_var device device
 | |
| 	json_get_var apn apn
 | |
| 	json_get_var service service
 | |
| 	json_get_var pincode pincode
 | |
| 	json_get_var dialnumber dialnumber
 | |
| 	json_get_var delay delay
 | |
| 
 | |
| 	[ -n "$dat_device" ] && device=$dat_device
 | |
| 
 | |
| 	device="$(readlink -f $device)"
 | |
| 	[ -e "$device" ] || {
 | |
| 		proto_set_available "$interface" 0
 | |
| 		return 1
 | |
| 	}
 | |
| 
 | |
| 	[ -n "$delay" ] && sleep "$delay"
 | |
| 
 | |
| 	case "$service" in
 | |
| 		cdma|evdo)
 | |
| 			chat="/etc/chatscripts/evdo.chat"
 | |
| 		;;
 | |
| 		*)
 | |
| 			chat="/etc/chatscripts/3g.chat"
 | |
| 			cardinfo=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom)
 | |
| 			if echo "$cardinfo" | grep -q Novatel; then
 | |
| 				case "$service" in
 | |
| 					umts_only) CODE=2;;
 | |
| 					gprs_only) CODE=1;;
 | |
| 					*) CODE=0;;
 | |
| 				esac
 | |
| 				export MODE="AT\$NWRAT=${CODE},2"
 | |
| 			elif echo "$cardinfo" | grep -q Option; then
 | |
| 				case "$service" in
 | |
| 					umts_only) CODE=1;;
 | |
| 					gprs_only) CODE=0;;
 | |
| 					*) CODE=3;;
 | |
| 				esac
 | |
| 				export MODE="AT_OPSYS=${CODE}"
 | |
| 			elif echo "$cardinfo" | grep -q "Sierra Wireless"; then
 | |
| 				SIERRA=1
 | |
| 			elif echo "$cardinfo" | grep -qi huawei; then
 | |
| 				case "$service" in
 | |
| 					umts_only) CODE="14,2";;
 | |
| 					gprs_only) CODE="13,1";;
 | |
| 					*) CODE="2,2";;
 | |
| 				esac
 | |
| 				export MODE="AT^SYSCFG=${CODE},3FFFFFFF,2,4"
 | |
| 			fi
 | |
| 
 | |
| 			if [ -n "$pincode" ]; then
 | |
| 				PINCODE="$pincode" gcom -d "$device" -s /etc/gcom/setpin.gcom || {
 | |
| 					proto_notify_error "$interface" PIN_FAILED
 | |
| 					proto_block_restart "$interface"
 | |
| 					return 1
 | |
| 				}
 | |
| 			fi
 | |
| 			[ -n "$MODE" ] && gcom -d "$device" -s /etc/gcom/setmode.gcom
 | |
| 
 | |
| 			# wait for carrier to avoid firmware stability bugs
 | |
| 			[ -n "$SIERRA" ] && {
 | |
| 				gcom -d "$device" -s /etc/gcom/getcarrier.gcom || return 1
 | |
| 			}
 | |
| 
 | |
| 			if [ -z "$dialnumber" ]; then
 | |
| 				dialnumber="*99***1#"
 | |
| 			fi
 | |
| 
 | |
| 		;;
 | |
| 	esac
 | |
| 
 | |
| 	connect="${apn:+USE_APN=$apn }DIALNUMBER=$dialnumber /usr/sbin/chat -t5 -v -E -f $chat"
 | |
| 	ppp_generic_setup "$interface" \
 | |
| 		noaccomp \
 | |
| 		nopcomp \
 | |
| 		novj \
 | |
| 		nobsdcomp \
 | |
| 		noauth \
 | |
| 		set EXTENDPREFIX=1 \
 | |
| 		lock \
 | |
| 		crtscts \
 | |
| 		115200 "$device"
 | |
| 	return 0
 | |
| }
 | |
| 
 | |
| proto_3g_teardown() {
 | |
| 	proto_kill_command "$interface"
 | |
| }
 | |
| 
 | |
| [ -z "$NOT_INCLUDED" ] || add_protocol 3g
 |