Re: Two devices, same USB ID: one needs HID, the other doesn't. How to solve this?
From: Hans Verkuil <hidden>
Date: 2012-01-13 13:29:17
Also in:
linux-input
On Friday, January 13, 2012 12:16:51 Andy Walls wrote:
Hans Verkuil [off-list ref] wrote:quoted
Hi! I've made a video4linux driver for the USB Keene FM Transmitter. See: http://www.amazon.co.uk/Keene-Electronics-USB-FM-Transmitter/dp/B003GCHPDY/ref=sr_1_1?ie=UTF8&qid=1326450476&sr=8-1 The driver code is here: http://git.linuxtv.org/hverkuil/media_tree.git/shortlog/refs/heads/keene Unfortunately this device has exactly the same USB ID as the Logitech AudioHub USB speaker (http://www.logitech.com/en-us/439/3503). The AudioHub has HID support for volume keys, but the FM transmitter needs a custom V4L2 driver instead. I've attached the full lsusb -v output of both devices, but this is the diff of the two: $ diff keene.txt audiohub.txt -u--- keene.txt 2012-01-13 11:10:48.265399953 +0100 +++ audiohub.txt 2012-01-13 11:09:45.185398935 +0100@@ -1,5 +1,5 @@ -Bus 007 Device 009: ID 046d:0a0e Logitech, Inc. +Bus 003 Device 004: ID 046d:0a0e Logitech, Inc.Device Descriptor: bLength 18 bDescriptorType 1@@ -12,7 +12,7 @@ idProduct 0x0a0e bcdDevice 1.00 iManufacturer 1 HOLTEK - iProduct 2 B-LINK USB Audio + iProduct 2 AudioHub Speaker iSerial 0 bNumConfigurations 1 Configuration Descriptor:@@ -22,9 +22,8 @@ bNumInterfaces 3 bConfigurationValue 1 iConfiguration 0 - bmAttributes 0xa0 + bmAttributes 0x80 (Bus Powered) - Remote Wakeup MaxPower 500mA Interface Descriptor: bLength 9@@ -152,7 +151,7 @@ bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report - wDescriptorLength 22 + wDescriptorLength 31 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor:As you can see, the differences are very small. In my git tree I worked around it by adding the USB ID to the ignore list if the Keene driver is enabled, and ensuring that the Keene driver is disabled by default. But is there a better method to do this? At least the iProduct strings are different, is that something that can be tested in hid-core.c? Regards, HansMaybe it doesn't matter, but what do the Report Descriptors look like? http://www.slashdev.ca/2010/05/08/get-usb-report-descriptor-with-linux/
Attached the new lsusb outputs, this time with the report descriptor. Note that if I plug in the Keene transmitter, then no input device is created: Jan 13 14:25:12 tschai kernel: [ 1686.020166] usb 7-4: new full-speed USB device number 3 using ohci_hcd Jan 13 14:25:12 tschai kernel: [ 1686.248735] generic-usb 0003:046D:0A0E.0009: hiddev0,hidraw4: USB HID v1.10 Device [HOLTEK B-LINK USB Audio ] on usb-0000:00:16.0-4/input2 Compare that to what happens when the audiohub is plugged in: Jan 13 14:25:49 tschai kernel: [ 1722.820125] usb 3-4: new high-speed USB device number 6 using ehci_hcd Jan 13 14:25:49 tschai kernel: [ 1722.973529] hub 3-4:1.0: USB hub found Jan 13 14:25:49 tschai kernel: [ 1722.973960] hub 3-4:1.0: 4 ports detected Jan 13 14:25:49 tschai kernel: [ 1723.250629] usb 3-4.4: new full-speed USB device number 7 using ehci_hcd Jan 13 14:25:49 tschai kernel: [ 1723.390888] input: HOLTEK AudioHub Speaker as /devices/pci0000:00/0000:00:16.2/usb3/3-4/3-4.4/3-4.4:1.2/input/input12 Jan 13 14:25:49 tschai kernel: [ 1723.391176] generic-usb 0003:046D:0A0E.000A: input,hidraw4: USB HID v1.10 Device [HOLTEK AudioHub Speaker] on usb-0000:00:16.2-4.4/input2 I'm no expert on usb and HID, so I hope someone can point me to a better solution. Regards, Hans
Attachments
- audiohub.txt [text/plain] 7451 bytes · preview
- keene.txt [text/plain] 6864 bytes · preview