Librescoot 1.0

Librescoot 1.0

The firmware your scooter deserves.

Heute haben wir Librescoot 1.0 veröffentlicht. Stable channel, v1.0.0, ohne Sternchen – zum ersten Mal seit ich am Projekt mitarbeite, steht in der README ganz oben nicht mehr „EXTREMELY EXPERIMENTAL – DO NOT USE ON REAL HARDWARE".

Nachdem ich einer der ersten Empfänger des unu Scooter Pro bei der Auslieferung damals war und nach Monaten voller Probleme entnervt vom Kauf zurücktrat, hatte ich erst einer Freundin, danach auch mir, im November 2024 günstig gebrauchte unus gekauft - in der Annahme, dass die Probleme vom Anfang ja zwischenzeitlich hoffentlich behoben wurden. Und der Roller fuhr auch problemlos und machte dank 4kW-Motor auch Fahrspaß, zeigte aber die ganze Zeit(!) eine falsche Uhrzeit an. Turns out: Obwohl der Scooter irgendwas um die 10 Echtzeituhren hat, holt es sich die Systemzeit nur aus dem Internet. Und mit der Insolvenz von unu Ende 2023 wurden auch die Vodafone-SIMs abgeschaltet, die das ermöglichten.

So fing ich an, erst meinen Roller zu reverse engineeren, dann eine eigene MFF2-SIM einzulöten, um dann eine kleine Telematik-Cloud zu schreiben, die die unu-Cloud ersetzt. Die Plattform hat mit der Zeit auch immer mehr Features - und Benutzer*innen - gewonnen, löst aber nur einen Teil des Problems, und auch nur für Leute, die irgendwie eine eigene SIM-Karte in ihren Scooter gebaut haben. Featuremäßig war der Scooter aber weiterhin auf dem Stand, den er am Tag der Insolvenz von unu hatte.

Librescoot ersetzt die komplette Software und Firmware des Rollers - und bietet gleichzeitig einiges an neuen Features.

Librescoot 1.0.0 stable

Entsperrt man den frisch mit Librescoot geflashten Roller, wacht das Dashboard mit einer Librescoot-Animation auf und zeigt dann eine eigens entwickelte Tacho-UI im modernen Design. Man kann aber auch umschalten auf eine Kartenansicht, die auch den Straßennamen und Geschwindigkeitslimits anzeigt, und sogar mit Turn-by-Turn-Anweisungen zu einem beliebigen Ziel navigieren - komplett on-device, der Roller muss dafür nicht online sein. Wir haben eine Alarmanlage eingebaut, die unu in all den Jahren nicht liefern konnte, die automatisch scharf schaltet und sich mit Licht und Ton meldet, wenn sich jemand am Roller zu schaffen macht. Es sind eigene Schlüsselkarten anlernbar, und für schnelle Besorgungen gibt es einen Hop-on Modus, bei dem man nicht mal die Schlüsselkarte braucht, sondern den Roller per Tastenkombination entsperren kann. Das Lenkerschloss ist smarter geworden und kann auch im Parkmodus noch deaktiviert oder nach dem Abschließen noch aktiviert werden. Der Roller kann automatisch nach einer konfigurierten Zeit in den Stand-by oder Tiefschlaf gehen, um Strom zu sparen. Das Dashboard hat jetzt einen Light Mode, und kann automatisch zwischen Light und Dark Mode wechseln. Es zeigt die aktuelle Außentemperatur im Display an - und die Uhr, jetzt durch GPS gesetzt, zeigt endlich wieder die richtige Zeit an!

Auch unter der Haube hat sich viel getan, wir haben eine eigene Linux-Distribution gebaut, komplett neue Services geschrieben, wir können jetzt Dual Battery fahren (nach einem kleinen Hardwareumbau, um die nötigen Batteriekontakte nachzurüsten) und so die Reichweite massiv verbessern, es sind neue Schnittstellen vorgesehen, um auch offline, per Bluetooth, Navigationsdaten zu senden, Schlüsselkarten zu verwalten, Einstellungen zu verändern usw. Die vollständige Liste der Änderungen gegenüber scooterOS findet man im Handbuch, inklusive ein paar Features, die unu anfangs versprochen, aber schlicht nie ausgeliefert hat.

