Why does ESP32 upload fail with “No serial data received”?
This error means esptool opened the port, but it never got a valid response back. That can be boot mode timing… or it can be the port/cable/driver lying to you.
Start here (fast sanity checks)
- Close Serial Monitor. Close any other program that might be holding the port (second Arduino IDE window, VS Code serial extension, PlatformIO monitor, etc.).
- Swap the USB cable. Data cable, not charge-only. Also try a different port on your PC.
- Confirm the port is stable. If the port disappears/reappears randomly, fix drivers or power first.
Make the ESP32 enter bootloader mode
Even if “No serial data received” sounds like a cable problem, boot mode is still the #1 fix.
- Click Upload.
- When it says “Connecting…”, press and hold BOOT.
- Release when the upload actually starts.
Common causes makers run into
Unplug the board and watch which port disappears. That's the one you want.
CP2102/CH340/CH9102 boards need the right driver. If the port is unreliable, treat it as a driver problem until proven otherwise.
Disconnect sensors/modules during upload. Anything tugging on GPIO0/GPIO2/GPIO12/GPIO15 can block boot.
Pick a sane default like “ESP32 Dev Module” first. Fancy board profiles sometimes assume different reset/boot wiring.
“No serial data received” is usually either (1) the port is busy/flaky or (2) the ESP32 never entered bootloader mode. Free the port, swap the cable, then use the BOOT button during “Connecting…”.
Related: What does “Failed to connect to ESP32” mean? · Install Arduino IDE and drivers · Board not showing up in ports