wuji upgrade. It fetches firmware matched to each device from the official catalog, verifies it, flashes it over the current transport, and prints a per-device report. The device reboots into the new firmware automatically.
Scope and Action
Every invocation combines a scope (which devices) with an action (which version). Scope:- No scope flag: when only one device is connected, the scope flag is optional
--all: every discovered device (latest firmware only)--type <TYPE>: every device of one type, such as--type wuji_glove(matchesping’s Device Type column, case-insensitive)--sn/--address/--handedness: one device, same selectors as other commands
- No action flag: upgrade the scoped devices to their latest versions
--to <VERSION>: install a specific version on the scoped devices--file <PATH>: flash an official ZIP package or a standalone Wuji.binfirmware file onto the scoped devices--list: browse available firmware versions, requires one device type or one device, read-only--check: check all connected devices for firmware updates, works with any scope, read-only
--to, --file, and --list require a single-type scope: --type or one device. --all always means “latest for each device”.
Usage
--sn.
Local Firmware Files
--file identifies the firmware format from the file contents, not the extension. It accepts these formats:
- Official ZIP package: the CLI verifies the package manifest and firmware digest before flashing.
- Standalone Wuji
.binfirmware: the CLI flashes the file as-is. It has no manifest, so the CLI cannot verify its digest, device type, or version. The confirmation prompt marks the file asUNVERIFIED.
not a firmware file before the CLI connects to a device. If a standalone .bin file doesn’t match the target device type, flashing can still fail. The failure report then asks you to confirm that the firmware matches the target device type.
Read the Report
- One row per device:
Statusisok/skipped/failed, and theDetailcolumn carries the failure reason or skip note - Exit code: 0 unless a device
failed(skippeddoesn’t count as failure) — ready for script assertions --checkexits 0 whether or not updates exist, and returns 1 only when the query itself fails. To gate scripts on update availability, use thestatusfield in--jsonoutput
Examples
wuji upgrade --check gives a read-only overview of all devices:
wuji upgrade --all confirms the plan, then flashes each device in turn and prints a report:
Detail column says why:
Structured Output
--json prints a structured report with the same fields as the tables, for scripting. Flashing actions require --yes together with --json / --jsonl: