Hi everyone,
I’m having an issue using ESP Web Tools to update firmware on an ESP32 device (ESP32-2432S028R, standard ESP32-WROOM, 4MB flash).
Situation
- Board: ESP32-2432S028R (4MB flash)
- Partition scheme: Huge APP
- Firmware size: ~1.5MB
- Flash Download Tool works perfectly
- ESP Web Tools reports successful flashing
- But after flashing via Web Tools, the device does not boot
Serial Log After Web Tools Flash
rst:0x10 (RTCWDT_RTC_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
invalid header: 0xffffffff
…
This repeats indefinitely.
Important Details
If I flash using ESP Flash Download Tool:
PD_V5_1.ino.bin @ 0x10000
→ The device boots perfectly.
But using ESP Web Tools with the same .ino.bin and offset 65536 (0x10000):
→ Flashing completes successfully
→ Device enters boot loop with invalid header: 0xffffffff
What I Have Verified
- Firmware
.ino.binis correct - File size is correct (~1.5MB)
- Server is serving correct binary (verified download manually)
- Board was fully functional before Web Tools flash
- Flash size in Arduino is set to 4MB
- Huge APP partition scheme
new_install_prompt_eraseis set to false
My Current Manifest (Update Only)
{
“manifest_version”: 1,
“name”: “PD”,
“builds”: [
{
“chipFamily”: “ESP32”,
“parts”: [
{
“path”: “PD_V5_1.ino.bin”,
“offset”: 65536
}
]
}
]
}
Question
Is ESP Web Tools unable to properly patch flash parameters (mode/frequency/size) like esptool write_flash does?
Do I need to always include:
- bootloader.bin @ 0x1000
- partitions.bin @ 0x8000
- boot_app0.bin @ 0xE000
- app.bin @ 0x10000
even for simple update cases?
Or is there a known limitation when flashing only the app partition via Web Serial?
Goal
I want:
- Web-based firmware update
- Preserve NVS (WiFi credentials)
- Avoid full chip erase
- Behavior equivalent to Flash Download Tool
Any insights or similar experiences would be appreciated.
Thanks!