Roborock S5 rooting experience

roborock rooting ubuntu linux digtvbg

Rooting Roborock S5 - make it sing you some songs

A few words on roborock and robots and what rooting is. Roborock is a sub brand of Xiaomi, manufacturer of various pieces of equipment and most notably known for its smartphones. Roborock S5 is the older generation of vacuum cleaning robots (I think s6/t6 is the current one as of now). Rooting – by default smart devices come with admin account available but locked down due to many good reasons. Rooting a device means activating the admin access to the software (which might even unlock access to some extra hardware functionality in some specific cases). It’s like gaining control of the root account in linux – google this if you must.

Roborock coms with couple of gigs of flash storage, half a gig of ram and old crappy version of ubuntu 14 (released in 2014 mind you) – so no wpa3 support until using such moldy software.

To root roborock we will need the firmware update file – these babies are not that easy to find (probably on purpose). But with the power of internet this can be easily overcome. This is a full roborock s5 stock firmware collection in one place. Usually, selecting the latest version sets up with the best software achievements to date. In reality this is not always the case but let’s keep it simple stupid 🙂 While firmware is download we can carefully examine this link. Pay special attention to the readme.md part and the links – each link is a tiny educational treasure. Take your time to visit all of them and read what you find interesting.

With the firmware downloaded we need a firmware builder – this is a full set of scripts that “edit” the firmware to “unlock it” , actually using the edited firmware is the so called “using a rooted device”.

Good firmware builder is this one. Just clone it with git, edit the vacuum.sh to reflect the functionality you’d like to pre-program to your robot on flashing. Once this is done, execute the main script builder_vacuum.sh and you will get the rooted variant of the “stock” firmware in the “output”. Do please bother to read the information from the links because 30 minutes of reading will not only educate you but it will also save you days of frustration.

Once the rooted firmware is ready you can flash Roborock with it. Feel free to use this flashing script for the task.

Note:

Due to recent xiaomi firmware changes and evolution of Python as a programming language (the flashing script is python based) this flasher may not be adequate for the task especially on recent windows or linux OS versions. So a good alternative would be so called “manual approach”.

This approach consists of these:

  1. Install a web-server on a machine in the same LAN as the vacuum cleaner
  2. Put the customized firmware file in the web root folder of the server
  3. Note the IP of the web server , the IP of the vacuum cleaner.
  4. Find the TOKEN of the vacuum cleaner – using an old version of “Mi Home” app on android phone, once connected check its settings – networking info – token will be there. An old version that would do the job could be any of those: Mi-home apks archive
  5. Example: webserver IP: 192.168.1.100 , firmware filename: v11….2020.pkg , so http://192.168.1.100/v11…2020.pkg actually points to a file for download. IP of robot (from old mi home app): 192.168.1.200. TOKEN of device 1234567890123456. MD5 sum: in linux md5sum v11…2020.pkp does the job like 2492e92e92edwdwe. So having confirmed ALL of the above parameters in your setup then simply issue a command that instructs the vacuum cleaner to download and update the firmware.

mirobo –ip=192.168.1.200 –token=1234567890123456 raw-command miIO.ota ‘{“mode”:”normal”, “install”:”1″, “app_url”:”http://192.168.1.100/v11….2020.pkg”, “file_md5″:”2492e92e92edwdwe”,”proc”:”dnld install”}’

That’s all. If your vacuum cleaner is using new unrooted firmware chances of not being able to perform local ota are extremely high (xiaomi disabled this) Simply downgrade stock firmware (using the reset button + other buttons combo for reverting to factory/failsafe firmware version) and then do the whole process again.

Feel free to also consult this wiki

If you were really bothered to install python-miio I see little to none chances for failure now. So after successful upload for flashing the vacuum cleaner robot Roborock s5 says – it may take up to 10 minutes. Usually process takes between 6-8 minutes and boom – rooted. Now you can ssh to the robot, install wicked things like sox , libsox-fmt-all, mpv, youtube-dl wget and whatever you need and fits the device limited storage and ram. For example, with sox and mpv and youtube-dl I’m managing a long playlist of online radios and youtube resources directly played by the vacuum cleaner. For freeing some more storage feel free to examine these scripts When you know what they do you’ll probably know they are executed locally on the robot.

Some cool stuff was possible on older firmware. But recent versions come with severe restrictions – no apt-get, no local ota (available once again on modded/rooted firmware) etc. All firmware files after v11_001898.fullos.a5a3abad-09c1-4285-88c9-9640ec7b3e88.pkg come with such restrictions in firmware.

To get most out of the situation you can learn what the image customizer can offer , what valetudo can offer and what valetudo RE can offer. Once you know the capabilities of these 3 you’ll know you have the absolute best out of your rooted roborock.

Apart from valetudo (which is a very interesting idea) one can generate new voice packs for his rooted vacuum and thus he can localize it #likeAboss

You are welcome 🙂

Roborock S5 rooting experience
Scroll to top