ESP32 Flash error: Failed to communicate with the flash chip
Posted: Tue Jun 10, 2025 7:16 pm
I recently produced two prototype boards at JLCPCB with ESP32-WROVER-E modules attached to an FTDI FT2232HL UART chip. I'm currently unable to flash firmware onto either board and the idf.py software tells me:
As you can see, the UART chip is communicating with the ESP32, and I receive serial console messages from both chips like:
This tells me the board is powered correctly and is booting to the expected initial unflashed-firmware state.
Every resource I've found online suggests that the flash operation not being able to communicate with the flash chip indicates a hardware error. I've followed the schematics for reference designs and even used my footprint and this configuration previously on other boards with no problems.
The suggestion that it's a hardware error with the ESP32 seems unrealistic given it's happening on two separate boards, so I think it must be something I've done wrong, but I'm at a loss to figure out what it might be.
I'm attaching schematics for my board. I've verified the ESP32 is soldered correctly and my footprint has all the correct paste, mask, and connections for the heat transfer/gnd pad on the bottom of the chip so I don't think it's a connection issue (again since UART and power work I think the chip is soldered to the board correctly).
Thanks in advance for any insight you might be able to provide!
ESP32 Schematic:

ESP32 Auto Program Schematic:

FTDI FT2232HL Schematic:

USB-C Connector Schematic:

Code: Select all
Connecting....
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 04:83:08:a9:29:48
Uploading stub...
Running stub...
Stub running...
WARNING: Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.
As you can see, the UART chip is communicating with the ESP32, and I receive serial console messages from both chips like:
Code: Select all
rst:0x10 (RTCWDT_RTC_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
...
This tells me the board is powered correctly and is booting to the expected initial unflashed-firmware state.
Every resource I've found online suggests that the flash operation not being able to communicate with the flash chip indicates a hardware error. I've followed the schematics for reference designs and even used my footprint and this configuration previously on other boards with no problems.
The suggestion that it's a hardware error with the ESP32 seems unrealistic given it's happening on two separate boards, so I think it must be something I've done wrong, but I'm at a loss to figure out what it might be.
I'm attaching schematics for my board. I've verified the ESP32 is soldered correctly and my footprint has all the correct paste, mask, and connections for the heat transfer/gnd pad on the bottom of the chip so I don't think it's a connection issue (again since UART and power work I think the chip is soldered to the board correctly).
Thanks in advance for any insight you might be able to provide!
ESP32 Schematic:

ESP32 Auto Program Schematic:

FTDI FT2232HL Schematic:

USB-C Connector Schematic:
