Author Topic: Should a modern USB device ever have cls/sub/ver in the device descript?  (Read 14481 times)

Renate

  • Frequent Contributor
  • ****
  • Posts: 97
I was always taught that class/subclass/version in a device descriptor is a hangover from USB 1.0 and that certainly any composite device should have zeroes there as that stuff is defined in the interface descriptors. I've generally put zeroes there even for single interfaces.

But I see a case of a (commercial) composite device that is marked ef/02/01 in the device descriptor, that is, DFU.
Moreover, I see that they are using EP0 with interface class out/in transfers.
But obviously a interface class-specific control transfer needs a class.
And that class should come out of the interface referenced by the wIndex in the control request.
In this case, wIndex is 0 and IF0 is an 01/01/20 Audio control v2.0, not DFU.

Am I missing something or is this just bad usage?


Renate

  • Frequent Contributor
  • ****
  • Posts: 97
The USB IF added iadclasscode_r10.pdf in 2003.
It deals with using ef/02/01 in the device descriptor.
This is a safety measure to prevent the "new" (2003) IAD from wreaking havoc with "legacy" (i.e. older than 2003) OSes.

So when you make your brand new device you could put ef/02/01 in the device descriptor to make sure that there are no problems running on Windows 95.
But I won't.