ESP32 WROOM-32E module not booting on custom PCB / no programming mode / resetting

Thread Starter


Joined Oct 19, 2022
Hi all,

For a project I created a custom PCB with EasyEDA / JLCPCB.
It's a LiPo powered PCB with ESP32-WROOM-32E module, Lipo charging module, 3.3V Voltage regulator and MPU6050 Acc/Gyro unit. Charging via USB-C connector. The ESP-32 module being programmed by using a programming header (and external FTDI232 module).

I received the assembled PCB's from JLCPCB and tried to upload my first Arduino sketch. With success at the first upload! However when looking in the serial monitor in the Arduino IDE it looks like the ESP is resetting itself before it can even boot and repeating the following output.

rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
mode:DIO, clock div:1
ho 0 tail 12 room 4
entry 0x400806b4

After the first succesful upload (i tried on 2 PCB's) i was unable to upload a new sketch receiving the following error:
A fatal error occurred: Failed to connect to ESP32: Invalid head of packet (0x5F)

I'm doubting 1) if my PCB schematic is completely correct designed or that my configuration is causing the recurring reset, or 2) that I uploaded a sketch with incorrect board type / partition scheme causing the issue. Normally I would force the ESP in programming/download mode using the BOOT and EN buttons but unfortunately I designed by PCB without these buttons :( Is there a workarond possible to get it in flash/programming mode?

It's my first PCB design ever and i'm still learning. I used some example schematics that i found online, while creating this PCB.

Below my schematic. I hope someone is able to have a look into my schematic and confirm that the ESP and programming header is configured properly. I case i misplaced a component e.g. capacitor of resistor please let me know if i can quick fix this by for example desolder it. If the schematic is fine but the resetting error is cause by the sketch, please le me know if i could use a workaround and get it in flash mode and try to upload a simple sketch. In case more info is desired please let me know.


Thanks for your help!
Last edited by a moderator:


Joined Jan 27, 2019
Welcome to AAC.

You do have BOOT and EN of course, connected to DTR and RTS. The first place to check is the uploader you are using. Try manually uploading using or turn up the debug level in the Arduino IDE to see if the DTR and CTS are doing what they should to get it into programming mode.