udev fails to call hid2hci for Logitech USB Bluetooth adapter
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
bluez (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Binary package hint: udev
This bug is related to Bug #444420, but I was told to file it as a new bug here.
Here are the rules I have for Logitech USB Bluetooth dongles in /lib/udev/
# Logitech devices
KERNEL=="hiddev*", ATTRS{idVendor}
RUN+="hid2hci --method=
KERNEL=="hidraw*", ATTRS{idVendor}
RUN+="hid2hci --method=
This is an upgrade from Lucid (on which hid2hci was called) to Maverick (at which point, hid2hci was no longer called).
As seen in lsusb output, my adapter should have matched the second line:
Bus 001 Device 006: ID 046d:c70c Logitech, Inc. BT Mini-Receiver (HID proxy mode)
Bus 001 Device 005: ID 046d:c70b Logitech, Inc. BT Mini-Receiver (HID proxy mode)
Bus 001 Device 003: ID 046d:0b02 Logitech, Inc. BT Mini-Receiver (HID proxy mode)
I removed the KERNEL condition from the rules file:
# Logitech devices
ATTRS{idVendor}
RUN+="hid2hci --method=
ATTRS{idVendor}
RUN+="hid2hci --method=
I restarted udev and re-inserted the adapter. While everything seems to work correctly now, I am told that this is wrong because it could somehow overmatch something.
Attached is the output of `udevadm monitor` when udev is running with the original Maverick 70-hid2hci.rules file and the adapter is inserted.
ProblemType: Bug
DistroRelease: Ubuntu 10.10
Package: udev 162-2
ProcVersionSign
Uname: Linux 2.6.35-22-generic x86_64
NonfreeKernelMo
Architecture: amd64
Date: Mon Oct 11 11:16:01 2010
InstallationMedia: Ubuntu 10.04 LTS "Lucid Lynx" - Release amd64 (20100429)
MachineType: System manufacturer System Product Name
ProcCmdLine: BOOT_IMAGE=
ProcEnviron:
LC_COLLATE=C
PATH=(custom, user)
LANG=en_US.utf8
SHELL=/bin/bash
SourcePackage: udev
dmi.bios.date: 02/24/2010
dmi.bios.vendor: American Megatrends Inc.
dmi.bios.version: 0703
dmi.board.
dmi.board.name: P6X58D PREMIUM
dmi.board.vendor: ASUSTeK Computer INC.
dmi.board.version: Rev 1.xx
dmi.chassis.
dmi.chassis.type: 3
dmi.chassis.vendor: Chassis Manufacture
dmi.chassis.
dmi.modalias: dmi:bvnAmerican
dmi.product.name: System Product Name
dmi.product.
dmi.sys.vendor: System manufacturer
tags: | added: patch |
I made the following change in /lib/udev/ rules.d/ 70-hid2hci. rules and now it works.
KERNEL=="hidraw*", ATTRS{idVendor} =="046d" , ATTRS{idProduct }=="c70[ 4abc]|c71[ 34bc]", \
changed to:
KERNEL= ="hiddev* |hidraw* ", ATTRS{idVendor} =="046d" , ATTRS{idProduct }=="c70[ 4abc]|c71[ 34bc]", \
I don't understand this, because it seems from the `udevadm monitor` output that my adapter (c70[bc]) really was a hidraw device. However, the results speak for themselves and this change has fixed the problem for me, while maintaining a fairly tight KERNEL condition. I suspect that if other people's Logitech USB Bluetooth dongles are still not working with this patch, then they may want to make a similar change to the previous line in 70-hid2hci.rules, but I am not touching that for now, because it does not affect me.
I remember a while ago, there was only one Logitech rule, and it used the | (or) operator for the KERNEL condition, just like my fix does. Does anyone know why they were separated into different rules? Because, obviously, they were under-matching by doing so.
I have attached a proper diff patch for those who are interested.