Root-Zugriff auf Xiaomi Mi Vacuum Robot & Roborock S5

  • Hallo Zusammen,


    ich wollte heute meinen Sauger Gen1 rooten. Leider komme ich irgendwie nicht an die FW.


    Unter dem Link aus dem Dustcloud Wiki bekomme ich den Fehler "403 Forbidden".


    Die Links der Direct CDN downloads funktionieren für die gen1 auch nicht bei mir. Dort kommt der Fehler "SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data" im Browser.


    Kann mir jemand weiterhelfen und sagen wo ich die pkg-Datei der FW Version 3468 herbekomme?

  • Hallo Roborock Freunde, ich benötige bitte eure Hilfe.

    Ich habe mir aus China einen S50 mitbringen lassen, nur leider funktioniert er hier in D nicht mit der App, wie mir auch der Roborock Support bestätigt hat. Folgende Meldung bekomme ich beim anklicken des Roboter sofort in der App angezeigt.

    Ich benötige bitte eure Hilfestellung in Sachen Root-Zugang um den Roboter auf CE zu ändern, wenn das den helfen würde. Kenn mich da nur leider null aus, und hab Angst alles falsch zu machen.

  • Hallo,

    kann mir vielleicht einer helfen .

    Update hat super geklappt. Leider scheint mit der SSH Verbindung was nicht zu stimmen. Habe auch schon 3x alles neu gemacht inkls. SSH Key // imgbuilder usw. .

    (Siehe Bild)

    ssh verbindung zum Roboter.JPG

  • Steht doch im Bild. Der Host-Key des Robbis hat sich geändert. Dein Ssh-Client denkt da ist was faul. Musst den alten Key aus der known_hosts schmeissen. Befehl siehe Screenshot.

  • Ich schaffe es nicht mich per SSH auf den S50 zu verbinden.

    Ich habe mir unter Linux einen SSH key mit

    Code
    1. ssh-keygen -t rsa -C "your_email@example.com"

    generiert, und mit der Valetudo Anleitung eine gerootete FW gebastelt und mittels RRCC unter Windows auf den S50 geflasht.

    Wenn ich mich vom Windows PC per putty auf den S50 verbinden will fragt er mich um ein Passwort? Ich habe nie ein PW gesetzt...


    Wenn ich mich von Linux mit

    Code
    1. ssh -i $HOME/sshkey.pub root@192.168.1.248

    verbinden möchte fragt er mich auch um ein PW. Wieso?

    Bitte um Hilfe wie ich mich am einfachsten per SSH auf meinen S50 verbinden kann.

  • Ubimo

    Vermutlich hast Du den key mit root generiert. Somit ist das Verzeichnis aus Deinem Befehl falsch. Versuche Dich als root auf den Roboter zu verbinden. Wenn das klappt, ist das Vorgenannte das Problem und Du musst den key aus dem root-verzeichnis in Dein normales Homeverzeichnis unter .ssh kopieren (z.B. indem Du im Terminal als root nautilus öffnest, dann hast Du im Explorer root-Rechte und kannst auf das root-Verzeichnis zugreifen), wenn Du Dich als normaler User per SSH verbinden möchtest. Unter Windows braucht er selbstverständlich auch diesen Key. Du kannst ihn sichern und in Windows nutzen.

  • Das Verzeichnis $HOME/sshkey.pub stimmt. Hier liegt der key.

    Wenn ich mich mit putty auf 192.168.1.248 verbinde, werde ich gefragt:

    Quote

    login as:

    Was muss ich eingeben?

  • Was heißt "versuche den Befehl mal als root"?


    Edit:

    Verdammt, mit diesem Befehl hats nun funktioniert:

    Code
    1. sudo ssh -i $HOME/sshkey root@192.168.1.248

    Files

    • 1.PNG

      (98.64 kB, downloaded 19 times, last: )
    • 2.PNG

      (103.04 kB, downloaded 11 times, last: )
  • Genau wie ich dachte. Mit "sudo" vor einem Befehl führst Du diesen als root aus und verbindest Dich auch als root. Also hast Du den Key auch als root (eben mit sudo) erstellt.

    Sudo ist so etwas wie der Admin-User unter Windows. Darf alles, kann alles, kann aber auch alles kaputt machen.

    Sudo

    root

    Ich dachte, Du kennst zumindest die Grundzüge in Sachen Linux, sonst hätte ich meine Fragen etwas näher erläutert.

  • Naja das Problem ist eher dass du versucht hast mit dem public key zu verbinden! Indem du sshkey ohne.pub genommen hast, wurde auch endlich der private key angezogen der dafür benötigt wird 🤔

    Gruß

    Michael

  • Schönen Guten Abend, Habe leider auch ein Problem beim Rooten meines Mi 1 Roboters. Soweit habe ich per Raspberry alles hinbekommen, bis zum letzten Schritt des Image erstellens. Hat jemand eine Ahnung warum ich weder die Xiaomi Cloud deaktivieren kann noch ohne den Kommentar die Firmware erstellen kann?

    Liebe Grüße


    root@raspberrypi:/home/pi/dustcloud/devices/xiaomi.vacuum/firmwarebuilder# ./imagebuilder.sh -f v11_003468.pkg -s de.pkg -k id_rsa.pub -t Europe/Berlin --disable-xiaomi
    Unknown Option --disable-xiaomi. Exit.
    root@raspberrypi:/home/pi/dustcloud/devices/xiaomi.vacuum/firmwarebuilder# ./imagebuilder.sh -f v11_003468.pkg -s de.pkg -k id_rsa.pub -t Europe/Berlin
    Script path: .
    dos2unix not found! Please install it (e.g. by (apt|brew|dnf|zypper) install dos2unix)


  • Zuming

    Hast du auch die aktuelle Anleitung genommen? https://github.com/Hypfer/Vale…Installation-Instructions


    Dort findest du unter anderem auch den Hinweis:

    Code
    1. Dependencies
    2. There are a few dependencies required for building the image. Please refer to your Linux distributions documentation to find out how to install them.
    3. bash
    4. openssh (for ssh-keygen)
    5. ccrypt
    6. sed
    7. dos2unix

    Du solltest also diese angeforderten Pakete mit 'sudo apt-get install' installieren, damit zumindest deine Fehlermeldung

    Quote

    Script path: .

    dos2unix not found! Please install it (e.g. by (apt|brew|dnf|zypper) install dos2unix)


    aufgelöst/behoben wird.

  • Hier nochmal eine korrigierte Version für den Zugang zum Xiaomi-Roborock.Gen1, da ich gelesen habe, dass es hier wohl Fehler gab.

    * und das, obwohl ich sicher war alles getestet zu haben :-)


    Folgend die korrigierte Anleitung für den VMware-Player unter Windows.

    (das funktioniert natürlich dann auch unter Linux)


    Bitte erst alles in Ruhe durchlesen, da sich vieles dann von selbst erklärt (zB der Token)!


    Vorbereitung:

    1. kostenlosen VMWare-Player runterladen ( my.vmware.com/en/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/14_0 )

    * Anmerkung: ein aktueller VMWarePlayer funktioniert natürlich auch

    2. eine ISO für die VM runterladen oder CD verwenden (zB. debian-9.4.0-i386-xfce-CD-1.iso - etwa 700 MB)

    * Anmerkung: mit einer neueren Version kann das durchaus auch funktionieren - so auch mit Ubuntu, Kubuntu)

    3. WLAN-Stick oder WLAN-Karte wird benötigt, um auf den Robo zu connecten


    VM erstellen (gehört zur Vorbereitung):

    1. den VMware-Player starten

    2. eine neue VM erstellen (dabei die ISO festlegen für die Installation, kann auch eine CD sein) und je nach Wunsch noch die Optionen anpassen wie RAM, Anzahl Prozessoren etc.

    3. in den Settings oben den Reiter "Options" anklicken und unter "Shared Folders" > "Always enabled" einstellen und ein Verzeichnis auswählen, um Dateien mit der VM austauschen zu können

    ** brauchen wir später, da wir uns die Firmware und sonstige Tools übertragen müssen für den Hack (evtl. auch Soundfiles)



    Was wird noch benötigt ?

    4. in dem Shared-Folder deines Betriebssystems das Verzeichnis "firmwarebuilder" erstellen und folgende Files zur Verfügung stellen:

    https://github.com/dgiese/dustcloud/tree/master/devices

    - imagebilder.sh (siehe unter github.com/dgiese/dustcloud/tree/master/devices/xiaomi.vacuum/firmwarebuilder/)

    - english.pkg (siehe github.com/dgiese/dustcloud/tree/master/devices/xiaomi.vacuum/original-soundpackages/encrypted/)

    - eine Firmware v11_00....pkg (https://github.com/dgiese/dust…omi.vacuum.gen1/firmware/) v1

    * Anmerkung:

    Im aktuellen Versuch wurde der imagebuilder.sh bei mir als HTML gespeichert

    Dann alternativ den Source manuell kopieren, in eine Datei speichern unter Linux per "chmod +x imagebuilder.sh"" ausführbar machen


    Installation auf Basis der Debian-XFCE:

    1. Benötigt wird nur XFCE und die Standardsystemtools (es ginge auch nur mit den Systemtools, dann wäre das nur shell basiert)

    2. den Anweisungen folgen (Info: Alles speichern in SDA1, Grub in den Bootbereich schreiben - reicht alles für die VM)

    3. Nach der Installation sollte der User "root" mit dem vergebenen Passwort sich einloggen können

    4. Bildschirmgröße evtl noch anpassen unter "Anwendungen->Einstellungen->Anzeige"

    5. Oben in der VM-Leiste noch sicherstellen, dass für Installationen/Updates das LAN-Netzwerk verbunden ist

    ** falls es hier zu Problemen führt, noch einen virtuellen Netzwerkkontroller anlegen über die VM (weitestgehend selbsterklärend),

    welcher dann das LAN vom Rechner nutzt (Internetverbindung sollte also vorhanden sein für apt-get installs)

    6. In der VMware-Leiste unter Player > Manage > Install VMware Tools

    7. WLAN-Stick/Karte oben über die VM-Symbole aktivieren (falls inaktiv)

    * Anmerkung: Für eine komfortablere Bedienung der VM die VWwareTools installieren - ist aber nicht notwendig)



    Konfiguration des Debian-Systems für den Hack:

    1. eine Shell öffnen


    VMWaretools unter Linux installieren, damit wir auf den "Shared Folder" zugreifen können

    1. mkdir /vmwaretools

    2. cd /vmwaretools

    3. ls -l /media/cdrom0/

    4. tar -xvf /media/cdrom0/[VMwareTools..... <- das tar-File]

    5. cd vmware-tools-distrib

    6. ./vmware-install.pl (mit "yes" antworten und alle Vorgaben übernehmen) ** den Punkt ./ nicht vergessen

    ** nun sollte unter /mnt/hgfs/ das "Shared Folder"-Verzeichnis auftauchen vom Host-Rechner

    7. dort enthalten sollte sein:

    - das Verzeichnis "firmwarebuilder" mit dem File "imagebuilder.sh" von D.Giese

    - eine passende Firmware (siehe "Was wird noch benötigt?")

    - eine passende Sounddatei (siehe "Was wird noch benötigt?")



    Die Daten aus dem Shared Folder nun zum Arbeiten in die VM kopieren

    1. mkdir -p /xiaomi/firmwarebuilder

    2. cp /mnt/hgfs/[Name des Shared-Verzeichnis]/firmwarebuilder/* /xiaomi/firmwarebuilder/



    Notwendige Tools, Libs, Miio installieren:

    1. apt-get update (hier sollte es zu keinen Fehlverbindungen führen. Falls doch, ist kein Netzwerk verbunden !)

    2. apt-get install wireless-tools libffi-dev libssl-dev python3 python3-pip ccrypt

    3. pip3 install -U setuptools

    4. pip3 install python-miio


    Wireless-Stick (evtl auch Karte) einrichten:

    1. Treiber für den Wireless-Stick installieren (bei mir ist es der D-Link DWA-140 Rangebooster ralink)

    ** wie finde ich raus, welchen USB-Wifi-Stick ich angeschlossen habe ?

    ** lsusb eingeben und nachsehen (für PCI-Karten lspci eingeben)

    ** Info: Bei dem DWA-140 brauche ich einen non-free Treiber !

    ** Dafür muss die Datei unter /etc/apt/sources.list angepasst werden, damit auch die non-free Treiber geladen werden können

    ** Hinter "main" einfach "contrib non-free" anfügen (siehe hier: https://wiki.debianforum.de/Sources.list)

    ** deb http://ftp.de.debian.org/debian/ stretch main contrib non-free

    ** deb-src http://ftp.de.debian.org/debian/ stretch main contrib non-free

    * Anmerkung: Für diese Karte hatte ich Debian Stretch ausgewählt, da war ich mir sicher, dass es den Treiber so gibt

    Unter Kubuntu 18.04 müsste der im Kernel verbaut sein

    1.1 apt-get update

    1.2 apt-cache search ralink (sollte den passenden Ralink-Firmware-Treiber auflisten)

    1.3 apt-get install [der passende Treiber] (bei mir steht da firmware-misc-nonfree)

    2. iwconfig eingeben und schauen, ob der Wlanstick bei Tx-Power= größer 0 ist (bei 0 ist die Karte off und es ist was falsch)

    ** sollte aber jetzt soweit funktionieren


    Einen eigenen SSH-Key unter root erstellen

    1. ssh-keygen -f ~/.ssh/id_rsa_xiaomi



    Davon den PUBLIC-KEY der "authorized_keys" hinzufügen bzw das File erstellen

    1. cat ~/.ssh/id_rsa_xiaomi.pub > /xiaomi/firmwarebuilder/authorized_keys

    ** in der Anleitung wird vom gesamten Verzeichnis ausgegangen zum Firmwarebuilder ".../xiaomi.vacuum.gen1/firmwarebuilder/authorized_keys"

    ** wir machen das hier anders, da wir nicht alles brauchen



    Mit dem Xiaomi Vacuum-1 verbinden

    1. apt-get install wicd-curses (installiert einen wlan-network-manager, den wir zum Verbinden mit dem Roboter brauchen)

    ** falls zur Installation das CDROM gefragt ist einfach /media/cdrom/ eingeben

    2. das LAN-Netzwerk über die VM-Symbole oben jetzt trennen

    3. den Xiaomi Vacuum-1 starten, falls nicht schon geschehen

    4. neue Shell öffnen

    5. wicd-curses starten (wichtig, das LAN muss getrennt sein)

    6. in WICD auf "P:Einstellungen" klicken > Externe Programme > DHCP-Programm [x] dhclient > Speichern (S:Save)

    7. Aktualisieren anklicken und warten, bis der Roboter auftaucht

    8. C:Verbinden anklicken und etwas warten - Verbindung sollte nun GRÜN angezeigt werden

    9. die angezeigte IP im Footer brauchen wir noch zur Übermittlung/Webserver - merken

    * Anmerkungen: Stürzt das Programm ab, nochmal Punkt 8 ansehen !



    Einen Token vom Roboter holen

    1. cd /xiaomi/firmwarebuilder

    2. mirobo discover --handshake 1

    3. Token merken (STRG+C)



    Prüfen, ob wir Kontakt zum Robo herstellen können mit dem Token

    1. mirobo --ip=192.168.8.1 --token=TOKEN_einfügen status

    ** es sollte jetzt State, Battery, Fanspeed, Cleanings Since, Cleaned area angezeigt werden



    Die neue Firmware erstellen

    1. cd /xiaomi/firmwarebuilder/

    2. ./imagebuilder.sh -f v11_00---.pkg -s english.pkg -k ~/.ssh/id_rsa_xiaomi.pub

    ** die angezeigte MD5 - merken (ohne output/...)

    * Anmerkung:

    Sound kann auch weggelassen werden, wenn ich mich nicht irre (dann ohne -s sounddatei.pkg)



    Einen einfachen Webserver starten zum Datenaustausch

    1. neue Shell öffnen

    2. cd /xiaomi/firmwarebuilder/output

    3. python3 -m http.server 8000

    4. Webserver laufen lassen und in vorherige Shell wechseln



    Manipulierte Firmware an den Roboter übergeben:

    1. Roboter an die Ladestation setzen (wichtig, sonst startet er das Update nicht)

    2. mirobo --ip=192.168.8.1 --token=DEINE-TOKEN-ZAHL raw-command miIO.ota '{"mode":"normal", "install":"1", "app_url":"http://192.168.8.138:8000/v11_03452.pkg", "file_md5":"DEINE-MD5","proc":"dnld install"}'



    ** jetzt müsste ['ok'] zurückgegeben werden und der Roboter wird das mit einer Ansage bestätigen.

    ** der Prozess dauert etwa 10 Minuten. Nach gut 2 Minuten ertönt eine Ansage zum durchgeführten download und dann nochmal nach etwa 7 Minuten startet der Robo neu und gibt eine Abschlussansage aus.

    ** Ob der Roboter sich die Firmware zieht, lässt sich nun im Shell-Fenster des Webservers anzeigen

    ** Bleibt hier nur "Servering HTTP on 0.0.0.0 port 8000 ...", dann lädt sich der Robo nichts runter (evtl. mal an die Ladestation stellen und nochmal versuchen)

    ** In dem Shell-Fenster zum Webserver müsste stehen:

    ** 192.168.8.1 - - [Datum Uhrzeit] "GET /v11_003194.pkg HTTP/1.1" 200 -

    3. Zwischendrin mal den Status überprüfen (siehe "Prüfen, ob wir Kontakt zum Robo herstellen können mit dem Token")

    ** steht da unter Status "Updating" ist alles ok

    * Anmerkung: Steht das was mit HTTP/1.1" 404 , dann prüfen, ob die Datei auch dort vorliegt bzw der Pfad richtig ist



    Gleiches Spiel geht dann auch mit den Sprachdateien:

    mirobo --ip=192.168.8.1 --token=576c694d3942447044516f6d704a6a71 raw-command dnld_install_sound '{"md5":"7efc621017ae7c0f0854e5ff3dd1a71d","sid":3,"url":"http://192.168.8.193:8000/deutsch.pkg"}'

    ** hier evtl mit tar entpacken und neu anlegen und eigene md5 erzeugen (war bei mir mal notwendig, damit es funktionierte)

    ** ansonsten kann man sich die WAV-Files auch später per SFTP rüberziehen



    Jetzt mal mit SSH verbinden

    1. shell öffnen

    2. ssh -i ~/.ssh/id_rsa_xiaomi root@192.168.8.1

    3. man muss jetzt noch den Key bestätigen, was wir mit "yes" beantworten

    4. das vergebene Passwort eingeben und dann sollte man jetzt auf der rockrobo-shell sein



    Per Filezilla geht das natürlich auch (LAN-Verbindung herstellen für apt-get)

    1. apt-get install filezilla

    2. Filezilla über den XFC-Desktop unter Anwendungen->Internet->Filezilla starten

    2. ssh-key importieren (unter Bearbeiten->Einstellungen->SFTP) und in Filezilla-Format umwandeln lassen (Anweisungen befolgen)

    3. Verbindungsdaten anlegen im Servermanager. Protokoll: SFTP-SSH, Verbindungsart: Normal, Benutzer: root/pw



    Robo-WLAN mit eigener SSID und Passwort versehen

    1a Entweder auf den Robo mit SSH verbinden und VI nutzen (Befehle im Netz suchen, wer den nicht kennt)

    1b Oder einfacher per Filezilla und direkte Dateibearbeitung

    2. auf dem Robo das File /opt/rockrobo/wlan/wifi_start.sh öffnen zum bearbeiten

    3. die Passage CMD="create_ap -c $channel -n wlan0 -g 192.168.8.1 $id_irgendwas --daemon" suchen

    4. Ändern in CMD="create_ap -c $channel -n wlan0 -g 192.168.8.1 DEINE_SSID DEIN_WPA2_PWD --daemon"

    5. robo neu starten

    6. auf die nun angezeigte neue SSID klicken (evtl nochmal nach Netzen suchen)

    7. im WICD-CURSES unter "->:Einstellungen" zum Schlüssel das WPA2-PWD vom Robo eintragen

    8. nun wieder mit dem WPA2 geschützten Robo verbinden



    Ich hoffe die Installation gelingt nun.



    Grüsse an: CCC-Hamburg, D.Giese, Chaos-Treff OS, Hackerspace Bielefeld, allen Leuten aus diesem Forum

    und Sonstige aus den C64/Amiga Zeiten



    Gruß,

    Pex

  • Hallo Leute, bin seit heute Mittag dabei, den Roborock S5 zu rooten. Jetzt bin ich an dem Punkt, an dem ich über eine VM, auf der Debian installiert ist den Token und die IP-Adresse eingeben muss. Wie man diese bekommt weiß ich. (mithilfe der alten modifizierten russischen Mi Home App).


    Beim ersten Einrichten des Roborocks über die App habe ich das Gastnetzwerk von mir genutzt, sonst läuft alles auf dem normalen Netzwerk. Und das war vermutlich der Fehler, wieso ich mich nicht über Debian mit dem Token und der IP verbinden konnte. Und jetzt versuche ich seit mehreren Stunden den Roborock in der Mi Home App über das "normale" Netzwerk einzurichten, was aber nicht funktioniert. Verbindung mit dem Gerät klappt, aber immer beim letzten der drei Punkte kommt dann eine Fehlermeldung.´: "Bringen Sie das Gerät näher zum Router; Zeitüberschreitung bei Netzwerkverbindung" Mit dem Gastnetzwerk klappt es weiterhin, aber da komme ich dann beim Rooten nicht weiter.

    Dann dachte ich mir, dass mein Mi Konto das irgendwie gespeichert hat und habe versucht dieses Konot zu löschen und neu anzulegen, aber das funktioniert auch nicht, da angeblich noch irgendwas damit gekoppelt, was Xiaomi aber nicht anzeigen kann.


    Kann mir hier jemand helfen?



    Edit: Ok, das Problem mit dem Einrichten lag an meinem MAC-Filter. Da muss man erst mal dran denken...

    Jetzt bekomme ich beim Befehl: mirobo --ip XXX --token XXX folgenden Fehler: "Error. No Response from the device."

    Medion MD18999 | Braava 390T | Roborock S5

    Edited once, last by Manuoel ().

  • Hallo zusammen,


    ich bin gerade dabei mich mit dem Kauf eines Xiaomi Roborock S50 auseinandersetzen.


    Besonderes Augenmerk liegt dabei darauf nicht den Hersteller mit meinen Daten zu füttern.

    Daher komme ich quasi via Link aus dem dustcloud github Projekt zu euch.


    Was mich daran interessiert und ich zu dem ich gerade keine Befriedigende Infos finde,

    wie sieht es mit dem Recovery aus, kann ich nachdem ich die Kiste übernommen habe auch den Auslieferungszustand wiederherstellen?

    Und kann ich die Kiste debricken wenn doch mal was schief geht und das Ding nicht mehr reagiert ?


    Würde gerne im Vorfeld klären wies hier aussieht ;)


    Danke und Grüße

    karloff

  • Mittlerweile habe ich es glaube ich geschafft, den Roborock S50 zu rooten. Wie kann ich denn kontrollieren, ob der Robbi wirklich keine Daten an Xiaomi sendet? Wie steuert ihr den Robbi? Ganz normal mit der Xiaomi Mi Home App oder mit FloleVac oder ist das egal bzgl. Cloud Deaktivierung?

    Medion MD18999 | Braava 390T | Roborock S5