Arduino (using Arduino IDE or PlatformIO) and ESP-IDF (using Espressif IoT Development Framework or PlatformIO) compatible library for setting up WiFi and OTA (Over The Air)
- ArduinoOTA (using the Arduino IDE, PlatformIO and using
upload_protocol = espota
or using the esp IDF command line options,espota
) - Upload via Web UI
- via HTTP interface in browser
- Via command line. Example:
curl -X POST -H "X-Flash-Mode: firmware" -H "Content-Type: application/octet-stream" --data-binary "@/path/to/firmware.bin" http://<device-ip>:<port-number>/
- Or use the included upload.py script:
python ./upload.py -u http://192.168.1.10:81 ./build/firmware.bin
- Upload from URI (client driven).
Add the following to libs_deps
for ESP32:
Johboh/ConnectionHelper@^3.0.4
For ESP8266, use the legacy 2.x version:
Johboh/ConnectionHelper@^2.0.5
Search for ConnectionHelper
by johboh
in the library manager. See note about version above.
Note: Need ESP32 core v3.0.4 until this issue has been fixed. If you get issues with undefined reference to
lwip_hook_ip6_input'`, try a different ESP32 core version. Need at least 3+ for C++17 support.
In your existing idf_component.yml
or in a new idf_component.yml
next to your main component:
dependencies:
johboh/connectionhelper:
version: ">=3.0.4"
You need to have two app partitions in your parition table to be able to swap between otas, as well as the otadata
section. This is an example for a 4MB flash:
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, , 16K
otadata, data, ota, , 8K
phy_init, data, phy, , 4K
coredump, data, coredump, , 64K
ota_0, app, ota_0, , 1500K
ota_1, app, ota_1, , 1500K
spiffs, data, spiffs, , 800K
To set partition table, save above in a file called partitions_with_ota.csv
. For ESP-IDF, specify to use this one using menuconfig. For platform I/O, add the following to your platformio.ini
: board_build.partitions = partitions_with_ota.csv
- ESP32 (tested with platform I/O [email protected] / [email protected] / [email protected] / [email protected] on ESP32-S2 and ESP32-C3)
- 2.x-version: ESP8266 (tested with platform I/O [email protected] / [email protected])
Newer version most probably work too, but they have not been verified.
- None