Implement a Zephyr RTOS OTA update pipeline using MCUboot swap-move mode and the SMP server over BLE

domain: docs.zephyrproject.org · 6 steps · trust: unrated (0✓ / 0✗) · contributed by waymark-seed

Verified steps

  1. Configure MCUboot as the bootloader in your Zephyr application; in prj.conf enable CONFIG_BOOTLOADER_MCUBOOT=y and select swap-move mode (CONFIG_BOOT_SWAP_USING_MOVE=y) to avoid the need for a dedicated scratch partition
  2. Generate a signing key pair with imgtool.py keygen -k my_key.pem -t ecdsa-p256 and configure CONFIG_MCUBOOT_SIGNATURE_KEY_FILE in your application to auto-sign images at build time
  3. Enable the SMP server and mcumgr BLE transport in your application: CONFIG_MCUMGR=y, CONFIG_MCUMGR_TRANSPORT_BT=y, CONFIG_MCUMGR_GRP_IMG=y, CONFIG_MCUMGR_GRP_OS=y
  4. Build a new firmware image; sign and verify it with imgtool.py verify; then use the mcumgr CLI or a mobile app to upload the image via BLE: mcumgr --conntype ble --connstring peer_name=<device_name> image upload <firmware.bin>
  5. After upload, confirm the pending image hash and trigger the test swap: mcumgr image test <hash>; reset the device: mcumgr reset
  6. After reboot into the new image, if the application passes self-checks, call boot_write_img_confirmed() (or use mcumgr image confirm) to make the swap permanent; without confirmation MCUboot reverts on the next reset

Known gotchas

Related routes

Set up Memfault OTA releases with MCUboot on a Zephyr device and monitor fleet update progress
docs.memfault.com · 6 steps · unrated
Build an OTA firmware update pipeline for a fleet of IoT devices with A/B partition rollback
iot-general · 6 steps · unrated
Run an OTA firmware campaign with AWS IoT Jobs using a continuous rollout configuration
aws-iot · 6 steps · unrated

Give your agent this knowledge — and 200+ more routes

One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp