[Ovmsdev] Firmware size approaching 4 MB limit

Craig Leres leres at xse.com
Wed Feb 25 07:34:48 HKT 2026


On 2/24/26 04:40, Mark Webb-Johnson via OvmsDev wrote:
> OK, I have just committed this. The two new commands are:
> 
>   * ota partitions list
>   * ota partitions upgrade [-noconfirm]
> 
> 
> Rollback is via:
> 
>   * wget http://api.openvehicles.com/firmware/ota/v3.1/main/
>     partitions.bin <http://api.openvehicles.com/firmware/ota/v3.1/main/
>     partitions.bin>
>   * esptool.py -p <path-to-usb> write_flash 0x8000 partitions.bin 
> 
> 
> General approach to manual upgrade:
> 
>  1. Upgrade to firmware supporting this feature (3.3.005-711-g4feca695
>     or later)
>  2. Copy running ota firmware to factory
>  3. Set to boot from flash and reboot
>  4. Use ‘ota partitions upgrade’ to upgrade
>  5. Reboot
> 
> 
> Items still to be addressed:
> 
>   * Documentation (including rollback procedure).
>   * Modify partitions.csv to use this new format (when ready for
>     production).
>   * Web interface (in particular concept of factory vs ota), if
>     necessary (haven’t checked this).
>   * OTA flash builds. We will need a way to support 6MB builds for those
>     that can use them. I suggest to change GetOVMSProduct() to return
>     v3.5 for these modules that are running this new 6MB capable
>     partition table. Then on server we can build a production release
>     final 4MB firmware including this support, and then use v3.5 tree to
>     build future 6MB only builds. The ‘ota flash’ system would
>     automatically support that and give people time to upgrade (as well
>     as new users with 4MB partition modules for many months).
>   * Investigate any simple way to make this a simple one-command
>     (current ota->factory, boot factory, reboot, partitions upgrade,
>     reboot).
> 
> 
> For the moment, please try this out and let me know if you find any 
> problems. We can then decide on the items still to be addressed.

I took a run at this with my dev module:

     OVMS# ota
     Hardware:          OVMS WIFI BLE BT cores=2 rev=ESP32/3; MODEM SIM7600
     Firmware:          3.3.005-711-g4feca695-dirty/ota_1/main (build 
idf v3.3.4-854-g9063c8662 Feb 24 2026 15:08:43)
     Partition type:    v3-f12 (factory, ota1, ota2)
     Partition table:   0x8000
     Running partition: ota_1
     Boot partition:    ota_1
     Factory image:     3.3.005-20-g60be058e
     OTA_O image:       3.3.005-700-g0a804e40-dirty
     OTA_1 image:       3.3.005-711-g4feca695-dirty
     OVMS# ota copy ota_1 factory
     OTA copy ota_1 (08454144) -> factory (00010000) size 4194304
     Error: ESP32 error #258 starting OTA operation
     OVMS#

I couldn't find 258 so I internet searched it and learned that it is 
ESP_ERR_NOT_SUPPORTED (from components/esp32/include/esp_err.h, might be 
worth displaying in hex given that's how it's defined).

I checked and my esp-idf is up to date.

		Craig

sea 12 % pwd
/home/sea/u0/leres/esp/esp-idf
sea 13 % git log | head
commit 9063c8662ca5d67b5490c1503bd4377b380feed3
Author: Michael Balzer <balzer at expeedo.de>
Date:   Tue Jan 27 17:34:34 2026 +0100

     Fix mutex priority inheritance bug in spi_flash component:
       backport of esp-idf commit aea2fe08162e1ba86ad0189178c1f1cf29238bbd,
       see https://github.com/espressif/esp-idf/issues/5116
       and https://github.com/espressif/esp-idf/issues/7580

commit 75bdad1e05dbbfe2ef79e8398749ff6aaa7deb92
sea 17 % pwd
/home/sea/u0/leres/src/OVMS.V3
sea 18 % git log | head
commit 4feca695d922f26b5f3864fe43c6855b8f223675
Author: Mark Webb-Johnson <mark at webb-johnson.net>
Date:   Tue Feb 24 20:21:30 2026 +0800

     Support for ota 0+1 partition table format, and 6MB firmware

commit 1241912b48628e89947e1600f86365b4b174c6c8
Merge: 92f93554 141bad50
Author: Michael Balzer <dexter at dexters-web.de>
Date:   Sun Feb 22 15:57:13 2026 +0100



More information about the OvmsDev mailing list