Huawei E220

aus PUG, der Penguin User Group
Wechseln zu: Navigation, Suche

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.

Vodafone Easybox

Moobicent UMTS Flatrate

Huawei E220

Das aktuellste Orginal liegt auf taunusstein.net

Christian college essay