ayushsharma82/ElegantOTA

C++docs.elegantota.pro

The original over-the-air update library for wireless microcontrollers (since 2019).

esp8266otaelegantotaupdateesp32overtheairarduinoespressiffirmwarefs
스타 성장
스타
1k
포크
166
주간 성장
+4
이슈
1
5001k
2023년 1월2024년 3월2025년 6월2026년 9월
README

ElegantOTA Banner

Latest release   Build status   Last commit   License

The original over-the-air update library for wireless microcontrollers (since 2019).

ElegantOTA gives your microcontroller a polished web portal for over-the-air firmware and filesystem updates. Point a browser at /update, drop in a .bin, and watch it land - with live progress, transfer rate, and a capacity check that catches an oversized image before a single byte is written.

No HTML, no CSS, no JavaScript. Three lines of code.

ElegantOTA in action

Features

  • 🔥 Quick & simple OTA procedure - firmware and filesystem images
  • 📊 Live progress, transfer rate, and byte counts as the flash is written
  • 🛟 Capacity check up front, so an oversized build is rejected before it half-writes
  • 🔒 MD5 integrity verification and optional HTTP Basic auth
  • 🌗 Light & dark portal themes, keyboard reachable, readable down to 320px
  • 🎷 No need to learn HTML/CSS/JS
  • 🛫 Ready to use within 3 lines of code

Supported MCUs

Platform Notes
ESP32 Including S2, S3, C3 and C6 variants
RP2040 (+WiFi) e.g. Raspberry Pi Pico W - requires a LittleFS partition
RP2350 (+WiFi) e.g. Raspberry Pi Pico 2 W - requires a LittleFS partition
ESP8266 Legacy - maintained, but new projects should prefer ESP32 or RP2350

[!IMPORTANT] RP2040 / RP2350 users: these boards stage the incoming image inside the filesystem region, so a LittleFS partition is mandatory. In the Arduino IDE, pick Tools > Flash Size > 2MB (Sketch 1MB, FS 1MB) or similar. A bare RP2040/RP2350 without a WiFi chip cannot run ElegantOTA.


Installation

Arduino IDE

Sketch > Include Library > Manage Libraries… → search for ElegantOTA → Install.

PlatformIO

lib_deps =
  ayushsharma82/ElegantOTA@^4.0.0

; ElegantOTA supports several architectures, and PlatformIO will otherwise try
; to resolve dependencies for all of them. Without this you will hit build errors.
lib_compat_mode = strict

If you already have a .pio/libdeps folder, delete it before rebuilding.


Quick start

The whole integration is three lines - an include, a begin(), and a loop():

#include <WiFi.h>
#include <WebServer.h>
#include <ElegantOTA.h>          // 1

WebServer server(80);

void setup() {
  WiFi.mode(WIFI_STA);
  WiFi.begin("ssid", "password");
  while (WiFi.status() != WL_CONNECTED) delay(500);

  server.on("/", []() {
    server.send(200, "text/plain", "Hi! This is ElegantOTA Demo.");
  });

  ElegantOTA.begin(&server);     // 2
  server.begin();
}

void loop() {
  server.handleClient();
  ElegantOTA.loop();             // 3
}

Open http://<device-ip>/update in a browser and you have the portal.

Full sketches live in examples/ - Demo for the synchronous webserver, AsyncDemo for ESPAsyncWebServer.

Async mode

ElegantOTA can serve its routes through ESPAsyncWebServer instead of the built-in synchronous server. Enable it with a build flag:

build_flags = -D ELEGANTOTA_USE_ASYNC_WEBSERVER=1

The Arduino IDE has no way to set build flags, so there you edit ELEGANTOTA_USE_ASYNC_WEBSERVER in src/ElegantOTA.h directly. You cannot run the synchronous WebServer and ESPAsyncWebServer in the same firmware - pick one. See the async mode guide for the per-platform TCP dependencies.


Documentation

Installation, integration, security and feature guides: docs.elegantota.pro


Looking for more? Upgrade to Pro.

ElegantOTA Lite covers a solid project end to end. ElegantOTA Pro adds the pieces a shipped product tends to need:

  • Two extra OTA modes - Direct Download (the device fetches firmware from a URL itself) and Auto Update (update channels)
  • Toggle OTA modes at runtime
  • Hardware ID & firmware version on the UI
  • Whitelabel / branding
  • Commercial license

It is also a fantastic way to support the time that goes into building and maintaining the library.

ElegantOTA Pro

Available at the official store (store.softt.io).


Contributing

Every contribution is highly appreciated. Spotted a bug? Open an issue or a pull request so it can be fixed for everyone.

Feature requests: open an issue and I'll look at adding it in a future release.

Contributors are asked to sign the CLA, and participation is governed by the Code of Conduct.


License

ElegantOTA open-source edition is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

If you are planning to use ElegantOTA in a commercial project, please consider purchasing ElegantOTA Pro, which comes with the less restrictive SOFTT Commercial License 1.3.

관련 저장소
arendst/Tasmota

Alternative firmware for ESP8266 and ESP32 based devices with easy configuration using webUI, OTA updates, automation using timers or rules, expandability and entirely local control over MQTT, HTTP, Serial or KNX. Full documentation at

CGNU General Public License v3.0tasmotafirmware
tasmota.github.io/docs
24.7k5.2k
wled/WLED

Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!

C++European Union Public License 1.2lightesp8266
kno.wled.ge
18.6k4.3k
SpacehuhnTech/esp8266_deauther

Affordable WiFi hacking platform for testing and learning

COtherwifiarduino
deauther.com
15k2.8k
esphome/esphome

ESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.

C++Otherhome-automationiot
esphome.io
11.7k5.6k
platformio/platformio-core

Your Gateway to Embedded Software Development Excellence :alien:

PythonPyPIApache License 2.0iotembedded
platformio.org
9.4k904
nodemcu/nodemcu-firmware

Lua based interactive firmware for ESP8266, ESP8285 and ESP32

CMIT Licensenodemculua
nodemcu.readthedocs.io
7.9k3.1k
tzapu/WiFiManager

ESP8266 WiFi Connection manager with web captive portal

C++MIT Licenseesp8266configuration-portal
tzapu.com/esp8266-wifi-connection-manager-library-arduino-ide/
7.3k2.1k
bblanchon/ArduinoJson

📟 JSON library for Arduino and embedded C++. Simple and efficient.

C++MIT Licensearduinoc-plus-plus
arduinojson.org
7.2k1.2k
ExpressLRS/ExpressLRS

High Performance Open Source Radio Control Link

CGNU General Public License v3.0rclora
5.3k1.5k
martin-ger/esp_wifi_repeater

A full functional WiFi NAT Router (and now also a WiFi Repeater)

CMIT Licenseesp8266nat
5.3k981
blinker-iot/blinker-library

An IoT Solution,Blinker library for embedded hardware. Works with Arduino R4, ESP32.

C++MIT Licensearduinoesp8266
diandeng.tech
5.2k236
ct-Open-Source/tuya-convert

A collection of scripts to flash Tuya IoT devices to alternative firmwares

PythonPyPIMIT Licensetuyatuya-smart
5.1k523