-
v0.3.0-rc.3
Pre-releaseAll checks were successfulPublish / Build .debs + tarball, create releases (Forgejo, NAS, GitHub) (push) Successful in 27m50sPublish / Update the Homebrew tap formula (stable or -rc per tag) (push) Successful in 3sPublish / Reconcile releases across registries (bridge .pkgs to NAS, heal history) (push) Successful in 2m6sPublish / Prune the rc releases/tags a shipped stable supersedes (stable tags only) (push) Has been skippedreleased this
2026-08-04 18:17:31 -07:00 | 240 commits to main since this releaseAdded
-
dreame-valetudo rekeyauthorizes your SSH key on a robot that is already rooted, over the USB
cable, without reflashing it. Rooting installs a key only the first time: the built image writes
its key to the robot'smiscpartition only when no key is there yet, andmiscsurvives a root
flash — so a robot whose key was lost could not be reached again, and re-rooting it did not help.
rekeyreads that partition off the robot, makes your key the one it accepts, and writes it back,
leaving the firmware, Secure Boot, and the robot's calibration untouched. Any key it is about to
stop accepting is named first — this is also the only way to revoke a key you have lost.
--keep-existingkeeps the current keys authorized as well, and--dry-runprepares and checks
the change without writing to the robot. It asks for the USB button sequence twice, once to read
and once to write, so that deciding what to change never runs down the robot's power window. If a
write is ever interrupted, the next run offers to put back the copy it saved beforehand rather
than reading a half-written partition. -
dreame-valetudo rekey --over-sshdoes the same thing without the USB cable, the Breakout PCB, or
flashing anything. A rooted robot sets its own root password from the serial printed on the label
under the dustbin, so joining the robot's own Wi-Fi and typing that serial is enough to authorize
your key. It replaces, keeps, names every key it is about to stop accepting, and honours
--dry-runexactly as the USB route does, then proves the robot accepts the new key before the
tool records it. The serial is never shown as you type it, never written to the run log, and never
kept once the run ends. Use the USB route instead when the robot will not boot far enough to bring
its Wi-Fi up, or when a previousrekeywrite was interrupted. -
dreame-valetudo restorerebuilds a stock recovery kit from the pre-root capture, keyed to that
one robot's identity, and puts a fastboot robot back on stock firmware. It leaves toc0 and user
data alone, watches for the robot dropping back into FEL on its own, and picks the boot check up
again without flashing twice. -
dreame-valetudo benchruns hardware test campaigns against the real production phases and records
them, ordered by how much risk each step carries. Scenarios cover interruptions, wrong-device
mix-ups, restore, and package installs. -
A rooted robot you adopt can capture a current factory backup without reinstalling anything, then
check and atomically update Valetudo without stepping through the intermediate WebUI releases. -
Read-only recon can adopt a robot that was rooted by an older or manual method, no reflash needed.
If you would rather re-root it with the current method, it still offers that. -
Runs now survive closed terminals and dropped SSH connections in a private tmux session. Re-running
the command can rejoin the run, pending questions are remembered, and concurrent runs cannot race
one another. -
Fedora, RHEL 8 through 10, and openSUSE now have self-contained RPM packages. A new
uninstall
command finds Homebrew, package, source-tool, and macOS installer copies without touching robot
backups. -
DustBuilder guidance is now written per model and stamped with the date it was last verified. When
a config isn't recognized yet, the tool walks you through uploading it, with the current privacy
and follow-up warnings.
Changed
- Adopting a robot that was already rooted, and building an image for one, now say up front that the
key you upload will not take effect on it and point atrekey. Choosing to re-root in the hope of
regaining SSH access cost a destructive flash for nothing. - All persistent files now live under
~/dreame-valetudo/, keeping disposable work apart from the
irreplaceable backups. Existing layouts migrate forward automatically, and the migration never
overwrites anything. - Recon now records where the complete three-slice recovery capture came from, writes it out as the
portabledreame_recovery_backup.zip, and keeps any trusted pre-root capture in place when you root
the robot later. - Release packages now require glibc 2.28 or newer, and are tested on deliberately picked oldest and
current Linux and macOS hosts, on both processor architectures. - The README now marks the X40 Ultra, X30 Ultra, and L10s Pro Ultra Heat R2338 as hardware verified.
- Status and other informational commands no longer end with an unrelated continuation prompt, and
their output stays on screen after a tmux session closes. - The UART walkthrough now includes the known-good USB image, complete identity backup, exact
DustBuilder options, verified transfer, docking, and post-install success checks. - Recon now records the model it inspected, and rooting won't flash unless that record matches the
selected model, checked before the robot is touched at all. A robot whose recon completed under
0.2.x carries no such record, so runrecon --forceon it before rooting.
Fixed
- When the robot's Wi-Fi AP can't be reached, the tool now names the most common cause it cannot
see: a VPN routing the robot's fixed address takes it before the robot ever does, and nothing
else about the connection looks wrong. - After a run pinned to one robot with
DREAME_ROBOT, the follow-up question no longer offers to
set up another robot the environment has already ruled out. - Selecting text with the mouse now returns the pane to the prompt instead of leaving it in a
copy mode that swallows typing — so selecting a line from a question no longer stops you
answering it. The text is already on the system clipboard, so nothing is lost. Wheel
scrolling is unaffected, andDREAME_TMUX_MOUSE=offstill hands the mouse back entirely. - Destructive work now binds the selected model, staged image, saved config, live robot, and backup
together before writing. R2338/R2338H and L20 hardware look-alikes are matched exactly, ambiguous
USB setups stop, and every flash response must beOKAY. - Interrupted or rejected recon, root, restore, migration, image staging, and factory-backup work no
longer leaves partial state behind that could authorize a later write or overwrite a known-good
backup. - Closing a terminal or pressing Ctrl+Z during a flash no longer interrupts the write; uncertain
attempts stop safely instead of silently repeating, and completed stock flashes resume only their
physical boot check. - Robot SSH no longer falls back to a password or to unrelated agent keys. Factory backups are
checked before they're published, and the key, device-ID, Wi-Fi, and implementation repairs all
confirm the connected robot before changing anything on it. - Downloads and SSH transfers now time out instead of hanging, a verified cached Valetudo stays
usable on the offline robot AP, and the libusb transport streams large recovery and flash files
instead of loading them into memory whole. - Robot identities, keys, recovery data, state, and bench records are kept private; shareable logs
redact robot names, credentials, public keys, flash tokens, and other identifying values. - macOS packages now bundle all the FEL runtime libraries, Linux browser steps use
xdg-open,
package updates and removals print native commands, and cutting a release backfills any missing or
mismatched assets across the project mirrors.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-