From No(vember) Cloud to Sunshine in a few short weeks

From No(vember) Cloud to Sunshine in a few short weeks
Photo by Kahar Erbol / Unsplash

Der unu Scooter Pro fährt sich ganz spaßig („spritzig“ heißt es im Marketing-Sprech), aber ein (actually, zwei) Linux spazieren zu fahren, nur um auf einen Qt-basierten Tacho zu gucken, ist auch irgendwie albern.

Also habe ich eine eigene Cloud für die unus gebaut.

Das Projekt heißt Sunshine, denn Clouds gibt es schon genug, besonders in den Wintermonaten in Berlin.

Die unu-Roller waren ursprünglich mit Vodafone SIMs online. Im Zuge der Insolvenz hat entweder niemand daran gedacht, diese Verträge zu verlängern, oder niemand fand es wichtig genug, das Geld dafür auszugeben. Das Resultat ist, dass alle unus jetzt offline sind und ohne größere Anstrengungen auch nicht mehr online kommen werden: Die SIMs sind MFF2-Module, also winzige Chips, die fest aufgelötet sind. Falls überhaupt noch Informationen über die nötigen Verträge irgendwo existiert, bedürfte es einiger Abstimmung zwischen emco, die den Rest von unu übernommen haben, und Vodafone Deutschland. Und so wie ich unu über die Jahre kennengelernt habe, werden das auch relativ teure Verträge sein, schließlich luden die Roller relativ regelmäßig recht große Over-the-Air-Updates herunter. Die Alternative ist, den SIM-Chip durch einen eigenen zu ersetzen. Genau das habe ich getan: Da die wenigstens Anbieter SIM-Karten im MFF2-Format an Endanwendern bzw. überhaupt in kleineren Mengen als „Tausende“ abgeben, bin ich bei Things Mobile gelandet, einem auf IoT-Anwendungen spezialisierten italienischen Unternehmen. Das Umlöten war ziemlich nervig, weil der MFF2-Chip größtenteils aus einem Wärmeleitpad besteht, es braucht also konzentrierte Heißluft – bei ~450˚C dauerte es trotzdem noch mehrere Minuten, bis der Chip sich endlich lösen ließ. Das Einlöten des neuen Chips war dank Lötpaste und viel Flux vergleichsweise einfach.

Das SIM-Modul sowie das Modem sitzen auf dem „Middle Driver Board“ (MDB), einer Box im Fußraum des unu-Rollers, in die nicht weniger als 4 verschiedene 30-polige Stecker, drei Antennenkabel und ein Mini-USB-Kabel gehen. Wenn man die Kabel alle abzieht, kann man die Box rausschrauben und dann öffnen. Auf dem Board befindet sich glücklicherweise ein (unbestückter) UART-Anschluss, womit man durch geschicktes Timing eine serielle Konsole in den Bootloader bekommen kann. Dieser kann das Gerät dann in den USB-Massenspeichermodus (USB Mass Storage, UMS) versetzen, was Zugriff aufs Dateisystem ermöglicht, ohne dass man das Root-Passwort kennt.

Mit diesem Dateisystemzugriff konnte ich dann ein eigenes Passwort setzen, und ab dann deutlich bequemer via SSH auf dem System arbeiten: Das MDB meldet sich as USB-Netzwerkgerät an einem normalen Computer. Auf dem MDB läuft ein „scooterOS“ genanntes, modifiziertes Poky (eine Embedded-Distribution des Yocto-Linux-Projekts), auf dem wiederum eine Menge kleiner Services den Scooter steuern.

Mein Augenmerk lag auf dem unu-uplink-Service. Dank des sehr generösen Loggings ist klar, dass unu ursprünglich Protobuf-Nachrichten über MQTT gesendet und empfangen hat, um Telemetrie des Scooters in die Cloud zu übertragen, und gewissen Fernsteuerung zu ermöglichen. Das deckt sich teilweise mit den Behauptungen während der Entwicklungs- und Vorbestell-Zeit, dass über die Cloud Live-Ortung, Fernsteuerung, Sharing etc. möglich sein sollen. Die Pläne wurden aber mit fortschreitender Realität der Entwicklung arg zurechtgeschrumpft. Als mein erster unu nur wenige Tage nach Lieferung gestohlen wurde, war die Cloud noch nicht einmal lauffähig genug, um ihn orten zu können (der Scooter wurde dann wiedergefunden, vermutlich weil man ihn nicht so einfach kurzschließen konnte wie gedacht). Die Cloud-Endpunkte sind im Scooter konfigurierbar, so dass ich zuerst versuchte, die bestehenden unu-Service einfach mit einem eigenen MQTT-Server zu verbinden. Das ging erst mal nicht auf Anhieb, so dass ich dann darauf umgeschwenkt bin, erst einmal einen eigenen Telemetrie- und Telematik-Client („Radio Gaga“) zu bauen. Nachdem dieser recht schnell funktionierte und erste Daten übertrug, habe ich ein Webinterface in Ruby on Rails gebaut, um die Daten zu visualisieren und grundsätzliche Rollersteuerung zu ermöglichen: das ist der Sunshine-Teil.

Nach etwas Testen und Bugfixing habe ich das Projekt heute dann veröffentlicht. Wer willens ist, zu Löten, kann seinen Scooter so wieder online bringen. Genaueres gibt es auf https://sunshine.rescoot.org/.

Für die Löt-Unwilligen habe ich ein paar Ideen, wie man die Roller auch ohne Löten wieder online bringen könnte. Leider sind die alle ein bisschen umständlich, weshalb ich da noch mehr drüber brüten werde, aber Interessierte können im unu Community Discord schonmal mitdiskutieren.

PS: Die unu-Cloud soll angeblich auf mehreren Cloud-Providern gelaufen sein und mehrere Hunderttausend Euro pro Jahr gekostet haben. Meine läuft auf einer kleinen VM und ich bin recht sicher, dass sie damit auch auf alle ~4.500 verkauften unu Scooter Pro skalieren könnte ^^