USBHID bug, claiming all devices, ignoring quirks.

From: Galtor
Date: Wed Aug 05 2009 - 04:23:42 EST


Hi all.

I have a Antec Veris USB IR receiver, with USB ID 15c2:0043,
identifying itself as "SoundGraph iMON MultiMedia IR/Display". Below
is the ls -vvv.

In 2.6.30.4 kernel source this device is in hid_ignore_list[] :

... hid-core.c ...
{ HID_USB_DEVICE(USB_VENDOR_ID_SOUNDGRAPH,
USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD3) },
...

But the usbhid is ignoring the list and claiming for the device:

...dmesg...
[ 3366.731928] usbcore: registered new interface driver hiddev
[ 3366.745603] input: HID 15c2:0043 as
/devices/pci0000:00/0000:00:04.0/usb3/3-3/3-3:1.0/input/input3
[ 3366.746195] generic-usb 0003:15C2:0043.000D: input,hidraw0: USB HID
v1.01 Mouse [HID 15c2:0043] on usb-0000:00:04.0-3/input0
[ 3366.759332] generic-usb 0003:15C2:0043.000E: hiddev96,hidraw1: USB
HID v1.00 Device [HID 15c2:0043] on usb-0000:00:04.0-3/input1
[ 3366.759416] usbcore: registered new interface driver usbhid
...

Using "quirks" module parameter changes the behavior in dmesg:

...dmesg...
[ 5180.060952] usbcore: registered new interface driver hiddev
[ 5180.061211] usbcore: registered new interface driver usbhid
[ 5180.061220] usbhid: v2.6:USB HID core driver
...

but the driver is claiming for the device anyway:

...ls /sys/bus/usb/drivers/usbhid/...
3-3:1.0 3-3:1.1 bind module new_id uevent unbind
...

The only "fix" i have is to load the lirc_imon driver before the
usbhid driver to get all hardware correctly initialized

Any ideas of what's happening?

Best regards.

-- Galtor

-----------------------------------------------

Bus 003 Device 002: ID 15c2:0043 SoundGraph Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x15c2 SoundGraph Inc.
idProduct 0x0043
bcdDevice 0.02
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 59
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 2 Mouse
iInterface 0
** UNRECOGNIZED: 09 21 01 01 00 01 22 79 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
** UNRECOGNIZED: 09 21 00 01 00 01 22 32 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Device Status: 0x0002
(Bus Powered)
Remote Wakeup Enabled
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/