Freerunner reloaded
Im Juni 2009 hatte ich bei P|U|L|S|T|E|R ein Openmoko Freerunner gekauft. Damals war ich fest entschlossen, mehr für Maemo bzw. MeeGo und mit Qt zu programmieren, um abgefahrene spezialisierte Anwendung für Smartphones zu entwickeln. Dabei hatte ich besonders Nokia-Smartphones ins Auge gefasst, die dann mit MeeGo als Betriebssystem laufen, und der Freerunner sollte die Plattform zum Entwickeln werden. Diese Pläne sind aus mehreren Gründen gescheitert. Auf der einen Seite habe ich wenig Zeit, C++ und Qt zu vertiefen, weil ich auf der Arbeit Visual Basic-Dialekte benötige und mich in meiner Freizeit einfach viel zu gerne mit Python beschäftige. Auf der anderen Seite hatte mein Freerunner von Anfang an ein Hardware-Problem: Der Earspeaker hat nicht funktioniert. Anfangs dachte ich ja noch, dass ich einfach zu blöd sei, oder die Distributionen, die ich geflasht hatte, zu abwegig für das Gerät wären. Wie ich auch herumgeschraubt habe, ich konnte einfach nicht telefonieren. Mein Gegenüber hat mich zwar verstanden, ich ihn aber nicht. Mit einem Headset konnte ich das Problem leider nicht testen, weil ich keins für den Freerunner hatte.
Dann hat mich auch noch die Geschichte überrollt: Nokia will mittel- und höchstwahrscheinlich auch langfristig Hardware-Hersteller von Microsoft werden. Dabei soll Qt nicht auf Windows Phone 7 (WP7) portiert werden, Microsoft verbannt Open Source-Software aus ihrem Marketplace für WP7 und sollte das N9 wirklich noch mit MeeGo erscheinen, was es wohl wahrscheinlich auch wird, sieht es mehr nach einer Totgeburt aus. Ich für meinen Teil werde es mir nicht kaufen. Was also tun? Weiter mit meinem Nokia E71 arbeiten, einem sterbenden System? Nur noch mein Dienst-Handy, ein BlackBerry™ Curve 8900 benutzen? Den Freerunner zur Reparatur einschicken, weil ich noch innerhalb der zwei Jahre Gewährleistung bin? Genau das habe ich getan, also das Freerunner zur Reparatur eingeschickt und in der Zwischenzeit mit dem BlackBerry gespielt.
Am Sonnabend nach der gemeinsamen Pressekonferenz von Nokia und Micosoft ging mein Paket an P|U|L|S|T|E|R raus. Gerade mal eine Woche später kam ein nagelneuer Freerunner zurück. Es war tatsächlich ein Gewährleistungsfall und das Handy musste gegen ein neues Gerät ausgetauscht werden. Dem Paket lagen sogar ein Headset (ich hatte gegenüber Christoph Pulster in einer E-Mail nur nebenbei erwähnt, dass ich kein Headset habe), eine kleine Tüte Gummibären und ein kurzes Schreiben bei, in dem sich P|U|L|S|T|E|R für die Unannehmlichkeiten entschuldigt. Bei einem so tollen Kundenservice werde ich da sehr gerne wieder einkaufen. Das Ben NanoNote von Qi interessiert mich zum Beispiel. Aber erstmal habe ich jetzt mein neues altes Spielzeug wieder.
Da ich keine Zeit habe, Programme für irgendeine Distribution des OpenMokos zu entwickeln, will ich jetzt erstmal schauen, wie Alltags tauglich es ist. Zum Testen habe ich Android on Freerunner auf den NAND-Speicher geflasht. Da Froyo bei diesem Projekt noch unstable ist, und ich mit zunehmenden Alter immer mehr ein Herz für Distributionen entwickel, die die Bezeichnung stable im Namen tragen, habe ich Cupcake installiert. Das Flashen ging problemlos, so wie in der Anleitung beschrieben. Da ich Ubuntu 10.04 benutze, bin ich an einigen Stellen geringfügig abgewichen:
Egal welche Gnu/Linux-Distribution man benutzt, das OpenMoko Freerunner sollte zum Flashen immer voll aufgeladen sein. Außerdem benötigt man eine SD-Karte, am besten mit 4 Gigabyte oder mehr. Laut dem Wiki von OpenMoko.org soll die 8 Gigabyte große MicroSD-Karte von Transcend sehr gut kompatibel sein. Zu der Speicherkarte gibt es außerdem noch ein Lesegerät, was man sehr gut zum Flashen brauchen kann, wenn man sonst keins hat. Partioniert habe ich meine Speicherkarte dann unter Ubuntu mit GParted. Die erste Partition auf der Karte ist etwa zwischen 5 und 6 Gigabyte groß, heißt „sdcard“ und ist mit FAT32 formatiert. Die zweite Partition belegt den restlichen freien Speicher mit etwa 2 Gigabyte, heißt „data“ und hat ein Ext3-Dateisystem. Vielleicht ist „data“ etwas zu groß gewählt, weil es für Android ja nur dazu da ist, Einstellungen und Konfigurationsdateien zu speichern, während auf „sdcard“ Musikdatein, Bilder, Comics etc. kopiert werden sollen. Höchstwahrscheinlich war der Aufwand sowieso übertrieben, weil auch eine Partition nur mit VFAT gereicht hätte. Doch der Drops ist jetzt gelutscht und die Karte ist wie sie ist. Anschließend habe ich die FAT32-Partition automatisch von Ubtuntu einhängen lassen, das Archiv dorthin entpackt und die Partiton über den Dateimanager Nautilus wieder ausgehangen. Das Entpacken habe ich im Terminal gemacht:
cd /media/sdcard/ tar -xvzf /home/christian/Downloads/android-on-freerunner-cupcake-stable-201101.tar.gz cd ~ |
Danach habe ich die MicroSD-Karte zusammen mit meiner SIM-Karte und den Akku wieder in den Freerunner eingesetzt und ihn gestartet, indem ich die AUX-Taste gedrückt gehalten und dann die Powertaste betätigt habe. In dem Menü, das dann erscheint, habe ich den Punkt „Boot from microSD card (FAT+ext2)“ ausgewählt, indem ich die AUX-Taste einmal gedrückt habe, um mich im Menü nach unten zu bewegen. Wenn diese Option farblich markiert ist, drückt man nochmal die Power-Taste, um den Bootvorgang zu starten.
Der erste Bootvorgang ist natürlich immer am aufregendsten, und da er am längsten dauert, hat man viel Zeit zum Nachdenken: Habe ich alles richtig gemacht? Warum ist der Bildschirm nur noch weiß, aber sonst passiert nichts? Wieso ist denn alles so verzerrt? Aber nach unendlich vielen qualvollen Minuten sieht man den gesperrten Startbildschirm. Wenn man dann auf die Power-Taste drückt, kann man die SIM-Karte entsperren und ist drin! Ich für meinen Teil bin jetzt zum ersten Mal in meinem Leben Android-Benutzer.
Das Android-System auf dem Freerunner unterscheidet sich allerdings von einem kommerziellen Android auf einem HTC oder einem Samsung. Wo genau diese Unterschiede liegen, muss ich aber auch erstmal herausfinden. Auffällig ist schonmal, dass es keinen Android Market gibt. Dafür kann man aber AndAppStore nachinstallieren, um sich erste überlebenswichtige Anwendungen wie einen Dateimanager zu besorgen.
Die Bedienung mit den Tasten Power und AUX ist auch ein bisschen gewöhnungsbedürftig, aber machbar: Um in das Menü zu gelangen, drückt man die Power-Taste nur einmal kurz. Hält man die Taste etwas länger gedrückt, etwa 2 Sekunden, geht das OpenMoko in den Suspend, hält man die Taste noch länger, also mehr als 3 Sekunden, kann man Android ausschalten. Wenn man AUX einmal kurz drückt, geht man einen Schritt zurück, also in das Fenster, in dem man davor war. Drückt man AUX etwa 2 Sekunden lang, gelangt man zurück auf den Startbildschirm, hält man AUX noch länger gedrückt, also mehr als 3 Sekunden, kann man zwischen den Apps wechseln. Da der Unterschied zwischen 2 und 3 Sekunden langes drücken einer Taste nicht so groß ist, kann man dieses Verhalten auch ändern. Im Menü unter „Spare Parts“ kann man unter dem Punkt „End button behaviour“ den Wert auf „Home, then sleep“ setzen. Hält man jetzt die AUX-Taste gedrückt und drückt dann auf Power, wechselt man auch zum Startbildschirm. Außerdem habe ich in den „Einstellungen“ unter „Sound und Display“ den „Display-Timeout“ auf 15 Sekunden gesetzt und unter „Helligkeit“ den Bildschirm stark gedimmt. Etwas über dem Punkt „Helligkeit“ kann man „Ausrichtung“ aktivieren, wenn man mag, damit sich der Bildschirminhalt auch mitdreht, wenn man das ganze Telefon dreht. Weiter habe ich WLAN, was übrigens sofort und ohne Probleme funktioniert hat, und Bluetooth deaktiviert. Mehr Maßnahmen sind mir auf die Schnelle zum Strom sparen nicht eingefallen. Um die Einstellungen zu speichern, muss man das Menü immer über den AUX-Knopf verlassen.
In den „Einstellungen“ sollte man unter Anwendungen den Punkt „Unbekannte Quellen“ aktivieren, um Apps ohne einen Market zu installieren, und unter „Entwicklung“ den Punkt „Aktiv bleiben“, wenn man mit einem Computer verbunden ist. „Datum und Uhrzeit“ muss man natürlich auch einstellen, wobei ich „Automatisch“ deaktiviert habe, weil Datum und Uhrzeit überhaupt nicht automatisch geholt worden sind. Das Menü muss man dann über den AUX-Knopf verlassen, um die Einstellungen zu speichern.
Geschrieben in Gnu/Linux