Thanks a lot for your help!
One more question:
What does the hard reset via RTS do to the chip? What happens in the ROM bootloader when that signal is received?
It's seem like it's a critical step to get the device back into booting mode again, and I can't do that by just toggling EN or combinations of IO0 and EN?
Best.
ESP32-S3 - Device reset loop and USB re-enumeration when trying to run esptool commands over USB serial in own app
-
daniel-alsen
- Posts: 9
- Joined: Sat Jan 24, 2026 9:22 am
Re: ESP32-S3 - Device reset loop and USB re-enumeration when trying to run esptool commands over USB serial in own app
As the TRM states, there's two parts to the RTS/DTR dance: overriding the boot mode and hard-resetting the chip. Overriding the boot mode means the chip will restart into download mode, regardless of the state of GPIO0. Resetting the chip, then, puts it into download mode so you can program flash etc. At the end, esptool.py normally removes the override and resets the chip again, causing it to boot from SPI flash. The bootloader itself isn't really affected by this, it does the same as if you were to make GPIO0 low and reset the chip yourself. (But do note that if you started the chip with GPIO0 lowered, removing the bootloader override still leaves the 'chip started with GPIO0 low' latched state, so you cannot boot into SPI flash that way. Although I seem to recall that for some chips esptool.py has some ways to reset while reloading that state; you'd need to look into that source code.)
Who is online
Users browsing this forum: trendictionbot and 2 guests
