Staubsaugen gehört sicherlich zu den am wenigsten beliebtesten Aufgaben im Haushalt. Gut das es seit einigen Jahren entsprechende Helferlein gibt, die einem ein großer Stück dieser lästigen Arbeit abnehmen können.

Grundsätzlich stört am Staubsaugen an und für sich recht wenig, außer das man es regelmäßig (im Schnitt einmal in der Woche) tun sollte und es schlichtweg Zeit in Anspruch nimmt. Jenseits der Arbeit und innerhalb der Freizeit kann man sich besseres vorstellen.

Nachdem kürzlich erst ein anderes automatisches Helferlein bei uns Einzug gehalten hat, folgte nun ein Saugroboter. Das Thema Saugroboter stand schon längere Zeit an, diesmal wurde es konkret. An Auswahl und Möglichkeiten am Markt scheitert er freilich nicht. Vom simplen sowie günstigen Gerät das ferngesteuert und relativ Kopflos rum fährt bis hin zum Spitzenmodell (im vierstelligen Preissegment) ist alles zu haben.

Der überwiegende Teil der Modelle kann über eine App konfiguriert sowie gesteuert werden und genau an dieser Stelle liegt der Hase im Pfeffer, denn viele Saugroboter samt zugehöriger Apps telefonieren nach Hause und dieses ist nicht selten im asiatischen Raum oder anders ausgedrückt: Es läuft alles über die Cloud.

Wenn man allerdings nicht unbedingt den Grundriss seiner Wohnung und ggf. weiteres mit unbekannten Dritten teilen möchte (schließlich weiß man oft nicht, wer die Daten noch so alles in die Finger bekommt) wird die Auswahl recht dünn. In der Vorab-Recherche welche Geräte interessant sein könnten, fanden sich erschreckend wenig Informationen darüber, welcher Saugroboter bzw. App was und wie überträgt.

Über diverse Umwege fand sich dann dieser Beitrag:

maker-tutorials.com – Xiaomi Roborock Saugroboter mit Raspberry Pi hacken/rooten (ohne cloud upload)

Allerdings lassen sich die Roborock-Geräte wohl mittlerweile nicht mehr (ganz) so einfach rooten. Allerdings half der Verweis auf Valetudo (Homepage) bzw. Valetudo (GitHub) weiter. Bei Valetudo handelt es sich um ein Projekt, das eine alternative Software für verschiedene Hersteller und Modelle von Saugrobotern anbietet, die ohne die jeweilige Hersteller-Cloud auskommt. Kurzum: Man kann den Saugroboter cloud-free machen. Zugegriffen wird dann via Web-Browser oder App direkt auf das Gerät. Eine Anbindung an Home-Automatisierungssysteme und mitunter ebenfalls möglich.

Über die Valetudo Newcomer Guide Early 2021 Edition-Seite findet sich dann die Empfehlung den Dreame D9 zu verwenden. Eine (öffentliche) root-Anleitung gibt es leider noch nicht, dem Hörensagen nach soll diese im Laufe des August oder September 2021 veröffentlicht werden.

Ein weiterer entscheidender Hinweis bis zur Cloud-Befreiung findet sich unter Roboter-Forum.com:

D9 offline betreiben bis root verfügbar ist

Kurzum: Der Saugroboter funktioniert auch erstmal ohne WLAN-Anbindung, Hersteller-Cloud und App und macht dabei einen guten Job. Die Summe aller Erkenntnisse bis hierhin waren dann Kaufentscheidend für mich und so wurde kurzerhand einer bestellt.

Seit gut zwei Wochen tut dieser nun unregelmäßig und auf Knopfdruck seinen Dienst. Zu Meckern gab es bis jetzt nichts, man stolpert eher über Dinge die man zunächst nicht unbedingt bedacht hat. Sowas wie das Verlängerungskabel unterm Sofa, das der Saugroboter dann ein Stück weit mitnimmt oder (aktuell Renovierungsbedingt) Tafeln und weiteres die nur angelehnt an Wänden und Möbeln stehen und dann umgeworfen werden.

Zum Schießen komisch war eine Platte die auf dem Roboter gelandet ist und dieser samt Platte dann weiter gefahren ist. Soweit also schon mal gut, man darf gespannt sein was dann zusammen mit Valetudo dann geht.

Update 06.09.2023

Es hat doch jetzt tatsächlich über zwei Jahre gedauert bis ich mich dem Thema wieder annehmen konnte und wollte. Nein, es hat(te) nichts mit der Garantie zu tun, es wurde schlicht vor sich her geschoben. In der Zwischenzeit hat der Saugroboter ohne App und WLAN einfach auf Knopfdruck gute Dienste geleistet, im Schnitt lief und läuft er einmal die Woche.

Vergangenen Freitag-Mittag war es nun endlich soweit, der Dreame D9 sollte gerootet werden. Viel hat sich getan, Anleitungen auf den oben verlinkten Seiten haben sich geändert, so besteht die mittlerweile zu bevorzugende Methode darin, eine entsprechende Adapterplatine zu verwenden. Diese hatte ich natürlich nicht, daher musste ein etwas anderer Weg und wenn man so möchte eine Art “Frankenbuild” von zwei Anleitungen herhalten.

Zuerst noch mal die (imho) relevanten Links:

