Re: [Regression] Logitech BT mouse unusable after commit 532223c8ac57 (still in 6.1-rc8)

From: Bastien Nocera
Date: Wed Dec 07 2022 - 04:04:54 EST


On Tue, 2022-12-06 at 15:58 +0100, Rafael J. Wysocki wrote:
> Bastien, Jiri,
>
> Commit 532223c8ac57 ("HID: logitech-hidpp: Enable HID++ for all the
> Logitech
> Bluetooth devices") caused my Logitech Bluetooth mouse to become
> unusable.
>
> Appended is the change I need to make it work again (note that adding
> the
> device ID to unhandled_hidpp_devices[] doesn't help, so there must be
> some
> significant enough difference in how the two cases are handled in the
> stack).
>
> Here's what I get in the log without the patch below:
>
> [   36.710574] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
> [   36.710592] Bluetooth: HIDP socket layer initialized
> [   36.724644] hid-generic 0005:046D:B016.0001: unknown main item tag
> 0x0
> [   36.725860] input: Bluetooth Mouse M336/M337/M535 Mouse as
> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-
> 7:1.0/bluetooth/hci0/hci0:1/0005:046D:B016.0001/input/input14
> [   36.728036] input: Bluetooth Mouse M336/M337/M535 Consumer Control
> as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-
> 7:1.0/bluetooth/hci0/hci0:1/0005:046D:B016.0001/input/input15
> [   36.728823] input: Bluetooth Mouse M336/M337/M535 Keyboard as
> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-
> 7:1.0/bluetooth/hci0/hci0:1/0005:046D:B016.0001/input/input18
> [   36.731550] hid-generic 0005:046D:B016.0001: input,hidraw0:
> BLUETOOTH HID v12.03 Mouse [Bluetooth Mouse M336/M337/M535] on
> 9c:b6:d0:96:8e:c8
> [   36.833039] logitech-hidpp-device 0005:046D:B016.0001: unknown
> main item tag 0x0
> [   36.999064] logitech-hidpp-device 0005:046D:B016.0001: Device not
> connected
>
> and here's what I get with it:
>
> [   43.642546] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
> [   43.642559] Bluetooth: HIDP socket layer initialized
> [   43.652898] hid-generic 0005:046D:B016.0001: unknown main item tag
> 0x0
> [   43.653833] input: Bluetooth Mouse M336/M337/M535 Mouse as
> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-
> 7:1.0/bluetooth/hci0/hci0:1/0005:046D:B016.0001/input/input14
> [   43.655025] input: Bluetooth Mouse M336/M337/M535 Consumer Control
> as /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-
> 7:1.0/bluetooth/hci0/hci0:1/0005:046D:B016.0001/input/input15
> [   43.655400] input: Bluetooth Mouse M336/M337/M535 Keyboard as
> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-
> 7:1.0/bluetooth/hci0/hci0:1/0005:046D:B016.0001/input/input18
> [   43.657521] hid-generic 0005:046D:B016.0001: input,hidraw0:
> BLUETOOTH HID v12.03 Mouse [Bluetooth Mouse M336/M337/M535] on
> 9c:b6:d0:96:8e:c8
>
> The only difference seems to be that in the former case the logitech-
> hidpp
> driver tries to bind to the device, but I guess that is expected. 

There really shouldn't be that much difference between the 2 paths,
except that hid-logitech-hidpp.c will check that the device supports
HID++ in its report descriptors, and then start talking to it to check
whether it's connected.

Maybe the device doesn't support HID++?

Can you try running src/tools/hidpp-list-features from
https://github.com/cvuchener/hidpp on the hidraw device for the mouse?

> However,
> when the device ID is added to unhandled_hidpp_devices[], the
> messages look
> exactly like in the "good" case, but the mouse still doesn't work.

Given that this should be called without ever talking to the device,
that tells me that there might be a logic bug in the hid-core that uses
->probe. Benjamin?