Sony Vaio X und Ubuntu 9.10 – Qualcomm Gobi im Linux-Betrieb

Für das Magazin LinuxUser durfte ich mir das schicke, ultraflache Netbook „Vaio X“ von Sony ein wenig näher ansehen. Und wie es der Name der Zeitschrift schon sagt, wollte ich natürlich im speziellen Wissen, wie es denn unter Linux – genauer unter Ubuntu 9.10 – läuft. Besonders von Interesse war, ob das Modem unter Linux nutzbar ist.

Und das Ergebnis des Tests? Ja, das Sony Vaio X kann man mit ruhigem Gewissen voll und ganz dem Linux-Anwender empfehlen – wenn er das entsprechende Kleingeld auszugeben bereit ist. Mit einigen Nacharbeiten, läuft das flache Notebook ganz hervorragend im Zeichen des Pinguins.

Nun zu den notwendigen Arbeiten: Erstens muss der Grafiktreiber angepasst werden. Zweitens will der Ton out of the box nicht wie gewünscht.Und drittens: Das Modem muss zur Mitarbeit überredet werden. Wie Grafiktreiber und Ton fit werden, kann man Artikel im LinuxUser nachlesen (wird der Tage veröffentlicht) oder fix über eine Suche im Netz herausfinden. Wie das Modem in Gang gesetzt wird, das verrate ich nach dem Klick.

Um mobil via UMTS mit Vaio X ins Netz zu kommen, muss zuerst das Modem identifiziert werden. Das war nicht all zu schwer. Es ist das „Gobi 2000“ von Qualcomm. Zu dieser Erkenntnis kommt man auf zwei Wegen: Erstens per Befehl „lsusb“ und Recherche nach der Vendor ID im Netz. Der zweite Weg ist der Blick in die Systemeinstellungen der noch vorhandenen Windows-Installation.

Tja, mit dieser Info ausgestattet, kann es nun auf die Suche nach einer Lösung gehen. Einen Ansatz fand ich unter [1]. Dem Forumseintrag folgend brauche ich nun die Hersteller- und die Produkt-Identifikations-Nummer des Modems. Beide erhält man durch den Aufruf von „lsusb“ auf der Kommandozeile. Dort stehen hinter Bus- und Device-Bezeichnung die IDs des Modems. Im Fall des Sony Vaio X ist es die Hersteller-ID (Vendor ID) „05c6“ und die Produkt-ID (Product ID) „9224„. Aber Achtung: Die Produkt-ID ändert sich je nach dem, ob das Modem die Firmware schon geladen hat. Mit geladener Firmware ist es nämlich die Product ID „9225“. Gebraucht werden beide um das Modem in Betrieb zu nehmen.

Für das Modem gibt es bereits ein passendes Kernel-Modul namens „qcserial„. Doch out of the box erkennt der Kernel das Modem nicht. Man muss das Modul ein wenig anpassen und selbst kompilieren – An dieser Stelle ein Hoch auf Open Source Software. Mit Closed Source hätte ich an dieser Stelle aufgeben müssen …

Um das Modul unter Ubuntu 9.10 neu zu erstellen, muss mit

sudo apt-get install linux-source build-essential

die passende Umgebung für den Kompiliervorgang geschaffen werden. Die Sourcen für den Kernel liegen unter

/usr/src/

und müssen noch per

sudo tar -xjvf linux-source-KERNEL_VERSION.tar.bz2

