I'm using a 4Mb WROOM module partitioned 1.2Mb APP/1.5Mb SPIFF
Something I forgot to mention is that as you I also use a significant amount of resources, but the size of my binary is currently 1.44M, which in this case, a partition like yours would not meet; the partition I have mentioned in other hand do meet, but my original concern was to know if they consider a duplicated section on that scheme: 1,9+
1,9+0,19 (< 4) .
Then, even though the term 'OTA' is not explicitly mentioned in the title of the above Arduino scheme list, it would be compatible anyway, right? From what I read, when dealing with OTA, the core need to allocate each partition at specific sections of the memory, namely Ap0 and Ap1, that's why I thought there were strict conditions do work with this - I mean, if OTA was not explicitly stated, no OTA compatible.
BTW, have you already used ElegantOTA library?
People praise this one a lot.
The file sent OTA is normally compressed but obviously how much it compresses depends on its contents. The loader uncompresses it directly into application space.
My biggest concern is the system's ability to recover, rolling back to the original firmware in case of upload problem, and even though the data is compressed during the upload, if there is no redundancy of the currrent version+updated version, this will be an issue.
if that helps. I use the Espressif "preferences" library for storing incoming data because it incorporates wear levelling, I'm almost certain it stores in the SPIFFS partition.
I'm confused: Are you using another approach, such as a self made OTA-based bootloader? The question arises because when dealing with these libraries I don't care of the nuances of how it was implemented in the guts, at the most just configuring the allocation for each partition.
I also make use of the 'preferences' library, but only to store regular data.