Howto: UMTS mit o2 Surf Card unter Linux

Posted on the May 2nd, 2008 under howtos,tests,tipps by stefan

o2 Surf Card

Da mein Adminhandy kein HSDPA kann und mein Kollege kürzlich einfach so eine neue PCMCIA-UMTS Karte bestellt hat, stand ich neulich vor der Aufgabe, das Ding unter Linux zum Laufen zu bekommen – was sich als nicht ganz trivial herausstellte.
Zuerst habe ich die Karte einfach in den PCMCIA-Slot meines Laptop geknallt und siehe da: es tat sich sogar etwas! Ein neues Gerät wurde erkannt! Die LED der Karte blinkte freudig! Es wird doch wohl nicht etwa auf Anhieb klappen? Ein neues USB-Storage Device wurde gefunden! Ääääh? Neugierig habe ich die 1. Partition (FAT) gemountet und siehe da, sie ist völlig leer. Nach einiger Recherche bin ich dann zu folgenden Ergebnissen gekommen:

  • die Karte wird erstmal als OHCI USB Mass Storage Device erkannt (ja, über PCMCIA, ja, das geht!), der Windows Treiber “switcht” dann um und sie ist plötzlich ein über USB angebundenes Serial Device
  • Das Ding wird auch “GlobeTrotter GT MAX 3.6″ geschimpft

So, jetzt wollen wir das Ganze mal zum Laufen bringen.

Falls man die nötigen Module nicht im Kernel hat, geht man per “make menuconfig” in die Kernel Konfiguration. Dort wird dann folgendes aktiviert:

[code language="css"]
-> Device Drivers -> USB support (USB_SUPPORT [=y])
-> USB Serial Converter support (USB_SERIAL [=y])
->USB driver for GSM and CDMA modems (NEW)
[/code]
außerdem noch:
[code language="css"]
-> Device Drivers
-> USB support (USB_SUPPORT [=y])
-> Support for Host-side USB (USB [=y])
[/code]

Nun compiliert man den ggfs. den Kernel neu und rebootet. Dann die Karte hereinstecken und man sieht im dmesg:

[code language="css"]Apr 24 12:47:02 d400 ohci_hcd 0000:02:00.1: OHCI Host Controller
Apr 24 12:47:02 d400 ohci_hcd 0000:02:00.1: new USB bus registered, assigned bus number 6
Apr 24 12:47:02 d400 ohci_hcd 0000:02:00.1: irq 11, io mem 0x38001000
Apr 24 12:47:02 d400 usb usb6: configuration #1 chosen from 1 choice
Apr 24 12:47:02 d400 hub 6-0:1.0: USB hub found
Apr 24 12:47:02 d400 hub 6-0:1.0: 1 port detected
Apr 24 12:47:02 d400 usb usb6: New USB device found, idVendor=1d6b, idProduct=0001
Apr 24 12:47:02 d400 usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
Apr 24 12:47:02 d400 usb usb6: Product: OHCI Host Controller
Apr 24 12:47:02 d400 usb usb6: Manufacturer: Linux 2.6.24-mm1 ohci_hcd
Apr 24 12:47:02 d400 usb usb6: SerialNumber: 0000:02:00.1
Apr 24 12:47:05 d400 usb 6-1: new full speed USB device using ohci_hcd and address 2
Apr 24 12:47:05 d400 usb 6-1: configuration #1 chosen from 1 choice
Apr 24 12:47:05 d400 usb 6-1: New USB device found, idVendor=05c6, idProduct=1000
Apr 24 12:47:05 d400 usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Apr 24 12:47:05 d400 usb 6-1: Product: USB MMC Storage
Apr 24 12:47:05 d400 usb 6-1: Manufacturer: Qualcomm, Incorporated
Apr 24 12:47:05 d400 usb 6-1: SerialNumber: 000000000002[/code]

Zum “Switchen” der Karte braucht man usb_modeswitch, nehmt die aktuelle Version 0.9.4beta2, die “stabile” Version 0.9.3 hat teils Probleme mit udev und funktioniert bei mir (udev-119, Kernel 2.6.25-r1) nicht! Das Entpacken funktioniert wie üblich, configure ist nicht nötig, zum Compilieren reicht in simples gcc -l usb -o usb_modeswitch usb_modeswitch.c oder man nimmt einfach gleich compile.sh, welches danach noch strip’pt. :)
Unter Gentoo gibt es hier ein fertiges ebuild, die Installation funktioniert wie folgend beschrieben:

[code language="css"]mkdir -p /root/OVERLAY/sys-apps/usb_modeswitch/files
wget http://bugs.gentoo.org/attachment.cgi?id=150886 -O \
/root/OVERLAY/sys-apps/usb_modeswitch/usb_modeswitch-0.9.4_beta2.ebuild
wget http://bugs.gentoo.org/attachment.cgi?id=150887 -O \
/root/OVERLAY/sys-apps/usb_modeswitch/files/91-usb_modeswitch.rules.udev-ge-106
wget http://bugs.gentoo.org/attachment.cgi?id=150889 -O \
/root/OVERLAY/sys-apps/usb_modeswitch/files/91-usb_modeswitch.rules.udev-lt-106
PORTAGE_OVERLAY="/root/OVERLAY"
cd /root/OVERLAY/sys-apps/usb_modeswitch
ebuild usb_modeswitch-0.9.4_beta2.ebuild digest merge[/code]

Hoffentlich ist das bald auch in der Portage, man hat ja immer alles gerne aus einem Guss! ;) Nach dem Ausführen von usb_modeswitch solltet ihr dann so etwas sehen:

[code language="css"]Apr 24 12:49:19 d400 usb 6-1: USB disconnect, address 2
Apr 24 12:49:21 d400 usb 6-1: new full speed USB device using ohci_hcd and address 3
Apr 24 12:49:21 d400 usb 6-1: configuration #1 chosen from 1 choice
Apr 24 12:49:21 d400 usb 6-1: New USB device found, idVendor=0af0, idProduct=6701
Apr 24 12:49:21 d400 usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=4
Apr 24 12:49:21 d400 usb 6-1: Product: Globetrotter HSDPA Modem
Apr 24 12:49:21 d400 usb 6-1: Manufacturer: Option N.V.
Apr 24 12:49:21 d400 usb 6-1: SerialNumber: Serial Number
Apr 24 12:49:21 d400 usbcore: registered new interface driver usbserial
Apr 24 12:49:21 d400 drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
Apr 24 12:49:21 d400 usbcore: registered new interface driver usbserial_generic
Apr 24 12:49:21 d400 drivers/usb/serial/usb-serial.c: USB Serial Driver core
Apr 24 12:49:21 d400 drivers/usb/serial/usb-serial.c: USB Serial support registered for GSM modem (1-port)
Apr 24 12:49:21 d400 option 6-1:1.0: GSM modem (1-port) converter detected
Apr 24 12:49:21 d400 usb 6-1: GSM modem (1-port) converter now attached to ttyUSB0
Apr 24 12:49:21 d400 option 6-1:1.1: GSM modem (1-port) converter detected
Apr 24 12:49:21 d400 usb 6-1: GSM modem (1-port) converter now attached to ttyUSB1
Apr 24 12:49:21 d400 option 6-1:1.2: GSM modem (1-port) converter detected
Apr 24 12:49:21 d400 usb 6-1: GSM modem (1-port) converter now attached to ttyUSB2
Apr 24 12:49:21 d400 usbcore: registered new interface driver option
Apr 24 12:49:21 d400 drivers/usb/serial/option.c: USB Driver for GSM modems: v0.7.1[/code]

Nun kann man die Karte über /dev/ttyUSB0 wie ein normales AT-Modem benutzen und seine ppp-chat-Scripte damit laufen lassen, ihr findet eins z.B. im Gentoo-Wiki. Man sollte diese ggfs. nach seinen eigenen Bedürfnissen erweitern/abändern. Ich benutze:

[code language="css"]# /etc/ppp/peers/umtscard
/dev/ttyUSB0
connect '/usr/sbin/chat -v -f /etc/ppp/peers/umtscard-chatscript-connect'
disconnect '/usr/sbin/chat -v -f /etc/ppp/peers/umts-chatscript-disconnect'
defaultroute
noipdefault
460800
usepeerdns
nopcomp
local[/code]
[code language="css"]# /etc/ppp/peers/umtscard-chatscript-connect
TIMEOUT 10
ECHO ON
ABORT '\nBUSY\r'
ABORT '\nERROR\r'
ABORT '\nNO ANSWER\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO DIALTONE\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
'' \rAT
TIMEOUT 30
OK ATZ
OK AT&F
OK AT+CPIN="XXXX"
OK AT_OPSYS=3,2
TIMEOUT 60
OK 'AT+cgdcont=1,"IP","surfo2"'
OK ATD*99***1#
CONNECT[/code]
[code language="css"]# /etc/ppp/peers/umts-chatscript-disconnect
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\nSending break to the modem\n"
"" "\K"
"" "\K"
"" "\K"
"" "+++ATH"
"" "+++ATH"
"" "+++ATH"[/code]

Mit pon umtscard gehts dann in die Weiten des Internets!

Wer mag, kann das “Umswitchen” der Karte auch automatisch beim Einstecken durch udev vornehmen lassen, wie das geht, schaut ihr am Besten direkt auf der Homepage von usb_modeswitch nach.

Eine Warnung zum Schluss: Seid mit den APNs vorsichtig und kontrolliert sie genaustens – ihr könnt euch sonst eine echt horrende Rechnung bescheren!

|

5 Responses to 'Howto: UMTS mit o2 Surf Card unter Linux'

  1. 05. May 2008 at 09:32
    rowi
  2. 05. May 2008 at 18:45
    Stefan
  3. 05. May 2008 at 19:07
    Stefan
  4. 01. October 2008 at 10:51
    Jörn Eisenkrätzer
  5. 02. October 2008 at 00:25
    Stefan

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>