Re: [PATCH 5.4 17/78] HID: Fix slab-out-of-bounds read in hid_field_extract (Broken!)

From: Enderborg, Peter
Date: Fri Feb 07 2020 - 03:11:36 EST


On 2/6/20 4:14 PM, Alan Stern wrote:
> On Thu, 6 Feb 2020, Enderborg, Peter wrote:
>
>>> Also, please post the output from "lsusb -v" for the StreamDeck.
>> Bus 002 Device 008: ID 0fd9:0060 Elgato Systems GmbH Stream Deck
>> Device Descriptor:
>> Â bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 18
>> Â bDescriptorTypeÂÂÂÂÂÂÂÂ 1
>> Â bcdUSBÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 2.00
>> Â bDeviceClassÂÂÂÂÂÂÂÂÂÂÂ 0
>> Â bDeviceSubClassÂÂÂÂÂÂÂÂ 0
>> Â bDeviceProtocolÂÂÂÂÂÂÂÂ 0
>> Â bMaxPacketSize0ÂÂÂÂÂÂÂ 64
>> Â idVendorÂÂÂÂÂÂÂÂÂÂ 0x0fd9 Elgato Systems GmbH
>> Â idProductÂÂÂÂÂÂÂÂÂ 0x0060
>> Â bcdDeviceÂÂÂÂÂÂÂÂÂÂÂ 1.00
>> Â iManufacturerÂÂÂÂÂÂÂÂÂÂ 1
>> Â iProductÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 2
>> Â iSerialÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 3
>> Â bNumConfigurationsÂÂÂÂÂ 1
>> Â Configuration Descriptor:
>> ÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 9
>> ÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂÂ 2
>> ÂÂÂ wTotalLengthÂÂÂÂÂÂ 0x0029
>> ÂÂÂ bNumInterfacesÂÂÂÂÂÂÂÂÂ 1
>> ÂÂÂ bConfigurationValueÂÂÂÂ 1
>> ÂÂÂ iConfigurationÂÂÂÂÂÂÂÂÂ 0
>> ÂÂÂ bmAttributesÂÂÂÂÂÂÂÂ 0xe0
>> ÂÂÂÂÂ Self Powered
>> ÂÂÂÂÂ Remote Wakeup
>> ÂÂÂ MaxPowerÂÂÂÂÂÂÂÂÂÂÂÂÂ 400mA
>> ÂÂÂ Interface Descriptor:
>> ÂÂÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 9
>> ÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂÂ 4
>> ÂÂÂÂÂ bInterfaceNumberÂÂÂÂÂÂÂ 0
>> ÂÂÂÂÂ bAlternateSettingÂÂÂÂÂÂ 0
>> ÂÂÂÂÂ bNumEndpointsÂÂÂÂÂÂÂÂÂÂ 2
>> ÂÂÂÂÂ bInterfaceClassÂÂÂÂÂÂÂÂ 3 Human Interface Device
>> ÂÂÂÂÂ bInterfaceSubClassÂÂÂÂÂ 0
>> ÂÂÂÂÂ bInterfaceProtocolÂÂÂÂÂ 0
>> ÂÂÂÂÂ iInterfaceÂÂÂÂÂÂÂÂÂÂÂÂÂ 0
>> ÂÂÂÂÂÂÂ HID Device Descriptor:
>> ÂÂÂÂÂÂÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 9
>> ÂÂÂÂÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂ 33
>> ÂÂÂÂÂÂÂÂÂ bcdHIDÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 1.11
>> ÂÂÂÂÂÂÂÂÂ bCountryCodeÂÂÂÂÂÂÂÂÂÂÂ 0 Not supported
>> ÂÂÂÂÂÂÂÂÂ bNumDescriptorsÂÂÂÂÂÂÂÂ 1
>> ÂÂÂÂÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂ 34 Report
>> ÂÂÂÂÂÂÂÂÂ wDescriptorLengthÂÂÂÂ 248
>> ÂÂÂÂÂÂÂÂ Report Descriptors:
>> ÂÂÂÂÂÂÂÂÂÂ ** UNAVAILABLE **
> I was hoping to see the report descriptors. This would produce the
> actual descriptors as sent by the device, not the kernel's
> interpretation or modification of the descriptors.
>
> I guess you have to unbind the device from the usbhid driver first in
> order for lsusb to get them. Can you do that?
>
> Alan Stern
>
Im not sure exatly what you need to unbind. But I assume this is what you want:

