# ESP32 “waiting for download” or “wrong boot mode detected”

> Fix an ESP32 stuck on waiting for download or wrong boot mode detected: GPIO 0, the BOOT and EN buttons and what to unplug.

Canonical: https://roboticsengineering.in/fix/esp32-wrong-boot-mode-waiting-for-download/ | Published: 2026-11-03 | Updated: 2026-11-03

**GPIO 0 was held low at reset, so the chip waits for a firmware download instead of running your sketch.** Release it, or use the BOOT and EN buttons in the right order.

## What the message means

At reset the ESP32 reads GPIO 0. Low means download mode; high means run the stored program. A module, jumper or button holding the pin low keeps it in download mode.

## Fix it in this order

1. Unplug anything connected to GPIO 0 and press EN (reset).
2. If uploading fails to connect, hold BOOT, tap EN, then release BOOT when the upload says Connecting.
3. After a successful upload, press EN once to start the program.
4. Remove jumpers that tie GPIO 0 to ground on ESP32-CAM boards after flashing.
5. Check the other boot pins too: GPIO 2, 12 and 15 should not be forced by wiring at reset.

## Why it happens

The message “waiting for download” means GPIO 0 was held low at reset, so the chip started its serial bootloader instead of your sketch. Something connected to GPIO 0, or a jumper left in place, causes it.

Disconnect whatever pulls GPIO 0 low, then press the EN (reset) button. On an ESP32-CAM, remove the GPIO 0 to GND jumper after uploading and reset the board.

## If you see this, do this

| You see | Do this |
| --- | --- |
| It runs after you unplug a wire | That wire was pulling GPIO 0 low. |
| Upload fails to connect | See the failed to connect page. |

## Related

[ESP32 failed to connect](https://roboticsengineering.in/fix/esp32-failed-to-connect-timed-out-waiting-for-packet-header/), [invalid header](https://roboticsengineering.in/fix/esp32-invalid-header-flash-read-err/).

Last reviewed: November 2026. These are the usual causes and the order that finds them fastest. Test on your own board; clones and cables differ.