entpackt werden. Um das Modul qcserial zu bauen, kopiere ich die Quelldatei in ein neues Verzeichnis. Die Anpassung für das Modem wird in der Quelldatei vorgenommen. Dazu braucht es wiederum die Vendor ID und die Product ID – – letztere jetzt jedoch nach Laden der Firmware. Beide IDs müssen in die qcserial.c eingetragen werden. Dazu kopieren ich einfach die Zeile, die mit „{USB_DEVICE“ beginnt und füge sie direkt davor ein. Die neue Zeile passe ich wie folgt an:

{USB_DEVICE(0x05c6, 0x9225)}, /* Sony Gobi QDL device */

Noch fehlt ein Makefile. Dieses muss folgenden Inhalt haben.

obj-m := qcserial.o
all:

	$(MAKE) -C /lib/modules/`uname -r`/build M=`pwd` modules

clean:

	$(MAKE) -C /lib/modules/`uname -r`/build M=`pwd` clean
	$(RM) Module.markers modules.order

Anschließend das Makefile speichern und das Modul mit make übersetzt werden. Das fertige Kernelmodul wird per

cp qcserial.ko /lib/modules/`uname -r`/kernel/drivers/usb/serial/

ins System kopiert. Der Aufruf von „depmod -A“ macht das neue Modul dem System bekannt und aktualisiert die Abhängigkeiten.

Das Kernel-Modul ist aber mitnichten alles was es für den betrieb des Gobi 2000 im Vaio X braucht. Zudem muss noch die passende Firmware geladen werden. Diese versteckt sich im Windows-Treiber. Am schnellsten kommt man an sie heran, indem man den Treiber von [2] herunterlädt, mit Wine in der nachgebildeten Windows-Umgebung „installiert“ und anschließend die Firmware-Dateien „amss.mbn“ und „apps.mbn“ vom Wine-DOS-Laufwerk C:/Programme/QUALCOMM/Images/Sony/UMTS/ ins neu erstellte Verzeichnis /lib/firmware/gobi/ kopiert.

Um die Firmware ins Modem zu bekommen, braucht es noch einen Loader. Den hat Matthew Garrett [6] geschrieben und unter GPLv2 veröffentlicht. Wir laden den Firmware-Loader von [7] herunter und entpacken ihn in ein neues Verzeichnis. Die Installation erfolgt problemlos mittels <C>make; make install<C>. Dabei wurde auch ein neues Regel-Skript für UDEV installiert. Dieses müssen wir noch für unser Modem anpassen. Dazu öffnen wir es in einem Editor und ergänzen es um Vendor-ID und Product-ID (ohne Firmware). Der Eintrag muss <C>ATTRS{idVendor}==“05c6″, ATTRS{idProduct}==“9224″, RUN+=“gobi_loader /dev/%k /etc/gobi_firmware“<C> lauten.

Um die Firmware ins Modem zu bekommen, braucht es den Firmware-Loader von Matthew Garrett [3]. Die Installation geht schnell und schmerzlos via make; make install. Dabei wurde auch ein neues Regel-Skript für UDEV installiert. Dieses muss noch für das Qualcomm-Modem angepasst werden. Es muss um Vendor-ID und Product-ID (ohne Firmware) ergänzt werden. Der Eintrag muss also wie folgt lauten:

ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9224", RUN+="gobi_loader /dev/%k /etc/gobi_firmware"

Nun starte ich einmal neu und Voilá: Das Modem läuft. Unter /dev/ finde ich jetzt den notwendigen Eintrag ttyUSB0 für das Gobi-Modem und auch der Netzwerkmanager von Ubuntu zeigt nun den Eintrag Mobiles Breitband -> Neue mobile GSM-Breitbandverbindung.

[1] http://forum.ubuntuusers.de/topic/acer-aspire-one-a150x-3g-internes-qualcomm-go/

[2] http://support.vaio.sony.eu/computing/vaio/index.aspx?l=de_DE

[3] http://www.codon.org.uk/%7Emjg59/gobi_loader/download/

11 comments

  1. K. Hendrik

    Hi,
    sehr schöne Anleitung, leider funktioniert sie nicht ganz für das Sony Vaio VPCS11C5E. Dort konnte ich bisher das UMTS-Modem nicht ans laufen bekommen. PID ist identisch sollte also wohl das selbe Modem sein. Ich benutze Ubuntu 10.04 64-Bit mit einem Mainline-Kernel 2.6.35-3 aus dem ppa:kernel-ppa . Dieser hat bereits ein funktionierenden qcserial, desweiteren verwende ich den gobiloader 0.6 sowie die Firmware aus dem Ordner 0 und UMTS für Deutschland (Vodafone Web Sessions)

    Meine bisherigen Bemühungen sowie die aufgetauchten Probleme sind hier zu verfolgen:
    http://forum.ubuntuusers.de/topic/problem-mit-umts-gsm-auf-dem-sony-vaio-vpcs11/
    oder auf Englisch hier:
    http://ubuntuforums.org/showthread.php?p=9427162#post9427162
    Vieleicht hast du ja eine Idee die mir weiter hilft, bin schon über einen Monat am testen.

  2. K. Hendrik

    Ich bin mir ziemlich sicher dass das qcserial-Modul funktioniert habe aber auch schon unter dem 2.6.32 Kernel das Modul neu gebaut und komme zum gleichen Ergebnis:
    1. qcserial erkennt das Modul und erstellt ttyUSB0
    2. mit gobi_loader 0.6 (Gestern zu 0.7 gewechselt) wird die Firmware geladen (habe Ordner 0 und 6 probiert) und die id ändert sich zu 9225
    3. Im Netzwerkmenü taucht das Modul auf und ich kann die Daten für die Verbindung eingeben, jedoch scheiter der Verbindungsversuch so schnell das nichts im Hintergrund passiert sein könnte. Die Daten für die SIM-Karte sind definitiv korrekt sie funktionieren mit meinem USB-UMTS-Stick.

  3. Jan

    Wenn das Modem sich unter /dev/ als ttyUSB0 meldet, das scheint zumindest alles bezüglich des Grundsystems sprich Kernel zu stimmen. Daher: Modem wird korrekt erkannt und die Firmware geladen. Wie versuchst du denn die Verbindung herzustellen? Hast du schon UMTSmon ausprobiert? Poste mal bitte deine Einstellungen.

  4. K. Hendrik

    Ich habe einfach unter Mobiles Breitband -> Neue mobile GSM-Breitbandverbindung eine Verbindung eingerichtet mit den Standard einstellungen für Germany -> Vodafone Websessions.

    Desweiteren habe ich es auch mit wvdial probiert UMTSmon habe ich noch nicht probiert.
    Meine wvdial.conf sieht wie folgt aus:

    [Dialer Defaults]
    Modem = /dev/ttyUSB0
    Phone = *99***1#
    Username = vodafone
    Password = vodafone
    Init1 = ATZ
    Init2 = AT+CPIN=0000
    Init3 = AT+CGDCONT=1,“IP“,“event.vodafone.de“
    Ask Password = 0
    Dial Command = ATDT
    Auto DNS = 1
    Check Def Route = 1
    Baud = 460800
    Stupid Mode = 1
    New PPPD = yes

    Bei meinem letzten versuch mit der GSM-Breitbandverbindungsoption habe ich mal den log aus /var/log/sysog überprüft was folgendes ergebnissbrachte:

    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) starting connection ‚Vodafone (D2) WebSessions‘
    Jun 29 13:29:32 laptop-kb NetworkManager: (ttyUSB0): device state change: 3 -> 4 (reason 0)
    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) Stage 1 of 5 (Device Prepare) scheduled…
    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) Stage 1 of 5 (Device Prepare) started…
    Jun 29 13:29:32 laptop-kb NetworkManager: (ttyUSB0): device state change: 4 -> 6 (reason 0)
    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) Stage 1 of 5 (Device Prepare) complete.
    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) Stage 1 of 5 (Device Prepare) scheduled…
    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) Stage 1 of 5 (Device Prepare) started…
    Jun 29 13:29:32 laptop-kb NetworkManager: (ttyUSB0): device state change: 6 -> 4 (reason 0)
    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) Stage 1 of 5 (Device Prepare) complete.
    Jun 29 13:29:32 laptop-kb modem-manager: (ttyUSB0) opening serial device…
    Jun 29 13:29:32 laptop-kb modem-manager: Modem /org/freedesktop/ModemManager/Modems/0: state changed (disabled -> enabling)
    Jun 29 13:29:32 laptop-kb modem-manager: Got failure code 100: Unknown error
    Jun 29 13:29:32 laptop-kb modem-manager: Got failure code 100: Unknown error
    Jun 29 13:29:32 laptop-kb modem-manager: Modem /org/freedesktop/ModemManager/Modems/0: state changed (enabling -> enabled)
    Jun 29 13:29:32 laptop-kb modem-manager: Got failure code 13: SIM failure
    Jun 29 13:29:32 laptop-kb NetworkManager: stage1_prepare_done(): GSM modem connection failed: (32) SIM failure
    Jun 29 13:29:32 laptop-kb NetworkManager: (ttyUSB0): device state change: 4 -> 9 (reason 1)
    Jun 29 13:29:32 laptop-kb NetworkManager: Marking connection ‚Vodafone (D2) WebSessions‘ invalid.
    Jun 29 13:29:32 laptop-kb NetworkManager: Activation (ttyUSB0) failed.
    Jun 29 13:29:32 laptop-kb NetworkManager: (ttyUSB0): device state change: 9 -> 3 (reason 0)
    Jun 29 13:29:32 laptop-kb NetworkManager: (ttyUSB0): deactivating device (reason: 0).
    Jun 29 13:29:32 laptop-kb NetworkManager: Policy set ‚Auto eth0‘ (eth0) as default for routing and DNS.

  5. Jan

    Sorry, hat lang keine Zeit mehr, um nach dem Rechten zu schauen. Läuft’s Modem jetzt? Oder gibt es weiterhin Probleme?

    Gruß Jan

  6. Jan

    Heute hat ich endlich mal Zeit einen Blick in das Logfile zu werfen. Unter anderem steht dort, dass wvdial ein Problem hat, die Pin für die SIM einzugeben. Hast du schon versucht, die Pin auf der SIM-Karte zu deaktivieren? Zum Beispiel mit einem Handy? Ansonsten kann ich zu wvdial leider gar nichts sagen – bin da absolut kein Experte.

    Aber probier doch mal den UMTSmon. Mit dem hat ich immer sehr gute Erfahrungen. Gib anschließend mal ein kurzes Statement ab, wie es aussieht.

    Gruß Jan

  7. disorder

    Hi Hendrik, gibts bei Deinem Problem schon eine Lösung? Sehe mich mit dem Gleichen konfrontiert!

  8. MPW

    Hallo,

    habe auch das Sony Vaio X. Wenn ich das UMTS-Modul unter Windows aktiviere kann ich problemlos surfen. Da ich Windows bald löschen möchte, versuche ich diesen gobi_loader ans Laufen zu bekommen.

    Wenn ich sudo ./gobi_loader /dev/ttyUSB0 /lib/firmware/gobi ausführe passiert einfach gar nichts. Keine Ausgabe und auch kein log im syslog. Leider kann ich mir auch nicht die Version vom gobi_loader -v anzeigen lassen. Da zeigt er mir immer nur die usage an.

    Ich habe Ubuntu 9.10, da 10.X kein Videosupport mit dem gma500 hat.

    Kann mir jemand einen Tipp geben? Am meisten verwirrt mich, dass ich einfach gar keine Ausgabe erhalte.

    Gruß
    MPW

  9. K. Hendrik

    Hi,
    von meiner Seite aus gibts auch keine Lösung bislang. Befinde mich auch zur Zeit für noch 9.5 Monate in den USA und hab mir hier ein Nexus S zugelegt über das ich mich verbinden kann.
    Werde versuchen die Tage es nochmal zu testen mit meiner Tmobile simkarte.

    Gruß
    K. Hendrik

Kommentar verfassen

Du kannst die folgenden HTML-Codes verwenden:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>