Skip to content

Releases: LEKPCSTEAM/ESP32-OTA-Client

v1.2.0

Choose a tag to compare

@LEKPCSTEAM LEKPCSTEAM released this 16 Oct 07:57
8a4f3e5

Highlights

  • Verified updates: size and sha256 from the manifest are checked while streaming, before Update.end(); a mismatch aborts.
  • Robust downloads: Range resume, 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: deviceId URL, setDeviceKey, setCACert, check-ins, install reports, signed download URLs.
  • 4 MB boards: new FactoryUpdater example (factory updater + one ota_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

Choose a tag to compare

@LEKPCSTEAM LEKPCSTEAM released this 14 May 11:05
c1d091f

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

Choose a tag to compare

@LEKPCSTEAM LEKPCSTEAM released this 25 Dec 10:55
ca61994

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

Choose a tag to compare

@LEKPCSTEAM LEKPCSTEAM released this 18 Dec 07:01
0391077

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

Choose a tag to compare

@LEKPCSTEAM LEKPCSTEAM released this 16 Dec 11:00
697afcd

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

Choose a tag to compare

@LEKPCSTEAM LEKPCSTEAM released this 15 Dec 16:12

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)