My Wireless USB Adapter reports: bDeviceClass=0xFE bDeviceSubClass=0x01,
bInterfaceClass=0xFF bInterfaceSubClass=0x00
And its compatible ID is USB\Class_FE&SubClass_01
My SigmaTel IrDA Dongle reports: bDeviceClass=0xFF bDeviceSubClass=0x01,
bInterfaceClass=0x00 bInterfaceSubClass=0x00
And its compatible ID is USB\Class_00&SubClass_00
My IEEE802.11b Wireless USB Adapter reports: bDeviceClass=0xFF
bDeviceSubClass=0xFF, bInterfaceClass=0xFF bInterfaceSubClass=0x00
And its compatible ID is USB\Class_FF&SubClass_00
So we have here one device that uses the device descriptor data in the
compatible ID and two that use the interface descriptor data
According to http://www.usb.org/developers/defined_class :
-
Device Descriptor bDeviceClass value of 0x00 indicates that the
class information is at interface level. -
Device Descriptor bDeviceClass value of 0xFF indicates that the
class is vendor specific. -
Device Descriptor bDeviceClass value of 0xFE is not defined.
-
Interface Descriptor bInterfaceClass value of 0x00 is not defined.
-
Interface Descriptor bInterfaceClass value of 0xFE and
bInterfaceSubClass value of 0x02 indicated that the device is an IrDA
bridge.
So my questions are:
-
Does Device Descriptor bDeviceClass value of 0xFF also indicates
that the class information is at interface level (like 0x00)? Because this
is the behavior I see in my devices. -
Why do my SigmaTel IrDA Dongle and Wireless USB Adapter use
undefined classes? -
Why doesn’t my SigmaTel IrDA Dongle report Interface Descriptor
bInterfaceClass value of 0xFE and bInterfaceSubClass value of 0x02 like it
should? -
Why doesn’t http://www.usb.org/developers/defined_class define a
class for networking?
Thanks,
Shahar