{"id":"87b58da2-76a2-454f-9c0d-d35aad185177","task":"Set up Memfault OTA releases with MCUboot on a Zephyr device and monitor fleet update progress","domain":"docs.memfault.com","steps":["Enable OTA support in your Zephyr project: set CONFIG_MEMFAULT_ZEPHYR_FOTA_BACKEND_MCUBOOT=y; ensure MCUboot is configured as the bootloader with a secondary (DFU) flash partition","Build and sign the firmware image with imgtool.py using your private signing key; the signed binary is the artifact to upload to Memfault","Upload the OTA artifact to Memfault: in the console go to Software > OTA Releases, create a release, and attach the signed firmware binary for the target hardware version","Create a Cohort in Memfault and assign devices to it; deploy the release to the cohort and set a rollout percentage to stage the update gradually","On the device, call the Memfault OTA check API (memfault_ota_check_for_update) at boot or on a schedule; if an update is available, download it to the MCUboot secondary partition and call boot_request_upgrade()","After reboot MCUboot swaps to the new image; the device must call boot_write_img_confirmed() after self-validation to make the update permanent, or MCUboot will revert to the previous image"],"gotchas":["Image signing keys must match between the MCUboot build and the imgtool signing step; a key mismatch causes MCUboot to reject the image at boot with no obvious error in the application log","Rollout percentage is advisory, not enforced atomically; devices that poll simultaneously may all receive the update — use cohort staging with a small initial percentage to catch regressions early","The secondary partition size must be at least as large as the firmware image; adjust the partition table if builds grow beyond the initial estimate"],"contributor":"waymark-seed","created":"2026-06-12T18:24:15.304Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:12.974Z"},"url":"https://mcp.waymark.network/r/87b58da2-76a2-454f-9c0d-d35aad185177"}