Dreame D10s Pro Hacking

October 9, 2024

I recently purchased a used Dreame D10s Pro robot vacuum and I can say I haven’t made a more useful purchase in a very long time. The house is significantly cleaner than it has been in some time and it’s staying that way which is new for me.

In order to make it work for me I installed Valetudo on the device. The instructions on the site for Valetudo are incredibly complete and detailed. Valetudo is a package you can add to a rooted robot which does a few things for you. It stops the robot from phoning home (is the big one for me). The robot creates a Lidar 3D image of my home. I don’t really need to share that with Xiaomi (the parent company of Dreame). It also provides a very nice web interface to the robot which enables scheduling and tweaking, as well as full control of the robot and where it can and can not go in your house (who needs “virtual wall” devices lying around on the floor when you can just simply draw what is out of bounds for the robot on the map it makes). There are other projects out there that also give you this kind of access to the robot but a lot of them seem to use your own Xiaomi account to do it… meaning Xiaomi still have the lidar view of your place and can track or see anything you’re doing with the robot.

The the first gotcha that I had occurred when I was trying to root the vacuum. Dustbuilder uses the information you’ve gleaned from the robot by hooking up the homemade access board to the robot and your computer. The combination of information I provided to the site wasn’t recognized (I get the impression that a new firmware had been released for my device since the last time they had had someone with a D10s Pro show up). I contacted the very generous and helpful individual running the dustbuilder system via telegram (as suggested in the error that was returned after following the instructions to upload the firmware data I had already gathered from the device) and this individual helped me out promptly and courteously. This resulted in my getting a successful build for rooting the system.

The second gotcha was just silly. I tried to hook the robot vacuum up to my network on the 5Ghz band. Funny thing about that… the robot doesn’t seem to have a 5Ghz radio… oddly it claimed to have succeeded at connecting but subsequent evidence showed that it had not, in fact, connected. So hook it up to your 2.4GHz network when you go to do this. BTW, if you’re wondering, there’s a trick to make the vacuum forget the wifi network connection and let you try and set it up again. While the vacuum is on, press the home and power buttons simultaneously until you hear the “waiting for network configuration” message. Then connect to the wifi hosted by the robot and configure the network through Valetudo interfaces.

Voice Pack for the vacuum

I’ve also discovered that a very silly thing you can do through the Valetudo interface is change the voice and the messages that the robot speaks. Yes the silly thing speaks… I know people turn this off but for me it’s amusing and if I lose it in the house, as long as it has battery it can tell me where it is. There is some prep to do here. First you need a collection of sounds to use for the messages. You need to create them ultimately as ogg formatted sounds, you can make them small (mono, 16kHz) as the speaker on the vacuum doesn’t really reproduce fine audio details. Then create a .tar.gz file and post it somewhere on the web… I discovered that my shared hosting for my web site isn’t a good place for that, but my homelab worked just fine. You need the MD5 hash for the file as well… on windows you can use the following command.

CertUtil -hashfile yourFile.tar.gz MD5

in the directory with the file. Copy the long string of gobbledegook that’s produced and enter that into the interface in Valetudo when putting in the URL to the file and the language code (make this up, do NOT use standard EN or CN or whatever, these are reserved and won’t work for you). If you want to revert to the original voice (assuming you started in english) all you need to do is submit the same data with EN as the language code. This will put back the English voice you were hearing when you first started.

For the voice of my robot I chose a text to speech engine and created a bunch of sounds that sound like zoidberg including speech patterns. I used this site to help me out. Like I said it’s silly… but fun and now every time the robot speaks it makes me snicker.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.