]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
HID: logitech-hidpp: Silence protocol errors on newer lightspeed receivers
authorMavroudis Chatzilazaridis <mavchatz@protonmail.com>
Thu, 2 Oct 2025 19:24:37 +0000 (19:24 +0000)
committerJiri Kosina <jkosina@suse.com>
Tue, 14 Oct 2025 09:55:02 +0000 (11:55 +0200)
When logitech-hidpp tries to communicate with an unreachable device paired
to a 046d:c547 lightspeed receiver, the following message is printed to the
console:

hidpp_root_get_protocol_version: received protocol error 0x08

This occurs because this receiver returns 0x08 (HIDPP_ERROR_UNKNOWN_DEVICE)
when a device is unreachable, compared to 0x09 (HIDPP_ERROR_RESOURCE_ERROR)
that the older receivers return.

This patch silences this harmless error by treating
HIDPP_ERROR_UNKNOWN_DEVICE the same as HIDPP_ERROR_RESOURCE_ERROR
in hidpp_root_get_protocol_version().

There are other checks for HIDPP_ERROR_RESOURCE_ERROR found in
battery-related functions, however this receiver does not trigger them when
the device is disconnected.

Signed-off-by: Mavroudis Chatzilazaridis <mavchatz@protonmail.com>
Tested-by: Stuart Hayhurst <stuart.a.hayhurst@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-logitech-hidpp.c

index aaef405a717ee95fb0a517cb66d531a738561708..1d46783384ede5675a800e69d8f809ab0e5aa6ca 100644 (file)
@@ -969,7 +969,8 @@ static int hidpp_root_get_protocol_version(struct hidpp_device *hidpp)
        }
 
        /* the device might not be connected */
-       if (ret == HIDPP_ERROR_RESOURCE_ERROR)
+       if (ret == HIDPP_ERROR_RESOURCE_ERROR ||
+           ret == HIDPP_ERROR_UNKNOWN_DEVICE)
                return -EIO;
 
        if (ret > 0) {