gobi-x201-init - conn - A script repository to manage connections in Linux.
 (HTM) git clone git://r-36.net/conn
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       gobi-x201-init (2777B)
       ---
            1 #!/bin/sh
            2 
            3 #
            4 # My rule for udev is:
            5 # SUBSYSTEM=="tty", DRIVERS=="qcserial", ATTRS{bInterfaceNumber}=="02", \
            6 #        SYMLINK+="gobimodem"
            7 # The other ttyUSB0 can be symlinked with "01" and "03" respectively,
            8 # where "03" is "gobigps" and "01" is "gobidiag".
            9 #
           10 CONTROL_DEVICE="/dev/gobimodem"
           11 #
           12 # Change the PIN to your SIM PIN.
           13 #
           14 PIN="7471"
           15 #
           16 # Your provider's APN.
           17 #
           18 APN="surfo2"
           19 #
           20 # The user, which is used. It shouldn't matter anyway.
           21 #
           22 USER="o2"
           23 #
           24 # The number to dial to start the link.
           25 #
           26 NUMBER="*99#"
           27 
           28 case "$1" in
           29         -s)
           30                 if [ -z "$(lsmod | grep qcserial)" ];
           31                 then
           32                         modprobe qcserial
           33                 fi
           34 
           35                 echo -n "Powering up Gobi card.."
           36                 rfkill unblock wwan
           37                 while [ ! -c $CONTROL_DEVICE ];
           38                 do
           39                         sleep 0.5;
           40                         echo -n ".";
           41                 done
           42                 echo "done"
           43 
           44                 echo -n "Turning on Gobi card..."
           45                 sleep 2
           46                 chat -t 2 -v "ABORT" "NO CARRIER" "" "AT+CFUN=1" "OK" > \
           47                         $CONTROL_DEVICE < $CONTROL_DEVICE
           48                 if [ $? -eq 4 ];
           49                 then
           50                         logger -s -t "gobi-init" "AT+CFUN=1 failed. This" \
           51                                 "could be because of no carrier found. Try" \
           52                                 "restarting the connection."
           53                         exit 1
           54                 fi
           55 
           56                 sleep 2
           57                 if [ -n "$PIN" ];
           58                 then
           59                         echo -n "PIN..."
           60                             /usr/sbin/chat -t 2 -v "" "AT+CPIN?" "SIM PIN" \
           61                                 "AT" "OK" "AT+CPIN=\"$PIN\"" "OK" \
           62                                 > $CONTROL_DEVICE < $CONTROL_DEVICE
           63                 fi
           64                 sleep 1
           65                 echo -n "COM..."
           66                 i=0
           67                 while [ $i -lt 11 ];
           68                 do
           69                         chat -t 2 -v "" "AT+CPIN?" "READY" \
           70                                 > $CONTROL_DEVICE < $CONTROL_DEVICE
           71                         [ $? -eq 0 ] && break
           72 
           73                         i=`expr $i + 1`
           74                         if [ $i -eq 10 ];
           75                         then
           76                                 logger -s -t "gobi-init" "Gobi modem" \
           77                                         "needed more than 10 seconds" \
           78                                         "to be SIM ready. Please" \
           79                                         "restart the connection."
           80                                 exit 1
           81                         fi
           82                         sleep 1
           83                 done
           84                 sleep 1
           85                 chat -t 2 -v "" "AT+CPIN?" "READY" "AT" "OK" \
           86                         "AT+CGDCONT=1,\"IP\",\"$APN\"" "OK" \
           87                         "ATDT${NUMBER}" "CONNECT" \
           88                         > $CONTROL_DEVICE < $CONTROL_DEVICE
           89                 if [ $? -gt 0 ];
           90                 then
           91                         logger -s -t "gobi-init" "Dialing the carrier failed." \
           92                                 "See syslog for details."
           93                         exit 1
           94                 fi
           95                 echo "done"
           96 
           97                 echo -n "Starting pppd ..."
           98                 if [ "$(ip route | grep default)" != "" ];
           99                 then
          100                         ip route del default
          101                 fi
          102                 pppd $CONTROL_DEVICE 9600 modem crtscts defaultroute \
          103                         usehostname user $USER noipdefault usepeerdns noauth \
          104                         nolock nolog
          105                 echo "done"
          106                 ;;
          107         -o)
          108                 if [ -n "$(pgrep -f "pppd $CONTROL_DEVICE")" ];
          109                 then
          110                         return 1
          111                 else
          112                         return 0
          113                 fi
          114                 ;;
          115         -k)
          116                 echo -n "Killing pppd ..."
          117                 pkill -KILL -f "pppd $CONTROL_DEVICE"
          118                 echo "done"
          119 
          120                 if [ -e $CONTROL_DEVICE ];
          121                 then
          122                         echo -n "Powering down Gobi card..."
          123                         chat -t 2 -v "" "AT+CFUN=0" "OK" > $CONTROL_DEVICE \
          124                                 < $CONTROL_DEVICE
          125                         echo "done"
          126                 fi
          127 
          128                 #echo -n "Removing qcserial driver ..."
          129                 #rmmod qcserial 2>/dev/null
          130                 #echo "done"
          131                 ;;
          132         -r)
          133                 $0 -k
          134                 $0 -s
          135                 ;;
          136         *)
          137                 echo "usage: $0 [-s|-k|-r]"
          138                 ;;
          139 esac
          140 exit 0
          141