github Hypfer/Valetudo 2026.08.0
Valetudo 2026.08.0

4 hours ago
valetudo

2026.08.0

Camera Streaming — Yes, really

Valetudo 2026.08.0

I've put an em dash there as a jumpscare. If you didn't notice, I have bad news for you.
You might've previously been exposed to AI writing without you even noticing.

(These release notes are quite inline-video-heavy, so for the best experience, I recommend reading them on github.)

Duststreaming

Why (only) now?

So while this always was a technically complex thing, the main blocker has always been an ethics one.

Because the software works and because a good Valetudo user is a self-sufficient invisible one, in my daily grind, I - for the most part - do not get to interact with you cool people.
Instead, I get to experience the absolute worst consumer smarthome tech + foss has to offer, which historically made me quite hesitant to implement a technology with as much abuse potential as camera streaming on vacuum robots.

I did however eventually realize that letting this decision be guided by the most terrible of people in a sense means supporting these guys in making the world worse by stripping us of cool stuff.
So I sat down and found a solution.

The feature now exists, but it comes with safeguards and a lecture that strips away any sort of plausible deniability for bad behavior.
I cannot stop people from being shitty, but I think I’ve managed to ensure they'll at least feel bad about it when they are.

Additionally, I do believe that the messaging in there is genuinely useful and extends beyond just vacuum robots, but you tell me.
You can of course also just skip it by typing skip.

Design notes

This whole "designing for better results" doesn't stop there, though.

It extends to the feature being built with non-adoption as the goal.
When it is off, you will see no mention of it in the menus other than the toggle to turn it on.

This avoids the classic silicon valley thing of putting something disabled in front of you to make you feel like you're missing out - just so that you're to blame when you eventually do what they've funneled you into doing. With Valetudo, not having the spycam enabled is not just an option but the default people should hopefully gravitate towards.

But, when you decide to enable it, you get cool shit, which we - now that this is all out of the way - will now get into.

History

But first: History.

How do you even build camera streaming for a local-only vacuum robot webinterface on a custom proprietary vendor firmware?

Getting Video

Well, it starts with one thing. I don't know why the allwinner non-mainline kernel kept crashing.
It did however matter how hard we tried.

"We" being @vivia here, who decided to take a break from hacking on gstreamer at work to do some recreational gstreamer hacking vacation instead.
The solution is dustsrc, which is a source element that does v4l, but just enough v4l to not scare the kernel.

You can find her talk about it here: https://indico.freedesktop.org/event/11/contributions/516/

As you can see, that was 2025, so a lot of patience with me coming to terms with that ethics dilemma was involved.
Thanks, Vivia!

Transmitting Video

So that's how we got frames, but how did we get them into the UI, given that Valetudo is http only, and with that cannot do webRTC.
The answer is yet again some FOSS wizardry.

13 years ago, @phoboslab (which you probably know from other cool stuff like the quite okay image format) likely must've noticed that the mpeg1 patents had expired, meaning that one could just use the codec for whatever one likes. The "whatever one likes" then became a canvas/webGL based mpeg1 player in pure JS, which bypasses all of those limitations of "more modern" (and Google W3C-approved) ways of doing Video.

Now, 13 years later, it - in a vibe-mutilated form (sorry) - powers vacuum robot camera livestreaming.

And, since it's just http and no websockets, it should also just work with whatever reverse proxy setup you might be using.
Though, I have not actually tested that, so you tell me.

Rendering Video

Because normal video players with their "buffering" loading spinners and HUDs and all are boring, the way video is shown in Valetudo is stylized, imitating a 90s CRT displaying an analog RF Signal.

The way this was implemented was - of course - LLMs, so whether it actually has more soul than a dreadful spinny circle is debatable, but the result nevertheless fills me with joy.

CRT.demo.mp4

As you can see, it clearly intuitively conveys the connection and stream state, without actually telling you the connection and stream state.
And it does so while also being fun.

I went for vibes but not necessarily full period correctness or accuracy, so if you're a shader wizard and better nostalgic hacker than me, feel free to open a PR to make it even more 90s CRT.
I'm after all just a fake suit pretending to be a hacker by glueing together the stuff of other people into a product.

Cool, how do I use it?

So that's the renderer thingy. But where can you see it?

First of all, on a dedicated camera page. It's boring in the sense that it just shows the camera and you can click on it for fullscreen.
You've already seen that one, so it's just shown briefly in the upcoming demo.

manual_control.mp4

The next place is the manual controls view, which with that gains a live feed that shows you - with some lag for extra fun - where you're driving.

That works so well, I can't wait to see what people build/do with it.

spectator_map.mp4

Lastly, there's the spectator map, which combines video feed with map feed.
On desktop, you get a PiP mode, where you can cycle through PiP window sizes like you'd expect from the usual game minimap UX.
On mobile, you get a split view instead.

Valetudo-wise, that I think concludes everything that could sensibly be done with a video feed - with implementations I am very happy with, doing everything I would want them to do as a user.

The bigger picture

Here's the best part though:
This could extend beyond Valetudo.

Because this is literally just local http with no cloud dependency, account requirement or app-only limitations, you can build stuff on top of this.

We had a bunch of ideas already while brainstorming.

For example, what about VRchat (VR meaning vacuum robot), where you have a warehouse with robots with bidirectional audio (remember: they have microphones), allowing people to connect and interact with one another through the bot avatars.
Think metaverse but without the lizard.

All you need is like a queue proxy server in the cloud + some warehouse with bots. Less than 10k€ total for sure for a somewhat time-limited Art exhibit.

Or what about bot soccer using manual control?
Or the vacuum robot racing league?

Or maybe something like botroulette, where you can give a stranger 5 min of time to drive around your home + some contact form afterwards.

Or - like shown earlier to demonstrate manual control - an impromptu rover thingy.
Just pair the bot to your phone hotspot, then use the Valetudo UI on your phone to steer the robot somewhere outside without other wifi infrastructure.

There's so much stuff people could do just because this is not chained to a specific vendor-defined experience.
Remember when computers were that? General computation devices instead of prebuilt experiences to consume?

Anyway. I would love to see people do cool shit with this.
Have fun!

Some additional unordered thoughts

These did not fit into the narrative arc above, so here they are instead.

Mower cameras

I was at the local hardware store the other day and saw these mowers.
Can you see why I found them interesting?

Their cameras point down to the ground, which is different from the vacuum robots which point straight forward - and with that see a lot more stuff not meant for their digital eyes.

IR cameras

Duststreamer also runs on the Roborock S8, which has this IR only cam.
That was interesting, because it saw nothing (besides its own IR lasers) while indoors with LED lights only.

However, take it outside and it starts seeing things

And, if you take it back inside, all you need is an old incandescent bulb and its waste IR radiation to see:

Robot dashcam

Idk I just found this fun. I hope you'll find it fun too

dashcam.mp4

The usual

If you like this release or Valetudo in general, you might want to consider donating:

https://github.com/sponsors/Hypfer

https://builder.dontvacuum.me/donations.txt

Autogenerated changelog

Features

Fixes

  • ui: Harmonize secondary labels 5edb195
  • vendor.dreame: The set of states that can be resumable extends beyond just docked 7a2e09b
  • vendor.dreame: Misc manual control improvements 064cb88
  • vendor.midea: Fix semantic_slam_node crashlooping on J15 Max FW 558 ccda25e

Chores

Don't miss a new Valetudo release

NewReleases is sending notifications on new releases.