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:

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):

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:

mkdir rockrobo
cd rockrobo

Kloon de dustcloud repository:

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

Maak een valetudo folder aan:

mkdir valetudo
pushd valetudo

Download de meest recente valetudo binary op https://github.com/Hypfer/Valetudo/releases:

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:

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

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

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
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:

cd ..
cd ..
tree -L 2 rockrobo/
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:

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:

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:

mirobo --debug discover --handshake true

Nu kunnen we eindelijk de Xiaomi Roborock flashen met commando:

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.

Geef een reactie

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