PCMCIA UMTS Karte unter Linux
Am Wochenende hatte ich wieder einmal meine größte Freude mit Linux. Ziel war es meine neu erworbene UMTS-Karte (Novatell Wireless Merlin U630) zum laufen zu bekommen. Zugleich war es mein erster Versuch überhaupt eine PCMCIA-Karte in Linux zu benutzen. Einen Vorteil hatte ich jedoch, ich wußte die Karte funktioniert. Auf dem Laptop läuft noch das vorinstallierte Windows XP Home und darunter konnte ich schon via BASE wunderbar ins Internet. Eines auch vorweg: Die Karte läuft und alles ist prima.
Die ich die Sache hier ein wenig ausführlicher beschreibe, gibt es auch eine Kurzfassung. Geht dazu einfach ans Ende des Dokumentes, wo dann auf die Datei /boot/grub/menu.lst zugegriffen wird.
Nach der Suche bei Google habe ich erfahren, dass die Karte von Haus aus erkannt werden sollte, da sich die Karte automatisch als serielles Gerät melden würde. Im Klartext: rein schieben und los legen. Naja so einfach war es nun leider doch nicht. Beim Blick unter /var/log/messages oder auch in dmesg fand ich immer nur folgende Zeilen:
pccard: PCMCIA card inserted into slot 0 pcmcia: registering new device pcmcia0.0 pcmcia: registering new device pcmcia0.1
Die wichtige Nachricht jedoch fehlte:
0.0: ttyS4 at I/O 0x5100 (irq = 3) is a 16550A
Nun ging die große Sucherei los und viele halbwahre Tipps wurden ausprobiert. Der Befehl “cardctl info” brachte ja immerhin schonmal folgende Ausschrift:
PRODID_1="Novatel Wireless" PRODID_2="Merlin UMTS Modem" PRODID_3="U630" PRODID_4="" MANFID=00a4,0276 FUNCID=2
Das heißt die PCMCIA-Karte wurde erkannt und so weit konnte ich also vom Erfolg nicht weg sein. Bzgl. PCMCIA werden entsprechende Userspace-Tools benötigt um die Technik nutzen zu können. Dies war bis einschließlich Kernel 2.6.12 pcmcia-cs und ab 2.6.13 sind dies die pcmciautils. In meinem Ubuntu war aufgrund eines Upgrades von Version 5.10 auf 6.06 (dapper) beides Installiert, da vorher Kernel 2.6.12 und jetzt Kernel 2.6.15 eingesetzt wird. Dies hat bei mir zu einiger Verwirrung beigetragen. Man kann aber ruhig per
dpkg --purge pcmcia-cs
das Paket entfernen. Per lspic habe ich von meinem HP Pavilion zd8000 die PCI-Hardware angeschaut und habe festgestellt, dass ich den berüchtigten PCMCIA-Cardbus “CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller” besitze. Im Detail sah dies so aus:
$ lspci 0000:00:00.0 Host bridge: Intel Corporation 915G/P/GV/GL/PL/910GL Processor to I/O Controller (rev 04) 0000:00:01.0 PCI bridge: Intel Corporation 915G/P/GV/GL/PL/910GL PCI Express Root Port (rev 04) 0000:00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03) 0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03) 0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03) 0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03) 0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03) 0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03) 0000:00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev d3) 0000:00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03) 0000:00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03) 0000:00:1f.0 ISA bridge: Intel Corporation 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge (rev 03) 0000:00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03) 0000:00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 03) 0000:01:00.0 VGA compatible controller: ATI Technologies Inc M24 1P [Radeon Mobility X600] 0000:03:00.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller 0000:03:00.2 FireWire (IEEE 1394): Texas Instruments OHCI Compliant IEEE 1394 Host Controller 0000:03:00.3 Mass storage controller: Texas Instruments PCIxx21 Integrated FlashMedia Controller 0000:03:00.4 0805: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller 0000:03:02.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 0000:03:03.0 Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)
In einigen Foren habe ich auch gelesen gehabt, dass viele Leute mit dem Cardbus einige Probleme haben. Andere hatte nur unter Ubuntu das Problem aber nicht unter Knoppix. Daher hatte ich mir auch zu Testzwecken das aktuelle Knoppix 5.05 (mit Kernel 2.6.17) herunter geladen, jedoch wurde die Karte auch dort nicht erkannt. Da die Karte erkannt wurde dachte ich er erkennt nur die serielle Schnittstelle nicht und es liegt an irgendwelchen Modulen. Wichtig für PCMCIA bei mir ist das Modul yenta_socket und für die Karte noch serial_cs. Beide Module wurden mit Erfolg geladen. Daran konnte es auch nicht liegen. Weiterhin wurde unter /sys/devices/pci0000:00/0000:00:1e.0/0000:03:00.0/0.0 angezeigt, dass der Karte der Port ttyS0 zugewiesen wurde:
/sys/devices/pci0000:00/0000:00:1e.0/0000:03:00.0/0.0$ ls -la insgesamt 0 drwxr-xr-x 3 root root 0 2006-07-24 19:12 . drwxr-xr-x 5 root root 0 2006-07-24 21:20 .. --w------- 1 root root 4096 2006-07-24 18:34 allow_func_id_match lrwxrwxrwx 1 root root 0 2006-07-24 21:27 bus -> ../../../../../bus/pcmcia -r--r--r-- 1 root root 4096 2006-07-24 19:12 card_id lrwxrwxrwx 1 root root 0 2006-07-24 21:27 driver -> ../../../../../bus/pcmcia/drivers/serial_cs -r--r--r-- 1 root root 4096 2006-07-24 19:12 func_id -r--r--r-- 1 root root 4096 2006-07-24 21:27 function -r--r--r-- 1 root root 4096 2006-07-24 19:12 manf_id -r--r--r-- 1 root root 4096 2006-07-24 21:27 modalias drwxr-xr-x 2 root root 0 2006-07-24 18:34 power -r--r--r-- 1 root root 4096 2006-07-24 19:12 prod_id1 -r--r--r-- 1 root root 4096 2006-07-24 19:12 prod_id2 -r--r--r-- 1 root root 4096 2006-07-24 19:12 prod_id3 -r--r--r-- 1 root root 4096 2006-07-24 19:12 prod_id4 lrwxrwxrwx 1 root root 0 2006-07-24 21:27 tty:ttyS0 -> ../../../../../class/tty/ttyS0 --w------- 1 root root 4096 2006-07-24 21:27 uevent
Jedoch konnte man auf den Port nicht zugreifen, weder per minicom noch ein anderes Programm. Die nächste Vermutung war, dass die Usertools dran Schuld sind. Daher habe ich mir alle Informationen zum Thema pcmciautils angeschaut und bin auch fündig geworden. Auf der offiziellen Kernel-Webseite gibt es auch eine Hinweisseite zu PCMCIA. Der interessante Punkt ist hierbei der Abschnitt “CardBus (sometimes also PCMCIA) cards not found”. Darunter ist beschrieben, dass wenn der Cardbus nicht direkt an der Root-PCI-Bridge hängt, der Kernel nicht unbedingt den Zugang zu findet. Bei meinem Laptop ist dies leider der Fall. Abhilfe schafft hier nur folgender Parameter beim Booten des Kernels: pci=assign-busses
Dazu also einfach die Datei /boot/grub/menu.lst bearbeiten und beim kernel-Eintrag den Parameter anhängen. Die entsprechenden Zeilen sehen bei mir jetzt so aus:
title Ubuntu, kernel 2.6.15-26-686 root (hd0,2) kernel /boot/vmlinuz-2.6.15-26-686 root=/dev/hda3 ro quiet splash pci=assign-busses initrd /boot/initrd.img-2.6.15-26-686 savedefault boot
Man sollte die Einträge nicht stupide abschreiben, sondern nur die richte Stelle finden und den Parameter pci anfügen.
Nach einem Reboot wurde die Karte wieder erkannt und auch der Port (interessanterweise jetzt ttyS4 und nicht ttyS0) zugewiesen.
Wie jetzt der UMTS-Zugang mit Hilfe von pppd eingerichtet wird, erkläre ich das nächste mal.
on August 21st, 2006 at 3:44 am
Sehr hilfreiches Info. Ansonsten kann es sein das “ttyS4 und nicht ttyS0″ gewählt wurden weil die anderen schon besetzt waren?
Ein
$ ls -la /dev/ttyS*
on August 24th, 2006 at 9:43 pm
Die Ports sind bei mir alle nicht in Verwendung, da die Modemkarte nicht erkannt wird. Da ich die aber nicht benötige, interessiert mich das auch nicht wirklich
on Mai 8th, 2007 at 6:45 pm
Wer (wie ich) das Modul serial_cs vermisst bzw. meint die entsprechende Kerneloption nicht aktiviert zu haben, der findet den entsprechenden Punkt in der Kernelkonfiguration unter:
Device Drivers —>
Character Devices —>
Serial drivers —>
<> 8250/16550 PCMCIA device support