Re: USB Joystick driver
Posted: Sun Apr 15, 2018
@Jon: It was the disk protection, yes. Mounted the disk and everything's fine now with the installed game. Sorry.
The Archimedes Software Preservation Project
https://forums.jaspp.org.uk:443/forum/
Excellent work Richard. I was testing Drop Ship earlier in the week wondering how on earth to add support for Voltmace which requires three buttons and Joystick translation to the mouse. By adding multiple buttons, the first issue is covered so we just need to figure out how the Voltmace X/Y axis affect the mouse position.richw wrote: Wed Sep 12, 2018 I have added support for multiple buttons, which can be picked up via the Acorn SWIs (the RTFM and Serial Port ones will accept any button, but cannot tell them apart).
I'll need to modify ADFFS to pass though 16bit as it currently does the translation from 8bit.richw wrote: Wed Sep 12, 2018 I have started adding support for the 16-bit Acorn SWIs, and the XBOX 360 controller (well, at least the cheap Chinese clone that I have!). I could do with more feedback on this. I am not sure if I have the axis set up in the correct directions for the Acorn APIs (8 and 16 bit) when it comes to analogue inputs.
Can anyone with an analogue (non-HAT) device please explain what happens to your axis readings when you move the sticks in the different directions? And if you run the AcornTest program in the Utils directory, what sort of values do you see in reported?
Code: Select all
*USBJoystick_Map 0 0 3 4 0 1 2 3 4 5 6 7Good idearichw wrote: Fri Sep 14, 2018 I need to allow the user to manually control the direction of the axes (probably by using a minus sign in the Map command).
Quite, which is part of the reason why I want to write a configuration utility. It could easily prompt the user to move to Joystick to the four corners and work out the directions.richw wrote: Fri Sep 14, 2018 My digital (HAT) controller moves the X and Y axes in a certain direction, but the XBOX360 is different, as is the old Microsoft one you mention earlier in the thread. I cannot determine the direction automatically.
Windows seems to auto-map HID devices, so there must be something in the descriptors to indicate both the axis and direction.richw wrote: Fri Sep 14, 2018 I think I can get the stick to tell me the name of each axis, e.g. X, Y, Z, Rx, Ry, Rz. I would like to add this into the *commands for friendliness, perhaps even for auto-mapping.
None of the buttons work. I'll post up the descriptors later today.richw wrote: Fri Sep 14, 2018 When you say the 'buttons don't work', is that the HAT switch? Or all the buttons? If the axis are being corrupted, then that would suggest that my baked-in report descriptor is incorrect (although it is fine for my 'clone'). Maybe I need multiple descriptors? Can you run USBDescriptors on yours at some point, so I can see what it looks like compared to mine?
If you want scary, look at what's involved to support the keypad you can plug into the controller. I tried coding a driver many years ago and had to give up. Proprietary interfaces suck big time. HID is there for a reason!richw wrote: Fri Sep 14, 2018 The various Unix drivers for the XBOX and PS controllers have varying levels of complexity for this, which is starting to scare me somewhat!
Get one off eBay along with the official wireless dongle.richw wrote: Fri Sep 14, 2018 This entire thing is all made more complicated by me not having an official XBOX360 controller, but a Chinese knock-off. It seems to be identifying itself as an XBOX360 controller, but it looks awfully like an old PlayStation controller physically!
Code: Select all
=============================================
Device USB5
=============================================
: 0 : 2 : total size of ServiceCall block : 373
: 2 : 2 : offset to descriptor list : 0x20
: 4 : 20 : name : USB5
: 24 : 1 : bus number : 1
: 25 : 1 : device address : 5
: 26 : 1 : host address : 2
: 27 : 1 : host port : 5
: 28 : 1 : speed : 2 full speed
---------------------------------------------
Standard Device Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 12 : 18 :
: 1 : 1 : bDescriptorType : 1 : 1 :
: 2 : 2 : bcdUSB : 200 : 512 :
: 4 : 1 : bDeviceClass : ff : 255 : Vendor Specific
: 5 : 1 : bDeviceSubClass : ff : 255 :
: 6 : 1 : bDeviceProtocol : ff : 255 :
: 7 : 1 : bMaxPacketSize : 8 : 8 :
: 8 : 2 : idVendor : 45e : 1118 :
: 10 : 2 : idProduct : 719 : 1817 :
: 12 : 2 : bcdDevice : 100 : 256 :
: 14 : 1 : iManufacturer : 1 : 1 : 'Microsoft'
: 15 : 1 : iProduct : 2 : 2 : 'Xbox 360 Wireless Receiver for Windows'
: 16 : 1 : iSerialNumber : 3 : 3 : 'FD8EAC00'
: 17 : 1 : bNumConfigurations : 1 : 1 :
+----+----+---------------------------+----------+------------+
Standard Configuration Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 2 : 2 :
: 2 : 2 : wTotalLength : 141 : 321 :
: 4 : 1 : bNumInterfaces : 8 : 8 :
: 5 : 1 : bConfigurationValue : 1 : 1 :
: 6 : 1 : iConfiguration : 0 : 0 : ''
: 7 : 1 : bmAttributes : a0 : 160 : (bit7) USB 1.0 bus powered (bit6) Bus powered, (bit5) Remote wakeup
: 8 : 1 : bMaxPower : 82 : 130 : 260mA
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 0 : 0 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 81 : 129 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 20
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x13 (19)
Byte 5: 0x81 (129)
Byte 6: 0x1d (29)
Byte 7: 0x00 (0)
Byte 8: 0x17 (23)
Byte 9: 0x01 (1)
Byte 10: 0x02 (2)
Byte 11: 0x08 (8)
Byte 12: 0x13 (19)
Byte 13: 0x01 (1)
Byte 14: 0x0c (12)
Byte 15: 0x00 (0)
Byte 16: 0x0c (12)
Byte 17: 0x01 (1)
Byte 18: 0x02 (2)
Byte 19: 0x08 (8)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 81 : 129 : Endpoint 1 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 1 : 1 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 1 : 1 : Endpoint 1 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 8 : 8 :
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 1 : 1 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 82 : 130 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 12
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x01 (1)
Byte 5: 0x82 (130)
Byte 6: 0x00 (0)
Byte 7: 0x40 (64)
Byte 8: 0x01 (1)
Byte 9: 0x02 (2)
Byte 10: 0x20 (32)
Byte 11: 0x00 (0)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 82 : 130 : Endpoint 2 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 2 : 2 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 2 : 2 : Endpoint 2 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 4 : 4 :
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 2 : 2 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 81 : 129 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 20
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x13 (19)
Byte 5: 0x83 (131)
Byte 6: 0x1d (29)
Byte 7: 0x00 (0)
Byte 8: 0x17 (23)
Byte 9: 0x01 (1)
Byte 10: 0x02 (2)
Byte 11: 0x08 (8)
Byte 12: 0x13 (19)
Byte 13: 0x03 (3)
Byte 14: 0x0c (12)
Byte 15: 0x00 (0)
Byte 16: 0x0c (12)
Byte 17: 0x01 (1)
Byte 18: 0x02 (2)
Byte 19: 0x08 (8)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 83 : 131 : Endpoint 3 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 1 : 1 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 3 : 3 : Endpoint 3 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 8 : 8 :
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 3 : 3 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 82 : 130 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 12
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x01 (1)
Byte 5: 0x84 (132)
Byte 6: 0x00 (0)
Byte 7: 0x40 (64)
Byte 8: 0x01 (1)
Byte 9: 0x04 (4)
Byte 10: 0x20 (32)
Byte 11: 0x00 (0)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 84 : 132 : Endpoint 4 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 2 : 2 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 4 : 4 : Endpoint 4 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 4 : 4 :
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 4 : 4 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 81 : 129 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 20
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x13 (19)
Byte 5: 0x85 (133)
Byte 6: 0x1d (29)
Byte 7: 0x00 (0)
Byte 8: 0x17 (23)
Byte 9: 0x01 (1)
Byte 10: 0x02 (2)
Byte 11: 0x08 (8)
Byte 12: 0x13 (19)
Byte 13: 0x05 (5)
Byte 14: 0x0c (12)
Byte 15: 0x00 (0)
Byte 16: 0x0c (12)
Byte 17: 0x01 (1)
Byte 18: 0x02 (2)
Byte 19: 0x08 (8)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 85 : 133 : Endpoint 5 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 1 : 1 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 5 : 5 : Endpoint 5 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 8 : 8 :
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 5 : 5 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 82 : 130 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 12
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x01 (1)
Byte 5: 0x86 (134)
Byte 6: 0x00 (0)
Byte 7: 0x40 (64)
Byte 8: 0x01 (1)
Byte 9: 0x06 (6)
Byte 10: 0x20 (32)
Byte 11: 0x00 (0)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 86 : 134 : Endpoint 6 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 2 : 2 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 6 : 6 : Endpoint 6 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 4 : 4 :
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 6 : 6 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 81 : 129 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 20
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x13 (19)
Byte 5: 0x87 (135)
Byte 6: 0x1d (29)
Byte 7: 0x00 (0)
Byte 8: 0x17 (23)
Byte 9: 0x01 (1)
Byte 10: 0x02 (2)
Byte 11: 0x08 (8)
Byte 12: 0x13 (19)
Byte 13: 0x07 (7)
Byte 14: 0x0c (12)
Byte 15: 0x00 (0)
Byte 16: 0x0c (12)
Byte 17: 0x01 (1)
Byte 18: 0x02 (2)
Byte 19: 0x08 (8)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 87 : 135 : Endpoint 7 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 1 : 1 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 7 : 7 : Endpoint 7 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 8 : 8 :
+----+----+---------------------------+----------+------------+
Standard Interface Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 9 : 9 :
: 1 : 1 : bDescriptorType : 4 : 4 :
: 2 : 1 : bInterfaceNumber : 7 : 7 :
: 3 : 1 : bAlternateSetting : 0 : 0 :
: 4 : 1 : bNumEndpoints : 2 : 2 :
: 5 : 1 : bInterfaceClass : ff : 255 : Vendor Specific
: 6 : 1 : bInterfaceSubClass : 5d : 93 :
: 7 : 1 : bInterfaceProtocol : 82 : 130 :
: 8 : 1 : iInterface : 0 : 0 : ''
+----+----+---------------------------+----------+------------+
*** Unknown Descriptor ***
bLength: 12
bDescriptorType: 0x22 (34)
Byte 2: 0x00 (0)
Byte 3: 0x01 (1)
Byte 4: 0x01 (1)
Byte 5: 0x88 (136)
Byte 6: 0x00 (0)
Byte 7: 0x40 (64)
Byte 8: 0x01 (1)
Byte 9: 0x08 (8)
Byte 10: 0x20 (32)
Byte 11: 0x00 (0)
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 88 : 136 : Endpoint 8 - IN
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 2 : 2 :
+----+----+---------------------------+----------+------------+
Standard Endpoint Descriptor
+----+----+---------------------------+----------+------------+
:Off :Sz :Name :Value hex :Value dec :
+----+----+---------------------------+----------+------------+
: 0 : 1 : bLength : 7 : 7 :
: 1 : 1 : bDescriptorType : 5 : 5 :
: 2 : 1 : bEndpointAddress : 8 : 8 : Endpoint 8 - OUT
: 3 : 1 : bmAttributes : 3 : 3 : Interrupt
: 4 : 2 : wMaxPacketSize : 20 : 32 : 1 x 32 byte max packets
: 6 : 1 : bInterval : 4 : 4 :
+----+----+---------------------------+----------+------------+