UNR 9.10 auf dem Classmate PC

Seit einiger Zeit besitze ich einen Intel Classmate PC. Aus meiner Sicht das ultimative Netbook: SSD, Touchscreen, lange Akkulaufzeit, Linux Support, sehr stabil. Ok, daß kein Bluetooth an Board ist ist ein Nachteil, kann aber durch ein aktuelles Micro-USB-Dongel leicht behoben werden. Ein weiterer, viel gravierenderer, Nachteil ist ganz klar die mitgelieferte Linux-Version die noch auf einem Ubuntu-8.04 Long-Term Release basiert. Für ein Gadget wirklich zu alt. Daher habe ich mir mal Zeit genommen und einen aktuellen Ubuntu Netbook Remix 9.10 installiert. Mit einiger Nacharbeit konnte ich alle wichtigen Funktionen aktivieren und möchte im Folgenden darüber berichten:

Nach der Installation des Systems von einem USB-DVD-Laufwerk sieht es schon mal gar nicht schlecht aus. Die notwendigen Grundfunktionen wie Grafik, Sound, Touchpad und das LAN per Kabel sind bereits unterstützt, sodass man weitere Arbeiten relativ komfortable ausführen kann. Daher wenden wir uns als nächstes dem Netzwerk, genauer dem WLAN, zu. Denn das brauchen wir dann im weiteren Verlauf zum herunterladen von Paketen und zum lesen dieser Anleitung 🙂

Wlan

Vorweg sei zum WLAN gesagt, dass der Treiber noch aus dem Staging-Bereich des Kernels ist. D.h. er ist noch nicht fertig und daher ggf. noch von einer minderen Qualität. Bei mir zu Hause habe ich mit dem WLAN keine Probleme. Es gab aber auch schon den einen oder anderen Access-Point mit dem ich keine Verbindung herstellen konnte. Als weiterer Hinweis sei gesagt, dass es auf der Webseite des Herstellers auch entsprechende Treiber für Linux gibt. Diese habe ich aber nicht getestet. Um das WLAN zum laufen zu bekommen habe ich folgende Anpassungen vogenommen:

Das entsprechende Module in die Datei /etc/modules aufnehmen. Das Ende der Datei sollte dann wie folgt aussehen:

Anschließend noch störende Module blacklisten. Dazu fügen wir folgende Zeilen der Datei /etc/modprobe.d/blacklist.conf an:

Dann booten wir die Maschine durch. Danach war es mir möglich über den NetworkManager (Icon oben rechts in der Leiste des Desktop) Verbindung mit WLANs aufzunehmen. Lediglich bei einem Accesspoint, einer Bintec r3000, gelang es mir nicht, eine Verbindung herzustellen.

Touchscreen

Den Touchscreen kann man mit einem Treiber von der Webseite des Herstellers zum Leben erwecken. Ein README mit Informationen zur Aktivierung des Treibers findet sich im Archiv. Das funktioniert auch genau so. Anbei hier noch meine xorg.conf. Diese einfach ent-gzippen und nach /etc/X11 legen, den xfhiddrv_drv.so nach  /usr/lib/xorg/modules/input/ schieben und dann neu booten. Danach sollte der Touchscreen wie im alten Software-Release seinen Dienst verrichten. Bei mir war keine weitere Kalibrierung notwendig. Ich möchte an dieser Stelle noch erwähnen, daß das Packet cmpc-touchscreen aus der alten Release ebenfalls im “Source” vorliegt, sodaß es für UNR 9.10 erzeugt werden könnte. Das Paket enthält allerdings nur gelieferte Binaries. Unter anderem den Treiber von oben sowie die Tools LinearAp und TouchKit, wie wir sie aus der alten Release kennen. Im Prinzip tut auch alles sauber unter 9.10. Aber da die Lizenzen der Binaries komplett unklar sind habe ich hier kein Paket zum Download bereit gestellt. Leider ist es mir nicht gelungen das “neue Device” (siehe weiter unten in diesem Post) zum Ansteuern des Touchscreens zu verwenden. Es bleibt also der Wehrmutstropfen des Binary-Treibers für den Touchscreen.

Fn-Tasten

Wie vielleicht dem einen oder anderen schon aufgefallen ist funktionieren die Fn-Tasten nicht alle. So kann zum Beispiel die Display-Helligkeit nicht über Fn+F7 bzw Fn+F8 eingestellt werden. Auch ist die Funktion der automatischen Rotation des Display-Inhalts je nach Lage des Geräts nicht mehr vorhanden. Für diese Probleme habe ich Lösungen gefunden die durch Reverse-Engineering der alten Release und durch Recherchen im Netz entstanden sind. Glücklicherweise hat offensichtlich eine Firma aus Brasilien einen ACPI-Treiber bereit gestellt, der bereits auf dem Weg in den Vanilla-Kernel ist. Infos dazu finden sich hier. Diesen Pach habe ich in einen aktuellen Ubuntu UNR 9.10 Kernel integriert und entsprechende Kernel-Pakete gebaut. Diese können hier heruntergeladen werden

Die Dateien sind mit gzip gepackt und können nach dem Download wie folgt installiert werden. Ich übernehme keinerlei Veranwortung für eventuelle Schäden oder Datenverluste, die durch die Nutzung der Pakete entstehen könnten.

Danach rebooten wir das System um den neuen Kernel zu aktivieren. Beim booten muss darauf geachtet werden, dass der richtige Kernel gebootet wird. Der neu installierte Kernel ist gut am “cmpc” im Namen zu erkennen. Ggf. muss der Kernel entsprechend in der grub(1|2)-Konfig als default gesetzt werden. Das wird hier aber nicht behandelt. Google hilft da sicher weiter. Ob alles geklappt hat kann man nach dem booten des Kernels mit folgendem Kommando in einem Terminal testen:

Wenn dabei folgendes rauskommt, dann hat alles soweit geklappt und es sollte nun u.a. möglich sein die Display-Helligkeit mit den Tastenkombinationen Fn+F7 und Fn+F8 zu regulieren:

Bei mir prellen die Tasten, sodaß die Einstellung etwas Feingefühl erfordert. Leider ist dafür von mir kein Fix zu erwarten. Das ist Treiber-Intern und dafür fehlt mir die Zeit. Aber wer, wenn das Problem bei ihm auch auftritt, möchte kann sich gerne an z.B. die Kernel-Liste wenden. Vielleicht wird der Treiber dann entsprechend gefixed.

Accelerometer

Wie im vorherigen Abschnitt schon zu erkennen gibt es auch für den Beschleunigungsmesser des Classmate ein Device. Lustigerweise ist das aus dem System wie ein Joystick anzusprechen. Im ersten Moment dachte ich noch: “Wie Banane…”. Aber mangels eines Standards für die Schnittstelle ist es eigentlich gar nicht doof, da man den Sensor somit einfach im System verwenden kann. Zum Beispiel mit dem Perl-Module Linux::Joystick. Damit war es relativ einfach ein Script zu schreiben, daß in Abhängigkeit der Lage des Systems den Bildschirminhalt mit xrandr dreht. Leider stimmte nach der Drehung des Bildschirmhinhalts das Verhältnis des Touchscreen nicht mehr, sodaß eine Eingabe unmöglich war. Nach längerer Analyse des alten Systems ist mir aufgefallen, daß dort ein gepatchte Version von xrandr verwendet wird. Wenn man diese einfach übernimmt, dann stimmt die Kalibrierung des Touchscreen auch nach dem Rotate. Da über apt-get source auf dem alten System die Sourcen des gepatchten xrandr verfügbar sind war es mir möglich den Patch zu extrahieren und in die aktuellen Version von xrandr zu integrieren. Ich habe ein entsprechendes Paket gebaut, dass hier zum Download bereitsteht.

Die Datei ist mit gzip gepackt und kann nach dem Download wie folgt installiert werden. Ich übernehme keinerlei Veranwortung für eventuelle Schäden oder Datenverluste, die durch die Nutzung der Pakete entstehen könnten.

Wichtig ist jetzt noch die Datei /var/touch.conf mit den Berechtigungen 666 anzulegen und mit folgendem Inhalt zu füllen:

Danach kann man dann mit folgenden Kommandos testen ob alles klappt:

-> dreht Inhalt nach rechts

-> dreht Inhalt auf normal zurück

Wenn in beiden Positionen der Touchscreen sinnvolle Eingaben ermöglicht, dann hat alles soweit geklappt und es fehlt nur noch das Script, daß die entsprechenden Kommandos in Abhängigkeit der Lage des Systems ausführt.

Hack der Woche – accel.pl

Dafür habe ich accel.pl geschrieben. Wobei gefrickelt sicher der bessere Ausdruck wäre. Leider ist es zur Benutzung notwendig das entsprechende Perl Modul Linux::Joystick zu installieren. Das ist mit dem Tool CPAN für geübte sicherlich einfach möglich. Trotzdem kann dabei so einiges schief gehen und daher möchte ich das hier und heute nicht behandeln. Informationen dazu gibt es hier. Wenn das Modul dann installiert ist kann man hier accel.pl herunterladen:

Die Datei ist mit gzip gepackt und kann nach dem Download wie folgt installiert werden. Ich übernehme keinerlei Veranwortung für eventuelle Schäden oder Datenverluste, die durch die Nutzung der Pakete entstehen könnten.