dontvacuum.me – Dreame technical information and rooting: Get control over your vacuum robot (PDF)

dontvacuum.me – cmds.txt

Valetudo – Dreame rooting and installation

Um eine root-Shell zu bekommen wurden die Schritte von dontvacuum.me (Siehe PDF, “UART method” ab Seite 36) gegangen. Leider gibt es Unterschiede bei den Befehlen in der PDF und der “cmds.txt”, ich nahm die aus dem PDF. Allem voran wurde der Deckel vom Dreame D9 entfernt und eine serielle Verbindung (unter Windows mit PuTTY oder KiTTY, unter Linux mit screen, Geschwindigkeit 115200, ohne Flow Control) zusammen mit einem USB 2.0 CH340G TTL Konverter Adapter (Auf 3.3V gejumpert!, Das Teil gibt’s z.B. bei makershop.de [keine Werbung, hab’ da vor zwei Jahren einfach nur gekauft]) von einem Windows 11-Notebook aus hergestellt:

Hier nun also die Schritte die gegangen wurden:

  • Den Saugroboter aus dem Dock (Ladestation) nehmen.
  • Die Taste “s” drücken und auf dem Dreame den Power-Button für mindestens drei Sekunden drücken.
  • Es erscheinen diverse Boot-Meldungen, sobald die Zeile mit “sunxi…” beginnt die Taste “s” loslassen, überschüssige “ssss….” entfernen und folgende Befehle (copy & paste) einfügen:
    setenv init /bin/sh
    setenv boot_partition boot1
    run setargs_nand
    run boot_normal
  • Es folgenden weitere (Boot-)Meldungen und man landet in einer Shell. Nun folgende Befehle ausführen:
    /etc/init.d/sysconfig.sh
    echo V > /dev/watchdog
    /etc/init.d/mount_private.sh
    /etc/init.d/mount_misc.sh
    mount /tmp
    mkdir /tmp/fakeetc
    cp -R /etc/* /tmp/fakeetc
    mount --bind /tmp/fakeetc /etc
    echo >> /tmp/fakeetc/inittab
    echo '::respawn:-/bin/sh' >> /tmp/fakeetc/inittab
    exec init
  • Sobald der restliche (Boot-)Vorgang abgeschlossen ist einmal “Enter” drücken um wieder in die Shell zu gelangen.
  • Nun den Saugroboter ins Dock stellen.
  • Die valetudo-helper-httpbridge herunterladen und ausführen.
  • Via WLAN das Notebook mit dem Saugroboter verbinden.

Ab hier geht es mit Befehlen und Schritten von https://valetudo.cloud/pages/installation/dreame.html#uart weiter:

  • Zuerst eine Datensicherung erstellen und diese übertragen:
    tar cvf /tmp/backup.tar /mnt/private/ /mnt/misc/ /etc/OTA_Key_pub.pem /etc/publickey.pem
    curl -X POST http://192.168.5.100:1337/upload -F 'file=@/tmp/backup.tar'

    IP-Adresse und Port müssen ggf. angepasst werden.

  • Als nächstes muss man eine neue Firmware unter https://builder.dontvacuum.me/ generieren lassen. Wichtig:
    Eine E-Mail-Adresse und den SSH-Key angeben oder generieren lassen.
    Zusätzlich den Haken setzen bei “Prepackage valetudo (only valid for manual install fw) ver. 2023.08.0”.
    Den Download-Link sobald die Firmware erstellt wurde erhält man per Mail, in meinem Fall dauerte dies ca. 10 Minuten.
  • Nun wird die neue Firmware übertragen und installiert:
    cd /tmp
    wget http://192.168.5.100:1337/dreame.vacuum.p2009_fw.tar.gz
    tar -xvzf dreame.vacuum.p2009_fw.tar.gz
    ./install.sh

    IP-Adresse, Port und Dateiname müssen ggf. angepasst werden.

Wie so oft hatte ich mir das alles einfacher vorgestellt, leider kam es bei den ersten zwei Versuchen zu irgendwelchen Fehlermeldungen mit sowas wie “panic at core…”, es folgte ein Reboot und augenscheinlich war man dann wieder bei der Stock Firmware. Als der dritte Versuch gestartet werden sollte war dann plötzlich das Gerät gerootet und Valetudo drauf. Vermutlich war der erste Versuch trotz Fehlermeldung erfolgreich und das Ganze lief noch irgendwie im Hintergrund ab und hat schlichtweg länger gedauert. Jedenfalls Ende gut, alles gut, wie es scheint.

Ist man soweit gekommen verbindet man das Notebook nochmals mit dem Saugroboter, öffnet einen Browser mit der Adresse 192.168.5.1 und trägt die WLAN-Daten ein. Anschließend kann man mit der IP-Adresse aus dem LAN via Browser (oder ssh) auf den Saugroboter zugreifen. Für Android-Smartphones kann zudem die App

Valetudo Companion (Github)

Valetudo Companion (F-Droid)

Valetudo Companion (Google Play)

hilfreich sein, wobei diese schlicht das Gerät im Netzwerk nur findet und letztlich auch nur im Browser Valetudo öffnet.

So weit, so gut.  Nun muss ich mich mit Valetudo auseinandersetzen, vielleicht auch mal den Spaß machen und die Voice Prompts ersetzen, mal schauen.