Huawei E220
Nur bei ganz alten Linux Distris relevant. Aktuelle Distributionen erkennen das E220 automatisch und diese Anleitung darf nicht verwendet werden
Das Huawei wird aktuell auch als Vodafone Zuhause Easybox verkauft. Es funktioniert auch mit Linux, dazu sind aber ein paar Vorarbeiten notwendig. Die folgende Anleitung wurde unter Debian Etch und Sid getestet.
Das Modem sichtbar machen
Das C-Programm von bobovsky sorgt erstmal dafür, dass das E220 seinen Modemport zugänglich macht. Ein apt-get install libusb-dev sorgt für die nötigen libs, so das der Compiler ohne Errors oder Warnings durchlaufen sollte.
Download huaweiAktBbo.tar.bz2
So wird es compiliert
huaweiAktBbo.c und das Makefile werden in ein eigenes Verzeichnis gelegt. Dann wird make aufgerufen, danach sollte eine neue Datei huaweiAktBbo im gleichen Verzeichnis liegen. Dieses File wird nun nach /usr/sbin kopiert.
Aufgerufen wird das nun mit huaweiAktBbo und ein modprobe usbserial vendor=0x12d1 product=0x1003 macht den seriellen Port nutzbar. Mit einem lsusb sollte man sich überzeugen, dass Vendor/Product-ID auch passen.
udevd
Wer das E220 automatisch initialisiert haben will, kann dazu udev bemühen. Bei Debian Etch wird udev automatisch installiert. Im Verzeichnis /etc/udev/rules.d ist ein neues File 75_e220.rules anzulegen:
SUBSYSTEM=="usb", SYSFS{idProduct}=="1003", SYSFS{idVendor}=="12d1", RUN+="/sbin/huaweiAktBbo" SUBSYSTEM=="usb", SYSFS{idProduct}=="1003", SYSFS{idVendor}=="12d1", RUN+="/bin/sleep 2" SUBSYSTEM=="usb", SYSFS{idProduct}=="1003", SYSFS{idVendor}=="12d1", RUN+="/sbin/modprobe usbserial vendor=0x12d1 product=0x1003"
Das sorgt nun dafür, dass
1. Das E220 seine serielle Modemschnittstelle preisgibt
2. Linux den passenden Treiber lädt
Bevor nun der pppd auf /dev/ttyUSB0 losgelassen wird, sollte noch geprüft werden, ob die Schnittstelle bereits da ist.
PPP Konfiguration
Das E220 verhält sich jetzt wie ein ganz normales Modem. Es muss jedoch eine geeignete Initialisierung stattfinden. Diese erfolgt mit dem bekannten AT Befehlssatz. Der ppp muss evtl. erst einmal installiert werden. Ein apt-get install ppp erledigt alles nötige.
/etc/ppp/peers/ppp
Die ppp Dialer Konfiguration legt die Besonderheiten des Protokolls für die spezifische Verbindung fest. Im Beispiel wird die Verbindung nach 5 Minuten nichts tun automatisch getrennt.
# usbserial device, some options: /dev/ttyUSB0 921600 idle 300 lock crtscts modem noauth # dns, routing usepeerdns replacedefaultroute defaultroute noipdefault # avoid compression: noccp nobsdcomp novj # usually doesnt matter for GPRS/UMTS connections: user "D2" password "D2" # connect script connect "/usr/sbin/ppp-chat.sh" # t-mobile specific? ipcp-restart 8 ipcp-max-configure 50 ipcp-accept-local ipcp-accept-remote
USER/PASS sind eigentlich egal, es muss aber was eingetragen sein. Der Speedparameter ist ebenfalls egal, das E220 läuft immer mit der maximal möglichen Geschwindigkeit. Die idle Time kann bei einer Flatrate oder Volumentarif auch weggelassen werden, die Option persist kann stattdessen gesetzt werden. Bei einem Zeittarif kann das allerdings zu einem Gebühren-GAU führen.
/usr/sbin/ppp-chat.sh
Dieses Skript versucht zunächst eine Verbindung unter Verwendung einer PIN. Falls das nicht funktioniert, wird die Verbindung ohne PIN versucht.
#!/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
Nicht vergessen, mit chmod 755 /usr/sbin/ppp-chat.sh die Rechte passend zu setzen. Den Befehl sleep 20 kann man sich auch schenken, einfach mal probieren. Wenn das E220 dann immer noch zuverlässig die Verbindung aufbaut, dann kann man sich diese 20s sparen.
/etc/chatscripts/ppp-prep
AT Kommandos für Verbindungsaufbau mit PIN.
ABORT BUSY ABORT ERROR ABORT 'NO CARRIER' REPORT CONNECT TIMEOUT 10 "" "ATZ" OK "AT+CGDCONT=1,\042IP\042,\042web.vodafone.de\042" # 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"
/etc/chatscripts/ppp-prep-nopin
Hier die AT Kommandos ohne Angabe einer PIN. Wird die PIN 3 mal falsch angegeben, wird die Karte meist gesperrt, daher alles dreifach kontrollieren...
ABORT BUSY ABORT ERROR ABORT 'NO CARRIER' REPORT CONNECT TIMEOUT 10 "" "ATZ" OK "AT+CGDCONT=1,\042IP\042,\042web.vodafone.de\042" OK "ATE1V1&D2&C1S0=0+IFC=2,2" OK "AT+IPR=115200" OK "ATE1" #SAY "\nWarte 20 Sekunden um zwischen UMTS/GPRS umzuschalten ...\n"
Statt web.vodafone.de muss natürlich etwas anderes eingetragen werden, wenn man bei einem anderen Netzprovider als Vodafone ist.
/etc/chatscripts/ppp
Dieses Chatskript legt die Meldungen und Reaktionen des pppd fest. Die Nummer *99***1# kann bei anderen Mobilfunk Providern anders sein.
ABORT BUSY ABORT 'NO CARRIER' ABORT ERROR REPORT CONNECT TIMEOUT 10 SAY "Verbinde mit Server\n" TIMEOUT 60 "" "ATD*99***1#" CONNECT \c
Finale
Mit pppd call ppp nodetach kann man nun sehen, was das Modem macht. Hat alles geklappt, müsste der Output in etwa so aussehen:
ATZ OK AT+CPIN=**** +CME ERROR: operation not allowed ATZ OK AT+CGDCONT=1,"IP","web.vodafone.de" OK ATE1V1&D2&C1S0=0+IFC=2,2 OK AT+IPR=115200 OK Verbinde mit Server ATE1 OK ATD*99***1# CONNECTchat: Jul 26 18:35:58 CONNECT Serial connection established. Using interface ppp0 Connect: ppp0 <--> /dev/ttyUSB0 CHAP authentication succeeded CHAP authentication succeeded Could not determine remote IP address: defaulting to 10.64.64.64 Cannot determine ethernet address for proxy ARP local IP address 90.186.59.78 remote IP address 10.64.64.64 primary DNS address 139.7.30.125 secondary DNS address 139.7.30.126
In diesem Fall besteht eine Verbindung in das Internet. Wenn es hier keine Fehler gibt, dann kann die Verbindung in Zukunft mit pppd call ppp aufgebaut werden.
Automatisierung
Ein kleines Skript start-umts könnte wie folgt aussehen:
#/bin/sh huaweiAktBbo modprobe usbserial vendor=0x12d1 product=0x1003 pppd call ppp
huaweiAktBbo und setserial... entfallen, wenn das udev Skript (siehe oben) verwendet wird.
Mit killall pppd kann man die Verbindung beenden.
Quellen
Richard Frankenberger hat mir eine sehr schöne Vorlage für die Konfiguration (Ubuntu) gegeben.