4 # Copyright (C) 2011 shibby
7 CHECK
=`cat /tmp/switch3g.debug`
8 if [ "$CHECK" -gt 0 ]; then
9 logger
3G MODEM
- previous proces of switch3g still working
13 PIN
=`nvram get modem_pin`
14 IS_PIN
=`nvram get modem_pin | wc -w`
15 DEVNR
=`nvram get modem_dev`
18 echo "1" > /tmp
/switch3g.debug
21 DEV0
=`cat /proc/bus/usb/devices | grep Driver | grep cdc_acm | wc -l`
22 DEV1
=`cat /proc/bus/usb/devices | grep Driver | grep option | wc -l`
23 DEV2
=`cat /proc/bus/usb/devices | grep Driver | grep sierra | wc -l`
24 DEV3
=`cat /proc/bus/usb/devices | grep Driver | grep usbserial | wc -l`
26 if [ "$DEV0" -gt 0 ]; then
27 logger
3G MODEM already found
- using cdc-acm module
28 nvram
set 3g_module
=cdc-acm
29 if [ "$IS_PIN" == "1" ]; then
30 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
33 elif [ "$DEV1" -gt 0 ]; then
34 logger
3G MODEM already found
- using option module
35 nvram
set 3g_module
=option
36 if [ "$IS_PIN" == "1" ]; then
37 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
40 elif [ "$DEV2" -gt 0 ]; then
41 logger
3G MODEM already found
- using sierra module
42 nvram
set 3g_module
=sierra
43 if [ "$IS_PIN" == "1" ]; then
44 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
47 elif [ "$DEV3" -gt 0 ]; then
48 logger
3G MODEM already found
- using usbserial module
49 nvram
set 3g_module
=usbserial
50 if [ "$IS_PIN" == "1" ]; then
51 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
55 #modem not found, try detect
57 DEVICES
=`lsusb | awk '{print $6}'`
59 for SWITCH
in $DEVICES; do
60 SEARCH
=`ls /etc/usb_modeswitch.d/$SWITCH | wc -l`
64 if [ "$SEARCH" == "1" ]; then
65 logger
3G MODEM FOUND
- $SWITCH - Switching ...
66 /usr
/sbin
/usb_modeswitch
-Q -c /etc
/usb_modeswitch.d
/$SWITCH
68 TEST1
=`cat /etc/usb_modeswitch.d/$SWITCH | grep "TargetVendor" | cut -d "=" -f2 | wc -l`
69 if [ "$TEST1" == "1" ]; then
70 VENDOR
=`cat /etc/usb_modeswitch.d/$SWITCH | grep "TargetVendor" | cut -d "=" -f2 | cut -d "x" -f2`
72 VENDOR
=`echo $SWITCH | cut -d ":" -f1`
75 TEST2
=`lsusb | awk '{print $6}' | grep $VENDOR | wc -l`
76 if [ "$TEST2" == "1" ]; then
77 PRODUCT
=`lsusb | awk '{print $6}' | grep $VENDOR | cut -d ":" -f2`
78 logger
3G MODEM ready
- $VENDOR:$PRODUCT
79 echo "$VENDOR:$PRODUCT" > /tmp
/3g.detect
84 #trying option and sierra module first
89 DEV0
=`cat /proc/bus/usb/devices | grep Driver | grep cdc_acm | wc -l`
90 DEV1
=`cat /proc/bus/usb/devices | grep Driver | grep option | wc -l`
91 DEV2
=`cat /proc/bus/usb/devices | grep Driver | grep sierra | wc -l`
92 if [ "$DEV0" -gt 0 ]; then
93 logger
3G MODEM ready
- using cdc-acm module
94 nvram
set 3g_module
=cdc-acm
95 if [ "$IS_PIN" == "1" ]; then
96 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
99 elif [ "$DEV1" -gt 0 ]; then
100 logger
3G MODEM ready
- using option module
101 nvram
set 3g_module
=option
102 if [ "$IS_PIN" == "1" ]; then
103 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
106 elif [ "$DEV2" -gt 0 ]; then
107 logger
3G MODEM ready
- using sierra module
108 nvram
set 3g_module
=sierra
109 if [ "$IS_PIN" == "1" ]; then
110 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
114 logger
3G MODEM not found by cdc-acm
, option or sierra module. Trying usbserial ...
116 #rmmod cdc_acm //we can`t do that. I don`t know why...
120 IS_VENDOR
=`echo $VENDOR | wc -w`
121 if [ "$IS_VENDOR" -gt 0 ]; then
122 IS_PRODUCT
=`echo $PRODUCT | wc -w`
123 if [ "$IS_PRODUCT" -gt 0 ]; then
124 logger
3G MODEM
- loading module usbserial
126 insmod usbserial vendor
=0x
$VENDOR product
=0x
$PRODUCT maxSize
=4096
127 echo "$VENDOR:$PRODUCT" > /tmp
/3g.detect
131 DEV
=`cat /proc/bus/usb/devices | grep Driver | grep usbserial | wc -l`
132 if [ "$DEV" -gt 0 ]; then
133 logger
3G MODEM ready
- using usbserial module
134 nvram
set 3g_module
=usbserial
135 if [ "$IS_PIN" == "1" ]; then
136 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
139 elif [ -f /tmp
/3g.detect
]; then
140 VENDOR
=`cat /tmp/3g.detect | cut -d ":" -f1`
141 PRODUCT
=`cat /tmp/3g.detect | cut -d ":" -f2`
142 TEST3
=`lsusb | grep $VENDOR | grep $PRODUCT | wc -l`
143 if [ "$TEST3" == "1" ]; then
144 logger
3G MODEM FOUND
- already switched
- Last know
$VENDOR:$PRODUCT
146 DEV
=`cat /proc/bus/usb/devices | grep Driver | grep usbserial | wc -l`
147 if [ "$DEV" -gt 0 ]; then
148 logger
3G MODEM ready
- using usbserial module
149 nvram
set 3g_module
=usbserial
150 if [ "$IS_PIN" == "1" ]; then
151 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
155 logger
3G MODEM
- loading module
157 insmod usbserial vendor
=0x
$VENDOR product
=0x
$PRODUCT maxSize
=4096
158 echo "$VENDOR:$PRODUCT" > /tmp
/3g.detect
159 nvram
set 3g_module
=usbserial
160 if [ "$IS_PIN" == "1" ]; then
161 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
167 #last change. try load usbserial for each usb devices
168 DEVICES
=`lsusb | awk '{print $6}'`
169 for SWITCH
in $DEVICES; do
170 VENDOR
=`echo $SWITCH | cut -d ":" -f1`
171 PRODUCT
=`echo $SWITCH | cut -d ":" -f2`
173 insmod usbserial vendor
=0x
$VENDOR product
=0x
$PRODUCT maxSize
=4096
175 DEV
=`cat /proc/bus/usb/devices | grep Driver | grep usbserial | wc -l`
176 if [ "$DEV" -gt 0 ]; then
177 logger
3G MODEM ready
- using usbserial module
178 nvram
set 3g_module
=usbserial
179 echo "$VENDOR:$PRODUCT" > /tmp
/3g.detect
181 if [ "$IS_PIN" == "1" ]; then
182 echo -e "AT+CPIN=$PIN\r" > /dev
/$DEVNR
193 if [ "$NO" == "1" ]; then
194 logger
3G MODEM not found ... sorry
198 echo "0" > /tmp
/switch3g.debug