From cbb310699386747c8925775779248666e30c097a Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Tue, 24 Feb 2026 14:40:43 -0500 Subject: [PATCH] device: recover from guessing the wrong number for direct-connected HID++ 1.0 devices --- lib/logitech_receiver/device.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/logitech_receiver/device.py b/lib/logitech_receiver/device.py index 7f4e0ad0..d241249e 100644 --- a/lib/logitech_receiver/device.py +++ b/lib/logitech_receiver/device.py @@ -183,13 +183,16 @@ class Device: self.descriptor = ( descriptors.get_btid(self.product_id) if self.bluetooth else descriptors.get_usbid(self.product_id) ) - if self.number is None: # for direct-connected devices get 'number' from descriptor protocol else use 0xFF - if self.descriptor and self.descriptor.protocol and self.descriptor.protocol < 2.0: - number = 0x00 + # for direct-connected devices get 'number' from descriptor protocol else use 0xFF + self.number = 0x00 if self.descriptor and self.descriptor.protocol and self.descriptor.protocol < 2.0 else 0xFF + try: # determine whether a direct-connected device is online + self.ping() + except exceptions.NoSuchDevice as e: + if self.number == 0xFF: # guessed wrong number? + self.number = 0x00 + self.ping() else: - number = 0xFF - self.number = number - self.ping() # determine whether a direct-connected device is online + raise e if self.descriptor: self._name = self.descriptor.name