Rooting a Robot Vacuum with Valetudo: The Fully Local Build for Home Assistant Home Automation

Rooting a Robot Vacuum with Valetudo: The Fully Local Build for Home Assistant

by Joule P. Kraft · July 13, 2026

As an Amazon Associate I earn from qualifying purchases. No affiliate relationship influences my recommendations.

The thing that finally pushed me to root a vacuum was reading its privacy policy. My old robot mapped every room in my house, tagged the furniture, took low-angle photos for “obstacle avoidance,” and shipped all of it to a server on another continent so I could press a start button in an app. I was paying a company to build a floor plan of my home and store it somewhere I would never see. The vacuum worked fine. That was somehow worse.

So I took the whole cloud out of it. This is the build log for turning a mass-market robot vacuum into a fully local device with Valetudo, the open-source firmware that replaces the vendor cloud with an on-robot web interface and local Home Assistant control. When it is done, the robot has no account, phones home to nothing, keeps its map on its own hardware, and still cleans on a schedule with your internet unplugged.

This is a tinkerer’s build. It voids your warranty and it can brick the robot if you rush it. I will be honest about that up front, and I will give you two boxed alternatives at the end for people who want most of the benefit without a soldering iron anywhere near a $500 machine.

Step 0: Check Your Exact Model Before You Buy Anything

This is the decision that makes or breaks the whole project, and getting it wrong is how you end up with an expensive vacuum you cannot root. Valetudo does not run on “robot vacuums” in general. It runs on a specific list of models, and often only on specific hardware revisions of those models, because rooting depends on a physical access point the manufacturer left on the board and a boot-time exploit that a firmware update can quietly kill.

The supported families as of 2026 break down like this:

  • Dreame, MOVA, and Xiaomi-Dreame models are the sweet spot. They root over a 3.3V UART on service pads on the mainboard, no soldering required if you use pogo pins or a careful jumper, and the process is well documented. The Dreame L10s Ultra is the model most people land on because it is a genuinely good mopping vacuum and it is well supported.
  • Legacy Roborock S5 and the original Xiaomi V1 use older software-only exploits over WiFi, no disassembly, but the hardware is dated.
  • Roborock S6 through Q7 Max require full teardown to reach test points, and some 2024-and-later revisions have locked NAND that blocks root entirely.

Before you spend a dollar, pull up the official supported-robots matrix, find your exact model number, and read the revision notes. If your candidate says “revision X and later cannot be rooted,” believe it. A robot you cannot root is just a cloud vacuum you overpaid for. Settle this first.

What You Need

The hardware list for a Dreame-class root is short and cheap:

  • A USB TTL serial adapter that can do 3.3V logic (a CP2102 or FT232 board). Do not use a 5V-only adapter; you can damage the robot.
  • A few female Dupont jumper wires to reach the service pads.
  • A laptop. The Dreame root instructions specifically ask for a machine running Debian for the tooling, and a live USB stick is fine, so you do not have to reformat anything.
  • A Home Assistant instance already running, with the Mosquitto MQTT broker add-on installed.

That is the whole bill of materials. The rest is patience.

The Root, In Plain Terms

I am not going to reproduce the model-specific pinouts here, because they change per revision and the official Dreame install guide is the only source you should trust for exact pads. But the shape of the process is worth understanding before you commit, so you know what you are getting into.

You open the robot’s top shell to expose the mainboard. You connect your 3.3V serial adapter to the UART pads (ground, TX, RX). You interrupt the boot process over serial to get a root shell, then use the Valetudo tooling to build and flash a firmware image that has the stock cloud stack stripped out and the Valetudo web server baked in. On reboot, the robot comes up running Valetudo instead of the vendor firmware, serving a clean web UI on its own IP address on your LAN.

The two places people brick robots are rushing the flash step and using the wrong voltage on the serial line. Go slow, double-check the adapter is in 3.3V mode with a multimeter before you touch a pad, and read each step twice. A root that takes you an unhurried Saturday afternoon is a root that works.

Once it boots, open the robot’s IP in a browser. You get a full local interface: live map, room editing, zone cleanup, fan speed, cleaning history, all served from the robot itself. At this point you can, and should, block the robot’s internet access at your router or on an IoT VLAN. It does not need it anymore, and blocking WAN is the proof that the cloud is truly gone.

Wiring It Into Home Assistant

This is where the local vacuum stops being a novelty and becomes part of the house. Valetudo speaks MQTT, and Home Assistant speaks MQTT, so the two connect with no custom integration and no cloud bridge.

In Valetudo’s settings, enable the MQTT connection and point it at your Mosquitto broker with Home Assistant autodiscovery turned on. Within a few seconds the robot appears in Home Assistant as a native vacuum entity with start, pause, return-to-dock, locate, and fan-speed controls, plus sensors for battery, cleaning state, and error status.

For the live map, add the excellent community Xiaomi vacuum map card through HACS. It renders Valetudo’s map, lets you tap a room to clean it, and draws go-to and zone-cleanup boxes right on your dashboard. It looks and works better than the vendor app it replaced, and it never leaves your network.

Now the automations. Everything below lives in your own automations.yaml and keeps working with the internet unplugged:

