FreeBSD mit UMTS

FreeBSD Version: 8.0-RELEASE
Stand: 01.11.2009

Provider: T-Mobile
USB-Stick: Huawei product 0x1003 (web'n'walk Stick IV)
Stand: 01.01.2010

Als Treiber wird der u3g verwendet. Entweder man Konfiguriert diesen in der /boot/loader.conf oder man lädt diesen mit kldload u3g als root nach. Den Treiber muss man zuerst laden. Ansonsten meldet er sich wie folgt:

	umass0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on uhub6
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI Status: Check Condition
(probe0:umass-sim0:0:0:0): NOT READY asc:3a,0
(probe0:umass-sim0:0:0:0): Medium not present
(probe0:umass-sim0:0:0:0): Unretryable error
cd0 at umass-sim0 bus 0 target 0 lun 0
cd0: <HUAWEI Mass Storage 2.31> Removable CD-ROM SCSI-2 device
cd0: 40.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present

Leider hat der Stick zwei Funktionen. Steckt man diesen in den USB Slot ein so meldet sich dieser als umass storage bzw. als CD-ROM. Auf diesem befinden sich dann die Treiber für Windoof und Linux.
Um die UMTS Funktionalität bzw. das interne Modem nutzen zu können, muß man im Stick die Modem Funktionalität Aktivieren. Dies wird automatisch im u3g Treiber aktiviert. Leider Funktioniert das nicht immer. Es scheint ein Timing Problem im USB-Stack zu geben, da für das Umschalten der Stick einmal kurz deaktiviert und dann wieder aktiviert werden muß. Dies wird per Software im u3g Treiber umgesetzt. Daher passiert es des öfteren daß das USB Device den UMTS-Stick nicht mehr erkennt.
USB hängt, Ausgabe von usbdevs:

	addr 3: product 0x1003, vendor 0x12d1

In diesem Zustand kann es helfen (zu mindestens mit meinen Hardware Setup Funktioniert es) ein anderes X-beliebieges USB Device in ein freien USB Port zu stecken. Danach scheint sich das usbdevice zu reinitialisieren und mit usbdevs erscheint folgende Ausgabe:

	addr 3: HUAWEI Mobile, HUAWEI Technology
Mit dmesg muss folgendes zu sehen sein:
	ucom0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on uhub6
ucom0: configured 2 serial ports (U0.%d)
umass0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 3> on uhub6
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI Status: Check Condition
(probe0:umass-sim0:0:0:0): NOT READY asc:3a,0
(probe0:umass-sim0:0:0:0): Medium not present
(probe0:umass-sim0:0:0:0): Unretryable error
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <HUAWEI SD Storage 2.31> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present

Die Ausgabe ucom0 gibt einen Hinweis configured 2 serial ports (U0.%d) das der Treiber zwei Serielle Devices U0.x angelegt hat.
Diese Devices findet man unter:

	
/dev/cuaU0.1.lock
/dev/cuaU0.1.init
/dev/cuaU0.1
/dev/cuaU0.0.lock
/dev/cuaU0.0.init
/dev/cuaU0.0

Das erste Serielle Device cuaU0.0 wird für die Verbindung zum internen Modem benötigt. Das zweite Serielle Device cuaU0.1 dient mehr oder weniger als "Status" Anzeige. Als Baudrate wird 115200 benutzt.

Das Modem wird, wie die guten alten Analog Modems, mit dem AT-Befehlssatz (also Hayes-kompatibel) Konfiguriert.
Als erstes muss man, wie bei einem Handy, die PIN eingeben um die SIM Karte freizuschalten. Hierzu wird der AT Befehl AT+CPIN=4321 verwendet. Für die Zahl 4321 setzt man seine eigene PIN ein.
Ist die SIM Karte erstmal freigeschaltet, so kann man mit dem AT Befehl AT+cgdcont=1,"IP","internet.de" die APN Zugangsdaten setzen und mit ATDT*99***1# eine Verbindung zum Internet aufbauen.

