Re: Two devices, same USB ID: one needs HID, the other doesn't. How to solve this?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 13.01.2012 12:42, Hans Verkuil wrote:
> Hi!

Hi!

Adding Jiri Kosina, the HID maintainer.

> 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
[...]
> @@ -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.

The HID Report descriptors could be interesting as they differ. You can
look at them in:
/sys/kernel/debug/hid/*/rdesc

I guess one option would be to make this a "regular" HID driver like
those in drivers/hid/hid-*.c (and just set the v4l things up if the
descriptor is as expected, otherwise let standard HID-input handle
them), but there is the issue of where to place the driver, then, as it
can't be both in drivers/hid and drivers/media...

Probably the easy way out is to simply add the device into
drivers/hid/hid-core.c:hid_ignore(), by checking e.g.
vendor+product+name, and hope all "B-LINK USB Audio" devices are FM
transmitters (the name suggests that may not necessarily be the case,
though). Report descriptor contents are not available at hid_ignore()
point yet.

> 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,
> 
> 	Hans


-- 
Anssi Hannula
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux