Manually Entering Bootloader for Programming

I’d like to prove I can manually enter the bootloader of the ESP32 Dev Kit C since that will eventually be a requirement for a board spin I plan to do. I know that’s not the preferred method etc. but it seems like it’ll be necessary for my constraints so please don’t consider hardware changes an option.

So far entering the bootloader manually has seemed impossible. Here is my understanding of the process:

  1. Connect 3v3 power, GND, TX and RX pins to external programmer module (FTDI Friend)
  2. Hold down enable button, wait ~1 second
  3. Hold down boot, wait ~1 second
  4. Release enable, wait ~1 second
  5. Release boot
  6. Start platformio upload command

Is there something more I’m missing?
This is my .ini file
platform = espressif32
board = esp32dev
framework = espidf
monitor_speed = 115200
monitor_filters = esp32_exception_decoder
upload_protocol = esptool
board_build.partitions = partitions.csv

No, you have to execute a reset while BOOT (I assume you mean GPIO0 by that) is low. You release the enable button before pressing down boot. See Home · espressif/esptool Wiki · GitHub.

  1. Hold down boot
  2. while boot is pressed down, press reset once
  3. release boot button

That process is no different than mine because reset is initiated on the Release of the enable button I.E. when the EN pin goes high.

1 Like

I have narrowed down the problem to not being related to my button pressing procedure as I see the UART output that is expected when the bootloader starts. Instead it seems like the CP2102 is preventing the FTDI friend from transmitting a logic low. Instead logic goes from ~3.3 to about 2.7 for low.

You’re right, with the exception that you start pushing the reset button as a first thing, but that doesn’t hurt anyways.

How exactly do you have those FTDI FT chip and that Silicon Labs CP2102 chips connected to each other? There are two serial converts in there? Or are you seeing the 2.7V directly on the TX of the ESP32? You’ve crossed the connection between the ESP32 and your serial converter (RX->TX) right?

CP2102 is the onboard uart to serial and it was interacting with the offboard uart serial that i was using to test programming for a POC. Desoldering the jumper between esp32 tx and cp2102 tx solved the problem.