Linux 6.1 Demotes Logitech Bluetooth HID++ Over Lingering Problems
HID++ is the Logitech protocol built atop HID and used by most Logitech keyboards/mice going back years. HID++ offers more functionality than the standard HID protocol like supporting onboard profiles, force feedback, RGB effects, high resolution scrolling, reprogrammable controls, and more. The hope was to enable HID++ by default for all Logitech Bluetooth devices, and that's what happened back during the Linux 6.1 merge window and in the two months since that change was merged.
But today that change has been backed out since for a subset of users with Logitech mice, it turns out Linux 6.1 would have left them with a non-working mouse.
When it came to the blanket-enabling of HID++ for Logitech Bluetooth devices, the thinking/hope was that if the device didn't support HID++ it would then fallback to the plain HID driver. But in practice that isn't working out as planned, leading to this last-minute change backing out the feature from Linux 6.1.
A HID regression fix pull request was issued today that noted, "regression fix (revert) for catch-all handling of Logitech HID++ Bluetooth devices; there are devices that turn out not to work with this, and the root cause is yet to be properly understood. So we are dropping it for now, and it will be revisited for 6.2 or 6.3"
The pull was already merged and with the revert it elaborates on the problem:
hid-logitech-hidpp now binds on all bluetooth mice, but there are corner cases where hid-logitech-hidpp just gives up on the mouse. This leads the end user with a dead mouse.
Given that we are at -rc8, we are definitively too late to find a proper fix. We already identified 2 issues less than 24 hours after the bug report. One in that ->match() was never designed to be used anywhere else than in hid-generic, and the other that hid-logitech-hidpp has corner cases where it gives up on devices it is not supposed to.
So we have no choice but postpone this patch to the next kernel release.
The change will hopefully be re-attempted for Linux 6.2 but could get pushed back to 6.3 depending upon how testing goes and coming up with an adequate solution.