Repository navigation
Releases: LEKPCSTEAM/ESP32-OTA-Client
Release list
v1.2.0
Highlights
- Verified updates:
sizeandsha256from the manifest are checked while streaming, beforeUpdate.end(); a mismatch aborts. - Robust downloads:
Rangeresume, stall timeout, 10-minute deadline, no TLS client leak. - Rollback-aware: an image that rolled back is never installed again; failed updates back off.
- ESP32 OTA Web Manager integration:
deviceIdURL,setDeviceKey,setCACert, check-ins, install reports, signed download URLs. - 4 MB boards: new
FactoryUpdaterexample (factory updater + oneota_0),bootToFactory(),setAutoReboot(false). - Numeric version compare (
"1.10.0" > "1.9.0").
v1.1.0 sketches compile unchanged. See CHANGELOG.md for the full list, new error codes and behaviour changes.
What's Changed
- feat: verified, rollback-aware OTA and deviceId support (v1.2.0) by @LEKPCSTEAM in #5
Full Changelog: v1.1.0...v1.2.0
v1.1.0
What's Changed
- Add OTA support for combined firmware and filesystem updates by @LEKPCSTEAM in #4
Full Changelog: 1.0.3...v1.1.0
v1.0.3
Release Notes - ESP32-OTA-Client v1.0.3
🆕 New Features
Force Update Support
-
Added force field in server JSON response to trigger mandatory updates
-
When , the device will update regardless of version comparison
force: true -
Useful for critical security patches or hotfixes
Force Update Loop Prevention (EEPROM-based)
-
Problem: When is enabled, ESP32 would continuously reboot and update in a loop
force: true -
Solution: Store firmware filename in EEPROM after successful update
-
Before force update, compare new firmware filename with stored one
-
If filename matches (e.g., ) → skip update
firmware-v1.0.1-1766657621922.bin
📋 New API Methods
| Method | Description |
|---|---|
| getUpdateInfo() | Get cached update info including force flag |
| getLastInstalledFilename() | Get the last installed firmware filename from EEPROM |
| clearFirmwareRecord() | Clear EEPROM record to allow force update again |
v1.0.2
Release v1.0.2
New Features
HTTP Redirect Support
- Automatically follows HTTP redirects (301, 302, 307, 308)
- Maximum 5 redirect hops to prevent infinite loops
- Fixes "Download failed: 307" errors
HTTPS Support
- Added WiFiClientSecure for secure downloads
- Supports both HTTP and HTTPS firmware URLs
- Certificate validation disabled for compatibility
Technical Changes
- Added followRedirects() method to handle redirect responses
- Updated hasUpdate() to follow redirects when checking server
- Updated doUpdate() to support HTTPS and redirects
- Bumped version from 1.0.1 to 1.0.2
Bug Fixes
- Fixed OTA download failures when server returns redirect responses
- Resolved HTTP 307 Temporary Redirect errors
Compatibility
- Fully backward compatible
- No breaking changes
- Works with existing code without modifications
v1.0.1
Release v1.0.1
Features
-
Rollback Support: Added canRollback(), rollback(), and markAsValid() for managing firmware stability.
-
Partition Info: Added getBootPartition() and getNextUpdatePartition().
-
Examples: Added demonstrating self-test and manual rollback.
RollbackExample
Improvements
- Updated documentation with rollback workflow.
- Compatible with standard ESP32 OTA partition schemes.
v1.0.0
Release v1.0.0 - Initial Public Release 🚀
We are excited to announce the first official release of ESP32-OTA-Client! This lightweight library simplifies the implementation of Over-The-Air (OTA) firmware updates for ESP32 devices using a custom JSON API backend.
🌟 Key Features
-
Smart Update Checking:
hasUpdate(): Check for updates without downloading (perfect for UI notifications).update(): Perform the update immediately if available.checkUpdate(): Legacy one-step check and update.
-
User Feedback: Built-in callback to display download percentage via Serial, LCD, or Web UI.
onProgress -
JSON API Support: Works seamlessly with a simple JSON backend structure.
-
Flexible Triggers: Support for Manual (Button press), Periodic (Timer-based), or On-Boot update checks.
-
Robust Error Handling: Handles WiFi connection status and download integrity.
📦 Installation
PlatformIO: Add the following to your
platformio.ini
:
ini
lib_deps =
https://github.com/LEKPCSTEAM/ESP32-OTA-Client.git
📚 Usage Example
cpp
#include "ESP32OTAClient.h"
// Initialize with your API Endpoint
OTAClient ota("http://your-server/api/update", "1.0.0");
void setup() {
// Optional: Monitor progress
ota.onProgress([](int percent, int written, int total) {
Serial.printf("Progress: %d%%\n", percent);
});
}
void loop() {
// Check and update if available
ota.loop();
}
🔗 Documentation
See the
README for full API documentation and check the
examples/
folder for ready-to-use sketches.
Created by [LEKPCSTEAM](https://github.com/LEKPCSTEAM)