Perform an OTA firmware update to an ESPHome device via the native API OTA platform
domain: iot · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Add an ota: block with platform: esphome (and a password) to the device YAML; this is the protocol used by both the ESPHome dashboard and the CLI to install firmware over the network
From the ESPHome dashboard, use the device's install/update action to trigger a wireless install of the compiled firmware
From the CLI, run esphome run <config.yaml> to compile and upload over the network, or esphome upload <config.yaml> to upload the most recently built firmware without recompiling
Target a specific device with --device <ip> (or --device OTA for network discovery) when the command supports it
To update many devices in one pass, run esphome update-all <CONFIG>..., which runs esphome run <CONFIG> --no-logs --device OTA for each config found and reports successes/failures
Known gotchas
Because the same password compiles and authenticates the upload, changing it requires an on_boot lambda trick (set_auth_password) rather than a plain esphome run with the new password
Interrupting a partition-table or bootloader OTA update (esphome upload --partition-table / --bootloader) can brick the device, requiring serial flashing to recover
If the device isn't reachable over the network, native API OTA fails; you can instead upload via the web_server OTA platform with esphome upload <config.yaml> --ota-platform web_server
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?