ESP32-CAM will not upload: GPIO 0, FTDI wiring and reset

The ESP32-CAM has no USB chip on many boards, so upload needs an adapter, GPIO 0 held to ground and a steady 5 V supply. Follow the order below.

What the message means

To flash the chip it must start in download mode, which needs GPIO 0 low at reset. An external USB-serial adapter provides the link. Power is a common weak point.

Fix it in this order

  1. Connect the adapter: adapter TX to the board U0R (RX), adapter RX to the board U0T (TX), and ground to ground.
  2. Power the board with 5 V that can supply enough current. The adapter 3.3 V pin is usually too weak.
  3. Connect GPIO 0 to ground, then press the reset button to enter download mode, and start the upload.
  4. After the upload finishes, remove GPIO 0 from ground and press reset to run the sketch.
  5. Choose the AI Thinker ESP32-CAM board in the Arduino IDE if that is your module.
  6. If it still fails, see the failed to connect page and the camera init page.

Why it happens

The ESP32-CAM has no USB chip, so upload needs an FTDI adapter and a boot-mode step. GPIO 0 must be connected to GND while the board resets so it enters the upload mode, and the board needs a supply that can give enough current.

Connect GPIO 0 to GND, press the reset button, start the upload, then remove the jumper and reset again to run the sketch. Cross TX and RX between the adapter and the board, and power from 5 V.

If you see this, do this

You seeDo this
Connecting dots foreverGPIO 0 not low, or TX and RX crossed wrongly.
Resets during uploadWeak power. Use a better 5 V supply.

ESP32 failed to connect, camera init failed, ESP32-CAM vision streaming.

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.