Corrected udev rule for Logitech devices
PATCH 1/1 Corrected udev rule for Logitech devices
The *real* history of this file is a nightmare. Now that it's back in the bluez project, fix the problems that were added while it was in udev.
1) Only hiddev* devices provide the ioctl interface hid2hci uses to switch from HID->HCI for --method=logitech-hid. (inquiring minds can look in the kernel git tree at drivers/hid/usbhid/hiddev.c)
2) hidraw* devices don't belong to subsystem=usb (they are subsystem=hidraw). This means that the udev rule that matched based on hidraw* would never have been run anyway because of the early-out subsystem!=usb on line 4.
This fix is going to cause major regressions in distros because there is currently no way provided by bluez to *NOT* run hid2hci.
Many, many users (and maintainers) mistakenly believe that because the keyboard and mouse works when the vid/pid of their device is matched by the hidraw* rule, that "bluetooth" must be working. Of course, what's really happening is the keyboard and mouse are working as HID input devices instead.
--- scripts/bluetooth-hid2hci.rules | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
scripts/bluetooth-hid2hci.rules +1 -3
@@ -11,9 +11,7 @@ ATTR{bInterfaceClass}=="03", ATTR{bInterfaceSubClass}=="01", ATTR{bInterfaceProt RUN+="hid2hci --method=dell --devpath=%p", ENV{HID2HCI_SWITCH}="1" # Logitech devices -KERNEL=="hiddev*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[35e]", \ - RUN+="hid2hci --method=logitech-hid --devpath=%p" -KERNEL=="hidraw*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[4abc]|c71[34bc]", \ +KERNEL=="hiddev*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[345abce]|c71[34bc]", \ RUN+="hid2hci --method=logitech-hid --devpath=%p" ENV{DEVTYPE}!="usb_device", GOTO="hid2hci_end"
Signature · 1 line
1.7.4.1
Hi Peter,
Quoted 21 lines · Peter Hurley
The *real* history of this file is a nightmare. Now that it's back in the bluez project, fix the problems that were added while it was in udev.
1) Only hiddev* devices provide the ioctl interface hid2hci uses to switch from
HID->HCIfor --method=logitech-hid. (inquiring minds can look in the kernel git tree atdrivers/hid/usbhid/hiddev.c)
2) hidraw* devices don't belong to subsystem=usb (they are subsystem=hidraw). This means that the udev rule that matched based on hidraw* would never have been run anyway because of the early-out subsystem!=usb on line 4.This fix is going to cause major regressions in distros because there is currently no way provided by bluez to *NOT* run hid2hci.
Many, many users (and maintainers) mistakenly believe that because the keyboard and mouse works when the vid/pid of their device is matched by the hidraw* rule, that "bluetooth" must be working. Of course, what's really happening is the keyboard and mouse are working as HID input devices instead.
Quoted 4 lines
Signed-off-by Peter Hurley <[email protected]>--- scripts/bluetooth-hid2hci.rules | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-)
Applied (without the signed-off-by line since we don't use that). Thanks!
Johan