Huawei E220 UMTS/GPRS Modem mit Linux (Ubuntu)



Die erste Version der Verbindungsskripte von Albrecht Gebhard.
 

PPP Verbindungskonfiguration

Die PPP Konfiguration benötigt verschiedene Skripte, das hat zwei Gründe:

  • Man muss den PIN-Code seiner SIM-Karte eingeben, um sich zu authentifizieren, aber nur ein Mal - bis das Modem ab- und wieder angeschlossen wird.
    Beim zweiten Mal gibt es eine Fehlermeldung - deshalb zwei Skripte.
  • A. Gebhard meint, er sei sich hier nicht sicher, ich habe aber Einiges in die Richtung versucht, und bin ziemlich sicher,
    dass das Modem ungefähr 20 Sekunden braucht, um umzuschalten. Ich hatte aus Zeitgründen ein paar Tage auf 10 Sekunden umgestellt,
    wobei ich dann aber relativ häufig keine IP zugewiesen bekam. (bzw. bekommt man dann als DNS-Server nur 10.11.12.13 und 10.11.12.14)

Bevor wir hier loslegen, nur zur Information: ich habe versucht, die Skripte neutral zu benennen, jeder kann diese natürlich nach Lust und Laune
umbenennen, aber bitte nicht auf die Verweise innerhalb der Skripte vergessen!
Noch etwas Wichtiges, die Zugangsdaten findet man hier.
Diese sind dann, je nach Anbieter, anstelle der rot markierten Stellen einzufügen!

Erstellen der chat-scripts


Alle Dateien müssen mit einem Editor mit root-Rechten erstellt werden!

1) /etc/ppp/peers/ppp:

# usbserial device, some options:
/dev/ttyUSB0
460800
idle 7200
lock
crtscts
modem
noauth
# dns, routing
usepeerdns
replacedefaultroute
defaultroute
noipdefault
# avoid compression:
noccp
nobsdcomp
novj
# usually doesnt matter for GPRS/UMTS connections:
user "USER"
password "PASS"
# connect script
connect "/usr/sbin/ppp-chat.sh"
# t-mobile specific?
ipcp-restart 8
ipcp-max-configure 50
ipcp-accept-local
ipcp-accept-remote
		

2) /usr/sbin/ppp-chat.sh:

#!/bin/sh

# call the preparation chat script (with pin and if this fails without pin)
/usr/sbin/chat -V -f /etc/chatscripts/ppp-prep || /usr/sbin/chat -V -f /etc/chatscripts/ppp-prep-nopin
# wait to switch between GPRS/UMTS
sleep 20
# the final chat script:
/usr/sbin/chat -V -f /etc/chatscripts/ppp
		

... und jetzt noch die oben erwähnten chat scripts

3) /etc/chatscripts/ppp-prep
ABORT BUSY
ABORT ERROR
ABORT 'NO CARRIER'
REPORT CONNECT
TIMEOUT 10
"" "ATZ"
# replace XXXX with your PIN:
OK "AT+CPIN=XXXX"
OK "ATE1V1&D2&C1S0=0+IFC=2,2"
OK "AT+IPR=115200"
OK "ATE1"
SAY "\nWarte 20 Sekunden um zwischen UMTS/GPRS umzuschalten ...\n"
		
4) /etc/chatscripts/ppp-prep-nopin
ABORT BUSY
ABORT ERROR
ABORT 'NO CARRIER'
REPORT CONNECT
TIMEOUT 10
"" "ATZ"
OK "ATE1V1&D2&C1S0=0+IFC=2,2"
OK "AT+IPR=115200"
OK "ATE1"
SAY "\nWarte 20 Sekunden um zwischen UMTS/GPRS umzuschalten ...\n"
		
5) /etc/chatscripts/ppp
ABORT BUSY
ABORT 'NO CARRIER'
ABORT ERROR
REPORT CONNECT
TIMEOUT 10
SAY "Verbinde mit Server\n"
TIMEOUT 60
"" "ATD*99***1#"
CONNECT \c
		

 

Nun können wir testen, ob alles funktioniert!
Die Verbindung startet man mit
pppd call ppp

oder um zu debuggen mit
pppd call ppp nodetach

Am Besten man erstellt sich hierzu einen Starter im Panel, dann spart man sich das permanente Öffnen eines Terminals.

Sollte die Verbindung nicht zustande kommen, kann man versuchen in den beiden Scripts "ppp-prep" und "ppp-prep-nopin" nach OK "ATE1" noch ein
OK "at+cgdcont=1,\042IP\042,\042*A1*.net\042 (Für A1, sonst entsprechend dem eigenen Init-String) einzufügen. Zumindest für A1 ist dieser Tipp in einigen Fällen essentiell.
Vielen Dank an server für diesen Hinweis!

Beendet wird die Verbindung am Besten aus dem Terminal mit dem Befehl: kill -INT `cat /var/run/ppp0.pid`
Ich kenne zumindest keine andere Möglichkeit. Bei dieser Eingabe nutzen wir die Tatsache aus, dass pppd beim Verbindungsaufbau
eine Datei mit der ProzessID in /var/run/ anlegt, diese lesen wir mit cat aus und können so den Prozess erledigen.
Wer mir eine bessere Lösung anbieten kann, bitte, immer her damit!

Nachtrag 07.06.07: Obiger Absatz war meine unwissende Lösung, die ich mir selber zusammengebastelt habe - frei nach dem Motto:
warum einfach, wenns kompliziert auch geht ;) Eine vernünftige Variante, wie man die Verbindung auf- und wieder abbaut ist z.B. pon/poff.
Aufgebaut wird die Verbindung somit mit pon ppp, mit poff ppp wird sie wieder abgebaut.

Eine zweite, einfachere Möglichkeit will ich hier skizzieren.