OTA for microcontrollers
The same fleet, firmware and campaign workflow you use for Linux devices, brought to Cortex-M, Xtensa and RISC-V targets by a heap-free C SDK — managed from the same organization and the same account.
Validated on real hardware
These are the parts we have run full update cycles on ourselves. The SDK's porting layer covers other ESP-IDF and Zephyr targets — talk to us about yours.
ESP32
ESP32-S3 · ESP32-C6 · ESP32-WROOM
Port: ESP-IDF
Nordic
nRF54L15
Port: Zephyr
STM32
STM32 F439ZI · STM32 H753ZI
Port: Zephyr
Integrate the device SDK
A C SDK with no dynamic allocation and no thread of its own — your application owns the main loop and calls into it. It ships production ports for ESP-IDF and Zephyr, and a documented porting layer if you need another target. Apache-2.0 licensed; ask us for access.
Upload signed firmware
Upload an unencrypted MCUboot image and the server verifies its embedded Ed25519 or RSA-2048 signature before accepting it. Encrypted images stay sealed, so the server checks a signature is present and leaves verification to MCUboot on the device. ESP32 images use an OTA-Pulse envelope whose detached signature is optional by default — turn on the strict setting to have unsigned ESP32 uploads refused.
Roll out as a campaign
Group your devices, start a campaign, and watch install results land per device. A running campaign can be paused and resumed, or aborted — and once aborted, rolled back. Multi-phase campaigns advance on their own once a phase succeeds, though that automatic advance is still in beta.
Install safely on device
The SDK streams the image into the inactive bank, hashing as it writes, and resumes an interrupted download rather than restarting it. MCUboot swaps banks and stays the authoritative signature check at boot; if the new image never confirms healthy, the device reverts on its own.
Update devices that were never online
Not every microcontroller has a network. The SDK can take an update over BLE, or over a serial link on UART or USB, delivered by a technician running the Pulse Tool field utility next to the device. The image is signed, hashed and version-checked exactly as it would be over the network — the delivery path changes, the safety guarantees do not.
Our embedded Linux agent can also install from a local file you put on the device yourself. What is different here is the delivery: MCU brings its own transport, so nobody has to get the image onto the device first. A CAN and CAN-FD data plane exists for vehicle and industrial buses too, though it is experimental and off by default today.
One account, both fleets
MCU devices live under the same organization as your Linux devices, with the same team members and the same roles. You sign in to the OTA-Pulse console as usual and switch to the MCU fleet from the sidebar — there is no second login and no second invoice to reconcile.
Pricing
MCU fleets are billed at $0.45 per active device per month. Start with a free trial — moving to a paid plan is still set up with us directly while self-service MCU checkout is being built.