GLaDOS (Portal) voice pack for Roborock / Xiaomi vacuums

Ok so I think I follow here , but I may have messed something up. I got the files transferred into mnt/data/custom_sounds/audio_default/sounds, and updated the script. After rebooting I see /dev/nandi is no longer mounted and nandL is mounted in its place. Unfortunately I still have the stock voice haha. I’m not sure what I missed , it seems straightforward

If you set language different than english then you must replace audio_default with audio_custom. You need to unmount nandj instead of nandi and mount folder into /mnt/resources/audio_custom, see below what I’ve changed compared to 0bserver script:

        while [[ ! -f /mnt/resources/audio_default/power_on.ogg ]]; do sleep 1; done
        sleep 1
        umount /dev/nandj
        sleep 1
        mount /mnt/data/custom_sounds/audio_custom /mnt/resources/audio_custom

IMPORTANT!
Remember to set ogg files to 16000Hz rate and 16bit PCM. I was wondering why my vacuum is crashing and web interface is so slow - it was because I had ogg files in 44100Hz rate

Hello :waving_hand:t3:

First, thank you for your work on the DustBuilder website!

I’m trying to root my robot to install Valetudo, but I’ve tested every available method and they all seem to fail. It looks like my robot is rejecting the firmware.


:robot: My Hardware

  • Robot: Xiaomi Mi Robot Vacuum v1
  • Model: SDJQR01RR

:package: Firmware Configuration

I am using firmwares generated by DustBuilder (/_v1) with the following base configuration:

  • Your SSH-Public key (My own key)
  • Replace Xiaomi adbd with generic adbd
  • Preinstall Valetudo ver. 2025.0.5
  • Preinstall Nano texteditor, curl, wget, htop, hexdump
  • Fixresets patch "new May 2020*"
  • Build update package (for installation via local OTA)
  • V1 (ver 4018, 05/2020, Full-Ubuntu)

I have also tried these variations, and all of them fail:

  • Variation 1: Base config (above)
  • Variation 2: Base config but with V1 (ver 4028, 01/2021, Full-Ubuntu)
  • Variation 3: Base config (using 4018) but with Preinstall valetudo RE ver. 0.10.7

:microscope: Failed Methods

Here are all the methods I have tried to flash these .pkg files:

:cross_mark_button: Method 1: python-miio (on PC)

  • Command: mirobo --ip 192.168.8.1 --token fff... update-firmware --ip 192.168.8.XX v11_0040X8.pkg
  • Error: code 400, message bad request version ('ol')
  • Context: This error occurred after solving network/firewall issues. It appears to be an HTTP vs. HTTPS conflict.
  • Sources:

:cross_mark_button: Method 2: valetudo-helper-miioota (on PC)

  • Command: .\valetudo-helper-miioota.exe install-firmware .\v11_0040X8.pkg
  • Error: SyntaxError: Unexpected end of JSON input (and MiioTimeoutError)
  • Context: The tool connects successfully but the robot sends back an empty/invalid response when the command is sent. This happens with both 4018 and 4028 firmware bases.
  • Sources:
    • Tool (GitHub) : Hypfer/valetudo-helper-miioota
    • Comment (HA Community here : 241101

:cross_mark_button: Method 3: XVacuum Firmware (on Android)

  • Process: Connected via hotspot after factory reset, as shown in video tutorials.
  • Error: The app tries multiple times (“X attempt, trying to flash the firmware…”) but eventually fails to flash any of the DustBuilder .pkg files.
  • Sources:
    • App (XDA Forums) : app-android-4-4-ios-9-0-xvacuum-firmware-xiaomi-vacuum-roborock-v1-v2-v3.3896526
    • Video Tutorial (YouTube) : iOlTIygKjgM
    • Blog Tutorial (inrepublica.fr) : installation-firmware-open-source-valetudo-sur-un-robot-aspirateur-xiaomi-roborock-v1

Conclusion

It seems my robot’s current (stock) firmware is “hardened” and is rejecting all firmwares generated by DustBuilder, no matter which method I use (PC, Android, HTTP, HTTPS).

Has anyone else experienced this? Is there an alternative source for pre-rooted V1 firmwares, or another flashing method I’ve missed?

Thank you for any help!