TomatoAnon: Do not commit routerid on every launch
[tomato.git] / release / src / router / others / switch3g
blob4f21628d4547eb08b587a01db754b633fb5cb1f8
1 #!/bin/sh
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
10 exit 0
13 PIN=`nvram get modem_pin`
14 IS_PIN=`nvram get modem_pin | wc -w`
15 DEVNR=`nvram get modem_dev`
17 #run process
18 echo "1" > /tmp/switch3g.debug
20 # is modem ready?
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
32 break;
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
39 break;
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
46 break;
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
53 break;
54 else
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`
62 # vendor:product
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`
71 else
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
82 done
84 #trying option and sierra module first
85 modprobe cdc-acm
86 modprobe option
87 modprobe sierra
88 sleep 2
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
98 break;
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
105 break;
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
112 break;
113 else
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...
117 rmmod sierra
118 rmmod option
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
125 rmmod 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
138 break;
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
153 break;
154 else
155 logger 3G MODEM - loading module
156 rmmod usbserial
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
163 break;
166 else
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`
172 rmmod usbserial
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
180 NO=0
181 if [ "$IS_PIN" == "1" ]; then
182 echo -e "AT+CPIN=$PIN\r" > /dev/$DEVNR
184 break;
185 else
186 NO=1
188 done
193 if [ "$NO" == "1" ]; then
194 logger 3G MODEM not found ... sorry
197 #end process
198 echo "0" > /tmp/switch3g.debug