Für den aufbau zum Internet wird ppp benutzt. Unter /etc/ppp/ liegen die Konfiguration Dateien. Für die Konfiguration muss man nur die Datei ppp.conf anpassen.
Da man die PIN nur bei der "ersten Aktivierung" eingeben muss, gibt es in der ppp.conf zwei Abschnitte.
Der erste Abschnitt schaltet die SIM Karte frei und heißt hier umts-pin. Der zweite Abschnitt baut die Verbindung zum Internet auf. Die Konfiguration sieht wie folgt aus:

   umts-pin:
set log local Chat
ident T-Mobile UMTS PIN
set cd off
set device /dev/cuaU0.0
set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER \
ABORT VOICE ABORT NO\\sDIALTONE ABORT NO\\sDIAL\\sTONE \
ABORT NO\\sANSWER ABORT DELAYED TIMEOUT 5 \
\"\" ATZ OK ATQ\\sE0\\sV1\\sX4\\s&C1\\s+FCLASS=0 OK \
AT+CPIN=XXXX OK \
AT+CFUN=1 OK \
AT+cgdcont=1,\\\"IP\\\",\\\"internet.t-d1.de\\\" OK \
AT+CSQ OK \
AT+CREG? OK \
AT+COPS? OK"
   umts:
enable dns
set log local LCP IPCP Phase Chat
set timeout 0
ident T-Mobile UMTS
set authname tmobile
set authkey t-d1
set cd off
set device /dev/cuaU0.0
set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER \
ABORT VOICE ABORT NO\\sDIALTONE ABORT NO\\sDIAL\\sTONE ABORT ERROR \
ABORT NO\\sANSWER ABORT DELAYED TIMEOUT 5 \
\"\" ATZ OK ATQ\\sE0\\sV1\\sX4\\s&C1\\s+FCLASS=0 OK \
AT+CFUN=1 OK \
AT+CREG? OK \
AT+COPS? OK \
AT+CSQ OK \
AT+cgdcont=1,\\\"IP\\\",\\\"internet.t-d1.de\\\" OK \
ATDT*99***1# CONNECT"
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR

Hier kurz zur Erläuterung:
set log und ident sind optional und dienen nur zur besseren Fehler suche.
set cd, device, speed, ifaddr und default HISADDR sind wichtige Angaben.
set authname tmobile und set authkey t-d1 sind aus der Linux Konfiguration.
Die AT Befehle AT+CPIN, AT+cgdcont und ATDT*99***1# sind wichtige Angaben.
+CPIN gibt die PIN für die SIM Karte an (XXXX durch die eigene PIN ersetzen)
+CGDCONT gibt die APN Angaben an. Unter http://linux.frankenberger.at/Huawei_E220_Daten.html stehen einpaar Angaben. Ansonsten Frage dein Provider oder siehe unter Linux nach. Zb. unter Ubuntu /usr/share/mobile-broadband-provider-info/serviceproviders.xml
ATDT*99***1# baut die Verbindung auf.
Die AT Befehle ATZ ATQ E0 V1 X4 &C1 +FCLASS=0 und AT+CFUN=1 sind aus dem Gnome Network Manager.
ATZ und ATQ dienen wohl zum neu initialisieren des Modems.
Die AT Befehle AT+CSQ AT+CREG? AT+COPS? sind Optional und dienen nur zur besseren Fehler suche.
AT+CSQ gibt die Signal Quality aus. Je höher der Wert desto besser die Qualität des Signals.
AT+CREG? gibt den Netzwerkstatus aus. 0,1 bedeutet Heimatnetz gefunden.
AT+COPS? gibt das gerade gewählte Netz aus.

Weitere Infos zu den AT Befehlen für das GSM Netz http://www.nobbi.com/atgsm.html

Hat man die ppp.conf angelegt, so kann man ppp dial umts-pin die SIM Karte freischalten und mit ppp dial umts die Internet Verbindung Aufbauen. Hierzu müsste mit ifconfig das tun0 Device mit IP Adressen zu sehen sein.
Damit keine offenen Ports aus dem Internet angegriffen werden können sollte man eine Firewall Konfiguriert und aktiv haben.