I have designed a schematic for a project using the ESP32-WROOM-32. The ESP32 will upload code (without having to press the boot button and this is a first hint at error), but the ESP32 continues to reboot after upload. I will note that I cannot connect the board to a computer without external power AND the micro-usb connected at the same time. Given the schematic, is there any hardware solutions that would help?

The schematic includes a GPS, MPU6050, LEDs for power and GPS connections, RGB LEDs for coded functions, ADC1115, and more. I am only notifying that the ESP32 is connected to other devices for the project. See the schematic images below. Here is the loop outputs to the serial port. The first output is what loops and the second is seen after resetting the ESP32.

First Output: rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0030,len:1184 load:0x40078000,len:13260 load:0x40080400,len:3028 entry 0x400805e4 ets Jun 8 2016 00:22:57

Second Output: rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371

Sheet 1/1 of custom ESP32 schematic. Sheet 2/2 of custom ESP32 schematic.

I assumed the board was not working due to it not being found with just the micro-usb. I am still unsure. My plan was to upload to the ESP from my own board without using another ESP32 module. I am using Arduino for my code uploads. I also built a prototype on a breadboard that worked, so I can only assume that my schematic is incorrect. If not, I will check my soldering, but please assume otherwise.

Here is the schematic I was using to build mine:


  • \$\begingroup\$ What's the part name of the anonymous voltage regulator? Also, Vin is what, 5V from USB? Something else? \$\endgroup\$
    – Lundin
    Feb 19 at 14:27
  • \$\begingroup\$ @Lundin The part is TLV751 for regulator. Also, Vin is an external power source (VBUS is the power from the USB, see sheet 1/2) but yes assume 5V. Thank you. \$\endgroup\$ Feb 19 at 14:43
  • \$\begingroup\$ The regulator looks OK then, far as I can tell. Is the 3.3V nice and stable? \$\endgroup\$
    – Lundin
    Feb 19 at 15:11
  • \$\begingroup\$ @Lundin The voltage is stable at 3.32 V at the regulator and the MCU VDD. I’ll check my soldering else where. \$\endgroup\$ Feb 19 at 16:54
  • \$\begingroup\$ @Lundin I have good news and bad news. The good news is that I got it working. The bad news is that I simply had a minor soldering short on a via to a pad of the ESP32. I sincerely appreciate your time. \$\endgroup\$ Feb 19 at 18:18

1 Answer 1


Beside tons of software related stuff that could cause bootloops (broken firmware, wrong partitioning, corrupted bootloader), the one apparent thing in your circuits are the missing pullup resistors on the bootstrapping pin IO0.

You definitely need those, because

  1. depending on how your programmer is configured to use DTR/RTS the internal pullup resistors might be too low to compensate the transistor leakage current (e.g. when the programmer is set to not use DTR/RTS and you rely on the buttons).
  2. when there is no programmer connected and the DTR/RTS lines are left floating, the transitors Q1 and Q2 will be in a very sensitive configuration. Any current induced in the copper traces connected to their base terminals will be amplified, which results in a very unstable voltage level at EN and IO0.

The device behaving differently after a Poweron-Reset and a Software-Reset (SW_RESET) also is one possible symptom I would expect from improper bootstrapping.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.