Update ESP32 firmware over the air from anywhere
Install new firmware on an ESP32 from your browser, over the internet and without a USB cable: export the .bin, upload it in Clavda, and confirm the new version.
Updated 1 min read
Arduino's built-in OTA only works on the same local network as the board. With the ClavdaOTA library in your firmware, the board downloads updates through Clavda instead, so you can update it from anywhere it has Wi-Fi, behind any router.
What you need
- An ESP32 already connected to Clavda and showing green under Devices.
- The partition scheme from setup, Minimal SPIFFS (1.9MB APP with OTA) or
min_spiffs.csv, flashed once over USB. Without two app slots there is no room to install an update.
Install an update
Give the build a new version
Change CLAVDA_FIRMWARE_VERSION at the top of the sketch for every build you upload, from "1.0.0" to "1.0.1", say:
#define CLAVDA_FIRMWARE_VERSION "1.0.1"
Clavda counts an update as done only when the board reconnects reporting the new version, so a build with an unchanged version never shows as installed.
Build the firmware binary
Choose Sketch → Export Compiled Binary. Upload <sketch>.ino.bin from the sketch's build folder, not the .merged.bin or the bootloader.
Build the project. The file to upload is .pio/build/<env>/firmware.bin.
Upload it in Clavda
Open the device's Connect sheet, upload the .bin, and press Update now.
Let the board install it
The board downloads the new firmware, checks it, and restarts into it. Once it reconnects reporting the new version, the update shows as done.
Version strings
Start with a letter or digit and use up to 31 letters, digits, dots, underscores, plus signs or
hyphens: 1.0.1, 2026.10.15 and v2-beta all work.
Keep updates reliable
- Call
ClavdaOTA.loop()on every pass throughloop(), and avoid longdelay()calls. Updates install from there. - Keep your firmware small enough for one app slot: with the Minimal SPIFFS scheme, each slot is 1.9 MB.