Fix “Unable to verify flash chip connection (No serial data received.)”
esptool reached the bootloader but the link dropped while it checked the flash chip. Usually power sag, a GPIO6–11 conflict, or a too-high upload speed.
Community draft — report a mistake
What you see
esptool.py v4.8.1
Serial port COM3
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: 08:3a:f2:xx:xx:xx
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
A fatal error occurred: Unable to verify flash chip connection (No serial data received.).
Failed uploading: uploading error: exit status 2esptool.py v4.8.1 Serial port COM3 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: 08:3a:f2:xx:xx:xx Uploading stub... Running stub... Stub running... Changing baud rate to 921600 Changed. Configuring flash size... A fatal error occurred: Unable to verify flash chip connection (No serial data received.). Failed uploading: uploading error: exit status 2
esptool’s stub loader checks the external flash chip before writing anything to it. This error means that check produced no reply at all: the chip went quiet partway through.
The usual causes are physical. The upload speed is too high for the cable, the supply sags when flash is probed, or something is wired to the pins the module uses for its own flash.
Quick fix — try in order
- 1
Lower Upload Speed to 115200
The failure happens right after “Changing baud rate to 921600”. If 115200 works, the cable or USB-serial chip cannot hold the higher rate.
- 2
Power the board properly during upload
The flash chip draws a burst of current when it is first probed. Remove loads from 5 V/3.3 V and use a short cable straight into the PC, not a power bank or hub.
- 3
Disconnect anything on GPIO6–GPIO11
On ESP32-WROOM/WROVER modules these pins are wired to the internal flash. Anything attached to SD0–SD3, CLK or CMD on the header breaks flash access.
- 4
Erase the flash, then upload
Tools → Erase All Flash Before Sketch Upload → Enabled, upload once, then set it back.
Why it happens
Why after the stub is already running?
At this point esptool asks the stub to read the flash chip's ID. If the chip resets (brownout) or the high-speed link garbles the reply, esptool hears nothing back.
Different text in brackets
The bracket repeats the underlying error — “Invalid head of packet”, “Timed out waiting for packet header” and so on. Those point to noise or speed problems; see Invalid head of packet.
Could the flash chip be dead?
Rarely. If it fails even at 115200 with nothing connected and good power, the module's flash may be damaged — common on boards that saw 5 V on a 3.3 V pin.
Board-specific notes
ESP32-CAM: The camera and SD slot share power with the flash. Upload with the camera ribbon connected but no SD card, from a 5 V supply that can give 500 mA.
Did this fix it?
Thanks — that helps us keep this page right.