Firmware — OTA update (BOOTSEL / UF2)¶
RP2350 ships an unchangeable ROM mass-storage bootloader. We rely on it exclusively — no custom bootloader, no A/B slots, no signing ceremony just to flash.
Flow¶
- Host issues
rpbridge-ctl reboot-bootsel(or writes1to/sys/bus/usb/drivers/rpbridge/<dev>/reboot_bootsel). - Firmware calls
reset_usb_boot()and re-enumerates asRP2350mass-storage +PICOBOOTvendor device. - Host flashes via
picotool load -fxv rpbridge.uf2or drags the.uf2onto the mounted volume. - Device boots the new image and re-enumerates as RPBridge.
Integrity¶
- UF2 artefacts are signed with
minisign(Ed25519); the public key is embedded inrpbridge-ctl. rpbridge-ctl flashverifies the signature before rebooting into BOOTSEL — a bad signature aborts without touching the device.- Optional post-flash attestation (
CAPABILITIES.attestation == true) confirms the running firmware SHA-256 matches expectations.
Userspace one-liner¶
Under the hood the tool:
- verifies
rpbridge.uf2.minisig, - sends
SUBSYS_SYS / OP_REBOOT_BOOTSELover RPBP, - waits for BOOTSEL re-enumeration (polls udev),
- runs
picotool load -fxv, - waits for the RPBridge re-enumeration,
- queries capabilities to confirm version.
The whole round trip completes in under 3 seconds on a modern host.