diff --git a/esptool/targets/esp32s3.py b/esptool/targets/esp32s3.py index 7531f4ae0..04c3c0ef4 100644 --- a/esptool/targets/esp32s3.py +++ b/esptool/targets/esp32s3.py @@ -352,6 +352,16 @@ def hard_reset(self): if uses_usb_otg: self._check_if_can_reset() + try: + # Clear force download boot mode to avoid the chip being stuck in download mode after reset + # workaround for issue: https://github.com/espressif/arduino-esp32/issues/6762 + self.write_reg( + self.RTC_CNTL_OPTION1_REG, 0, self.RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK + ) + except Exception: + # Skip if response was not valid and proceed to reset; e.g. when monitoring while resetting + pass + print("Hard resetting via RTS pin...") HardReset(self._port, uses_usb_otg)()