I have about 2000 IoT devices world-wide built with 2.4.0. I have pushed a dozen or more updates to them over the past few years and the updates have always worked perfectly. I use ESPhttpUpdate.update.
Today I thought it was time I tried 2.7.0. I have discovered that the platforms built with 2.4.0 hang forever in ESPhttpUpdate.update() when installing a system built with 2.7.0. However, if the device is manually reset, the new version has indeed been loaded and funs fine. Unfortunately, it is very awkward for users of my device to access the reset button themselves so this effectively prevents me from using 2.7.0.
I also tested with a device loaded with a 2.7.0 build and it can load another version built with 2.7.0 without a problem.
My application size is very close to the limit. The 2.4.0 size is 959391 and the 2.7.0 size is 972333. I always take care to set FLASH Size 4M (1M SPIFFS) to insure this size will work with OTA. I have metrology in place to monitor free dynamic memory on running systems and neither version ever falls below 20k free.
So my question is: how can I push a 2.7.0 build onto existing systems built with 2.4.0?
Many thanks for your time.