Âlsusb -v -d 0fd9:0060

Bus 002 Device 002: ID 0fd9:0060 Elgato Systems GmbH Stream Deck
Device Descriptor:
 bLength 18
 bDescriptorType 1
 bcdUSB 2.00
 bDeviceClass 0
 bDeviceSubClass 0
 bDeviceProtocol 0
 bMaxPacketSize0 64
 idVendor 0x0fd9 Elgato Systems GmbH
 idProduct 0x0060
 bcdDevice 1.00
 iManufacturer 1 Elgato Systems
 iProduct 2 Stream Deck
 iSerial 3 AL01H1A08945
 bNumConfigurations 1
 Configuration Descriptor:
ÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 9
ÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂÂ 2
ÂÂÂ wTotalLengthÂÂÂÂÂÂ 0x0029
ÂÂÂ bNumInterfacesÂÂÂÂÂÂÂÂÂ 1
ÂÂÂ bConfigurationValueÂÂÂÂ 1
ÂÂÂ iConfigurationÂÂÂÂÂÂÂÂÂ 0
ÂÂÂ bmAttributesÂÂÂÂÂÂÂÂ 0xe0
ÂÂÂÂÂ Self Powered
ÂÂÂÂÂ Remote Wakeup
ÂÂÂ MaxPowerÂÂÂÂÂÂÂÂÂÂÂÂÂ 400mA
ÂÂÂ Interface Descriptor:
ÂÂÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 9
ÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂÂ 4
ÂÂÂÂÂ bInterfaceNumberÂÂÂÂÂÂÂ 0
ÂÂÂÂÂ bAlternateSettingÂÂÂÂÂÂ 0
ÂÂÂÂÂ bNumEndpointsÂÂÂÂÂÂÂÂÂÂ 2
ÂÂÂÂÂ bInterfaceClassÂÂÂÂÂÂÂÂ 3 Human Interface Device
ÂÂÂÂÂ bInterfaceSubClassÂÂÂÂÂ 0
ÂÂÂÂÂ bInterfaceProtocolÂÂÂÂÂ 0
ÂÂÂÂÂ iInterfaceÂÂÂÂÂÂÂÂÂÂÂÂÂ 0
ÂÂÂÂÂÂÂ HID Device Descriptor:
ÂÂÂÂÂÂÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 9
ÂÂÂÂÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂ 33
ÂÂÂÂÂÂÂÂÂ bcdHIDÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 1.11
ÂÂÂÂÂÂÂÂÂ bCountryCodeÂÂÂÂÂÂÂÂÂÂÂ 0 Not supported
ÂÂÂÂÂÂÂÂÂ bNumDescriptorsÂÂÂÂÂÂÂÂ 1
ÂÂÂÂÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂ 34 Report
ÂÂÂÂÂÂÂÂÂ wDescriptorLengthÂÂÂÂ 248
ÂÂÂÂÂÂÂÂÂ Report Descriptor: (length is 248)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Usage Page, data= [ 0x0c ] 12
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Consumer
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x01 ] 1
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Consumer Control
 Item(Main ): Collection, data= [ 0x01 ] 1
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Application
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x01 ] 1
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Consumer Control
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Usage Page, data= [ 0x09 ] 9
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Buttons
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage Minimum, data= [ 0x01 ] 1
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Button 1 (Primary)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage Maximum, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x01 ] 1
 Item(Main ): Input, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0xa0 ] 160
 Item(Main ): Input, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0xa1 ] 161
 Item(Main ): Input, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0xfe 0x1f ] 8190
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x02 ] 2
 Item(Main ): Output, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x03 ] 3
 Item(Main ): Feature, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x04 ] 4
 Item(Main ): Feature, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x05 ] 5
 Item(Main ): Feature, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x01 ] 1
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x06 ] 6
 Item(Main ): Feature, data= [ 0x02 ] 2
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Variable Absolute No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x07 ] 7
 Item(Main ): Feature, data= [ 0x04 ] 4
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Array Relative No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x01 ] 1
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x08 ] 8
 Item(Main ): Feature, data= [ 0x04 ] 4
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Array Relative No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x09 ] 9
 Item(Main ): Feature, data= [ 0x04 ] 4
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Array Relative No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x0a ] 10
 Item(Main ): Feature, data= [ 0x04 ] 4
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Array Relative No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): Collection, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Physical
ÂÂÂÂÂÂÂÂÂÂÂ Item(Local ): Usage, data= [ 0x00 0xff ] 65280
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ (null)
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Minimum, data= [ 0x00 ] 0
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Size, data= [ 0x08 ] 8
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report Count, data= [ 0x10 ] 16
ÂÂÂÂÂÂÂÂÂÂÂ Item(Global): Report ID, data= [ 0x0b ] 11
 Item(Main ): Feature, data= [ 0x04 ] 4
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data Array Relative No_Wrap Linear
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Preferred_State No_Null_Position Non_Volatile Bitfield
 Item(Main ): End Collection, data=none
 Item(Main ): End Collection, data=none
ÂÂÂÂÂ Endpoint Descriptor:
ÂÂÂÂÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 7
ÂÂÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂÂ 5
ÂÂÂÂÂÂÂ bEndpointAddressÂÂÂÂ 0x81Â EP 1 IN
ÂÂÂÂÂÂÂ bmAttributesÂÂÂÂÂÂÂÂÂÂÂ 3
ÂÂÂÂÂÂÂÂÂ Transfer TypeÂÂÂÂÂÂÂÂÂÂÂ Interrupt
ÂÂÂÂÂÂÂÂÂ Synch TypeÂÂÂÂÂÂÂÂÂÂÂÂÂÂ None
ÂÂÂÂÂÂÂÂÂ Usage TypeÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data
ÂÂÂÂÂÂÂ wMaxPacketSizeÂÂÂÂ 0x0200Â 1x 512 bytes

ÂÂÂ bIntervalÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 1
ÂÂÂÂÂ Endpoint Descriptor:
ÂÂÂÂÂÂÂ bLengthÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 7
ÂÂÂÂÂÂÂ bDescriptorTypeÂÂÂÂÂÂÂÂ 5
ÂÂÂÂÂÂÂ bEndpointAddressÂÂÂÂ 0x02Â EP 2 OUT
ÂÂÂÂÂÂÂ bmAttributesÂÂÂÂÂÂÂÂÂÂÂ 3
ÂÂÂÂÂÂÂÂÂ Transfer TypeÂÂÂÂÂÂÂÂÂÂÂ Interrupt
ÂÂÂÂÂÂÂÂÂ Synch TypeÂÂÂÂÂÂÂÂÂÂÂÂÂÂ None
ÂÂÂÂÂÂÂÂÂ Usage TypeÂÂÂÂÂÂÂÂÂÂÂÂÂÂ Data
ÂÂÂÂÂÂÂ wMaxPacketSizeÂÂÂÂ 0x0200Â 1x 512 bytes
ÂÂÂÂÂÂÂ bIntervalÂÂÂÂÂÂÂÂÂÂÂÂÂÂ 1
Device Qualifier (for other device speed):
 bLength 10
 bDescriptorType 6
 bcdUSB 2.00
 bDeviceClass 0
 bDeviceSubClass 0
 bDeviceProtocol 0
 bMaxPacketSize0 64
 bNumConfigurations 1
can't get debug descriptor: Resource temporarily unavailable
Device Status:ÂÂÂÂ 0x0003
 Self Powered
 Remote Wakeup Enabled