Die Kunst des Unmöglichen: Portierung von MicroPython auf eine 3-Dollar-Smartwatch
Autor: DerSchneider
Einleitung
Was bekommt man für drei Euro? Einen Kaffee? Eine halbe Portion Pommes? Oder eine voll funktionsfähige – wenn auch tiefgreifend enttäuschende – Smartwatch? Genau diese Frage stellte sich der Bastler und Technik-Enthusiast hinter dem YouTube-Kanal „Poking Technology“, als er sich eine der billigsten erhältlichen Fitness-Brachen zulegte. Das Ergebnis ist eine faszinierende Reise in die Welt der Reverse Engineering, der proprietären Mikrocontroller-Architekturen und der fast schon philosophischen Frage, was es bedeutet, wenn Hardware so günstig ist, dass der darin enthaltene Chip im Einzelstück mehr kostet als das gesamte Produkt.
Dieser Artikel beleuchtet die technischen und historischen Hintergründe dieses Projekts, das zeigt, wie ein Gerät, das im ursprünglichen Zustand kaum mehr als Müll ist, durch Hartnäckigkeit und Einfallsreichtum in eine nützliche, programmierbare Plattform verwandelt werden kann. Wir tauchen ein in die Welt des Telink TC32-Prozessors, analysieren die Tücken der proprietären Entwicklungswerkzeuge und feiern den Triumph von MicroPython auf einem System, das dafür niemals vorgesehen war.
Der teure Kern der Billig-Watch
Das Herzstück der Analyse ist eine simple Erkenntnis: Das Billigprodukt ist ein Paradoxon. Der TLSR8232-Mikrocontroller von Telink, der die Smartwatch antreibt, kostet im Einzelkauf etwa die Hälfte des gesamten Verkaufspreises des fertigen Geräts . Dieser Preis wird nur durch den vollständigen Verzicht auf Qualität in allen anderen Bereichen erreicht: Akkulaufzeit, Benutzeroberfläche, Gehäuse – alles ist auf ein Minimum reduziert. Die Standard-Firmware des Geräts ist enttäuschend: Ein Schrittzähler, der selbst bei Erschütterungen auf dem Schreibtisch zählt, ein „Herzfrequenzsensor“, der stets denselben Wert anzeigt, und eine Menüführung, die an die Bedienkonzepte der frühen 2000er erinnert. Die Hardware aber, das eigentliche Gehirn des Geräts, ist ein interessanter Fall für die Technikarchäologie.
Die Entscheidung, ein solches Gerät nicht als Wegwerfprodukt zu betrachten, sondern als Entwicklungsplattform, ist ein klassischer Akt der „Tech-Archäologie“. Es geht darum, den wertvollen Kern unter einer Schicht aus digitalem Schutt freizulegen. Wie der Autor des Videos feststellt, sind die entscheidenden Schnittstellen – Testpunkte für UART, Stromversorgung und vor allem der Single-Wire-Debug-Port (SWS) – auf der Platine zugänglich . Damit wird der erste Schritt auf dem Weg zur Transformation getan: die physische Verbindung herstellen.
Reverse Engineering: Die Sprache des TC32 lernen
Die eigentliche Hürde ist jedoch nicht die Hardware, sondern die Software. Der TLSR8232 nutzt einen proprietären 32-Bit-Kern namens TC32. Telink, der Hersteller, stellt zwar ein Software Development Kit (SDK) und einen auf GCC basierenden Compiler zur Verfügung, doch wie so oft bei proprietären Lösungen sind diese Werkzeuge von Mängeln behaftet. Der Compiler ist alt, enthält Bugs – ein simpler Switch-Befehl in C kann zu einem Absturz führen, wenn nicht ein spezieller Compiler-Flag gesetzt wird – und der Quellcode ist nicht offen. Dokumentationen sind lückenhaft, und der Bluetooth-Low-Energy-Stack ist als Binary-Blob ausgeliefert, der zudem noch 10 Kilobyte des ohnehin knappen 16-Kilobyte-RAM belegt.
Die Analyse des TC32-Befehlssatzes fördert eine überraschende Erkenntnis zutage. Die Instruktionen des TC32 (wie tload, tcmp usw.) sind den Thumb-Instruktionen von ARM zum Verwechseln ähnlich. Der Autor des Projekts stellt fest, dass die generierten Maschinenbefehle fast identisch sind. Dies deutet stark darauf hin, dass es sich beim TC32 im Kern um eine leicht modifizierte Version des ARM-Thumb-Befehlssatzes handelt, die nur geringfügig angepasst wurde, um eine direkte Ausführung von ARM-Code zu verhindern. Diese Ähnlichkeit ist ein Segen für den Reverse Engineer: Sie ermöglicht es, den Code mit einem gewissen Grad an Vertrautheit zu lesen und zu verstehen, auch wenn die Werkzeuge dürftig sind.
Die Brücke zum Nutzer: MicroPython als Rettungsanker
Der eigentliche Durchbruch des Projekts ist nicht die bloße Möglichkeit, neuen C-Code zu kompilieren und aufzuspielen, sondern die Portierung von MicroPython. MicroPython ist eine schlanke Implementierung von Python 3, die für den Einsatz auf Mikrocontrollern mit extrem begrenzten Ressourcen optimiert ist. Dass eine Python-Umgebung auf einem Gerät mit 16 KB RAM und einem 24-MHz-Prozessor laufen kann, ist an sich schon beeindruckend. Dass der Autor dies in etwa einer Stunde von einem „Hello World“ zum funktionierenden MicroPython-Interpreter schaffte, zeugt von der soliden Grundstruktur der Hardware.
Die Portierung war nicht trivial. Fehler im SDK, fehlende Dokumentation und die Besonderheiten des TC32-Compilers führten zu zahlreichen Herausforderungen. Doch der Nutzen ist enorm. MicroPython verwandelt die Smartwatch von einem statischen, nutzlosen Objekt in eine dynamische, interaktive Entwicklungsumgebung. Anstatt mühsam C-Code zu kompilieren und zu flashen, kann der Nutzer jetzt direkt über eine serielle Verbindung Python-Befehle eingeben, GPIO-Pins steuern, Dateien auf dem internen Flash-Speicher lesen und schreiben und sogar einfache Programme im laufenden Betrieb testen.
Die Demonstration dieser Fähigkeiten ist eindrucksvoll: Ein GPIO-Pin wird als Ausgang konfiguriert, eine LED leuchtet auf. Ein Taster wird eingelesen, der Zustand der LED ändert sich. Ein einfaches Uhrprogramm wird geschrieben, das die verstrichene Zeit anzeigt. All dies ohne einen einzigen Neustart oder Kompiliervorgang, live im Terminal. MicroPython macht die Hardware greifbar und senkt die Einstiegshürde für die Entwicklung drastisch.
Die Krux mit dem Display und der Fall der zwei Uhren
Die Geschichte zeigt auch die Tücken der Massenfertigung von Billigprodukten. Die von „Poking Technology“ erworbene Smartwatch entspricht nicht exakt dem Referenzdesign, das von anderen Hackern, insbesondere rbaron, dokumentiert wurde. Während rbarons Uhr über ein ST7789-Display verfügt, verbaut der Autor ein GC1 1209. Diese beiden Controller-Chips sind nicht kompatibel. Das GC1 1209 unterstützt nur einen kleineren Framebuffer und muss, anders als das ST7789, über einen undokumentierten Befehlssatz in den richtigen Modus versetzt werden.
Dies führte zu einer langwierigen Fehlersuche, bei der der Autor im Grunde „blind“ mit Registerwerten experimentierte, bis das Display endlich das gesamte 80×160-Pixel-Bild zeigte. Diese Inkonsistenz ist ein Paradebeispiel für die Herausforderungen, die Billighardware mit sich bringt. Was für den einen Hacker funktioniert, kann bei einem anderen Produkt der gleichen „Serie“ scheitern.
Ein weiterer Punkt ist die Flüchtigkeit der Firmware. Der Autor kauft eine zweite, baugleiche Uhr, um eine elegantere Hardware-Modifikation vorzunehmen. Dabei stellt sich heraus, dass die ROM-Versionen der beiden Uhren unterschiedlich sind. Dies bestätigt den Verdacht, dass die Hersteller dieser Geräte die Firmware im laufenden Betrieb anpassen, sei es aufgrund von Display-Varianten oder anderen Hardware-Änderungen. Die Verfügbarkeit von Over-The-Air (OTA) Updates in der begleitenden Smartphone-App, die im Grunde die gesamte Firmware neu flashen, ist ein interessanter Aspekt. Sie zeigt, dass die Hersteller durchaus in der Lage sind, die Geräte zu aktualisieren, allerdings ohne den Entwicklungszugang, den Hacker sich wünschen.
Fazit und Ausblick
Die Portierung von MicroPython auf eine Drei-Dollar-Smartwatch ist weit mehr als eine technologische Spielerei. Sie ist ein Lehrstück über Ressourceneffizienz, über die Macht der Open-Source-Community und über die Bedeutung von Bildung im Umgang mit Technologie. Das Projekt zeigt, dass sich hinter scheinbar wertloser Hardware oft bemerkenswerte Komplexität und Potenzial verbergen. Es ist eine Hommage an die Pioniere des Homebrew-Computing, die mit ähnlich geringen Ressourcen auskommen mussten.
Die größten Erkenntnisse:
- Hardware ist oft besser als ihre Firmware: Der Telink-Chip ist leistungsfähig, wird aber durch eine schlechte Software und ein proprietäres Ökosystem gebremst.
- Die Bedeutung offener Werkzeuge: MicroPython fungiert als Katalysator, der die Hardware für eine breite Masse von Entwicklern zugänglich macht. Es ist eine Abstraktionsschicht, die den schmutzigen, proprietären Unterbau verbirgt.
- Die Herausforderung der Fragmentierung: Die Unterschiede zwischen verschiedenen Produktionschargen sind eine ständige Hürde für die Nachnutzung von Billigelektronik. Einheitliche Standards und offene Treiber wären wünschenswert, sind aber bei diesem Preisniveau unrealistisch.
- Die Rolle der Hacker-Community: Die Arbeit von Personen wie
rbaron, die den initialen Reverse-Engineering-Prozess dokumentiert haben, ist von unschätzbarem Wert. Sie schaffen die Grundlage, auf der andere aufbauen können.
Die Zukunft dieser Plattform ist vielversprechend. Die Portierung ist vollzogen, die Werkzeuge sind da. Was nun folgt, ist die Kreativität der Community. Die Smartwatch kann als mobiles Display für Sensoren, als Fernbedienung für andere Geräte, als Taschenrechner oder als Spielekonsole dienen – die Möglichkeiten sind vielfältig. Der Akku ist bei intensiver Nutzung schnell leer, doch für viele Anwendungen, die nicht permanent laufen müssen, ist dies akzeptabel. Vielleicht inspiriert dieses Projekt dazu, dass ein Hersteller die Zeichen der Zeit erkennt und eine offene, hackbare Version eines solchen Geräts auf den Markt bringt. Bis dahin bleibt die hier gezeigte Methode der Goldstandard für die Transformation von Müll zu Gold.
Kommentar abschicken