Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 08 Apr 2005 10:09:56 -0700
From:      Maksim Yevmenkin <maksim.yevmenkin@savvis.net>
To:        David Gilbert <dgilbert@dclg.ca>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Tricky USB device.
Message-ID:  <4256BAE4.50207@savvis.net>
In-Reply-To: <16982.47024.135663.645297@canoe.dclg.ca>
References:  <16982.46075.115518.130213@canoe.dclg.ca> <4256B5EB.9080506@savvis.net> <16982.47024.135663.645297@canoe.dclg.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
David,

>>> ... I don't know if this is hindering me.  The usbhid* commands 
>>> aren't particularly helpful.  The port udesc_dump seems only to 
>>> work on ugen devices ... and ugen doesn't pop up for this device.
> 
> Maksim> how about getting usb hid descriptor, parsing and dumping it?
> Maksim> check out libusbhid - man usbhid(3). it might be that all
> you Maksim> need to do is to create hid report and send it to the 
> Maksim> device. libusbhid(3) will help you with that.
> 
> Tried that.  The usb_get_report_desc() returns NULL.  This is not a 
> complicated device --- it's not even technically a "human interface" 
> device.

fine, so i presume usbhidctl(1) does not work on the device too. why did 
they made look like usb hid device then?

>>> I suppose I need to know how to supress uhid ... or to make ugen 
>>> show up.  It would also be nice to know how to generically poke
>>> the interupt enpoints...
> 
> Maksim> well comment out 'device uhid' from your kernel config and 
> Maksim> rebuilding the kernel should do the trick.
> 
> I wanted to try to avoid that since I use many USB devices, but it's
> a last resort kind-of-thing.

well, for what i know ugen(4) will only claim the device if no other usb 
device driver claimed it. so if the uhid(4) claimed it than (i assume) 
usb interface class on the device is set to the appropriate value.

> The documentation for the device describes the interface as simply 
> using the two interupt endpoints (read and write).

another way is to hack /sys/dev/usd/uhid.c and specifically ignore (usb 
vendor id, usb product id) for the device in the MATCH routine. 
something like

if (uaa->vendor == XXXX && uaa->product == XXXX)
	return (UMATCH_NONE);


max



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4256BAE4.50207>