3 [ -d /proc
/diag
] ||
return 0
4 grep WRT54G3G
/proc
/diag
/model
>/dev
/null ||
return 0
5 echo "$1" > /proc
/diag
/led
/3g_green
6 echo "$2" > /proc
/diag
/led
/3g_blue
7 echo "$3" > /proc
/diag
/led
/3g_blink
12 config_get device
"$1" device
14 # try to figure out the device if it's invalid
15 [ -n "$device" -a -e "$device" ] ||
{
16 for device
in /dev
/ttyUSB0
/dev
/ttyUSB1
/dev
/ttyUSB2
/dev
/tts
/2 /dev
/usb
/tts
/0 /dev
/noz0
; do
18 config_set
"$1" device
"$device"
24 # enable 3G with the 3G button by default
26 config_get button
"$1" button
28 config_set
"$1" button
1
33 stop_interface_ppp
"$1"
35 killall gcom
>/dev
/null
2>/dev
/null
38 setup_interface_3g
() {
41 local chat
="/etc/chatscripts/3g.chat"
44 config_get device
"$config" device
47 config_get maxwait
"$config" maxwait
48 maxwait
=${maxwait:-20}
49 while [ ! -e "$device" -a $maxwait -gt 0 ];do # wait for driver loading to catch up
50 maxwait
=$
(($maxwait - 1))
54 for module
in slhc ppp_generic ppp_async
; do
55 /sbin
/insmod
$module 2>&- >&-
59 config_get apn
"$config" apn
62 config_get service
"$config" service
65 config_get pincode
"$config" pincode
68 config_get mtu
"$config" mtu
72 # figure out hardware specific commands for the card
74 cdma|evdo
) chat
="/etc/chatscripts/evdo.chat";;
76 cardinfo
=$
(gcom
-d "$device" -s /etc
/gcom
/getcardinfo.gcom
)
77 if echo "$cardinfo" |
grep Novatel
; then
83 mode
="AT\$NWRAT=${CODE},2"
84 elif echo "$cardinfo" |
grep Option
; then
90 mode
="AT_OPSYS=${CODE}"
92 # Don't assume Option to be default as it breaks with Huawei Cards/Sticks
94 PINCODE
="$pincode" gcom
-d "$device" -s /etc
/gcom
/setpin.gcom ||
{
95 echo "$config(3g): Failed to set the PIN code."
100 MODE
="$mode" gcom
-d "$device" -s /etc
/gcom
/setmode.gcom
105 config_set
"$config" "connect" "${apn:+USE_APN=$apn }/usr/sbin/chat -t5 -v -E -f $chat"
106 start_pppd
"$config" \
114 ${mtu:+mtu $mtu mru $mtu} \