Problem Description
I am attempting to flash an ESP32-CAM module using an Arduino Uno as the USB-to-serial converter. Despite several attempts, I keep encountering a "serial exception error: Write timeout". Below is a detailed description of the steps I've taken, the hardware setup, and the scripts used in my attempts to solve this problem.
I have tried two hardware setups. One using a voltage divider between the RX pin on the esp32 to ensure that the voltage was at 3.3V this was using 2Kohm and 1Kohm resistor.
My suspicion is that the board itself is faulty. or my power supply from the arduino is not good. I have checked that by powering an LED. I dont have access to multi meter.
Hardware Setup
- ESP32-CAM Module
- Arduino Uno
- Connections:
- ESP32-CAM VCC -> Arduino 5V
- ESP32-CAM GND -> Arduino GND
- ESP32-CAM U0T (TX) -> Arduino TX (Pin 1)
- ESP32-CAM U0R (RX) -> Arduino RX (Pin 0)
- GPIO0 -> GND (for flashing mode)
- RESET (EN) -> GND on the Arduino (for resetting the ESP32-CAM)
I used this code for the voltage divider set up. However I don't think the IDE setup or the code is the issue as it fails on this every time:
Sketch uses 265589 bytes (20%) of program storage space. Maximum is 1310720 bytes.
Global variables use 17008 bytes (5%) of dynamic memory, leaving 310672 bytes for local variables. Maximum is 327680 bytes.
esptool.py v4.6
Serial port COM6
Connecting......
A serial exception error occurred: Write timeout
Note: This error originates from pySerial. It is likely not a problem with esptool, but with the hardware connection or drivers.
For troubleshooting steps visit: Troubleshooting - ESP32 - — esptool.py latest documentation
Failed uploading: uploading error: exit status 1
#include <arduino.h>
// ESP32-CAM Serial1 test
// for loopback test connect pins 14 and 15
#define RXD1 14
#define TXD1 15
void setup() {
// initialize both serial ports:
Serial.begin(115200);
Serial1.begin(115200, SERIAL_8N1, RXD1, TXD1);
Serial.println();
Serial.println("serial1 test Rx pin 14 Tx pin 15");
}
void loop() {
// read from port 1, send to port 0:
if (Serial1.available()) {
int inByte = Serial1.read();
Serial.write(inByte);
}
// read from port 0, send to port 1:
if (Serial.available()) {
int inByte = Serial.read();
//Serial.write(inByte);
Serial1.write(inByte);
}
}
I tried using the command prompt power-shell, I also got a write timeout issue.
It would be nice if someone could help me to see if I am making a hardware mistake or if my board is just faulty. I am also using a non standard USB for the Arduino. I have confirmed the Arduino flashes fine. Any help is welcomed, and appreciated.

