From 15401a3ae83c5e5652d30544eeaf189585066f52 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sun, 12 Oct 2025 20:53:46 +0200 Subject: [PATCH] tools/mpremote: Fix exception when using pts. Setting RTS/DTR raises "Inappropriate ioctl for device" for pts devices. Signed-off-by: iabdalkader --- tools/mpremote/mpremote/transport_serial.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/mpremote/mpremote/transport_serial.py b/tools/mpremote/mpremote/transport_serial.py index eccdd4c1ea..b3584945bc 100644 --- a/tools/mpremote/mpremote/transport_serial.py +++ b/tools/mpremote/mpremote/transport_serial.py @@ -38,7 +38,7 @@ import ast, io, os, re, struct, sys, time import serial import serial.tools.list_ports -from errno import EPERM +from errno import EPERM, ENOTTY from .console import VT_ENABLED from .transport import TransportError, TransportExecError, Transport @@ -107,8 +107,15 @@ class SerialTransport(Transport): def close(self): # ESP Windows quirk: Prevent target from resetting when Windows clears DTR before RTS - self.serial.rts = False - self.serial.dtr = False + try: + self.serial.rts = False + self.serial.dtr = False + except OSError as er: + if er.errno == ENOTTY: + # Some devices (like QEMU pts) don't support RTS/DTR control + pass + else: + raise er self.serial.close() def read_until(