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

Postby daniel-alsen » Mon Mar 16, 2026 10:30 am

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.

Sprite
Espressif staff
Espressif staff
Posts: 10617
Joined: Thu Nov 26, 2015 4:08 am

Re: ESP32-S3 - Device reset loop and USB re-enumeration when trying to run esptool commands over USB serial in own app

Postby Sprite » Tue Mar 17, 2026 3:57 am

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