Das war gar nicht HSO einfach
Das Schicksal des Usenet-Teilnehmers hat einen T-Mobile Web'n'Walk-Stick (das schwarze Modell) in der nicht gesimlockten Version in meine Hände gespült. Auf sowas war ich ja immer schon scharf, weil ich mir von dem per USB angebundenen Gerät einen etwas stabileren Betrieb erhofft hatte als von meiner jetzt doch schon etwas älteren, nicht HSDPA-fähigen PCMCIA-Karte gewohnt bin. Aber das Ding unter Linux zum Laufen zu bringen war dann doch nicht so einfach wie gedacht.
Unter dem schwarzen Gehäuse verbirgt sich ein Option Icon 225, der leider ein wenig zu groß ist, um direkt auf einen der beiden etwas versenkt angebrachten USB-Ports meines Notebooks aufgesteckt zu werden. Dafür ist ein Clip für die Befestigung am Displaydeckel und ein etwa 20 cm langes USB-Kabel enthalten, das mir ermöglicht, den Stick dort festzuklemmen, wo ich vorher die externe Antenne der PCMCIA-Karte angeklemmt habe, wenn die funktechnische Umgebung für die Benutzung der eingebauten Antenne der PCMCIA-Karte nicht ausreichte - also besonders im Zug und in Frankfurter Bürogebäuden.
Eigentlich hätte ich erwartet, dass sich auch dieses Gerät wie die früheren UMTS-Dingens als per USB angebundenes serielles Modem zeigt, das man mit AT-Befehlen steuert und dann PPP spricht. Ganz so ist es eher nicht. Vorher schon hatte ich gewusst, dass die neueren Dinger die Installation unter Windows einfacher machen dadurch, dass sie sich als USB-CDROM zeigen, von dem die Treiber installiert werden können. Unter Linux ist sowas ja eher hinderlich, weil die benötigten Treiber ja eh nicht auf der "CD" drauf sind. Nun denn.
Für den Option-Stick gibt es einen Linux-Treiber namens HSO, der seltsamerweise über ein Webforum veröffentlicht wird. Da er noch nicht für Debian paketiert ist, freue ich mich darüber, dass ich in den Release-Notes für Kernel 2.6.27 lese, dass der HSO-Treiber jetzt im Mainline-Kernel enthalten ist. An anderer Stelle lerne ich sogar, dass die Entwicklung des HSO-Treibers von Option offiziell unterstützt wird - schön, dass wieder ein Hersteller das Licht gesehen hat.
Für den Wechsel von 2.6.26 auf 2.6.27 geht wieder der übliche Kampf mit den kommerziellen Modul-Lieferanten los, den ich endlich für den Wechsel von VMware zu Virtualbox OSE nutze - die schleppende Unterstützung neuer Kernel-Releases von VMware geht mir schon seit Jahren auf den Zeiger, und vmware-any-any wird in den letzten Monaten auch eher schlecht als recht gepflegt. Aber darüber blogge ich in einem anderen Artikel.
Nachdem auf meinem Notebook endlich die Voraussetzungen für die Installation von Linux 2.6.27 geschaffen sind (meine virtuellen Maschinen sind mir wichtiger als UMTS), gehen die Experimente mit dem neuen UMTS-Stick los. Ich lerne, dass man den Stick mit einem Userspace-Programm vom CD-ROM-Modus in den Modus für die eigentliche Benutzung umschalten muss, versuche mich ein paarmal mit dem überall empfohlenen rezero (was mir nicht nur einen Komplettabsturz des Notebooks beschert) und lande schließlich beim neueren ozerocdoff, das zusammen mit dem im Tarball enthaltenen 51-hso-udev.rules (was aufgrund seiner Unterstützung für eine lange Liste von Devices und allen möglichen udev-Versionen zu lang zum hier reinpasten ist) dafür sorgt, dass der Stick nach dem Einstecken automatisch in den richtigen Modus gelangt und man neben den drei erwarteten seriellen Devices auch ein weiteres Netzinterface hso0 im System sieht.
wtf? Ein Netzwerkinterface? Nun, das wird man doch sicher links liegen lassen können. Also schnell die PPP-Konfiguration an den neuen Interfacenamen angepasst und "pon umts-icon". Was passiert? Nichts. der Verbindungeaufbau bleibt dort stehen, wo die PPP-Verhandlung beginnt. Alle drei seriellen Geräte durchprobiert, nichts. Also doch mal die Doku lesen.
Naja, die Doku ist zwiespaltig und besteht hauptsächlich aus Einträgen in Webforen von webforumsüblicher Qualität. Die Hilfe kommt mal wieder aus dem Pharscape-Forum, wo ein Anonymous seine Scripts veröffentlicht hat. Das ist zwar eine üble Kombination aus Chat- und Shellscripts, aber immerhin sieht man, wie der Icon bedient werden will: Die seriellen Devices dienen der Konfiguration des Sticks mit Hilfe von AT-Befehlen, der Datentransfer geht über das Netzinterface. Man konfiguriert den Stick wie die alten Karten, gibt ihm dann mit einem neuen Befehl die Anweisung zum Verbindungsaufbau, liest dann mit einem weiteren Befehl die Verbindungsparameter (hauptsächlich IP-Adresse und DNS-Server) aus und setzt sie dann mit ifconfig auf das Netzwerkinterface und los geht's. Das ganze wird über /etc/network/interfaces so bedient, dass ein ifup hso0 die Verbindung aufbaut und ifdown hso0 die Verbindung wieder abbaut. Ein bisschen Überlegung erklärt auch, warum diese Perversion der Implementierung gewählt wurde: Bis zu 7.2 Mbit/s über eine (virtuelle) serielle Schnittstelle zu übertragen hat man sich dann wohl doch nicht mehr getraut.
Da ich chat(1) abgrundtief hasse und die Shellscripts aus dem Pharscape-Forum außerdem manche Debian-Mechanismen (allen voran resolvconf) ignorieren, entschließe ich mich, das ganze in Perl neuzuschreiben, unter Verwendung des Device::Modem-Moduls. Men Script findet Ihr hier - entgegen meiner sonstigen Gewohnheit nicht mit -T laufend, da Device::Modem im Tainted-Modus nur auf die Schnauze fliegt. Die Konfigurationsdatei sieht so aus:
Zusammen noch mit dem /e/n/i-Eintrag<umts> provider vodafone-websessions controldevice /dev/wctrl0 <default> pin xyzw </default> <simyo> apn internet.eplus.de </simyo> <vodafone-websessions> apn event.vodafone.de </vodafone-websessions> </umts>
kann die Verbindung dann manuell oder mit einem "allow-hotplug hso0" schon beim Einstecken des Sticks automatisch aufgebaut werden.iface hso0 inet manual pre-up /usr/local/stow/hso/share/hso/hso-script post-up /usr/local/stow/hso/share/hso/hso-script pre-down /usr/local/stow/hso/share/hso/hso-script post-down /usr/local/stow/hso/share/hso/hso-script
Kurz ausprobiert, geht. Ein bisschen gepingt, geht.
Am nächsten Tag im Zug dann die unangenehme Überraschung: Die Verbindung hält nur wenige Minuten und bleibt dann stehen. Im Log steht dann was von USB-Reset und einem fehlenden Callback im Treiber und "Tx timeout". Das war's dann bis zum Ausstöpseln des Sticks.
Kurzes Betrachten des Kernel-Quellcodes zeigt, dass im Kernel 2.6.27 hso.c 1.2 enthalten ist. Das Pharscape-Forum ist aber schon bei 1.6. Daniel Baumann, der inzwischen den HSO-Treiber für Debian paketieren möchte, ist noch bie 1.3 und sagt auch, dass er lieber bei den offiziell bei Option veröffentlichten Treibern bleiben würde. So im Regen stehend, suche ich nach einer anderen Lösung und kopiere schließlich das hso.c von Pharscape kurzerhand in meinen 2.6.27-Kernel-Tree und baue neu. Glücklicherweise ist der Treiber stabil genug, dass diese Kombination prima baut und auch läuft. Und sogar stabil.
Auf der Rückfahrt aus Hannover bin ich (online mit einer Vodafone Websession) ganz begeistert: Der neue Stick funkt trotz kleinerer Antenne auch im ICE ganz prima, bucht sich stabil und schnell zwischen UMTS und GPRS hin und her und selbst nach der Durchfahrt durch den Distelrasentunnel bei Schlüchtern kommt die Verbindung sauber wieder auf die Beine. Hier war sonst mit der alten PCMCIA-Karte verlässlich ein Neuaufbau der Verbindung fällig. Auch die sporadischen Hänger des Interfaces, bei denen sich die Karte auf den seriellen Devices tot stellt und nur durch ziehen und wieder einstecken wiederzubeleben ist, treten mit dem USB-Stick nicht auf. Entweder funkt der Icon 225 massivst besser als die alte Option Datacard 3G, oder ich hab nur einen ICE mit einem außerordentlich gut funktionierenden Repeater in Wagen 3 erwischt. Auf der knapp dreistündigen Fahrt habe ich nur einen Hänger, der das Ziehen der USB-Verbindung notwendig macht. Das ist eine bessere Bilanz als ich sie mit der alten PCMCIA-Karte je gehabt habe. Auf der nächsten Fahrt nach Berlin nächste Woche werde ich es mal mit der halb so teuren Tagesflatrate von Fonic probieren, die mit der alten PCMCIA-Karte im Zug reproduzierbar mehr Auszeiten als nutzbare Zeit produziert. Wir werden sehen.
Comments
Display comments as Linear | Threaded