tag rc6
[openwrt/svn-archive/openwrt.git] / package / comgt / files / ifup.wwan
1 #!/bin/sh
2 [ $# = 0 ] && { echo " $0 <group>"; exit; }
3 . /etc/functions.sh
4 type=$1
5
6 [ "$(nvram get ${type}_proto)" = "wwan" ] || {
7 echo "$0: ${type}_proto isn't wwan"
8 exit
9 }
10
11 mkdir -p /var/lock
12
13 for module in slhc ppp_generic ppp_async; do
14 /sbin/insmod $module 2>&- >&-
15 done
16
17 wwan_device="$(nvram get wwan_device)"
18 [ -n "$wwan_device" -a -e "$wwan_device" ] || {
19 # try the defaults
20 for dev in /dev/tts/2 /dev/usb/tts/0 /dev/noz0; do
21 [ -e "$dev" ] && {
22 wwan_device="$dev"
23 nvram set wwan_device="$dev"
24 break
25 }
26 done
27 [ -z "$wwan_device" ] && {
28 echo "$0: No device found"
29 exit 1
30 }
31 }
32
33 if gcom -d $wwan_device -s /etc/gcom/getcardinfo.gcom | grep Novatel 2>/dev/null >/dev/null; then
34 case "$(nvram get wwan_service)" in
35 umts_only) CODE=2;;
36 gprs_only) CODE=1;;
37 *)
38 # umts_first
39 CODE=0
40 ;;
41 esac
42 MODE="AT\$NWRAT=${CODE},2"
43 else
44 case "$(nvram get wwan_service)" in
45 umts_only) CODE=1;;
46 gprs_only) CODE=0;;
47 *)
48 # umts_first
49 CODE=3
50 ;;
51 esac
52 MODE="AT_OPSYS=${CODE}"
53 fi
54
55 (while :; do
56 USERNAME="$(nvram get wwan_username)"
57 PASSWORD="$(nvram get wwan_passwd)"
58 KEEPALIVE="$(nvram get wwan_redialperiod)"
59 KEEPALIVE="${KEEPALIVE:+lcp-echo-failure 5 lcp-echo-interval $KEEPALIVE}"
60 DEMAND="$(nvram get wwan_demand)"
61 APN="$(nvram get wwan_apn)"
62 case "$DEMAND" in
63 on|1|enabled)
64 DEMAND=$(nvram get wwan_idletime)
65 DEMAND=${DEMAND:+demand idle $DEMAND}
66 [ -f /etc/ppp/filter ] && DEMAND=${DEMAND:+precompiled-active-filter /etc/ppp/filter $DEMAND}
67 # set up a dummy nameserver for dial on demand
68 echo "nameserver 1.1.1.1" > /tmp/resolv.conf.auto
69 ;;
70 *) DEMAND="";;
71 esac
72
73 MTU=$(nvram get wwan_mtu)
74
75 echo 0 > /proc/diag/led/3g_blue
76 echo 1 > /proc/diag/led/3g_green
77 echo 1 > /proc/diag/led/3g_blink
78 if PINCODE=$(nvram get wwan_pincode) gcom -d $wwan_device -s /etc/gcom/setpin.gcom; then
79 MODE="$MODE" gcom -d $wwan_device -s /etc/gcom/setmode.gcom
80 echo 0 > /proc/diag/led/3g_blink
81 /usr/sbin/pppd nodetach \
82 noaccomp \
83 nopcomp \
84 novj \
85 nobsdcomp \
86 noauth \
87 usepeerdns \
88 defaultroute \
89 replacedefaultroute \
90 ipparam "$type" \
91 linkname "$type" \
92 user "$USERNAME" \
93 password "$PASSWORD" \
94 ${MTU:+mtu $MTU mru $MTU} \
95 $DEMAND \
96 $KEEPALIVE \
97 lock \
98 crtscts \
99 connect "WWAN_APN=\"$APN\" /etc/ppp/wwan.connect" \
100 460800 "$wwan_device"
101 else
102 echo "Wrong Pincode."
103 break
104 fi
105 done 2>&1 | logger) &