Auf den Installer bin ich besonders stolz - was früher einiges an Fummelei brauchte, einen UART-Zugriff, eventuell ein bisschen Löten und dann langsames, manuelles Flashen, geht jetzt über eine geführte Installation unter Windows, macOS und Linux und per USB. Zwei Schraubendreher und ungefähr 20 Minuten Zeit reichen aus, um einen unu von "stock" auf Librescoot zu bringen.

16 Monate

Es ist gut sechzehn Monate her, dass wir mit Librescoot angefangen haben – der erste Commit trägt das Datum 22. Dezember 2024. Heute läuft Librescoot zuverlässig genug, dass ich es seit Monaten als alltägliche Firmware auf meinen eigenen Rollern fahre. Dazwischen liegt eine Menge Entwicklungsaufwand: Nicht nur müssen Services für alle Funktionen des Rollers geschrieben werden, sondern auch eine eigene Embedded-Build-Plattform eingerichtet, quasi eine ganz eigene Linux-Distribution. Die gesamte Hardware muss verstanden werden, Treiber angepasst, Device Trees konfiguriert, viel gemessen und probiert, Datenblätter gewälzt, und vior allem viel, viel testen, fehlschlagen, ändern. Dann hängen solche Dinge dran wie Updatepakete - nicht nur Over-the-Air für die Online-Scooter, sondern auch rein offline möglich. Für die Online-Scooter außerdem datensparsam als Delta (~1 MB statt ~250 MB). Infrastruktur, wie die Erstellung angepasster Karten- und Navigationsdaten, die auch auf dem Embedded-System ordentlich laufen können und trotzdem nützlich sind. Ein Menüsystem und eine Adresseingabe, die komplett mit den beiden Bremshebeln bedienbar sind - den einzigen zugänglichen Eingabemöglichkeiten, mangels Touchscreen oder Gamepad. Jeder dieser Features wäre ein eigenes Blogpost wert.

Es war oft frustrierend. Modems, die partout keine Lust hatten, online zu kommen. NFC-Chips, die zufällige Daten geliefert haben. Batterien, die einfach nicht richtig laden oder entladen wollten. Power Glitches, Bluetooth-Glitches, undefinierte Übergänge und Zustände, in vieler Hinsicht spiegelte sich die Entwicklungsgeschichte der Scooter-Hardware und -Software erneut wieder: Wo wurden Abkürzungen genommen, wo wurden Dinge nicht zu Ende geplant, gedacht, oder gebaut. Roller, in denen einfach jeder Wurm drin war. Wenn ich nochmal anfangen müsste, würde ich es trotzdem tun – aber die ganzen Holzwege würde ich gerne überspringen. Le sigh.

Das Team dahinter

Den Großteil der Arbeit haben Danylo Storozhev und ich gestemmt. Danylo hat Yocto und die Build-Pipeline eingerichtet, wofür ich unendlich dankbar bin, meine Geduld hätte dafür niemals gereicht. Mein Schwerpunkt lag auf UI, Uplink/Telemetrie, Tooling und der Batterielogik, dem Installer und viel System-Klempnerei dazwischen. André Bierlein hat viel im Dashboard-UI gemacht – inlkusive Simulator und der ersten Kartenansicht und Navigation. Diese Flutter-UI haben wir lange benutzt, bis wir vor ein paar Monaten auf Qt umgestellt haben.

Dazu kommt eine Gruppe von Testern, die in den letzten Wochen Nightly-Builds auf den eigenen Rollern gefahren ist und Bugs gefunden haben, die uns immer wieder überrascht haben: Jonas, inpin, jaibee1., leifbln, starman42, EndOS, Felix, DSIW, Bendix. Großes Danke auch an die Fa. Wilhelm Zweiradtechnik, die mit viel Wissen und Tatkraft unterstützt haben und fast alles wieder geradegebogen haben, was wir oder die Tester unterwegs verloren oder kaputt gemacht haben.

Loslegen

Alle Infos – Installer, Anleitung, Kanal-Auswahl, FAQ – sind auf librescoot.org zu finden, der Source unter github.com/librescoot/librescoot unter der CC BY-NC-SA bzw. AGPL-3.0. Die Installation braucht einen unu Scooter Pro, Schraubendreher, einen Laptop mit Mini-USB-Kabel und ungefähr 20 Minuten Zeit.

Librescoot ist mit dem 1.0-Tag nicht „fertig". Es gibt schon eine längere Liste an Dingen, die wir uns für 1.x wünschen. Aber stabil ist es. Mein Roller ist der Beweis – und ab heute auch deiner?