Linux UMTS Script

um mir die UMTS Einwahl zu erleichtern, hab ich mir dafür ein Script geschrieben.
Das Script läuft bei mir zuverlässig, ohne dass ich mehr machen müsste als das Script starten.

#!/bin/bash
# Die Pin für die SIM-Karte
PIN=1234

CONTROL_DEVICE=/dev/ttyACM0
UMTS_DEVICE=/dev/ttyACM1
GPS_DEVICE=/dev/ttyACM2

chmod 777 $CONTROL_DEVICE
chmod 777 $UMTS_DEVICE 
chmod 777 $GPS_DEVICE

startumts()
{
        /etc/init.d/NetworkManager stop
        echo -n " * Checking PIN ... "
        /usr/sbin/chat -t 1 -v "" "AT+CPIN?" "READY" > $CONTROL_DEVICE < $CONTROL_DEVICE
        STATUS_PIN=$?
        echo -n "$STATUS_PIN "
        if [ $STATUS_PIN -gt 0 ] ; then
                echo "MISSING";
                echo -n " * Sending PIN ... "
                /usr/sbin/chat -t 1 -v "" "AT+CPIN=\"$PIN\"" "OK" > $CONTROL_DEVICE < $CONTROL_DEVICE
                SET_PIN=$?
                echo -n "$SET_PIN "
                if [ $SET_PIN -gt 0 ] ; then
                        echo "ERROR"
                        exit;
                else 
                        echo "OK";
                fi
        else
                echo "OK";
        fi
        echo -n " * Checking Antenna ... "
        /usr/sbin/chat -t 2 -v "" "AT+CFUN=1" "OK" > $CONTROL_DEVICE < $CONTROL_DEVICE
        STATUS_ANTENNA=$?
        echo -n "$STATUS_ANTENNA "
        if [ $STATUS_ANTENNA -gt 0 ] ; then
                echo "ERROR"
                exit
        else 
                echo "OK"
        fi
        echo -n " * Starting UMTS ... "
        sleepx 5
        while [ 1 ] ; do
                wvdial
        done
}
poweroff()
{
        echo " * Funk-Modul deaktivieren ...";
        /usr/sbin/chat -t 2 -v "" "AT+CFUN=4" "OK" > $CONTROL_DEVICE < $CONTROL_DEVICE
}
sleepx()
{
        T=$1
        while [ $T -gt 0 ] ; do
                echo -n "."
                T=$(( $T - 1 ))
                sleep 1
        done
        echo ""
}
resetdev()
{
        echo " * Funk-Modul reset ...";
        /usr/sbin/chat -t 2 -v "" "AT*E2RESET" "OK" > $CONTROL_DEVICE < $CONTROL_DEVICE
        sleepx 20
}
case "$1" in
  start)
        startumts
        ;;
  stop)
        echo "Stopping UMTS"
        poweroff
        ;;
  reset)
        echo "RESET DEVICE"
        resetdev
        ;;
  *)
        echo "$0 start or $0 stop"
        ;;
esac
Tags: linux umts