diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index e4438e09db..1e9b46cb1c 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -114,10 +114,14 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin): :param only_list_usb: If true, only usb ports are listed """ base_list = [] - for port in serial.tools.list_ports.comports(): + try: + port_list = serial.tools.list_ports.comports() + except TypeError: # Bug in PySerial causes a TypeError if port gets disconnected while processing. + port_list = [] + for port in port_list: if not isinstance(port, tuple): port = (port.device, port.description, port.hwid) - if not port[2]: # HWID may be None if the port got disconnected while processing, the device is not USB or the system doesn't report the type. + if not port[2]: # HWID may be None if the device is not USB or the system doesn't report the type. continue if only_list_usb and not port[2].startswith("USB"): continue