I have a number of these boards and some will download and boot without interaction on the device Reset/GPIO0 buttons. a few require me to manually press the reset/GPIO0 buttons manually for every time i need to reload/reset to get it into bootmode.
it may be marginal design on the modules i am using or some modules have the wrong/defective components on them causing the ambiguity between modules, default timing on the esptool.py parameters, i have no idea. But hacking into the hardware is not my first choice for resolution.
the folks at expressif had the foresight to build into the esptool.py the notion of having custom_hard_reset (a reset out of the bootloader) and a custom_reset (an automatic reset into the serial bootloader) sequences. Thus allowing very discrete control over the timing of the RTS and DTR pins and the assertions/negations of them, including customized timing sequence or each state and delays independently for each.
How in PIO can i introduce a customized timing configuration file for the esptool ? preferably via the platform.ini file.
Woo Hoo !!
Even though nobody replied, i stumbled upon the answer on my own. thought i’d reply to myself to help someone else.
i discovered how to employ a custom esptool configuration file, which allows you complete discrete control over the RTS/DTR bits and delays between transitions for managing bootloading and resetting the device.
if you create a custom config file for the esptool.cfg, and place it in the same directory where your platform.ini file is at for your project, you now have as customized sequencing of the RTS/DTR bits for managing the bootloader as the esptool.py (or exe) will look in this directory first and override the parameters it sees in that file from what it has for defaults from invocation.
hope this helps someone with a stubborn device that wont reset or bootload without physically diddling the Reset or GPIO0 buttons.
here is the reference to the esptool dox that describe the options and how to use them
below is a esptool.cfg file that will allow anyone with stubborn ESP32-S3 modules
to bootload WITHOUT touching the board’s Reset/Boot buttons to get it into bootload mode.
now you can develop remotely if desired !
# esptool.cfg file to configure internal settings of esptool
[esptool]
#reset_delay = 0.75
# Overriding the default reset sequence to work in an abnormal environment (prolonged delay):
# the sequence below worked for the ESP32-S3 Lilygo T3=Display boards that wouldnt go into bootmode
# with the normal default reset sequence.
# 29-Jan-2025 rpb This seems to reliably work for all the ESP32S3 dev modules (esressif or chinese copies) that i have
# to allow a bootload to occur WITHOUT needing to touch the RESET/BOOT buttons on the module.
# For platformIO projects, place this into the directory where your platform.pio file is, and
# for an arduino project, place this file into the directory where your main .ino file source is at.
# The esptool will pick this file up and sequence the RTS/DTR bits as the describe in
# https://docs.espressif.com/projects/esptool/en/latest/esp32/esptool/configuration-file.html
#
custom_reset_sequence = D0|R0|W1.1|D1|R1|W.05|D0|R0
very good john… was wondering if anyone actually read this or not…
yep, fixed all my bootload problems with various ESP’s, and its REALLY simple to do as you discovered.
i was going nuts with frustration on this, since i dont want to be tied to where the computer is, just to do the bootload if i have to use my fingers to do so. now i can once again be doing software elsewhere on these things.
hope this gets passed around as i have seen others doing goofy things like adding capacitors to the hardware and such for a couple of years. no one actually went down this path.