SSH-toegang verkrijgen bij een Xiaomi Roborock S5

In dit artikel leggen we uit hoe je SSH-toegang kunt krijgt op de Xiaomi Roborock S5. SSH-toegang is onder andere nodig als je een andere taal op de stofzuiferrobot wilt installeren of alle verbindingen met de Chinese servers een halt wilt toeroepen.

Benodigdheden

Software installatie

In de PuTTy terminal geef je onderstaande commando’s in om de benodigde software te installeren:

sudo su
apt-get install python-miio
apt-get install ccrypt
apt-get install git
apt-get install wget
apt-get install dos2unix

Kloon/kopieer de Dustcloud Repository met Git:

git clone https://github.com/dgiese/dustcloud.git

Ga naar de firmwarebuilder folder:

cd dustcloud/devices/xiaomi.vacuum/firmwarebuilder/

Download op de Dustcloud site de firmware. Het is belangrijk dat je de juiste firmware download, anders kan het zomaar einde verhaal zijn! Roborock S5 (S50/S51/S52/S55) is Gen2. Als je firmware 3.3.9_001720 wilt gebruiken krijg je bijvoorbeeld als link https://cdn.awsbj0.fds.api.mi-img.com/rubys/updpkg/v11_001720.fullos.pkg. Op dit moment staan de firmware-bestanden van Gen1 op twee servers en de firmware-bestanden van Gen2 op vier verschillende servers. Niet alle firmware-bestanden staan op alle servers. Dit is een kwestie van proberen.

wget https://cdn.awsbj0.fds.api.mi-img.com/rubys/updpkg/v11_001720.fullos.pkg

Download het Engelse taalpakket:

wget https://dustbuilder.xvm.mit.edu/pkg/voice/english.pkg

Maak nu de SSH-keys aan (het maakt niet uit wat voor een mailadres gebruikt wordt):

ssh-keygen -t rsa -b 4096 -C "jouw@emailadres.com"

Er zal nu gevraagd worden waar je de key wilt opslaan. Druk alleen op Enter. Vervolgens wordt er gevraagd om een wachtwoord in te geven. Vul niets in, maar druk twee keer op Enter.

Kopieer de public key:

cp ~/.ssh/id_rsa.pub .

Nu is het tijd om de firmware met SSH-toegang te maken. Let erop dat je eventueel de versie van de firmware aanpast:

./imagebuilder.sh -f v11_001720.fullos.pkg -s english.pkg -k id_rsa.pub -t Europe/Amsterdam

Na een minuut of vijf krijg je de MD5 (b70357a6ced2ce739ccad248e42abd52) en het bestand (output/v11_001720.fullos.pkg) te zien. Controleer nog even of er geen foutmeldingen voorbij gekomen zijn.

Nu de aangepaste firmware gemaakt gaan we de Xiaomi Roborock S5 flashen. Let erop dat je eventueel de versie van de firmware aanpast:

python3 flasher.py -a 192.168.2.79 -t 4465545864276348674c684875546731 -f output/v11_001720.fullos.pkg

Het flashen zal 5 tot 10 minuten duren. De led op de Xiaomi Roborock S5 zal snel knipperen. Zodra het flashen klaar is zal de led langzamer knipperen.

Je kunt nu in PuTTY inloggen op de Xiaomi Roborock S5 met onderstaand commando. Het IP-adres moet je uiteraard wel aanpassen naar het IP-adres van jouw Roborock S5.

ssh root@192.168.2.79

Je krijgt de eerste keer onderstaand tekst te zien:

The authenticity of host '192.168.2.79 (192.168.2.79)' can't be establish.
ECDSA key fingerprint is SHA256:EGsRjY6aCPmt4JoTxMzN3vxfj1UrXkw/r78tWgMBQ
Are you sure you want to continue connection (yes/no)?

Typ nu yes in en je bent ingelogd als root@rockrobo !

SSH-toegang met password

Indien gewenst kun je een password voor SSH-toegang instellen, zodat je met PuTTY snel op de Roborock S5 kunt inloggen:

passwd

Typ nu twee keer het wachtwoord in (en vergeet het niet!).

SSH-toegang met key

Op zich heb je vanaf de gebruikte Raspberry Pi al SSH-toegang via een SSH-key. Echter, het kan ook handig zijn om vanaf je Windows PC (met PuTTY, of WinSCP) in te kunnen loggen op de Xiaomi Roborock S5. Hiervoor moeten we de private key kopieren.

Eerst moeten we de SSH-verbinding verbreken (indien deze nog in stand was):

exit

Ga nu naar de folder waar de key opgeslagen is:

cd /root/.ssh

Aangezien de key in de /root.ssh/ folder staat kopiëren we de key eerst naar /home/pi/.

cp id_rsa /home/pi

Pas de eigenaar van het bestand aan:

cd /home/pi
chown pi id_rsa

Nu kun je de key (bestand id_rsa) eenvoudig van de Raspberry Pi naar de Windows PC downloaden met WinSCP of FileZilla.

Op nu op de PC het programma PuTTYgen en klik op Load om de private key te laden. Je krijgt een melding dat de key in het oude PEM formaat is. Dat is geen probleem. Klik op Ok en vervolgens op Save private key. Je krijgt de vraag of je de private key wilt opslaan zonder een (extra) wachtwoord. Beantwoord deze vraag met Ja. Sla de private key (.pkk formaat) op een locatie op je PC op.

Open PuTTY en geeft het IP-adres van je Xiaomi Roborock S5 in. Zorg er ook voor dat bij Port de waarde 22 staat en bij Connection type SSH is geselecteerd. Ga nu naar Connection > SSH > AUTH. Klik op Browse onder “Private key file for authentication”. Selecteer de private key die je eerder op je PC hebt opgeslagen. Tot slot ga je nu aan de linkerkant weer terug naar Session (helemaal bovenaan) en klik je op Save.

Token opvragen

Nu je SSH-toegang op de Xiaomi Roborock S5 hebt kun je ook heel eenvoudig de token opvragen:

printf $(cat /mnt/data/miio/device.token) | xxd -p

 

4 gedachten over “SSH-toegang verkrijgen bij een Xiaomi Roborock S5

  • 19 augustus 2019 om 22:46
    Permalink

    Hey Joost, thanks voor deze guide! Ik ontkom alleen niet onder de indruk dat je hierbij -naast de bovenstaande requirements – ook je token nodig hebt. Is die namelijk niet gegeven in onderstaand commando:
    “python3 flasher.py -a 192.168.2.79 -t 4465545864276348674c684875546731 -f output/v11_001720.fullos.pkg”?
    Ik had de guide vluchtig bekeken en wilde hem juist volgen omdat je hierna zo eenvoudig het token kunt achterhalen met je laatste toevoeging, zou echt top zijn!

    Beantwoorden
    • 20 augustus 2019 om 18:33
      Permalink

      Ja, printf $(cat /mnt/data/miio/device.token) | xxd -p is alleen nuttig als je op een later moment je token nog een keer op wilt vragen.

      Beantwoorden
      • 20 augustus 2019 om 22:16
        Permalink

        Geen probleem, heb de token inmiddels via een de ‘oude app methode’ (server EU werkt ook/was nodig). Als ik je nog met een vraagje mag lastig vallen:
        De laatste versie van gen2 firmware lijkt 1820 te zijn maar deze staat (nog) niet op de 4 servers.
        Zou ik deze ook direct kunnen downloaden, via winScp in de juiste map kunnen zetten en deze vervolgens in het flashcommand kunnen meenemen?

        ./imagebuilder.sh -f v11_001820.fullos.pkg -s english.pkg -k id_rsa.pub -t Europe/Amsterdam
        En als t even meezit de NL versie van language package meenemen natuurlijk (zoals in je andere guide beschreven staat met mirobo)

        Normaal zou ik gewoon 1720 flashen maar bij de eerste run zat R2D2 vast onder de bank, na een firmware update was dit verholpen dus ik hoop dat met dit truukje te vermijden.

        Beantwoorden
        • 20 augustus 2019 om 22:30
          Permalink

          Geen idee of dat gaat lukken, heb ik nooit geprobeerd…

          Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *