Choose the current release, then inspect your board.
| Release | Reader-facing change | Boundary |
|---|---|---|
| 0.17.3 | Adds a local lifetime vet book and optional public card sharing; improves idle looks; laptop duckctl can claim different pads for different ducks. | A pad claim needs a button press. Vet-book sharing is a separate, deliberate public action. |
| 0.17.4 | Beta boards use the kernel SoC serial instead of the duplicated U-Boot value; the duckctl 0.17.4 package and documented Homebrew route are available. | An automatically named Beta may appear under a new name. Zero 3W keeps its earlier serial source. |
These are published stable releases, unlike the separate development prereleases. A GitHub release is not proof that your particular board has installed it or that every hardware behavior works in the field. The policy-set v8 manifest did not change in this review, so do not infer a new gait from the daemon version. Previous stable daemon 0.17.2 · October 13 ↗ Stable daemon 0.17.3 · October 15 ↗ Latest checked stable daemon 0.17.4 · October 15 ↗ Unchanged official policy-set v8 manifest ↗.
Save a local baseline and use the board-offered stable update.
On an official robot, record the running version, current name, overrides, policy list and health. update check daemon reads the stable offer; it does not install. If the checker offers 0.17.4 for the declared board, support the robot, keep power steady and allow service restarts before applying. A preorder without hardware has nothing to run here. Pinned 0.17.4 vet book, idle and update instructions ↗.
robotctl version
robotctl system info
robotctl update status
robotctl update check daemon
robotctl configure --list
robotctl policy list
robotctl healthsudo robotctl update apply daemonAfterward compare the live release, system identity and health with your saved output. Read the update transcript if anything failed or the name changed. An explicit manual rollback requires a prior daemon release still installed on that board; it does not undo a public vet-book dataset or change an independently versioned policy set. Pinned 0.17.4 vet book, idle and update instructions ↗.
robotctl version
robotctl system info
robotctl health
robotctl update log
robotctl update showsudo robotctl update rollback daemon
robotctl version
robotctl healthRead the vet book locally before deciding whether to share.
robotctl vetbook opens a live terminal page; --json returns the local record for inspection. It begins tracking when the new robotd runs; it cannot reconstruct earlier unrecorded history. The book holds life and motor counters, sensor records and a diary, and is saved on the robot about once a minute and at normal shutdown. Press n in the page to add a local note. Pinned 0.17.4 vet book, idle and update instructions ↗.
robotctl vetbook
robotctl vetbook --json
robotctl account statusSharing is opt-in and public: after sudo robotctl account login, pressing s in the terminal page asks updaterd to create or update a public Hugging Face dataset named <user>/<duck>-vetbook, plus a card link and QR code. The published JSON drops free-text diary notes and internal bookkeeping, but retains counters, dates, servo wear and a share block with owner, robot, time and daemon. Re-sharing replaces the current files while Hub history retains old copies; renaming the robot creates another dataset and leaves the old one. Inspect the local book and account before pressing s; do not treat the card as private. Pinned vet-book publication and privacy implementation ↗ Official public vet-book card Space ↗.
Claim one laptop pad for each duck.
In 0.17.3 and later, duckctl udp-pad waits for a press on the pad it should send; that selecting press is not forwarded as an action. For two ducks on a trusted LAN, plug in two pads, open one terminal per duck, start the first command and press its pad, then start the second and press the other. A pad already in use is skipped. --pad 2 selects the laptop’s second discovered pad without a press for scripts, but that number may change on unplug/replug. The robot’s optional UDP pad must already be enabled; it replaces Bluetooth pad input while enabled, and UDP port 4210 has no authentication or encryption. Pinned 0.17.4 one-pad-per-duck UDP instructions ↗ Pinned laptop pad-claim implementation ↗.
duckctl udp-pad 192.168.1.42
# In a second terminal, with a second pad:
duckctl udp-pad 192.168.1.43The latest laptop client is duckctl 0.17.4 on PyPI for macOS, Linux and Windows. The pinned official guide also documents a Homebrew tap on macOS/Linux. Upgrade the tool you actually use before expecting the new pad-claim screen; duckctl scan is a passive way to identify a robot and does not start driving it. Pinned 0.17.4 laptop duckctl and Homebrew instructions ↗ Published duckctl 0.17.4 laptop package ↗.
uv tool upgrade duckctl
duckctl scanbrew install pierre-rouanet/tools/duckctl
brew upgrade duckctlAfter a Beta upgrade, scan again for its actual name.
0.17.4 fixes a Beta-board identity collision: Beta now reads the kernel’s /proc/cpuinfo Serial, because its U-Boot device-tree value could be the same on two boards from one lot. Zero 3W keeps reading the device-tree serial. The serial feeds the default duck-xxxx name, generated voice, chorale ID and remote hardware ID. If a Beta used its automatic name, rediscover it with duckctl scan and use the name it now advertises for --name; an explicitly chosen name need not change. A bonded robot may advertise less often, so use the first-connection guide to distinguish sparse advertisements from a naming problem; a changed default name alone is not a reason to delete a Bluetooth bond. This site did not observe any board renaming in person. Pinned board-specific SoC serial implementation ↗ Pinned serial-derived default name ↗ Pinned 0.17.4 laptop duckctl and Homebrew instructions ↗.
The other released 0.17.3 change is richer idle look-around: after about two seconds with a running policy and no move or head command, the duck may glance, lean its neck, open its beak and occasionally yawn. Pad head modes keep control of the head. The [idle] settings are tunable through sudo robotctl configure and require a robotd restart; do not mistake this source behavior for a measured motion on every machine. Pinned 0.17.4 vet book, idle and update instructions ↗.
Source check: . Verification scope is stated in the guide; source review alone is not a hardware test.
Where to go next.
Connect a MicroDuck: Find It, Join Wi-Fi, Open the Console
On an official MicroDuck, use duckctl from a laptop to distinguish Bluetooth discovery, missing Wi-Fi address and console signalling before changing settings.
MicroDuck Troubleshooting: Gamepad, Loading, CUDA & ONNX
Separate a Bluetooth pad link, driver and button mapping before diagnosing browser loading, Python, CUDA or ONNX failures.
What would you like to understand next?
Keep the source, your environment and your observations together.