8000 pyboard: Fix espxx boards hanging in bootloader after reset button. · micropython/micropython@9f5c97c · GitHub
[go: up one dir, main page]

Skip to content

Commit 9f5c97c

Browse files
committed
pyboard: Fix espxx boards hanging in bootloader after reset button.
Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
1 parent 05bb260 commit 9f5c97c

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

tools/pyboard.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,15 @@ def __init__(
287287
for attempt in range(wait + 1):
288288
try:
289289
if os.name == "nt":
290-
# Windows does not set DTR or RTS by default
291290
self.serial = serial.Serial(**serial_kwargs)
292-
self.serial.dtr = True
293-
self.serial.rts = False
294291
self.serial.port = device
292+
portinfo = list(serial.tools.list_ports.grep(device)) # type: ignore
293+
if portinfo and portinfo[0].manufacturer != "Microsoft":
294+
# ESPxx boards and ESP32 boards use RTS/CTS for flashing and boot mode selection
295+
# DTR False, to avoid using the reset button will hang the MCU in bootloader mode
296+
# RTS False, to prevent pulses on rts on serial.close() that would POWERON_RESET an ESPxx
297+
self.serial.dtr = False # DTR False = gpio0 High = Normal boot
298+
self.serial.rts = False # RTS False = EN High = MCU enabled
295299
self.serial.open()
296300
else:
297301
self.serial = serial.Serial(device, **serial_kwargs)

0 commit comments

Comments
 (0)
0