Jetzt stellen wir noch sicher, daß es das notwendige Device auch gibt, Wenn der Kernel, wie oben beschrieben, richtig installiert ist sollte das der Fall sein. Alles passt, wenn

folgende Ausgabe erzeugt:

Dann ist alles soweit und wir können das Script in einem Terminal mit folgendem Kommando starten:

Sollte gleich nach dem Aufruf eine solche Fehlermeldung kommen, dann ist das Perl-Modul Linux::Joystick nicht richtig installiert. Mehr Infos dazu finden sich weiter oben in diesem Post.

Sieht die Fehlermeldung so aus, dann gibt es kein Joystick-Device oder es ist für den User nicht zugreifbar. Ggf. ist dann der oben im Post erwähnte Kernel nicht installiert oder ggf. aktuell nicht gebootet.

Wenn alles klappt und das Programm startet, dann sollte die folgende Ausgabe zu sehen sein. Es kommen weitere Einträge hinzu, wenn man das Laptop bewegt.

Wenn man das Laptop jetzt gegen den Uhrzeigersinn hochkannt stellt, dann dreht die Logik den Desktop im Uhrzeigersinn, damit er dann hochkannt stimmt. Die Ausgabe sieht wie folgt aus:

Genauso geht das auch mit dem Uhrzeigersinn. Und auch auf dem Kopf. Dabei kommt eine weitere Achse zum Einsatz. Die Empfindlichkeit ist über die Werte im Script grob einstellbar. Zugegeben, es ist keine “Rocket Science”, aber es erfüllt seinen Zweck mindestens genauso gut wie das Tool im alten Release. Ein wenig Feinschliff könnte vielleicht nicht schaden.

Dazu schon der erste Nachtrag: Da das Display ja beim Umklappen selber nochmal um 180° gedreht wird muss das Script genau andersrum rotieren, damit es im umgeklappten Zustand (Tablet Mode) stimmt. Dann stimmt es aber im normal aufgeklappten Zustand (Laptop Mode) nicht. Da ich noch keine Möglichkeit gefunden habe den Klapp-Zustand des Deckels abzufragen ist das Script jetzt für den Tablet Mode ausgeleget. Ein drehen des Geräts im Laptop Mode ist auch eher sinnfrei. Ich habe beide Dateien zum Download bereit gestellt.

accel.pl “bootfest” machen

Wer sich entschlossen hat accel.pl dauerhaft zu nutzen kann das Tool relativ einfach über die GUI so einrichten, dass es automatisch beim Login gestartet wird und im Hintergrund läuft. Dazu einfach unter System -> Preferences -> Startup Applications einen entsprechenden Eintrag hinzufügen. Ich habe dazu ein paar Screenshots gemacht:

System Menu
System Menu
Startup Applications Dialog
Startup Applications Dialog
Applikation hinzufügen
Applikation hinzufügen
Menu mit neuem Eintrag
Menu mit neuem Eintrag

Nach einen Logout und erneutem Login sollte dann eine Instanz accel.pl im Hintergrund laufen. Prüfen kann man das nach dem Login in einem Terminal mit folgendem Kommando:

Wenn das folgende Ausgabe liefert ist das Tool aktiv und der Displayinhalt sollte durch drehen des Geräts zu beeinflussen sein.

Bluetooth, UMTS, GPS, DVB-T

Zum Abschluss möchte ich dann noch etwas zum zweiten Manko aus der Einleitung sagen. Das Bluetooth-Problem lässt sich unter UNR 9.10 super durch ein Micro-USB-Bluetooth-Dongel lösen. Ich habe z.B. eines für 5 Eur von LogiLink. Es ist halbrund, integriert sich schön. Ist via Software abschaltbar. Alles out-of-the-box. Das gibt es beim guten Sortimenter zu bestellen und damit steht dann auch der UMTS-Surf-Session via Handy oder der GPS-Maus nichts mehr im Weg. Als GPS verwende ich einen Jentro-Bluetooth-Empfänger. Ebenfalls für unter 20 Eur im Netz zu finden. Die UMTS-Verbindung realisiere ich über ein Nokia Handy. Anleitung dazu findet sich im Ubuntu Wiki. Und last but not least habe ich mit etwas Aufwand den MSI DVB-T Stick DigiVox Mini II v3 zum laufen bekommen. Auch den gibt es für unter 20 Eur Strassenpreis. Viele andere Sticks sind auch ohne Nacharbeiten verwendbar. Infos dazu finden sich bei Ubuntu in den allgemeinen Informationen zu Ubuntu 9.10.

Ich hoffe der Artikel war hilfreich und es hat alles geklappt. Dann ist der Classmate jetzt mit Ubuntu 9.10 UNR das absolute Killer-Netbook 🙂 Nicht nur für Kinder!

Leave a Reply