mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-11 13:04:10 +08:00
63c3e0561a
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.
29 lines
1.3 KiB
Plaintext
29 lines
1.3 KiB
Plaintext
# do not edit this file, it will be overwritten on update
|
|
|
|
ACTION=="remove", GOTO="hid2hci_end"
|
|
SUBSYSTEM!="usb", GOTO="hid2hci_end"
|
|
|
|
# Variety of Dell Bluetooth devices - match on a mouse device that is
|
|
# self powered and where a HID report needs to be sent to switch modes
|
|
# Known supported devices: 413c:8154, 413c:8158, 413c:8162
|
|
ATTR{bInterfaceClass}=="03", ATTR{bInterfaceSubClass}=="01", ATTR{bInterfaceProtocol}=="02", \
|
|
ATTRS{bDeviceClass}=="00", ATTRS{idVendor}=="413c", ATTRS{bmAttributes}=="e0", \
|
|
RUN+="hid2hci --method=dell --devpath=%p", ENV{HID2HCI_SWITCH}="1"
|
|
|
|
# Logitech devices
|
|
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"
|
|
|
|
# When a Dell device recovers from S3, the mouse child needs to be repoked
|
|
# Unfortunately the only event seen is the BT device disappearing, so the mouse
|
|
# device needs to be chased down on the USB bus.
|
|
ATTR{bDeviceClass}=="e0", ATTR{bDeviceSubClass}=="01", ATTR{bDeviceProtocol}=="01", ATTR{idVendor}=="413c", \
|
|
ENV{REMOVE_CMD}="/sbin/udevadm trigger --action=change --subsystem-match=usb --property-match=HID2HCI_SWITCH=1"
|
|
|
|
# CSR devices
|
|
ATTR{idVendor}=="0a12|0458|05ac", ATTR{idProduct}=="1000", RUN+="hid2hci --method=csr --devpath=%p"
|
|
|
|
LABEL="hid2hci_end"
|