automation:
  - alias: "Vacuum kitchen after dinner cleanup"
    trigger:
      - platform: state
        entity_id: input_boolean.dinner_done
        to: "on"
    action:
      - service: vacuum.send_command
        target:
          entity_id: vacuum.robovac
        data:
          command: segment_clean
          params:
            segment_ids: [16]

  - alias: "Pause vacuum when someone is on a call"
    trigger:
      - platform: state
        entity_id: input_boolean.on_a_call
        to: "on"
    action:
      - service: vacuum.pause
        target:
          entity_id: vacuum.robovac

The first one runs a single room on demand when a helper flips on. The second pauses the robot the moment I get on a call and, with a companion automation, resumes it when the call ends. None of this is possible cleanly through a cloud app, and all of it is trivially local once the robot is a real Home Assistant entity. Presence-based cleaning, “vacuum the entryway when the last person leaves,” quiet hours that never send a robot into a nursery, it all just becomes Home Assistant logic.

The Honest Trade-Offs

Rooting is not free. Here is what you actually give up.

You void the warranty, full stop. A rooted robot is a robot you are on the hook for. You also lose the vendor’s obstacle-avoidance AI and any cloud-only party tricks, though in practice Valetudo’s own navigation on Dreame hardware is very good and I have not missed the “AI pet detection” marketing feature once. And the root itself is a real afternoon of careful work with a small but nonzero brick risk. If any of that makes you nervous, do not do it on a robot you cannot afford to replace.

What you get in return is total: no account, no telemetry, no photos of your floor leaving the building, a faster and more capable local dashboard than the app ever was, and a vacuum that will still be fully functional in ten years when the manufacturer has long since shut down the servers that used to run it. For me that trade is not close.

Boxed Alternatives: When You Will Not Root

Not everyone wants to open a $500 appliance with a serial adapter, and that is completely reasonable. There are two honest middle-ground paths.

The tinker-later path: buy a supported robot and run it stock for now. If you get the Dreame L10s Ultra, you can run it on the stock app today and root it whenever you feel like it, because it is on the supported list. It is a strong mopping vacuum either way, so this is the low-regret buy: good cloud vacuum now, local vacuum later, same hardware.

The no-root local-ish path: a Matter robot. The SwitchBot S10 exposes basic start, stop, and dock over Matter, so those core commands run locally through Home Assistant with no account for the button-pressing. Be clear-eyed about the limit: the mapping and room routing still lean on the vendor cloud, so this is local control of the vacuum, not a fully cloud-free vacuum the way a Valetudo flash is. As a middle ground for people who will never crack the case open, it is the honest pick, and I would rather tell you exactly where the line is than pretend Matter equals fully local. It does not.

The Bottom Line

A robot vacuum is the single most invasive sensor most people voluntarily put in their home. It drives into every room, builds a map, and by default hands all of it to a company whose only promise is a privacy policy that can change tomorrow. Valetudo is the fix, and on a Dreame-class robot it is an afternoon of careful work that leaves you with a better dashboard, zero telemetry, and a machine that answers only to your own hardware.

If you are the kind of person who reads a build log to the end, root a supported robot and never look back. If you are not, buy a robot from the supported list anyway so the door stays open, or take the Matter middle ground with your eyes open about what it does and does not do. Just do not keep paying a stranger to map your house. You can own that map instead, and it is not even hard.

Frequently Asked Questions

Which robot vacuums can be rooted with Valetudo in 2026?+
The best-supported family is Dreame (and the Dreame-built MOVA and Xiaomi-Dreame models), which root over a 3.3V UART on the mainboard's service pads. Older Roborock S5 and the original Xiaomi V1 use software exploits, while Roborock S6 through Q7 need full disassembly and some 2024+ revisions block root entirely. Always check your exact model and hardware revision on the Valetudo supported-robots list before you buy.
Does Valetudo work with Home Assistant?+
Yes, and it is the whole point. Valetudo publishes the robot's state and accepts commands over local MQTT, so with the Mosquitto add-on and the built-in MQTT integration your vacuum shows up as a native vacuum entity with start, stop, return-to-dock, fan speed, and room selection, plus a live map through the vacuum map card. No vendor account and no internet round trip.
Will a rooted vacuum still work if my internet goes down?+
Completely. That is the reason to do it. Once Valetudo is flashed, the robot no longer talks to any cloud server. The map, the room definitions, the cleaning history, and every command all live on the robot and your local network, so it keeps cleaning on a schedule with your WAN unplugged.
Do I void the warranty by installing Valetudo?+
Almost certainly, yes. Rooting requires opening the robot and interrupting the boot process, and a bad flash can brick it. Do this on a robot you own outright and are comfortable tinkering with, not a two-week-old flagship. If you want local-ish control without opening anything, a Matter-over-WiFi robot is the safer path with real trade-offs.
Is a Matter robot vacuum the same as a local one?+
No. Matter gives you local start, stop, and dock commands over your LAN, which is genuinely useful, but the mapping, room routing, and app features on most Matter vacuums still run through the vendor cloud. Matter is a good middle ground if you will not root, but only a Valetudo-flashed robot is fully cloud-free.