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.
Signed-off-by: Peter Hurley <[email protected]>
---
scripts/bluetooth-hid2hci.rules | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/scripts/bluetooth-hid2hci.rules b/scripts/bluetooth-hid2hci.rules
index 3b36629..0687c8a 100644
--- a/scripts/bluetooth-hid2hci.rules
+++ b/scripts/bluetooth-hid2hci.rules
@@ -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"
--
1.7.4.1
Hi Peter,
On Fri, Jun 03, 2011, Peter Hurley wrote:
> 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.
>
> 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