Skip to content

Change Partition Table through OTA - Over The Air (Arduino - PlatformIO) #10436

@brunofgc

Description

@brunofgc

Board

ESP32-C3

Device Description

Custom Board

Hardware Configuration

It's not relevant, cuz it works for OTA processes that have the same "partitions table scheme".
But, only power components and using BT and WiFi to build a "sensor gateway", no special hardware connected.

Version

v3.0.4

IDE Name

PlatformIO

Operating System

Windows 11

Flash frequency

40MHz

PSRAM enabled

yes

Upload speed

115200

Description

Hi @VojtechBartoska and everyone,

I’m working with an ESP32-C3 using PlatformIO and the Arduino framework, and I’ve run into an issue with updating devices in the field via OTA. The current partition table on the devices limits the maximum firmware size, and my new firmware is larger than what the current partition table allows.

I’ve successfully created a smaller, intermediate firmware that fits within the existing partition table and uses a new partition table configuration. However, even after flashing this intermediate firmware via OTA, it seems that the partition table on the device is not updated. As a result, when I try to upload the larger firmware (which would fit in the new partition layout), I still receive a "too large" error, indicating that the partition table remains unchanged.

I’m looking for a solution to remotely update the partition table via OTA so that I can upload the larger firmware without having to physically access the devices. Is there any way to perform this partition table update via OTA, since I have nowadays many many devices country wide (Brazil)?

Any guidance or suggestions on how to handle this situation would be greatly appreciated.

Thanks in advance for your help!

Sketch

A bigger firmware than it could fit on actual partition table.

Debug Message

[112397][E][Updater.cpp:163] begin(): too large 1351296 > 1310720

Other Steps to Reproduce

Steps:

  1. Install my original firmware using "Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)" partition_table
  2. Send a new firmware with partition_table with "NVS = 20 Kb, OTA = 8Kb, app0 = 1664Kb, app1 = 1664Kb, spiffs = 640Kb, coredump = 64Kb" using Updater.cpp OTA Method
  3. See the debug message from serial

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions