Cloudless Roborock
Cloudless Roborock
Viele von euch mit einem der vielen mit dem Internet verbundenen Geräten kennen es bestimmt: Es gibt eine App zur Konfiguration und Fernsteuerung. Über solche lassen sich beispielsweise Alexa Skills installieren oder auch der Reinigungsfortschritt der eigenen Waschmaschine prüfen.
Sehr praktisch … oder?
Kommt man aus einem eher technischen Umfeld, besteht (zumindest oft bei mir) die Frage: Wie machen die das denn?
Aus den endlos vielen Möglichkeiten hat sich in letzter Zeit eine zentralisierte Lösung bei vielen Herstellern etabliert. Das heißt konkret ein Smart-Home Gerät übermittelt seine gesammelten Daten an einen oder mehrere Server im Internet und dort werden diese erst mal abgelegt. Frägt man nun per App den Status seines Geräts ab, empfängt man eigentlich nur den zwischengespeicherten Datenstand auf dem Server. Auch durch die App ausgelöste Aktionen werden zuerst an den Server übertragen, welcher dann den Befehl an das Gerät weiterleitet. Diese Art der Kommunikation erleichtert den Entwicklungsaufwand und auch die Installation des Geräts beim Endkunden enorm, allerdings werden so auch permanent Daten auf ein entferntes System übertragen und dort eventuell gespeichert.
Jetzt wird es „Cloudless“
Ich bin allerdings sehr bemüht meine Daten auch in meinen eigenen vier Wänden zu behalten. Das führte dazu das mein neuer Haushaltshelfer „Dusty“ auch erst mal kein Internet sehen durfte. Zumindest so lange bis einige „Daten-Knebel“ an Ort und Stelle sind.
Um „Dusty“ kurz vorzustellen: Es handelt sich um einen Xiaomi „Roborock S55“ der seit Februar 2018 auf dem Markt ist. Es ist ein runder Saugroboter, welcher seine Umgebung mittels eines Laser-Entfernungsmessers und weiteren Sensoren erkennt und seine Route den aktuellen Gegebenheiten anpasst.
Root-Zugriff
Hintergrund-Infos
Für die Veränderung der Software auf dem Roboter benötigen man als ersten Schritt den Zugriff auf das Betriebssystem. Um „Dusty“ für das Vorhaben zu „öffnen“ hab ich das Ergebnis des Hacks von Dennis Giese and Daniel Wegemer auf dem 34. Chaos Computer Congress (34c3) benutzt. Die beiden verwenden eine etwas unkonventionelle Methode um Root-Zugriff auf den Roboter zu bekommen. Sie benutzen ein Stück-Alufolie um zwei Pins des verbauten Prozessors kurzzuschließen und diesen in einen Notfall-Modus zu bringen. In diesem Modus ist es möglich eine eigene Software in den Arbeitsspeicher zu laden und somit Zugriff auf das Roboter-Betriebssystem zu erhalten. Was im in diesem Fall ein minimal angepasstes Ubuntu Linux System ist. Beim analysieren des Update-Prozesses haben sie das Passwort der Verschlüsselung ermittelt ('rockrobo'
) und somit kann auch über weitere Geräte ohne Alu-Folie die volle Kontrolle übernommen werden. Alle ihre Ergebnisse und Daten, auch von weiteren Hacks von Xiaomi Geräte findet man in der Dustcloud.
Start the „Hack“
Um „Dusty“ jetzt zu rooten, habe ich die Punkte aus dem Wiki des Dustcloud-Projekts befolgt welche ich kurz mit euch durchgehe.
Für die Erzeugung der eigenen Firmware muss man zwingend ein Linux zu benutzen, da manche der benutzten Tools nur dafür verfügbar sind. Für so etwas fahre ich bei mir eine virtuelle Maschine mit einem Debiansystem hoch. Das Generieren des neuen Firmware Image ging damit relativ unkompliziert und ohne Probleme vonstatten.
Die frische Firmware überträgt man nach gleicher Anleitung anschließend auf den Staubsaugroboter. Wichtig dabei ist die Verbindung zum Roboter, wenn also noch nicht getan, müsst ihr euch mit dem Roborock-*
WLAN verbinden.
Sollte das jemand auch aus einer Virtualbox raus machen, gebt Acht dass ihr euer WLAN-Interface über eine Netzwerkbrücke verbindet.
Bei mir ist an dieser Stelle alles gut gegangen und ich konnte mich mit SSH auf den Roboter verbinden. (Mit dem Benutzernamen root
!)
Weboberfläche
Mein Ziel ware es den Roborock komplett von den Xiaomi Servern zu trennen. Um trotzdem dessen Remote-Funktionalität zu erhalten habe ich mich für die Installation von Valetudo entschieden. Valetudo ist eine auf dem Roboter laufende Webanwendung die den Funktionsumfang der Original-App nachbildet und aktiv von einer großen Community weiterentwickelt wird. Die Installation läuft hier relativ einfach ab und am Ende wird die Weboberfläche unter htto://ip.de.s.robo
gestartet.
Eine Erklärung der Installation sowie eine Schritt-für-Schritt Anleitung findet sich im Wiki des Valetudo-Projekts. Dabei wird in die originale Firmware die Valetudo Installation eingebettet und Blockaden in Richtung der Xiaomi Server erstellt. Auch für diese Schritte ist ein Linux-System oder eine virtuelle Machine hilfreich.
in die /etc/rc.local
eingetragen um jeglichen Traffik zu blockieren werden. Diese Änderung könnten allerdings bei einem Neustart verloren gehen.
Internetzugang
Zu guter Letzt wird jetzt der Roboter mit Hilfe der Valetudo-Oberfläche unter Einstellungen in das heimische WLAN eingebunden.
Somit kann jedes Gerät auf die Weboberfläche des Roboters zugreifen und steuern.
Ich habe zusätzlich für mich noch einen VPN-Tunnel eingerichtet. Somit kann ich auch relativ sicher über den Tunnel aus der Ferne immer mal wieder nachschauen, was „Dusty“ so treibt, ohne meinen Router direkt zum Internet hin öffnen zu müssen.
Ich hoffe euch hat dieser kleine Ausflug in eine eher technischere Welt gut gefallen. Wenn ja dann lasst gerne einen Kommentar da, wenn nicht dann erst recht! Mann will sich ja verbessern.
Neueste Artikel von Mr. P (alle ansehen)
- Wallpanel für Home Assistant - August 24, 2021
- Home Assistant – Ein modernes Smart Home System - Januar 18, 2021
- Circadian Lighting - August 2, 2020
Hi, schöner Artikel.
Kannst du bitte mal step by step erklären wie du die dummycloud zum laufen bekommen hast. Ich bin absoluter Linux Anfänger. Hier fehlt mir der nötige Background. Gerootet ist das gute Stück allerdings schon. Nur mir pgrep dummycloud kommt nix zurück. Also läuft die cloud noch nicht. Ich hoffe du kannst mir helfen.Danke.
Hallo Stefan,
Mit dem heutigen Wissen hab ich gerade den Artikel nochmal gelesen und ich muss den Teil mit der Dummycloud nochmal überarbeiten.
Wenn man den Roboter in Verbindung mit Valetudo betreibt (Web-App direkt auf dem Roborock) ist die Dummycloud hinfällig. Inzwischen gibt es auch schon eine sehr aktuelle Schritt-Für-Schritt-Anleitung inklusive Erklärung im Valetudo github Projekt. Diese habe ich erst letzte Woche benutzt um die Firmware inklusive Valetudo 0.3.0 zu erzeugen und zu flashen. Valetudo direkt in die firmware zu packen ist eine sehr gute Idee, da sich der Robbi zufällig bei Neustarts auf den Firmware-Stand zurücksetzt.
Hallo,
danke für die Antwort. Genau nach dieser Anleitung bin ich vorgegangen. Damit hat das Flashen funktioniert. Wie sind denn nun die nächsten Schritte. Das ist mir aktuell nicht ganz klar. In einer anderen Anleitung habe ich gelesen, man soll die iptables verändern und auf den Localhost Port 8053 weiterleiten, damit der Robi nicht mehr nach Hause funkt. Ist das hinfällig oder wird das noch benötigt?
Wenn du genau nach dieser Anleitung vorgegangen bist, werden die Anfragen bereits richtig zum Robi zurückgeleitet, da sonst Valetudo nicht korrekt funktionieren würde. Mit dem Flag
--disable-firmware-updates
Werden auch die Standard Xiaomi Ports bereits geblockt.Es sollten keine manuellen Schritte mehr nötig sein.
Wenn du dir unsicher bist kannst du dich auf den Robi verbinden und dort die in den anderen Anleitungen beschriebenen Stellen überprüfen. Ich habe bei mir als Vorsichtsmaßnahme auch nochmal im Router den Internetzugang verwehrt.