Felhőmentes xiaomi porszívó (gen1,gen2) firmware készítése

írta: sz_gabor, 5 hónapja

A leírás Ubuntu Linuxra készült.

Mi a dummycloud?
Lehetővé teszi a robot 100% -os felhőmentes működését.
Mi a valetudo?
A Valetudo a Xiaomi porszívó beállítását és vezérlését biztosítja egy mobilbarát webes felületen. Ez közvetlenül a porszívón fut és nem igényel semmilyen felhő kapcsolatot.
Mi a rrlogd-patcher?
Egy python szkript, amely a Xiaomi porszívók tisztító naplójának a titkosításának állítja le. Ez lehetővé teszi, hogy a Valetudo megfelelően működjön az újabb roborock firmware-n.
Gen1 Firmwares> = 3514
Gen2 Firmwares> 1518
FIGYELMEZTETÉS : Ha az rrlogd-ot javítod, akkor használd a dummycloud-ot, mert különben az adatokat titkosítatlanul eljut a Xiaomi szerverekhez!

Indítsd el a terminált.

Telepítsd a szükséges függőségeket(bash,openssh,ccrypt,sed,dos2unix,tree):
sudo apt-get update && sudo apt-get install bash openssh-server ccrypt git wget unzip sed dos2unix tree

SSH kulcs megszerzése:
A robothoz való csatlakozáshoz nyilvános/privát ssh-key pár szükséges. Ha még nem rendelkezel vele, akkor a következő paranccsal generálhatsz egyet.

ssh-keygen -t ed25519

Alapértelmezés szerint a generált kulcsok ~/.ssh könyvtárba kerülnek.
Ha úgy döntesz, hogy a kulcsok egy másik könyvtárba kerüljenek, jegyezd meg a kiválasztott helyet.

Felkészülés a kép elkészítésére:

1. Hozz létre egy új könyvtárat a munkához:
mkdir rockrobo
cd rockrobo

2. Klónozd a dustcloud.git tárolót
git clone https://github.com/dgiese/dustcloud.git

3. Hozz létre egy könyvtárat a dummycloud számára:
mkdir dummycloud
pushd dummycloud

4. A dummycloud letöltése (A legfrissebb verziót keresd a https://github.com/dgiese/dustcloud/releases címen és módosítsd a következő sort):
wget https://github.com/dgiese/dustcloud/releases/download/0.1/dummycloud_0.1.zip
unzip -a dummycloud*.zip
popd

5. Hozd létre a valetudo könyvtárat:
mkdir valetudo
pushd valetudo

6. Töltsd le a legújabb valetudo bináris adatokat (A legfrissebb verziót keresd a https://github.com/Hypfer/Valetudo/releases címen és módosítsd a következő sort):
wget https://github.com/Hypfer/Valetudo/releases/download/0.0.9/valetudo
mkdir deployment
pushd deployment
wget https://github.com/Hypfer/Valetudo/raw/master/deployment/valetudo.conf
popd
popd

7. Rrlogd-patcher könyvtár létrehozása:
mkdir rrlogd-patcher
pushd rrlogd-patcher

8. Töltsd le a legújabbat patcher.py:
wget https://raw.githubusercontent.com/JohnRev/rrlogd-patcher/master/patcher.py
popd

9. Készíts firmware könyvtárat:
mkdir firmware
pushd firmware

10. Töltsd le a legújabb firmware-t (az eredetit, nem a rootolt verziót). A második sort írd át az általad letölteni kívánt verzióhoz:
wget https://raw.githubusercontent.com/pavanjadhaw/gdown.pl/master/gdown.pl && chmod u+x gdown.pl
./gdown.pl https://drive.google.com/file/d/1c3Y5HQu-EghL_GWc0Dg19-uc47q6v5k7 v11_003600.pkg

11. Hangcsomag letöltése (írd át a letöltést a kívánt hangcsomaghoz):
./gdown.pl https://drive.google.com/file/d/1BIdbk9EHMbz8gkAiDV04ZjVHLhAj6dlm/view?usp=sharing hungary.pkg
rm *gdown.pl

Ha követed a fenti parancsokat, akkor a rockrobo könyvtárstruktúrának így kell kinéznie:
cd
tree -L 2 rockrobo/

A firmware-kép létrehozása:
mkdir image
cd image
sudo ../rockrobo/dustcloud/devices/xiaomi.vacuum/firmwarebuilder/imagebuilder.sh \
--firmware=../rockrobo/firmware/v11_003600.pkg \
--soundfile=../rockrobo/firmware/hungary.pkg \
--public-key=$HOME/.ssh/id_ed25519.pub \
--dummycloud-path=../rockrobo/dummycloud \
--valetudo-path=../rockrobo/valetudo \
--disable-firmware-updates \
--ntpserver=fritz.box \
--rrlogd-patcher=../rockrobo/rrlogd-patcher/patcher.py \
--replace-adbd

A firmware és a public-key-t módosítsd az általad használt adatokra.

A kész firmware a image/output könyvtárba kerül az ellenőrző fájlal együtt.

A firmware-t felrakhatod a PC-s hangcsomagban található programmal (ugyanúgy kell mint a hangnál csak a firmware könyvtárba kell tenni a két fájlt (pkg,md5) és a firmware felrakása menüt kell választani) vagy telefonról a XVacuum-al.

A frissítés körülbelül 5-10 percet vesz igénybe. A folyamat befejezése után a robot kimondja, hogy 'a frissítés sikerült'.

Az ssh-en keresztül bejelentkezhetsz a porszívóba (a saját porszívód IP-címére írd át):
ssh root@192.168.8.1

Ellenőrizd, hogy helyesen van-e beállítva a dummycloud:
Először meg kell vizsgálni, hogy a dummycloud futtatható-e:
pgrep dummycloud
Az eredmény egy folyamat azonosító szám, pl 393.

Ezután meg kell vizsgálni a tűzfal szabályokat, a 8053 portot át kell irányítani 127.0.0.1-ra, hogy a porszívó kommunikáljon a dummyclouddal.
iptables -t nat -L

Az eredménynek a következőket kell tartalmaznia (Chain OUTPUT (policy ACCEPT) kell nézni):

Továbbá ellenőrizhető, hogy a dummycloud működik-e a porszívón. Ha a WiFi LED folyamatosan világít (kb. 30 másodperccel az indítás után).

Az elkészített firmware megnyitja a porszívó USB portját tehát az is használható!

Használhatod a böngészőbe beírva a porszívó IP címét:
Mobil:


PC-n:


RoboRock Control Center:

Mindenki csak saját felelősségére használja a leírást!