diff --git a/meshtastic/serial_interface.py b/meshtastic/serial_interface.py index 88f17de0..8d1397c6 100644 --- a/meshtastic/serial_interface.py +++ b/meshtastic/serial_interface.py @@ -94,10 +94,16 @@ def __repr__(self): def close(self) -> None: """Close a connection to the device""" - if self.stream: # Stream can be null if we were already closed - self.stream.flush() # FIXME: why are there these two flushes with 100ms sleeps? This shouldn't be necessary - time.sleep(0.1) - self.stream.flush() - time.sleep(0.1) + if hasattr(self, "stream") and self.stream and getattr(self.stream, "is_open", False): + try: + self.stream.flush() + time.sleep(0.1) + except Exception as e: + logger.debug(f"Exception during flush: {e}") + try: + self.stream.close() + except Exception as e: + logger.debug(f"Exception during close: {e}") + self.stream = None logger.debug("Closing Serial stream") StreamInterface.close(self)