[libhid-discuss] retrieving large HID descriptor bytes

Peter Stuge peter at stuge.se
Thu Jun 17 08:30:48 UTC 2010


Hi Mike,

mike stone wrote:
> > >       iInterface              1 Wintracker III
> > 
> > Please explain what the device will do?
> 
> Hi Peter,
> 
>    The device is a 6DOF magnetic tracker for virtual reality.

For tracking human movement? Then it most certainly is a human
interface device, and I guess you have spent a lot of time trying to
figure out the HID class spec (I can't do it :) in order to create
fitting descriptors. Well done.


> We choose 320C6747 because tracker need to do lot of calculations
> and c6747 has USB device function.

Yes, I think it makes a lot of sense!


> The BIOS USB package comes with demo of HID device(keyboard ,
> mouse).

One important point is that the device is very different from a
keyboard or mouse, so the HID descriptors need to be tailor made.


> Our device work fine on Windows and we do not need to write drvier
> for it.

Hm, can you clarify how you use the device on Windows?

Does it appear as a joystick that works with the joystick APIs, or
are you using another API? This is important to better understand the
capabilities of the operating system.


> Some programs on internet  can exchange data with HID device. When
> we created and tested the device on windows, it seems not difficult.

Because of historical reasons, on Windows it is trivial to access HID
class devices very similar to how a serial port works - but that is
not a good use of USB, and relying on this behavior means that it is
very difficult to ever use the device with anything other than
Windows. This may or may not be important to you, but I guess that it
is at least a little important since you're looking at cross-platform
libraries such as libhid.


The question is if HID is the best choice for the device class. I
think it will depend largely on the support for this type of device
in the relevant operating systems.


> The device send 24bytes * 100 data to PC per second and receive
> control commands from PC if user want to do configuration.

In any case I would then suggest using a separate interface in the
USB configuration for the user configuration commands, or simpler,
using vendor specific control transfers to endpoint 0. I would
strongly recommend you to write the firmware in a way that the device
is usable also without receiving any configuration commands from the
user, or users who have a system with a working HID class driver but
without the control software may be frustrated because they can not
use the device. (Maybe with applications that you did not plan for.)


//Peter



More information about the libhid-discuss mailing list