Valetudo installeren op Xiaomi Roborock Vacuum Cleaner
In dit artikel leggen we uit hoe je de laatste versie van Valetudo kunt installeren op je geroote Xiaomi Roborock S5 (Gen2 S50/S51S55) en Xiaomi Vacuum Gen 1. Op het moment van schrijven wordt voor de Xiaomi Vacuum Gen1 firmware v11_003468 geadviseerd en voor de Xiaomi Roborock Gen2 S50/S51/S55 firmware v11_001792.
Benodigdheden
Voordat we verder gaan een korte uitleg; Er zijn twee interface om de stofzuigerrobot te bedienen. Beiden maken gebruik van het miio protocol.
Local Interface
Dit is de interface welke wordt gebruikt voor de communicatie tussen de app op je smartphone en de stofzuigerrobot indien ze op hetzelfde netwerk zitten. De interface wordt ook gebruikt om de stofzuigerrobot voor de eerste keer met een WiFi-point te verbinden. De authenticatie verloopt zie een zogenaamde token.
Cloud Interface
Zodra de stofzuigerrobot eenmaal verbonden is met een WiFi-point zal het proberen om verbinding te maken met de cloud servers. De communicatie is versleuteld met een pre-shares key welke in de fabriek reeds geprogrammeerd is. Er is ook een unieke Device ID (did) om de stofzuigerrobot te kunnen identificeren.
Hoe werkt Valetudo?
Valetudo gebruikt beide interfaces om de stofzuigerrobot te bedienen. Om de cloud interface te kunnen gebruiken, wordt alle communicatie omgeleid naar Valetudo, dat zich voordoet als de officiële cloud, maar in de praktijk op de stofzuigerrobot zelf geïnstalleerd is.
Packages installeren
Om een image te kunnen maken gaan we eerst een aantal packages op de Raspberry Pi installeren:
1 2 3 4 5 |
sudo su apt-get install ccrypt apt-get install sed apt-get install dos2unix apt-get install tree |
Maak nu SSH-keys aan, om later via SSH in te kunnen loggen op je Xiaomi Roborock S5. Dit is geen vereiste, maar wel handig als je bijvoorbeeld log-bestanden wilt bekijken. Mocht je nog geen SSH-keys hebben geef dan onderstaand commando in (als je al reeds keys heb dan kun je deze stap overslaan):
1 |
ssh-keygen -t rsa -b 4096 -C "jouw@emailadres.com" |
De zojuist gemaakt keys worden standaard opgeslagen in ~/.ssh
. Als je voor een andere locatie heb gekozen, zorg dan dat je weet waar ze staan, aangezien we ze later nodig hebben.
Voorbereiding image maken
Maak een werk-folder aan:
1 2 |
mkdir rockrobo cd rockrobo |
Kloon de dustcloud repository:
1 |
git clone https://github.com/dgiese/dustcloud.git |
Maak een valetudo folder aan:
1 2 |
mkdir valetudo pushd valetudo |
Download de meest recente valetudo binary op https://github.com/Hypfer/Valetudo/releases:
1 2 3 4 5 6 7 8 9 10 11 |
wget https://github.com/Hypfer/Valetudo/releases/download/0.3.1/valetudo mkdir deployment pushd deployment wget https://github.com/Hypfer/Valetudo/raw/master/deployment/valetudo.conf mkdir etc pushd etc wget https://github.com/Hypfer/Valetudo/raw/master/deployment/etc/hosts wget https://github.com/Hypfer/Valetudo/raw/master/deployment/etc/rc.local popd popd popd |
Maak een firmware folder aan:
1 2 |
mkdir firmware pushd firmware |
Download de meest recente firmware (bv. v001792). Hieronder vind je de URL’s van de verschillende server. Op deze pagina vind je de verschillende firmware versies / package names. Niet alle firmware-versies staan op alle servers, dit is een kwestie van proberen.
URL:
Gen1
1 2 3 4 |
https://cdn.awsbj0.fds.api.mi-img.com/updpkg/[package name] https://cdn.awsde0.fds.api.mi-img.com/updpkg/[package name] Voorbeeld: https://cdn.awsbj0.fds.api.mi-img.com/updpkg/v11_003468.fullos.pkg |
Gen2
1 2 3 4 5 6 |
https://cdn.awsbj0.fds.api.mi-img.com/rubys/updpkg/[package name] https://cdn.cnbj2.fds.api.mi-img.com/rubys/updpkg/[package name] https://cdn.cnbj0.fds.api.mi-img.com/rubys/updpkg/[package name] https://cdn.awsde0.fds.api.mi-img.com/rubys/updpkg/[package name] Voorbeeld: https://cdn.cnbj0.fds.api.mi-img.com/rubys/updpkg/v11_001792.fullos.pkg |
1 |
wget https://cdn.cnbj0.fds.api.mi-img.com/rubys/updpkg/v11_001792.fullos.pkg |
Als je alles heb uitgevoerd zal jouw rockrobo
directory er uit zien als onderstaand:
1 2 3 |
cd .. cd .. tree -L 2 rockrobo/ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
rockrobo/ βββ dustcloud β βββ cloudprotocol.pdf β βββ devices β βββ docker β βββ dummycloud β βββ dustcloud β βββ LICENSE β βββ Pipfile β βββ Pipfile.lock β βββ presentations β βββ README.md βββ firmware β βββ v11_001712.pkg βββ valetudo βββ deployment β βββ valetudo.conf β βββ etc β βββ hosts β βββ rc.local βββ valetudo |
Firmware image creëren
Om de firmware image te maken geef je onderstaande commando’s in:
1 2 3 4 |
cd rockrobo mkdir image cd image sudo /home/pi/rockrobo/dustcloud/devices/xiaomi.vacuum/firmwarebuilder/imagebuilder.sh --firmware=/home/pi/rockrobo/firmware/v11_001792.fullos.pkg --public-key=$HOME/.ssh/id_rsa.pub --valetudo-path=/home/pi/rockrobo/valetudo --disable-firmware-updates --ntpserver=192.168.178.1 --replace-adbd |
Zorg ervoor dat je de juiste locatie van je public ssh-key gebruik. Ook moet je mogelijk v11_001792.fullos.pkg
vervangen als je een andere firmware-versie gebruikt. Na ongeveer 5 minuten is het image-bestand gemaakt.
Firmware image flashen
Als het goed is is de firmware image nu gemaakt, controleer nog even of er geen foutmeldingen voorbij gekomen zijn. Voordat we de Xiaomi Roborock S5 kunnen flashen moeten we nog een aantal packages installeren:
1 2 3 4 5 6 7 8 9 |
cd .. mkdir flasher cd flasher apt-get install python3-venv python3 -m venv venv source venv/bin/activate pip3 install wheel pip3 install python-miio cd .. |
Ook hebben we nog een token nodig. Als je de Xiaomi Roborock S5 reeds gebruikt hebt dan kun je de token achterhalen op de manier zoals in dit artikel beschreven is. Heb je een gloednieuwe robotstofzuiger dan kun je de token achterhalen met commando:
1 |
mirobo --debug discover --handshake true |
Nu kunnen we eindelijk de Xiaomi Roborock flashen met commando:
1 2 |
cd image mirobo --ip 192.168.2.79 --token XXXXXXXXXXXXXXXX update-firmware output/v11_001792.fullos.pkg |
Uiteraard moet je het IP-adres vervangen door het IP-adres van jouw Xiaomi Roborock S5, XXXXXXXXXXXXXXXX moet je vervangen door jouw token van 32 karakters en tot slot moet je eventueel het firmware-versienummer aanpassen. Zorg er ook voor dat de afstand tussen de Xiaomi Roborock S5 en het WiFi-point zo kort mogelijk is, zodat de verbinding niet weg kan vallen.
Nadat de image op de Xiaomi Roborock S5 staat zal het flash-proces beginnen. Dit zal zo’n 5-10 minuten duren. Na het flashen zal de stofzuiger aangeven dat de update succesvol verlopen is.
Je kunt Valetudo nu openen door in je browser naar http://192.168.2.79 te gaan.