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.

  1. Click Upload.
  2. When it says “Connecting…”, press and hold BOOT.
  3. Release when the upload actually starts.

Common causes makers run into

Wrong port

Unplug the board and watch which port disappears. That's the one you want.

USB driver mismatch / flaky USB chip

CP2102/CH340/CH9102 boards need the right driver. If the port is unreliable, treat it as a driver problem until proven otherwise.

Stuff connected to boot strapping pins

Disconnect sensors/modules during upload. Anything tugging on GPIO0/GPIO2/GPIO12/GPIO15 can block boot.

Wrong board definition

Pick a sane default like “ESP32 Dev Module” first. Fancy board profiles sometimes assume different reset/boot wiring.

Bottom line

“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