Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

HID reports of more than 64 bytes and libusb backend #274

Open
Labels
bugSomething isn't working documentationImprovements or additions to documentation libusbRelated to libusb backend
@JoergAtGithub

Description

At Mixxx, users reported problems with USB 2.0 High-Speed devices, which are limited to Full-Speed mode for some reasons. Under MacOS and Windows they operate as High-Speed device.

This is not only a performance limitation, but it has functional implications for the HID communication, because USB Full-Speed is limited to a package size of 64 Bytes instead of 1024 in High-Speed mode.
The result is, that HIDAP returns a 79Byte input report correct on Windows and MacOS, but two reports on Linux (libusb backend), the first with correct report ID, the second with report ID 0x00.

How could a cross platform application using HIDAPI handle this:

  • Can the speed or max. package size be determined using HIDAPI to report an error about the USB misconfiguration?
  • Can the application tell the device somehow to switch to USB High-Speed mode?
  • Can HIDAPI check, if a report descriptor contains report sizes of more than 64Bytes for a device in Full-Speed mode?
Windows-Output:
Debug [Controller]: Traktor Kontrol S4 MK3 HID A79A_3: t:92905 ms, 79 bytes:
02 6A 08 00 00 00 00 03 07 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Linux-Output (libusb):
Debug [Controller]: Traktor Kontrol S4 MK3 A79A_3: t:15558 ms, 64 bytes:
02 6E 08 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Debug [Controller]: Traktor Kontrol S4 MK3 A79A_3: t:15559 ms, 15 bytes:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
This is the lsusb output:
 Interface Descriptor:
 bLength 9
 bDescriptorType 4
 bInterfaceNumber 3
 bAlternateSetting 0
 bNumEndpoints 2
 bInterfaceClass 3 Human Interface Device
 bInterfaceSubClass 0 
 bInterfaceProtocol 0 
 iInterface 11 Traktor Kontrol S4 MK3 HID
 HID Device Descriptor:
 bLength 9
 bDescriptorType 33
 bcdHID 1.10
 bCountryCode 0 Not supported
 bNumDescriptors 1
 bDescriptorType 34 Report
 wDescriptorLength 673
 Report Descriptors: 
 ** UNAVAILABLE **
 Endpoint Descriptor:
 bLength 7
 bDescriptorType 5
 bEndpointAddress 0x83 EP 3 IN
 bmAttributes 3
 Transfer Type Interrupt
 Synch Type None
 Usage Type Data
 wMaxPacketSize 0x0040 1x 64 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 0x0040 1x 64 bytes
 bInterval 2
 Interface Descriptor:
 bLength 9
 bDescriptorType 4
 bInterfaceNumber 4
 bAlternateSetting 0
 bNumEndpoints 1
 bInterfaceClass 255 Vendor Specific Class
 bInterfaceSubClass 189 
 bInterfaceProtocol 0 
 iInterface 12 Traktor Kontrol S4 MK3 BD
 Endpoint Descriptor:
 bLength 7
 bDescriptorType 5
 bEndpointAddress 0x03 EP 3 OUT
 bmAttributes 2
 Transfer Type Bulk
 Synch Type None
 Usage Type Data
 wMaxPacketSize 0x0200 1x 512 bytes
 bInterval 1
 Interface Descriptor:
 bLength 9
 bDescriptorType 4
 bInterfaceNumber 5
 bAlternateSetting 0
 bNumEndpoints 0
 bInterfaceClass 254 Application Specific Interface
 bInterfaceSubClass 1 Device Firmware Update
 bInterfaceProtocol 1 
 iInterface 10 Traktor Kontrol S4 MK3 DFU
 Device Firmware Upgrade Interface Descriptor:
 bLength 9
 bDescriptorType 33
 bmAttributes 7
 Will Not Detach
 Manifestation Tolerant
 Upload Supported
 Download Supported
 wDetachTimeout 250 milliseconds
 wTransferSize 64 bytes
 bcdDFUVersion 1.10
Device Qualifier (for other device speed):
 bLength 10
 bDescriptorType 6
 bcdUSB 2.00
 bDeviceClass 0 
 bDeviceSubClass 0 
 bDeviceProtocol 0 
 bMaxPacketSize0 64
 bNumConfigurations 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working documentationImprovements or additions to documentation libusbRelated to libusb backend

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /