Need API to get the HID Report Descriptor or a similar data structure #249

Closed
opened 2021-02-26 13:15:33 -06:00 by JoergAtGithub · 136 comments
JoergAtGithub commented 2021-02-26 13:15:33 -06:00 (Migrated from github.com)

We need a function to read the HID Report Descriptor or an equal data structure with information about the fields in the different HID reports.

Background:
For the cross platform Mixxx DJ software we need a solution, to allow the end user to map HID controller buttons, faders, knobs, RGB LEDs, etc. These are different on any DJ controller. Therefore this mapping it must be customizeable by end users.
As input we need information about the field, e.g.: a 12 bit field at position n of Input report with ID0x02 with a logical minimum of -2048 and a maximum of +2047.

We need a function to read the HID Report Descriptor or an equal data structure with information about the fields in the different HID reports. Background: For the cross platform Mixxx DJ software we need a solution, to allow the end user to map HID controller buttons, faders, knobs, RGB LEDs, etc. These are different on any DJ controller. Therefore this mapping it must be customizeable by end users. As input we need information about the field, e.g.: a 12 bit field at position n of Input report with ID0x02 with a logical minimum of -2048 and a maximum of +2047.
Be-ing commented 2021-02-26 13:22:27 -06:00 (Migrated from github.com)

Potentially helpful links:
https://github.com/DIGImend/usbhid-dump
https://github.com/DIGImend/hidrd
Those are both licensed under the GPL, so they couldn't be used directly in hidapi unless the maintainers are willing to change the hidapi license. Nevertheless they could be useful examples to reference.

https://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/

Potentially helpful links: https://github.com/DIGImend/usbhid-dump https://github.com/DIGImend/hidrd Those are both licensed under the GPL, so they couldn't be used directly in hidapi unless the maintainers are willing to change the hidapi license. Nevertheless they could be useful examples to reference. https://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/
Youw commented 2021-02-28 05:38:06 -06:00 (Migrated from github.com)
Go check: https://github.com/todbot/win-hid-dump https://github.com/todbot/mac-hid-dump
tschiemer commented 2021-03-16 13:36:51 -05:00 (Migrated from github.com)

Actually, it somewhat comes for free as the basic usage page and usage are extracted from the report descriptor which is read here:

github.com/libusb/hidapi@0ea5e9502f/libusb/hid.c (L644)

In my eyes it'd make sense to directly store this descriptor either

  • by (optionally) allocating memory linked through a new field in struct hid_device_info (simpler) or
  • by postponing allocation of found device structs here until the size of the report descriptor is found, allocating the base size along with the descriptor size and appending an indefinite size field to struct hid_device_info (feels more elegant)

That said, it might be nice or meaningful to somehow incorporate this quite nice descriptor to string parser based on which I'm momentarily trying to make a generic parser to help extract meaningful values from given reports without having to know the report layout beforehand (primarily trying to make it work with my use cases, but for simple devices should be fine).

Actually, it somewhat comes for free as the basic usage page and usage are extracted from the report descriptor which is read here: https://github.com/libusb/hidapi/blob/0ea5e9502f31a1e4dbc71567c0f9a781930f1d38/libusb/hid.c#L644 In my eyes it'd make sense to directly store this descriptor either - by (optionally) allocating memory linked through a new field in `struct hid_device_info` (simpler) or - by postponing allocation of found device structs [here](https://github.com/libusb/hidapi/blob/0ea5e9502f31a1e4dbc71567c0f9a781930f1d38/libusb/hid.c#L582) until the size of the report descriptor is found, allocating the base size along with the descriptor size and appending an indefinite size field to `struct hid_device_info` (feels more elegant) That said, it might be nice or meaningful to somehow incorporate this quite nice [descriptor to string parser](https://github.com/uint32tMnstr/USB-HID-Report-Parser) based on which I'm momentarily trying to make a [generic parser](https://github.com/tschiemer/USB-HID-Report-Parser/tree/usbhid_map) to help extract meaningful values from given reports without having to know the report layout beforehand (primarily trying to make it work with my use cases, but for simple devices should be fine).
Be-ing commented 2021-03-16 13:40:01 -05:00 (Migrated from github.com)

Thanks for that info @tschiemer. I have not looked into what it would take to implement this. If you have a branch of hidapi you are working on, please open a pull request for this upstream repository and I'd be happy to test it with my Native Instruments Traktor Kontrol S4 Mk3.

Thanks for that info @tschiemer. I have not looked into what it would take to implement this. If you have a branch of hidapi you are working on, please open a pull request for this upstream repository and I'd be happy to test it with my Native Instruments Traktor Kontrol S4 Mk3.
tschiemer commented 2021-03-16 13:44:58 -05:00 (Migrated from github.com)

Ok, can see to it, but might take a moment

Ok, can see to it, but might take a moment
Youw commented 2021-03-16 15:35:11 -05:00 (Migrated from github.com)

Actually, it somewhat comes for free as the basic usage page and usage are extracted from the report descriptor

While this indeed already available and easy to get for libusb and hidraw backends, one of the first things about HIDAPI is being cross-platform.

I agree that this would be very useful, but Windows backend doesn't have an API to get a descriptor at all.
The descriptor could be partially reconstructed, but still, it is not an easy task.
I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all platforms/backends.

> Actually, it somewhat comes for free as the basic usage page and usage are extracted from the report descriptor While this indeed already available and easy to get for libusb and hidraw backends, one of the first things about HIDAPI is being cross-platform. I agree that this would be very useful, but Windows backend doesn't have an API to get a descriptor at all. The descriptor could be partially reconstructed, but still, it is not an easy task. I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all _platforms/backends_.
JoergAtGithub commented 2021-03-16 17:11:08 -05:00 (Migrated from github.com)

There's also the approach to use the generic WinUSB driver (comes with Win7 or newer) instead of Windows High-Level-HID-API: https://github.com/libusb/hidapi/issues/61#issuecomment-638397298
As far as I understood it, the WinUSB driver gives a userspace Windows program full access to an USB device, but locks it exclusive.

There's also the approach to use the generic WinUSB driver (comes with Win7 or newer) instead of Windows High-Level-HID-API: https://github.com/libusb/hidapi/issues/61#issuecomment-638397298 As far as I understood it, the WinUSB driver gives a userspace Windows program full access to an USB device, but locks it exclusive.
Youw commented 2021-03-16 17:23:28 -05:00 (Migrated from github.com)

gives a userspace Windows program full access to an USB device, but locks it exclusive

Yeah, and someone actually needs to make a driver for each specific device. And the problem not even with making a driver - a template inf file can be generated. But signing a driver properly - that requires some effort.

And you'd need to compile a libusb backend on Windows, which isn't compilable of-the-box yet.

> gives a userspace Windows program full access to an USB device, but locks it exclusive Yeah, and someone actually needs to make a driver for each specific device. And the problem not even with making a driver - a template inf file can be generated. But signing a driver properly - that requires some effort. And you'd need to compile a libusb backend on Windows, which isn't compilable of-the-box yet.
JoergAtGithub commented 2021-03-16 17:25:21 -05:00 (Migrated from github.com)

Ok, that doesn't sounds like what we're looking for.

Ok, that doesn't sounds like what we're looking for.
Be-ing commented 2021-03-16 22:18:49 -05:00 (Migrated from github.com)

I think it could be a good idea to start with libusb or hidraw to figure out what the API should be then implement it for other backends.

I think it could be a good idea to start with libusb or hidraw to figure out what the API should be then implement it for other backends.
tschiemer commented 2021-03-22 11:17:34 -05:00 (Migrated from github.com)

@Be-ing so not quite a hidapi branch, but as a proof of concept I implemented this puredata external to parse input reports based on the report descriptor, works for me on macos and a rpi4/linux with a joystick and mouse (see releases for binaries).

It's a bit of a mess as it uses libusb to find devices according to search criteria (more than hidapi provides out of the box, but meaningful in my opinion and based on hidapi-libusb internals) and reads/parses the report descriptor but relies on hidapi to actually receive input reports (and thus on linux the device listing is set to detach devices as in the hidapi driver..) - should have had a deeper look at hidapi's (or hidraw) interface before..

At the moment only the raw values as given in the input report are extracted without making use of any of the logical/physical min/max, unit, exponential etc values but adding that shouldn't be too big of a deal..
Could not test this with any feature/output reports or more complicated report descriptors, as I have neither the devices nor much more capacity..
The hid report parser just creates a datastructure that's more easy to handle but I would guess it won't work for all descriptors (collection items are somewhat ignored; note that the handling of output and feature items likely will need some fixing in the parser..).
As external it "publishes" any changed values (usage page, usage, value), similar to the apple HIDIOManager value callbacks.
I guess construction of output reports can be achieved by inverting the logic of the value extractor.

Maybe this is helpful in some form

@Be-ing so not quite a hidapi branch, but as a proof of concept I implemented [this](https://github.com/tschiemer/hid-pd-external) puredata external to parse input reports based on the report descriptor, works for me on macos and a rpi4/linux with a joystick and mouse (see [releases](https://github.com/tschiemer/hid-pd-external/releases/tag/v0.1.0) for binaries). It's a bit of a mess as it uses libusb to find devices according to search criteria (more than hidapi provides out of the box, but meaningful in my opinion and based on hidapi-libusb internals) and reads/parses the report descriptor but relies on hidapi to actually receive input reports (and thus on linux the device listing is set to detach devices as in the hidapi driver..) - should have had a deeper look at hidapi's (or hidraw) interface before.. At the moment only the raw values as given in the input report are extracted without making use of any of the logical/physical min/max, unit, exponential etc values but adding that shouldn't be too big of a deal.. Could not test this with any feature/output reports or more complicated report descriptors, as I have neither the devices nor much more capacity.. The hid report parser just creates a datastructure that's more easy to handle but I would guess it won't work for all descriptors (collection items are somewhat ignored; note that the handling of output and feature items likely will need some fixing in the parser..). As external it "publishes" any changed values (usage page, usage, value), similar to the apple HIDIOManager value callbacks. I guess construction of output reports can be achieved by inverting the logic of the value extractor. Maybe this is helpful in some form
JoergAtGithub commented 2021-04-06 14:27:22 -05:00 (Migrated from github.com)

I agree that this would be very useful, but Windows backend doesn't have an API to get a descriptor at all.
The descriptor could be partially reconstructed, but still, it is not an easy task.
I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all platforms/backends.

I implemented such a reconstructor in C and will start a Pull Request for HIDAPI soon. Stay tuned!

> I agree that this would be very useful, but Windows backend doesn't have an API to get a descriptor at all. > The descriptor could be partially reconstructed, but still, it is not an easy task. > I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all _platforms/backends_. I implemented such a reconstructor in C and will start a Pull Request for HIDAPI soon. Stay tuned!
JoergAtGithub commented 2021-04-10 07:27:46 -05:00 (Migrated from github.com)

I started PR #262 with a C implementation of the Windows Report-Descriptor code.

I started PR #262 with a C implementation of the Windows Report-Descriptor code.
mcuee commented 2021-06-12 23:22:57 -05:00 (Migrated from github.com)

I think libusb HID backend has already the codes to partially reconstruct the descriptors. Some from the USB HUB driver, some from the USB HID driver. But that may not be suitable for HIDAPI as it is also for bluetooth devices.

https://github.com/libusb/libusb/blob/master/libusb/os/windows_winusb.c#L3728
static int hid_open(int sub_api, struct libusb_device_handle *dev_handle)

While this indeed already available and easy to get for libusb and hidraw backends, one of the first things about HIDAPI is being cross-platform.

I agree that this would be very useful, but Windows backend doesn't have an API to get a descriptor at all.
The descriptor could be partially reconstructed, but still, it is not an easy task.
I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all platforms/backends.

I think libusb HID backend has already the codes to partially reconstruct the descriptors. Some from the USB HUB driver, some from the USB HID driver. But that may not be suitable for HIDAPI as it is also for bluetooth devices. https://github.com/libusb/libusb/blob/master/libusb/os/windows_winusb.c#L3728 static int hid_open(int sub_api, struct libusb_device_handle *dev_handle) > While this indeed already available and easy to get for libusb and hidraw backends, one of the first things about HIDAPI is being cross-platform. > > I agree that this would be very useful, but Windows backend doesn't have an API to get a descriptor at all. > The descriptor could be partially reconstructed, but still, it is not an easy task. > I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all _platforms/backends_.
mcuee commented 2021-06-17 02:55:51 -05:00 (Migrated from github.com)

FYI I have just tested win-hid-dump. It seems I got some problems with it.
https://github.com/todbot/win-hid-dump/issues/2

FYI I have just tested win-hid-dump. It seems I got some problems with it. https://github.com/todbot/win-hid-dump/issues/2
mcuee commented 2021-06-17 03:00:14 -05:00 (Migrated from github.com)

But HIDSharp seems to work (not checking the contents). I have a long list of HID device in the system (Windows 10, Dell Laptop with a docking station). Edit to add: it is not stable for my system and the output does not seem to be correct, at least for my Microchip PICKit 2).

click to expand
/c/work/hid/HidSharp
$ ./bin/HidSharp.Test.exe
All device list:
(unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0) @ \\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col03#7&1ebb799e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
   (VID 1102, PID 4626, version 0.0) @ \\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col04#7&1ebb799e&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) @ \\?\hid#vid_047f&pid_c056&mi_03&col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col05#7&1ebb799e&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) @ \\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0) @ \\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
   (VID 1102, PID 4626, version 0.0) @ \\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Optical Mouse (no serial number) (VID 1133, PID 49271, version 72.0) @ \\?\hid#vid_046d&pid_c077#e&113cd935&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) @ \\?\hid#vid_047f&pid_c056&mi_03&col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) @ \\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
DELL Dell USB Entry Keyboard (no serial number) (VID 16700, PID 8455, version 1.78) @ \\?\hid#vid_413c&pid_2107#e&11005b8d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col01#7&1ebb799e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) @ \\?\hid#vid_047f&pid_c056&mi_03&col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) @ \\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col02#7&1ebb799e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_00#7&51bc424&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer)  (no serial number) (VID 16700, PID 45166, version 1.1) @ \\?\hid#vid_413c&pid_b06e#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microchip Technology Inc. Simple HID Device Demo (no serial number) (VID 1240, PID 63, version 0.2) @ \\?\hid#vid_04d8&pid_003f#e&24ba9f4d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer)  (no serial number) (VID 16700, PID 45167, version 1.1) @ \\?\hid#vid_413c&pid_b06f#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
COM3 (\\.\COM3) @ \\.\COM3
BLE device list:

Press any key

Complete device list (took 0 ms to get 26 devices):
\\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0)
Max Lengths: Input 2, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 0C A1 01 85 08 09 C6 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 95 07 81 03 C1 00 (34 bytes)
  UsagePage 1
  Usage 12
  Collection 1
    ReportID 8
    Usage 198
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 6
    ReportCount 7
    Input 3
  EndCollection 0
Usage: 1000C 65548
Input: ReportID=8, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: 100C6 65734
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13)
Max Lengths: Input 6, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 03 81 02 95 05 81 03 05 01 09 30 25 7F 45 00 75 08 95 01 81 06 09 31 81 06 09 38 81 06 05 0C 0A 38 02 81 06 C1 00 C1 00 (73 bytes)
  UsagePage 1
  Usage 2
  Collection 1
    ReportID 1
    Usage 1
    Collection 0
      UsagePage 9
      UsageMinimum 1
      UsageMaximum 3
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 3
      Input 2
      ReportCount 5
      Input 3
      UsagePage 1
      Usage 48
      LogicalMaximum 127
      PhysicalMaximum 0
      ReportSize 8
      ReportCount 1
      Input 6
      Usage 49
      Input 6
      Usage 56
      Input 6
      UsagePage 12
      Usage 568
      Input 6
    EndCollection 0
  EndCollection 0
Usage: 10002 GenericDesktopMouse
Input: ReportID=1, Length=6, Items=6
  3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3
  5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: C0238 787000
Opening device for 20 seconds...
Failed to open device.


\\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13)
Max Lengths: Input 10, Output 0, Feature 257
Serial Ports:
Report Descriptor:
  05 0D 09 05 A1 01 85 08 09 22 A1 02 09 47 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 42 81 02 09 51 25 05 45 00 75 03 81 02 25 01 45 01 75 01 95 03 81 03 05 01 09 30 26 AF 04 46 E8 03 65 11 55 0E 75 10 95 01 81 02 09 31 26 7B 02 46 12 02 81 02 C1 00 05 0D 09 56 26 FF FF 46 FF FF 66 01 10 55 0C 81 02 09 54 25 05 75 08 81 02 05 09 09 02 25 01 45 01 65 00 55 00 75 01 81 02 09 03 81 02 95 06 81 03 85 09 05 0D 09 55 25 05 46 FF FF 66 01 10 55 0C 75 08 95 01 B1 02 25 01 45 01 65 00 55 00 75 01 96 F8 07 B1 03 85 0A 06 00 FF 09 C5 25 FF 46 FF FF 66 01 10 55 0C 75 08 96 00 01 B1 02 C1 00 (200 bytes)
  UsagePage 13
  Usage 5
  Collection 1
    ReportID 8
    Usage 34
    Collection 2
      Usage 71
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 1
      Input 2
      Usage 66
      Input 2
      Usage 81
      LogicalMaximum 5
      PhysicalMaximum 0
      ReportSize 3
      Input 2
      LogicalMaximum 1
      PhysicalMaximum 1
      ReportSize 1
      ReportCount 3
      Input 3
      UsagePage 1
      Usage 48
      LogicalMaximum 1199
      PhysicalMaximum 1000
      Unit 17
      UnitExponent 14
      ReportSize 16
      ReportCount 1
      Input 2
      Usage 49
      LogicalMaximum 635
      PhysicalMaximum 530
      Input 2
    EndCollection 0
    UsagePage 13
    Usage 86
    LogicalMaximum 65535
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    Input 2
    Usage 84
    LogicalMaximum 5
    ReportSize 8
    Input 2
    UsagePage 9
    Usage 2
    LogicalMaximum 1
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    Input 2
    Usage 3
    Input 2
    ReportCount 6
    Input 3
    ReportID 9
    UsagePage 13
    Usage 85
    LogicalMaximum 5
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 8
    ReportCount 1
    Feature 2
    LogicalMaximum 1
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 2040
    Feature 3
    ReportID 10
    UsagePage 65280
    Usage 197
    LogicalMaximum 255
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 8
    ReportCount 256
    Feature 2
  EndCollection 0
Usage: D0005 851973
Input: ReportID=8, Length=10, Items=11
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0047 852039
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0042 852034
  1 Elements x 3 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: D0051 852049
  3 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: 10030 GenericDesktopX
  1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: 10031 GenericDesktopY
  1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0056 852054
  1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0054 852052
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90002 Button2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90003 Button3
  6 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=9, Length=257, Items=2
  1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0055 852053
  2040 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=10, Length=257, Items=1
  256 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_046d&pid_c534&mi_01&col03#7&1ebb799e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 2, Output 0, Feature 0
Serial Ports:
System.NotSupportedException: Unable to reconstruct the report descriptor.
   at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\libusb\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195
   at HidSharp.Test.Program.Main(String[] args) in C:\work\libusb\HidSharp\HidSharp.Test\Program.cs:line 249
\\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
   (VID 1102, PID 4626, version 0.0)
Max Lengths: Input 9, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 06 A1 01 85 07 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 C1 00 (38 bytes)
  UsagePage 1
  Usage 6
  Collection 1
    ReportID 7
    UsagePage 7
    UsageMinimum 224
    UsageMaximum 231
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 8
    Input 2
    ReportCount 56
    Input 3
  EndCollection 0
Usage: 10006 GenericDesktopKeyboard
Input: ReportID=7, Length=9, Items=2
  8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI
  56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_046d&pid_c534&mi_01&col04#7&1ebb799e&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 7, Output 7, Feature 0
Serial Ports:
Report Descriptor:
  06 00 FF 09 01 A1 01 85 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 30 81 03 91 03 C1 00 (31 bytes)
  UsagePage 65280
  Usage 1
  Collection 1
    ReportID 16
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 48
    Input 3
    Output 3
  EndCollection 0
Usage: FF000001 4278190081
Input: ReportID=16, Length=7, Items=1
  48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=16, Length=7, Items=1
  48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_047f&pid_c056&mi_03&col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10)
Max Lengths: Input 33, Output 37, Feature 0
Serial Ports:
Report Descriptor:
  05 0C 09 01 A1 01 85 01 09 E9 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 09 EA 81 06 95 FE 81 03 85 02 96 00 01 81 03 85 05 09 00 45 00 75 08 95 20 81 02 85 07 09 00 81 02 85 04 09 00 95 24 91 02 85 06 09 00 91 02 C1 00 (77 bytes)
  UsagePage 12
  Usage 1
  Collection 1
    ReportID 1
    Usage 233
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 6
    Usage 234
    Input 6
    ReportCount 254
    Input 3
    ReportID 2
    ReportCount 256
    Input 3
    ReportID 5
    Usage 0
    PhysicalMaximum 0
    ReportSize 8
    ReportCount 32
    Input 2
    ReportID 7
    Usage 0
    Input 2
    ReportID 4
    Usage 0
    ReportCount 36
    Output 2
    ReportID 6
    Usage 0
    Output 2
  EndCollection 0
Usage: C0001 ConsumerConsumerControl
Input: ReportID=1, Length=33, Items=3
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: C00E9 ConsumerVolumeIncrement
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: C00EA ConsumerVolumeDecrement
  254 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Input: ReportID=2, Length=33, Items=1
  256 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Input: ReportID=5, Length=33, Items=1
  32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432
Input: ReportID=7, Length=33, Items=1
  32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432
Output: ReportID=4, Length=37, Items=1
  36 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432
Output: ReportID=6, Length=37, Items=1
  36 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_046d&pid_c534&mi_01&col05#7&1ebb799e&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 20, Output 20, Feature 0
Serial Ports:
Report Descriptor:
  06 00 FF 09 02 A1 01 85 11 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 98 81 03 91 03 C1 00 (31 bytes)
  UsagePage 65280
  Usage 2
  Collection 1
    ReportID 17
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 152
    Input 3
    Output 3
  EndCollection 0
Usage: FF000002 4278190082
Input: ReportID=17, Length=20, Items=1
  152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=17, Length=20, Items=1
  152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0)
Max Lengths: Input 2, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 0C 09 01 A1 01 85 02 09 E9 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 EA 81 02 0A 21 02 81 02 95 05 81 03 C1 00 (43 bytes)
  UsagePage 12
  Usage 1
  Collection 1
    ReportID 2
    Usage 233
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 2
    Usage 234
    Input 2
    Usage 545
    Input 2
    ReportCount 5
    Input 3
  EndCollection 0
Usage: C0001 ConsumerConsumerControl
Input: ReportID=2, Length=2, Items=4
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: C00E9 ConsumerVolumeIncrement
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: C00EA ConsumerVolumeDecrement
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: C0221 786977
  5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0)
Max Lengths: Input 2, Output 0, Feature 2
Serial Ports:
Report Descriptor:
  05 01 09 0D A1 01 85 1C 09 0D A1 02 09 81 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 95 07 81 03 09 CB 95 01 B1 02 95 07 B1 03 C1 00 C1 00 (50 bytes)
  UsagePage 1
  Usage 13
  Collection 1
    ReportID 28
    Usage 13
    Collection 2
      Usage 129
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 1
      Input 2
      ReportCount 7
      Input 3
      Usage 203
      ReportCount 1
      Feature 2
      ReportCount 7
      Feature 3
    EndCollection 0
  EndCollection 0
Usage: 1000D 65549
Input: ReportID=28, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 10081 65665
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=28, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 100CB 65739
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
   (VID 1102, PID 4626, version 0.0)
Max Lengths: Input 6, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 02 A1 01 85 06 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 03 81 02 95 05 81 03 05 01 09 30 26 00 02 45 00 75 10 95 01 81 06 09 31 81 06 C1 00 C1 00 (63 bytes)
  UsagePage 1
  Usage 2
  Collection 1
    ReportID 6
    Usage 1
    Collection 0
      UsagePage 9
      UsageMinimum 1
      UsageMaximum 3
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 3
      Input 2
      ReportCount 5
      Input 3
      UsagePage 1
      Usage 48
      LogicalMaximum 512
      PhysicalMaximum 0
      ReportSize 16
      ReportCount 1
      Input 6
      Usage 49
      Input 6
    EndCollection 0
  EndCollection 0
Usage: 10002 GenericDesktopMouse
Input: ReportID=6, Length=6, Items=4
  3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3
  5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  1 Elements x 16 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX
  1 Elements x 16 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_046d&pid_c077#e&113cd935&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Optical Mouse (no serial number) (VID 1133, PID 49271, version 72.0)
Max Lengths: Input 5, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 03 81 02 95 05 81 03 05 01 09 30 25 7F 45 00 75 08 95 01 81 06 09 31 81 06 09 38 81 06 C1 00 C1 00 (64 bytes)
  UsagePage 1
  Usage 2
  Collection 1
    Usage 1
    Collection 0
      UsagePage 9
      UsageMinimum 1
      UsageMaximum 3
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 3
      Input 2
      ReportCount 5
      Input 3
      UsagePage 1
      Usage 48
      LogicalMaximum 127
      PhysicalMaximum 0
      ReportSize 8
      ReportCount 1
      Input 6
      Usage 49
      Input 6
      Usage 56
      Input 6
    EndCollection 0
  EndCollection 0
Usage: 10002 GenericDesktopMouse
Input: ReportID=0, Length=5, Items=5
  3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3
  5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_047f&pid_c056&mi_03&col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10)
Max Lengths: Input 33, Output 33, Feature 3
Serial Ports:
Report Descriptor:
  06 A0 FF 09 03 A1 01 85 14 09 B1 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 09 B2 81 06 09 B5 81 06 09 B7 81 06 09 B3 81 06 95 FB 81 03 85 1F 09 9C 95 01 81 06 95 FF 81 03 85 03 09 30 45 00 75 08 95 20 81 02 85 15 09 8C 26 FF FF 75 10 95 01 81 22 25 01 45 01 75 01 95 F0 81 03 85 19 09 8D 95 01 91 22 09 8F 91 22 09 9E 91 22 09 DC 91 22 09 D2 91 06 09 D9 91 06 95 FA 91 03 85 1A 09 B5 95 01 91 22 95 FF 91 03 85 03 09 30 45 00 75 08 95 20 91 02 85 1B 09 CF 45 01 75 01 95 01 B1 22 09 B5 B1 22 09 DE B1 23 09 D8 B1 22 95 04 B1 03 09 09 95 01 B1 22 09 17 B1 22 09 18 B1 22 09 1E B1 22 09 20 B1 22 09 2A B1 22 95 02 B1 03 C1 00 (212 bytes)
  UsagePage 65440
  Usage 3
  Collection 1
    ReportID 20
    Usage 177
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 6
    Usage 178
    Input 6
    Usage 181
    Input 6
    Usage 183
    Input 6
    Usage 179
    Input 6
    ReportCount 251
    Input 3
    ReportID 31
    Usage 156
    ReportCount 1
    Input 6
    ReportCount 255
    Input 3
    ReportID 3
    Usage 48
    PhysicalMaximum 0
    ReportSize 8
    ReportCount 32
    Input 2
    ReportID 21
    Usage 140
    LogicalMaximum 65535
    ReportSize 16
    ReportCount 1
    Input 34
    LogicalMaximum 1
    PhysicalMaximum 1
    ReportSize 1
    ReportCount 240
    Input 3
    ReportID 25
    Usage 141
    ReportCount 1
    Output 34
    Usage 143
    Output 34
    Usage 158
    Output 34
    Usage 220
    Output 34
    Usage 210
    Output 6
    Usage 217
    Output 6
    ReportCount 250
    Output 3
    ReportID 26
    Usage 181
    ReportCount 1
    Output 34
    ReportCount 255
    Output 3
    ReportID 3
    Usage 48
    PhysicalMaximum 0
    ReportSize 8
    ReportCount 32
    Output 2
    ReportID 27
    Usage 207
    PhysicalMaximum 1
    ReportSize 1
    ReportCount 1
    Feature 34
    Usage 181
    Feature 34
    Usage 222
    Feature 35
    Usage 216
    Feature 34
    ReportCount 4
    Feature 3
    Usage 9
    ReportCount 1
    Feature 34
    Usage 23
    Feature 34
    Usage 24
    Feature 34
    Usage 30
    Feature 34
    Usage 32
    Feature 34
    Usage 42
    Feature 34
    ReportCount 2
    Feature 3
  EndCollection 0
Usage: FFA00003 4288675843
Input: ReportID=20, Length=33, Items=6
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B1 4288676017
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B2 4288676018
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B5 4288676021
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B7 4288676023
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B3 4288676019
  251 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Input: ReportID=31, Length=33, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA0009C 4288675996
  255 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Input: ReportID=3, Length=33, Items=1
  32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFA00030 4288675888
Input: ReportID=21, Length=33, Items=2
  1 Elements x 16 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, NoPreferred, Usages: FFA0008C 4288675980
  240 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=25, Length=33, Items=7
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0008D 4288675981
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0008F 4288675983
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0009E 4288675998
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000DC 4288676060
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000D2 4288676050
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000D9 4288676057
  250 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=26, Length=33, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000B5 4288676021
  255 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=3, Length=33, Items=1
  32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFA00030 4288675888
Feature: ReportID=27, Length=3, Items=12
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000CF 4288676047
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000B5 4288676021
  1 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, NoPreferred, Usages: FFA000DE 4288676062
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000D8 4288676056
  4 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00009 4288675849
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00017 4288675863
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00018 4288675864
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0001E 4288675870
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00020 4288675872
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0002A 4288675882
  2 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13)
Max Lengths: Input 0, Output 0, Feature 135
Serial Ports:
Report Descriptor:
  06 02 FF 09 01 A1 01 85 07 09 02 15 00 25 FF 35 00 46 FF FF 66 01 10 55 0C 75 08 95 86 B1 02 C1 00 (33 bytes)
  UsagePage 65282
  Usage 1
  Collection 1
    ReportID 7
    Usage 2
    LogicalMinimum 0
    LogicalMaximum 255
    PhysicalMinimum 0
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 8
    ReportCount 134
    Feature 2
  EndCollection 0
Usage: FF020001 4278321153
Feature: ReportID=7, Length=135, Items=1
  134 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF020002 4278321154
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0)
Max Lengths: Input 2, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 80 A1 01 85 03 09 81 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 95 07 81 03 C1 00 (34 bytes)
  UsagePage 1
  Usage 128
  Collection 1
    ReportID 3
    Usage 129
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 2
    ReportCount 7
    Input 3
  EndCollection 0
Usage: 10080 GenericDesktopSystemControl
Input: ReportID=3, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 10081 65665
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_413c&pid_2107#e&11005b8d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
DELL Dell USB Entry Keyboard (no serial number) (VID 16700, PID 8455, version 1.78)
Max Lengths: Input 9, Output 2, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 05 08 19 01 29 03 95 03 91 02 95 05 91 03 C1 00 (50 bytes)
  UsagePage 1
  Usage 6
  Collection 1
    UsagePage 7
    UsageMinimum 224
    UsageMaximum 231
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 8
    Input 2
    ReportCount 56
    Input 3
    UsagePage 8
    UsageMinimum 1
    UsageMaximum 3
    ReportCount 3
    Output 2
    ReportCount 5
    Output 3
  EndCollection 0
Usage: 10006 GenericDesktopKeyboard
Input: ReportID=0, Length=9, Items=2
  8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI
  56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=0, Length=2, Items=2
  3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 80001 LedNumLock, 80002 LedCapsLock, 80003 LedScrollLock
  5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Failed to open device.


\\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13)
Max Lengths: Input 0, Output 0, Feature 2
Serial Ports:
Report Descriptor:
  05 0D 09 0E A1 01 85 0C 09 22 A1 00 09 57 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 B1 02 09 58 B1 02 95 06 B1 03 85 0B C1 00 09 22 A1 02 09 52 25 0A 46 FF FF 66 01 10 55 0C 75 08 95 01 B1 02 C1 00 C1 00 (70 bytes)
  UsagePage 13
  Usage 14
  Collection 1
    ReportID 12
    Usage 34
    Collection 0
      Usage 87
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 1
      Feature 2
      Usage 88
      Feature 2
      ReportCount 6
      Feature 3
      ReportID 11
    EndCollection 0
    Usage 34
    Collection 2
      Usage 82
      LogicalMaximum 10
      PhysicalMaximum 65535
      Unit 4097
      UnitExponent 12
      ReportSize 8
      ReportCount 1
      Feature 2
    EndCollection 0
  EndCollection 0
Usage: D000E 851982
Feature: ReportID=12, Length=2, Items=3
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0057 852055
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0058 852056
  6 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=11, Length=2, Items=1
  1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0052 852050
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_046d&pid_c534&mi_01&col01#7&1ebb799e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 8, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 02 A1 01 85 02 09 01 A1 00 05 09 19 01 29 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 10 81 02 05 01 09 30 26 FF 07 45 00 75 0C 95 01 81 06 09 31 81 06 09 38 25 7F 75 08 81 06 05 0C 0A 38 02 81 06 C1 00 C1 00 (74 bytes)
  UsagePage 1
  Usage 2
  Collection 1
    ReportID 2
    Usage 1
    Collection 0
      UsagePage 9
      UsageMinimum 1
      UsageMaximum 16
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 16
      Input 2
      UsagePage 1
      Usage 48
      LogicalMaximum 2047
      PhysicalMaximum 0
      ReportSize 12
      ReportCount 1
      Input 6
      Usage 49
      Input 6
      Usage 56
      LogicalMaximum 127
      ReportSize 8
      Input 6
      UsagePage 12
      Usage 568
      Input 6
    EndCollection 0
  EndCollection 0
Usage: 10002 GenericDesktopMouse
Input: ReportID=2, Length=8, Items=5
  16 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3, 90004 Button4, 90005 Button5, 90006 Button6, 90007 Button7, 90008 Button8, 90009 Button9, 9000A Button10, 9000B Button11, 9000C Button12, 9000D Button13, 9000E Button14, 9000F Button15, 90010 Button16
  1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX
  1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: C0238 787000
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_047f&pid_c056&mi_03&col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10)
Max Lengths: Input 2, Output 2, Feature 0
Serial Ports:
Report Descriptor:
  05 0B 09 05 A1 01 85 08 09 2F 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 09 20 81 22 09 21 81 22 95 05 81 03 85 09 05 08 09 09 95 01 91 22 95 07 91 03 85 17 09 17 95 01 91 22 95 07 91 03 85 18 09 18 95 01 91 22 95 07 91 03 85 1E 09 1E 95 01 91 22 95 07 91 03 85 20 09 20 95 01 91 22 95 07 91 03 85 2A 09 2A 95 01 91 22 95 07 91 03 C1 00 (116 bytes)
  UsagePage 11
  Usage 5
  Collection 1
    ReportID 8
    Usage 47
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 6
    Usage 32
    Input 34
    Usage 33
    Input 34
    ReportCount 5
    Input 3
    ReportID 9
    UsagePage 8
    Usage 9
    ReportCount 1
    Output 34
    ReportCount 7
    Output 3
    ReportID 23
    Usage 23
    ReportCount 1
    Output 34
    ReportCount 7
    Output 3
    ReportID 24
    Usage 24
    ReportCount 1
    Output 34
    ReportCount 7
    Output 3
    ReportID 30
    Usage 30
    ReportCount 1
    Output 34
    ReportCount 7
    Output 3
    ReportID 32
    Usage 32
    ReportCount 1
    Output 34
    ReportCount 7
    Output 3
    ReportID 42
    Usage 42
    ReportCount 1
    Output 34
    ReportCount 7
    Output 3
  EndCollection 0
Usage: B0005 720901
Input: ReportID=8, Length=2, Items=4
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: B002F 720943
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: B0020 720928
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: B0021 720929
  5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=9, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80009 524297
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=23, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80017 524311
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=24, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80018 524312
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=30, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 8001E 524318
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=32, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80020 524320
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=42, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 8002A 524330
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
(unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0)
Max Lengths: Input 2, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 06 A1 01 85 01 05 07 09 69 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 6A 81 02 09 6B 81 02 09 6C 81 02 09 E3 81 02 09 4C 81 02 09 E2 81 02 09 E0 81 02 C1 00 (60 bytes)
  UsagePage 1
  Usage 6
  Collection 1
    ReportID 1
    UsagePage 7
    Usage 105
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 2
    Usage 106
    Input 2
    Usage 107
    Input 2
    Usage 108
    Input 2
    Usage 227
    Input 2
    Usage 76
    Input 2
    Usage 226
    Input 2
    Usage 224
    Input 2
  EndCollection 0
Usage: 10006 GenericDesktopKeyboard
Input: ReportID=1, Length=2, Items=8
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 70069 458857
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7006A 458858
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7006B 458859
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7006C 458860
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E3 KeyboardLeftGUI
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7004C KeyboardDelete
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E2 KeyboardLeftAlt
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_046d&pid_c534&mi_01&col02#7&1ebb799e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 5, Output 0, Feature 0
Serial Ports:
System.NotSupportedException: Unable to reconstruct the report descriptor.
   at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\libusb\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195
   at HidSharp.Test.Program.Main(String[] args) in C:\work\libusb\HidSharp\HidSharp.Test\Program.cs:line 249
\\?\hid#vid_046d&pid_c534&mi_00#7&51bc424&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 9, Output 2, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 05 08 19 01 29 05 95 05 91 02 95 03 91 03 C1 00 (50 bytes)
  UsagePage 1
  Usage 6
  Collection 1
    UsagePage 7
    UsageMinimum 224
    UsageMaximum 231
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 8
    Input 2
    ReportCount 56
    Input 3
    UsagePage 8
    UsageMinimum 1
    UsageMaximum 5
    ReportCount 5
    Output 2
    ReportCount 3
    Output 3
  EndCollection 0
Usage: 10006 GenericDesktopKeyboard
Input: ReportID=0, Length=9, Items=2
  8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI
  56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=0, Length=2, Items=2
  5 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 80001 LedNumLock, 80002 LedCapsLock, 80003 LedScrollLock, 80004 LedCompose, 80005 LedKana
  3 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Failed to open device.


\\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13)
Max Lengths: Input 28, Output 0, Feature 8
Serial Ports:
Report Descriptor:
  06 01 FF 09 01 A1 01 85 03 09 01 15 00 25 FF 35 00 46 FF FF 66 01 10 55 0C 75 08 95 1B 81 02 85 04 09 02 81 02 85 06 09 04 95 07 81 02 25 01 45 01 65 00 55 00 75 01 95 A0 81 03 85 05 09 03 25 FF 46 FF FF 66 01 10 55 0C 75 08 95 07 B1 02 C1 00 (81 bytes)
  UsagePage 65281
  Usage 1
  Collection 1
    ReportID 3
    Usage 1
    LogicalMinimum 0
    LogicalMaximum 255
    PhysicalMinimum 0
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 8
    ReportCount 27
    Input 2
    ReportID 4
    Usage 2
    Input 2
    ReportID 6
    Usage 4
    ReportCount 7
    Input 2
    LogicalMaximum 1
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 160
    Input 3
    ReportID 5
    Usage 3
    LogicalMaximum 255
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 8
    ReportCount 7
    Feature 2
  EndCollection 0
Usage: FF010001 4278255617
Input: ReportID=3, Length=28, Items=1
  27 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010001 4278255617
Input: ReportID=4, Length=28, Items=1
  27 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010002 4278255618
Input: ReportID=6, Length=28, Items=2
  7 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010004 4278255620
  160 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=5, Length=8, Items=1
  7 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010003 4278255619
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_413c&pid_b06e#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer)  (no serial number) (VID 16700, PID 45166, version 1.1)
Max Lengths: Input 193, Output 193, Feature 0
Serial Ports:
Report Descriptor:
  06 DA FF 09 DA A1 01 09 DA 25 7F 35 00 45 00 65 00 55 00 75 08 95 01 81 02 15 00 25 01 45 01 75 01 96 F8 05 81 03 96 00 06 91 03 C1 00 (45 bytes)
  UsagePage 65498
  Usage 218
  Collection 1
    Usage 218
    LogicalMaximum 127
    PhysicalMinimum 0
    PhysicalMaximum 0
    Unit 0
    UnitExponent 0
    ReportSize 8
    ReportCount 1
    Input 2
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMaximum 1
    ReportSize 1
    ReportCount 1528
    Input 3
    ReportCount 1536
    Output 3
  EndCollection 0
Usage: FFDA00DA 4292477146
Input: ReportID=0, Length=193, Items=2
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFDA00DA 4292477146
  1528 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=0, Length=193, Items=1
  1536 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_04d8&pid_003f#e&24ba9f4d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microchip Technology Inc. Simple HID Device Demo (no serial number) (VID 1240, PID 63, version 0.2)
Max Lengths: Input 65, Output 65, Feature 0
Serial Ports:
Report Descriptor:
  06 00 FF 09 01 A1 01 19 01 29 40 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 40 81 00 96 C0 01 81 03 19 01 29 40 95 40 91 00 96 C0 01 91 03 C1 00 (49 bytes)
  UsagePage 65280
  Usage 1
  Collection 1
    UsageMinimum 1
    UsageMaximum 64
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 64
    Input 0
    ReportCount 448
    Input 3
    UsageMinimum 1
    UsageMaximum 64
    ReportCount 64
    Output 0
    ReportCount 448
    Output 3
  EndCollection 0
Usage: FF000001 4278190081
Input: ReportID=0, Length=65, Items=2
  64 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: None, Usages: FF000001 4278190081, FF000002 4278190082, FF000003 4278190083, FF000004 4278190084, FF000005 4278190085, FF000006 4278190086, FF000007 4278190087, FF000008 4278190088, FF000009 4278190089, FF00000A 4278190090, FF00000B 4278190091, FF00000C 4278190092, FF00000D 4278190093, FF00000E 4278190094, FF00000F 4278190095, FF000010 4278190096, FF000011 4278190097, FF000012 4278190098, FF000013 4278190099, FF000014 4278190100, FF000015 4278190101, FF000016 4278190102, FF000017 4278190103, FF000018 4278190104, FF000019 4278190105, FF00001A 4278190106, FF00001B 4278190107, FF00001C 4278190108, FF00001D 4278190109, FF00001E 4278190110, FF00001F 4278190111, FF000020 4278190112, FF000021 4278190113, FF000022 4278190114, FF000023 4278190115, FF000024 4278190116, FF000025 4278190117, FF000026 4278190118, FF000027 4278190119, FF000028 4278190120, FF000029 4278190121, FF00002A 4278190122, FF00002B 4278190123, FF00002C 4278190124, FF00002D 4278190125, FF00002E 4278190126, FF00002F 4278190127, FF000030 4278190128, FF000031 4278190129, FF000032 4278190130, FF000033 4278190131, FF000034 4278190132, FF000035 4278190133, FF000036 4278190134, FF000037 4278190135, FF000038 4278190136, FF000039 4278190137, FF00003A 4278190138, FF00003B 4278190139, FF00003C 4278190140, FF00003D 4278190141, FF00003E 4278190142, FF00003F 4278190143, FF000040 4278190144
  448 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=0, Length=65, Items=2
  64 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: None, Usages: FF000001 4278190081, FF000002 4278190082, FF000003 4278190083, FF000004 4278190084, FF000005 4278190085, FF000006 4278190086, FF000007 4278190087, FF000008 4278190088, FF000009 4278190089, FF00000A 4278190090, FF00000B 4278190091, FF00000C 4278190092, FF00000D 4278190093, FF00000E 4278190094, FF00000F 4278190095, FF000010 4278190096, FF000011 4278190097, FF000012 4278190098, FF000013 4278190099, FF000014 4278190100, FF000015 4278190101, FF000016 4278190102, FF000017 4278190103, FF000018 4278190104, FF000019 4278190105, FF00001A 4278190106, FF00001B 4278190107, FF00001C 4278190108, FF00001D 4278190109, FF00001E 4278190110, FF00001F 4278190111, FF000020 4278190112, FF000021 4278190113, FF000022 4278190114, FF000023 4278190115, FF000024 4278190116, FF000025 4278190117, FF000026 4278190118, FF000027 4278190119, FF000028 4278190120, FF000029 4278190121, FF00002A 4278190122, FF00002B 4278190123, FF00002C 4278190124, FF00002D 4278190125, FF00002E 4278190126, FF00002F 4278190127, FF000030 4278190128, FF000031 4278190129, FF000032 4278190130, FF000033 4278190131, FF000034 4278190132, FF000035 4278190133, FF000036 4278190134, FF000037 4278190135, FF000038 4278190136, FF000039 4278190137, FF00003A 4278190138, FF00003B 4278190139, FF00003C 4278190140, FF00003D 4278190141, FF00003E 4278190142, FF00003F 4278190143, FF000040 4278190144
  448 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_413c&pid_b06f#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
(unnamed manufacturer)  (no serial number) (VID 16700, PID 45167, version 1.1)
Max Lengths: Input 193, Output 193, Feature 0
Serial Ports:
Report Descriptor:
  06 DA FF 09 DA A1 01 09 DA 25 7F 35 00 45 00 65 00 55 00 75 08 95 01 81 02 15 00 25 01 45 01 75 01 96 F8 05 81 03 96 00 06 91 03 C1 00 (45 bytes)
  UsagePage 65498
  Usage 218
  Collection 1
    Usage 218
    LogicalMaximum 127
    PhysicalMinimum 0
    PhysicalMaximum 0
    Unit 0
    UnitExponent 0
    ReportSize 8
    ReportCount 1
    Input 2
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMaximum 1
    ReportSize 1
    ReportCount 1528
    Input 3
    ReportCount 1536
    Output 3
  EndCollection 0
Usage: FFDA00DA 4292477146
Input: ReportID=0, Length=193, Items=2
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFDA00DA 4292477146
  1528 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=0, Length=193, Items=1
  1536 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


Press a key to exit...

But HIDSharp seems to work (not checking the contents). I have a long list of HID device in the system (Windows 10, Dell Laptop with a docking station). Edit to add: it is not stable for my system and the output does not seem to be correct, at least for my Microchip PICKit 2). <details> <summary> click to expand </summary> ``` /c/work/hid/HidSharp $ ./bin/HidSharp.Test.exe All device list: (unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0) @ \\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col03#7&1ebb799e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} (VID 1102, PID 4626, version 0.0) @ \\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col04#7&1ebb799e&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) @ \\?\hid#vid_047f&pid_c056&mi_03&col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col05#7&1ebb799e&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) @ \\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0) @ \\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} (VID 1102, PID 4626, version 0.0) @ \\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Optical Mouse (no serial number) (VID 1133, PID 49271, version 72.0) @ \\?\hid#vid_046d&pid_c077#e&113cd935&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) @ \\?\hid#vid_047f&pid_c056&mi_03&col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) @ \\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} DELL Dell USB Entry Keyboard (no serial number) (VID 16700, PID 8455, version 1.78) @ \\?\hid#vid_413c&pid_2107#e&11005b8d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col01#7&1ebb799e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) @ \\?\hid#vid_047f&pid_c056&mi_03&col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) @ \\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col02#7&1ebb799e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_00#7&51bc424&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) @ \\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (no serial number) (VID 16700, PID 45166, version 1.1) @ \\?\hid#vid_413c&pid_b06e#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microchip Technology Inc. Simple HID Device Demo (no serial number) (VID 1240, PID 63, version 0.2) @ \\?\hid#vid_04d8&pid_003f#e&24ba9f4d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (no serial number) (VID 16700, PID 45167, version 1.1) @ \\?\hid#vid_413c&pid_b06f#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} COM3 (\\.\COM3) @ \\.\COM3 BLE device list: Press any key Complete device list (took 0 ms to get 26 devices): \\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0) Max Lengths: Input 2, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 0C A1 01 85 08 09 C6 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 95 07 81 03 C1 00 (34 bytes) UsagePage 1 Usage 12 Collection 1 ReportID 8 Usage 198 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 6 ReportCount 7 Input 3 EndCollection 0 Usage: 1000C 65548 Input: ReportID=8, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: 100C6 65734 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#dell091a&col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) Max Lengths: Input 6, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 03 81 02 95 05 81 03 05 01 09 30 25 7F 45 00 75 08 95 01 81 06 09 31 81 06 09 38 81 06 05 0C 0A 38 02 81 06 C1 00 C1 00 (73 bytes) UsagePage 1 Usage 2 Collection 1 ReportID 1 Usage 1 Collection 0 UsagePage 9 UsageMinimum 1 UsageMaximum 3 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 3 Input 2 ReportCount 5 Input 3 UsagePage 1 Usage 48 LogicalMaximum 127 PhysicalMaximum 0 ReportSize 8 ReportCount 1 Input 6 Usage 49 Input 6 Usage 56 Input 6 UsagePage 12 Usage 568 Input 6 EndCollection 0 EndCollection 0 Usage: 10002 GenericDesktopMouse Input: ReportID=1, Length=6, Items=6 3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3 5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: C0238 787000 Opening device for 20 seconds... Failed to open device. \\?\hid#dell091a&col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) Max Lengths: Input 10, Output 0, Feature 257 Serial Ports: Report Descriptor: 05 0D 09 05 A1 01 85 08 09 22 A1 02 09 47 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 42 81 02 09 51 25 05 45 00 75 03 81 02 25 01 45 01 75 01 95 03 81 03 05 01 09 30 26 AF 04 46 E8 03 65 11 55 0E 75 10 95 01 81 02 09 31 26 7B 02 46 12 02 81 02 C1 00 05 0D 09 56 26 FF FF 46 FF FF 66 01 10 55 0C 81 02 09 54 25 05 75 08 81 02 05 09 09 02 25 01 45 01 65 00 55 00 75 01 81 02 09 03 81 02 95 06 81 03 85 09 05 0D 09 55 25 05 46 FF FF 66 01 10 55 0C 75 08 95 01 B1 02 25 01 45 01 65 00 55 00 75 01 96 F8 07 B1 03 85 0A 06 00 FF 09 C5 25 FF 46 FF FF 66 01 10 55 0C 75 08 96 00 01 B1 02 C1 00 (200 bytes) UsagePage 13 Usage 5 Collection 1 ReportID 8 Usage 34 Collection 2 Usage 71 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 2 Usage 66 Input 2 Usage 81 LogicalMaximum 5 PhysicalMaximum 0 ReportSize 3 Input 2 LogicalMaximum 1 PhysicalMaximum 1 ReportSize 1 ReportCount 3 Input 3 UsagePage 1 Usage 48 LogicalMaximum 1199 PhysicalMaximum 1000 Unit 17 UnitExponent 14 ReportSize 16 ReportCount 1 Input 2 Usage 49 LogicalMaximum 635 PhysicalMaximum 530 Input 2 EndCollection 0 UsagePage 13 Usage 86 LogicalMaximum 65535 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 Input 2 Usage 84 LogicalMaximum 5 ReportSize 8 Input 2 UsagePage 9 Usage 2 LogicalMaximum 1 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 Input 2 Usage 3 Input 2 ReportCount 6 Input 3 ReportID 9 UsagePage 13 Usage 85 LogicalMaximum 5 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 1 Feature 2 LogicalMaximum 1 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 2040 Feature 3 ReportID 10 UsagePage 65280 Usage 197 LogicalMaximum 255 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 256 Feature 2 EndCollection 0 Usage: D0005 851973 Input: ReportID=8, Length=10, Items=11 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0047 852039 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0042 852034 1 Elements x 3 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: D0051 852049 3 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: 10030 GenericDesktopX 1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: 10031 GenericDesktopY 1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0056 852054 1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0054 852052 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90002 Button2 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90003 Button3 6 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=9, Length=257, Items=2 1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0055 852053 2040 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=10, Length=257, Items=1 256 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277 Opening device for 20 seconds... Failed to open device. \\?\hid#vid_046d&pid_c534&mi_01&col03#7&1ebb799e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 2, Output 0, Feature 0 Serial Ports: System.NotSupportedException: Unable to reconstruct the report descriptor. at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\libusb\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195 at HidSharp.Test.Program.Main(String[] args) in C:\work\libusb\HidSharp\HidSharp.Test\Program.cs:line 249 \\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd (VID 1102, PID 4626, version 0.0) Max Lengths: Input 9, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 06 A1 01 85 07 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 C1 00 (38 bytes) UsagePage 1 Usage 6 Collection 1 ReportID 7 UsagePage 7 UsageMinimum 224 UsageMaximum 231 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 8 Input 2 ReportCount 56 Input 3 EndCollection 0 Usage: 10006 GenericDesktopKeyboard Input: ReportID=7, Length=9, Items=2 8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI 56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Failed to open device. \\?\hid#vid_046d&pid_c534&mi_01&col04#7&1ebb799e&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 7, Output 7, Feature 0 Serial Ports: Report Descriptor: 06 00 FF 09 01 A1 01 85 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 30 81 03 91 03 C1 00 (31 bytes) UsagePage 65280 Usage 1 Collection 1 ReportID 16 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 48 Input 3 Output 3 EndCollection 0 Usage: FF000001 4278190081 Input: ReportID=16, Length=7, Items=1 48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=16, Length=7, Items=1 48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_047f&pid_c056&mi_03&col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) Max Lengths: Input 33, Output 37, Feature 0 Serial Ports: Report Descriptor: 05 0C 09 01 A1 01 85 01 09 E9 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 09 EA 81 06 95 FE 81 03 85 02 96 00 01 81 03 85 05 09 00 45 00 75 08 95 20 81 02 85 07 09 00 81 02 85 04 09 00 95 24 91 02 85 06 09 00 91 02 C1 00 (77 bytes) UsagePage 12 Usage 1 Collection 1 ReportID 1 Usage 233 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 6 Usage 234 Input 6 ReportCount 254 Input 3 ReportID 2 ReportCount 256 Input 3 ReportID 5 Usage 0 PhysicalMaximum 0 ReportSize 8 ReportCount 32 Input 2 ReportID 7 Usage 0 Input 2 ReportID 4 Usage 0 ReportCount 36 Output 2 ReportID 6 Usage 0 Output 2 EndCollection 0 Usage: C0001 ConsumerConsumerControl Input: ReportID=1, Length=33, Items=3 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: C00E9 ConsumerVolumeIncrement 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: C00EA ConsumerVolumeDecrement 254 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Input: ReportID=2, Length=33, Items=1 256 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Input: ReportID=5, Length=33, Items=1 32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432 Input: ReportID=7, Length=33, Items=1 32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432 Output: ReportID=4, Length=37, Items=1 36 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432 Output: ReportID=6, Length=37, Items=1 36 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: C0000 786432 Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_046d&pid_c534&mi_01&col05#7&1ebb799e&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 20, Output 20, Feature 0 Serial Ports: Report Descriptor: 06 00 FF 09 02 A1 01 85 11 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 98 81 03 91 03 C1 00 (31 bytes) UsagePage 65280 Usage 2 Collection 1 ReportID 17 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 152 Input 3 Output 3 EndCollection 0 Usage: FF000002 4278190082 Input: ReportID=17, Length=20, Items=1 152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=17, Length=20, Items=1 152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#converteddevice&col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) Max Lengths: Input 2, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 0C 09 01 A1 01 85 02 09 E9 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 EA 81 02 0A 21 02 81 02 95 05 81 03 C1 00 (43 bytes) UsagePage 12 Usage 1 Collection 1 ReportID 2 Usage 233 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 2 Usage 234 Input 2 Usage 545 Input 2 ReportCount 5 Input 3 EndCollection 0 Usage: C0001 ConsumerConsumerControl Input: ReportID=2, Length=2, Items=4 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: C00E9 ConsumerVolumeIncrement 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: C00EA ConsumerVolumeDecrement 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: C0221 786977 5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 32903, PID 2590, version 2.0) Max Lengths: Input 2, Output 0, Feature 2 Serial Ports: Report Descriptor: 05 01 09 0D A1 01 85 1C 09 0D A1 02 09 81 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 95 07 81 03 09 CB 95 01 B1 02 95 07 B1 03 C1 00 C1 00 (50 bytes) UsagePage 1 Usage 13 Collection 1 ReportID 28 Usage 13 Collection 2 Usage 129 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 2 ReportCount 7 Input 3 Usage 203 ReportCount 1 Feature 2 ReportCount 7 Feature 3 EndCollection 0 EndCollection 0 Usage: 1000D 65549 Input: ReportID=28, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 10081 65665 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=28, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 100CB 65739 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (VID 1102, PID 4626, version 0.0) Max Lengths: Input 6, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 02 A1 01 85 06 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 03 81 02 95 05 81 03 05 01 09 30 26 00 02 45 00 75 10 95 01 81 06 09 31 81 06 C1 00 C1 00 (63 bytes) UsagePage 1 Usage 2 Collection 1 ReportID 6 Usage 1 Collection 0 UsagePage 9 UsageMinimum 1 UsageMaximum 3 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 3 Input 2 ReportCount 5 Input 3 UsagePage 1 Usage 48 LogicalMaximum 512 PhysicalMaximum 0 ReportSize 16 ReportCount 1 Input 6 Usage 49 Input 6 EndCollection 0 EndCollection 0 Usage: 10002 GenericDesktopMouse Input: ReportID=6, Length=6, Items=4 3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3 5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 1 Elements x 16 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX 1 Elements x 16 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY Opening device for 20 seconds... Failed to open device. \\?\hid#vid_046d&pid_c077#e&113cd935&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Optical Mouse (no serial number) (VID 1133, PID 49271, version 72.0) Max Lengths: Input 5, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 03 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 03 81 02 95 05 81 03 05 01 09 30 25 7F 45 00 75 08 95 01 81 06 09 31 81 06 09 38 81 06 C1 00 C1 00 (64 bytes) UsagePage 1 Usage 2 Collection 1 Usage 1 Collection 0 UsagePage 9 UsageMinimum 1 UsageMaximum 3 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 3 Input 2 ReportCount 5 Input 3 UsagePage 1 Usage 48 LogicalMaximum 127 PhysicalMaximum 0 ReportSize 8 ReportCount 1 Input 6 Usage 49 Input 6 Usage 56 Input 6 EndCollection 0 EndCollection 0 Usage: 10002 GenericDesktopMouse Input: ReportID=0, Length=5, Items=5 3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3 5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel Opening device for 20 seconds... Failed to open device. \\?\hid#vid_047f&pid_c056&mi_03&col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) Max Lengths: Input 33, Output 33, Feature 3 Serial Ports: Report Descriptor: 06 A0 FF 09 03 A1 01 85 14 09 B1 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 09 B2 81 06 09 B5 81 06 09 B7 81 06 09 B3 81 06 95 FB 81 03 85 1F 09 9C 95 01 81 06 95 FF 81 03 85 03 09 30 45 00 75 08 95 20 81 02 85 15 09 8C 26 FF FF 75 10 95 01 81 22 25 01 45 01 75 01 95 F0 81 03 85 19 09 8D 95 01 91 22 09 8F 91 22 09 9E 91 22 09 DC 91 22 09 D2 91 06 09 D9 91 06 95 FA 91 03 85 1A 09 B5 95 01 91 22 95 FF 91 03 85 03 09 30 45 00 75 08 95 20 91 02 85 1B 09 CF 45 01 75 01 95 01 B1 22 09 B5 B1 22 09 DE B1 23 09 D8 B1 22 95 04 B1 03 09 09 95 01 B1 22 09 17 B1 22 09 18 B1 22 09 1E B1 22 09 20 B1 22 09 2A B1 22 95 02 B1 03 C1 00 (212 bytes) UsagePage 65440 Usage 3 Collection 1 ReportID 20 Usage 177 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 6 Usage 178 Input 6 Usage 181 Input 6 Usage 183 Input 6 Usage 179 Input 6 ReportCount 251 Input 3 ReportID 31 Usage 156 ReportCount 1 Input 6 ReportCount 255 Input 3 ReportID 3 Usage 48 PhysicalMaximum 0 ReportSize 8 ReportCount 32 Input 2 ReportID 21 Usage 140 LogicalMaximum 65535 ReportSize 16 ReportCount 1 Input 34 LogicalMaximum 1 PhysicalMaximum 1 ReportSize 1 ReportCount 240 Input 3 ReportID 25 Usage 141 ReportCount 1 Output 34 Usage 143 Output 34 Usage 158 Output 34 Usage 220 Output 34 Usage 210 Output 6 Usage 217 Output 6 ReportCount 250 Output 3 ReportID 26 Usage 181 ReportCount 1 Output 34 ReportCount 255 Output 3 ReportID 3 Usage 48 PhysicalMaximum 0 ReportSize 8 ReportCount 32 Output 2 ReportID 27 Usage 207 PhysicalMaximum 1 ReportSize 1 ReportCount 1 Feature 34 Usage 181 Feature 34 Usage 222 Feature 35 Usage 216 Feature 34 ReportCount 4 Feature 3 Usage 9 ReportCount 1 Feature 34 Usage 23 Feature 34 Usage 24 Feature 34 Usage 30 Feature 34 Usage 32 Feature 34 Usage 42 Feature 34 ReportCount 2 Feature 3 EndCollection 0 Usage: FFA00003 4288675843 Input: ReportID=20, Length=33, Items=6 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B1 4288676017 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B2 4288676018 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B5 4288676021 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B7 4288676023 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000B3 4288676019 251 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Input: ReportID=31, Length=33, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA0009C 4288675996 255 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Input: ReportID=3, Length=33, Items=1 32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFA00030 4288675888 Input: ReportID=21, Length=33, Items=2 1 Elements x 16 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, NoPreferred, Usages: FFA0008C 4288675980 240 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=25, Length=33, Items=7 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0008D 4288675981 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0008F 4288675983 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0009E 4288675998 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000DC 4288676060 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000D2 4288676050 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: FFA000D9 4288676057 250 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=26, Length=33, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000B5 4288676021 255 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=3, Length=33, Items=1 32 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFA00030 4288675888 Feature: ReportID=27, Length=3, Items=12 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000CF 4288676047 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000B5 4288676021 1 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, NoPreferred, Usages: FFA000DE 4288676062 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA000D8 4288676056 4 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00009 4288675849 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00017 4288675863 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00018 4288675864 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0001E 4288675870 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA00020 4288675872 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: FFA0002A 4288675882 2 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#dell091a&col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) Max Lengths: Input 0, Output 0, Feature 135 Serial Ports: Report Descriptor: 06 02 FF 09 01 A1 01 85 07 09 02 15 00 25 FF 35 00 46 FF FF 66 01 10 55 0C 75 08 95 86 B1 02 C1 00 (33 bytes) UsagePage 65282 Usage 1 Collection 1 ReportID 7 Usage 2 LogicalMinimum 0 LogicalMaximum 255 PhysicalMinimum 0 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 134 Feature 2 EndCollection 0 Usage: FF020001 4278321153 Feature: ReportID=7, Length=135, Items=1 134 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF020002 4278321154 Opening device for 20 seconds... Opened device. Closed device. \\?\hid#converteddevice&col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) Max Lengths: Input 2, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 80 A1 01 85 03 09 81 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 95 07 81 03 C1 00 (34 bytes) UsagePage 1 Usage 128 Collection 1 ReportID 3 Usage 129 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 2 ReportCount 7 Input 3 EndCollection 0 Usage: 10080 GenericDesktopSystemControl Input: ReportID=3, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 10081 65665 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_413c&pid_2107#e&11005b8d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd DELL Dell USB Entry Keyboard (no serial number) (VID 16700, PID 8455, version 1.78) Max Lengths: Input 9, Output 2, Feature 0 Serial Ports: Report Descriptor: 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 05 08 19 01 29 03 95 03 91 02 95 05 91 03 C1 00 (50 bytes) UsagePage 1 Usage 6 Collection 1 UsagePage 7 UsageMinimum 224 UsageMaximum 231 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 8 Input 2 ReportCount 56 Input 3 UsagePage 8 UsageMinimum 1 UsageMaximum 3 ReportCount 3 Output 2 ReportCount 5 Output 3 EndCollection 0 Usage: 10006 GenericDesktopKeyboard Input: ReportID=0, Length=9, Items=2 8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI 56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=0, Length=2, Items=2 3 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 80001 LedNumLock, 80002 LedCapsLock, 80003 LedScrollLock 5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Failed to open device. \\?\hid#dell091a&col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) Max Lengths: Input 0, Output 0, Feature 2 Serial Ports: Report Descriptor: 05 0D 09 0E A1 01 85 0C 09 22 A1 00 09 57 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 B1 02 09 58 B1 02 95 06 B1 03 85 0B C1 00 09 22 A1 02 09 52 25 0A 46 FF FF 66 01 10 55 0C 75 08 95 01 B1 02 C1 00 C1 00 (70 bytes) UsagePage 13 Usage 14 Collection 1 ReportID 12 Usage 34 Collection 0 Usage 87 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Feature 2 Usage 88 Feature 2 ReportCount 6 Feature 3 ReportID 11 EndCollection 0 Usage 34 Collection 2 Usage 82 LogicalMaximum 10 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 1 Feature 2 EndCollection 0 EndCollection 0 Usage: D000E 851982 Feature: ReportID=12, Length=2, Items=3 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0057 852055 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0058 852056 6 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=11, Length=2, Items=1 1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0052 852050 Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_046d&pid_c534&mi_01&col01#7&1ebb799e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 8, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 02 A1 01 85 02 09 01 A1 00 05 09 19 01 29 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 10 81 02 05 01 09 30 26 FF 07 45 00 75 0C 95 01 81 06 09 31 81 06 09 38 25 7F 75 08 81 06 05 0C 0A 38 02 81 06 C1 00 C1 00 (74 bytes) UsagePage 1 Usage 2 Collection 1 ReportID 2 Usage 1 Collection 0 UsagePage 9 UsageMinimum 1 UsageMaximum 16 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 16 Input 2 UsagePage 1 Usage 48 LogicalMaximum 2047 PhysicalMaximum 0 ReportSize 12 ReportCount 1 Input 6 Usage 49 Input 6 Usage 56 LogicalMaximum 127 ReportSize 8 Input 6 UsagePage 12 Usage 568 Input 6 EndCollection 0 EndCollection 0 Usage: 10002 GenericDesktopMouse Input: ReportID=2, Length=8, Items=5 16 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3, 90004 Button4, 90005 Button5, 90006 Button6, 90007 Button7, 90008 Button8, 90009 Button9, 9000A Button10, 9000B Button11, 9000C Button12, 9000D Button13, 9000E Button14, 9000F Button15, 90010 Button16 1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX 1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: C0238 787000 Opening device for 20 seconds... Failed to open device. \\?\hid#vid_047f&pid_c056&mi_03&col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Plantronics Plantronics Blackwire 3220 Series D1CEC32927974D5F9BD6B2AEBF2EA8E3 (VID 1151, PID 49238, version 2.10) Max Lengths: Input 2, Output 2, Feature 0 Serial Ports: Report Descriptor: 05 0B 09 05 A1 01 85 08 09 2F 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 09 20 81 22 09 21 81 22 95 05 81 03 85 09 05 08 09 09 95 01 91 22 95 07 91 03 85 17 09 17 95 01 91 22 95 07 91 03 85 18 09 18 95 01 91 22 95 07 91 03 85 1E 09 1E 95 01 91 22 95 07 91 03 85 20 09 20 95 01 91 22 95 07 91 03 85 2A 09 2A 95 01 91 22 95 07 91 03 C1 00 (116 bytes) UsagePage 11 Usage 5 Collection 1 ReportID 8 Usage 47 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 6 Usage 32 Input 34 Usage 33 Input 34 ReportCount 5 Input 3 ReportID 9 UsagePage 8 Usage 9 ReportCount 1 Output 34 ReportCount 7 Output 3 ReportID 23 Usage 23 ReportCount 1 Output 34 ReportCount 7 Output 3 ReportID 24 Usage 24 ReportCount 1 Output 34 ReportCount 7 Output 3 ReportID 30 Usage 30 ReportCount 1 Output 34 ReportCount 7 Output 3 ReportID 32 Usage 32 ReportCount 1 Output 34 ReportCount 7 Output 3 ReportID 42 Usage 42 ReportCount 1 Output 34 ReportCount 7 Output 3 EndCollection 0 Usage: B0005 720901 Input: ReportID=8, Length=2, Items=4 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: B002F 720943 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: B0020 720928 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: B0021 720929 5 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=9, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80009 524297 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=23, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80017 524311 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=24, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80018 524312 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=30, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 8001E 524318 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=32, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 80020 524320 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=42, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: ToggleButton, Flags: Variable, NoPreferred, Usages: 8002A 524330 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#converteddevice&col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd (unnamed manufacturer) (unnamed product) (no serial number) (VID 1118, PID 0, version 0.0) Max Lengths: Input 2, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 06 A1 01 85 01 05 07 09 69 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 6A 81 02 09 6B 81 02 09 6C 81 02 09 E3 81 02 09 4C 81 02 09 E2 81 02 09 E0 81 02 C1 00 (60 bytes) UsagePage 1 Usage 6 Collection 1 ReportID 1 UsagePage 7 Usage 105 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 2 Usage 106 Input 2 Usage 107 Input 2 Usage 108 Input 2 Usage 227 Input 2 Usage 76 Input 2 Usage 226 Input 2 Usage 224 Input 2 EndCollection 0 Usage: 10006 GenericDesktopKeyboard Input: ReportID=1, Length=2, Items=8 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 70069 458857 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7006A 458858 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7006B 458859 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7006C 458860 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E3 KeyboardLeftGUI 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 7004C KeyboardDelete 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E2 KeyboardLeftAlt 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl Opening device for 20 seconds... Failed to open device. \\?\hid#vid_046d&pid_c534&mi_01&col02#7&1ebb799e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 5, Output 0, Feature 0 Serial Ports: System.NotSupportedException: Unable to reconstruct the report descriptor. at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\libusb\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195 at HidSharp.Test.Program.Main(String[] args) in C:\work\libusb\HidSharp\HidSharp.Test\Program.cs:line 249 \\?\hid#vid_046d&pid_c534&mi_00#7&51bc424&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 9, Output 2, Feature 0 Serial Ports: Report Descriptor: 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 05 08 19 01 29 05 95 05 91 02 95 03 91 03 C1 00 (50 bytes) UsagePage 1 Usage 6 Collection 1 UsagePage 7 UsageMinimum 224 UsageMaximum 231 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 8 Input 2 ReportCount 56 Input 3 UsagePage 8 UsageMinimum 1 UsageMaximum 5 ReportCount 5 Output 2 ReportCount 3 Output 3 EndCollection 0 Usage: 10006 GenericDesktopKeyboard Input: ReportID=0, Length=9, Items=2 8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI 56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=0, Length=2, Items=2 5 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 80001 LedNumLock, 80002 LedCapsLock, 80003 LedScrollLock, 80004 LedCompose, 80005 LedKana 3 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Failed to open device. \\?\hid#dell091a&col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1160, PID 4639, version 4.13) Max Lengths: Input 28, Output 0, Feature 8 Serial Ports: Report Descriptor: 06 01 FF 09 01 A1 01 85 03 09 01 15 00 25 FF 35 00 46 FF FF 66 01 10 55 0C 75 08 95 1B 81 02 85 04 09 02 81 02 85 06 09 04 95 07 81 02 25 01 45 01 65 00 55 00 75 01 95 A0 81 03 85 05 09 03 25 FF 46 FF FF 66 01 10 55 0C 75 08 95 07 B1 02 C1 00 (81 bytes) UsagePage 65281 Usage 1 Collection 1 ReportID 3 Usage 1 LogicalMinimum 0 LogicalMaximum 255 PhysicalMinimum 0 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 27 Input 2 ReportID 4 Usage 2 Input 2 ReportID 6 Usage 4 ReportCount 7 Input 2 LogicalMaximum 1 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 160 Input 3 ReportID 5 Usage 3 LogicalMaximum 255 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 7 Feature 2 EndCollection 0 Usage: FF010001 4278255617 Input: ReportID=3, Length=28, Items=1 27 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010001 4278255617 Input: ReportID=4, Length=28, Items=1 27 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010002 4278255618 Input: ReportID=6, Length=28, Items=2 7 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010004 4278255620 160 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=5, Length=8, Items=1 7 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF010003 4278255619 Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_413c&pid_b06e#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (no serial number) (VID 16700, PID 45166, version 1.1) Max Lengths: Input 193, Output 193, Feature 0 Serial Ports: Report Descriptor: 06 DA FF 09 DA A1 01 09 DA 25 7F 35 00 45 00 65 00 55 00 75 08 95 01 81 02 15 00 25 01 45 01 75 01 96 F8 05 81 03 96 00 06 91 03 C1 00 (45 bytes) UsagePage 65498 Usage 218 Collection 1 Usage 218 LogicalMaximum 127 PhysicalMinimum 0 PhysicalMaximum 0 Unit 0 UnitExponent 0 ReportSize 8 ReportCount 1 Input 2 LogicalMinimum 0 LogicalMaximum 1 PhysicalMaximum 1 ReportSize 1 ReportCount 1528 Input 3 ReportCount 1536 Output 3 EndCollection 0 Usage: FFDA00DA 4292477146 Input: ReportID=0, Length=193, Items=2 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFDA00DA 4292477146 1528 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=0, Length=193, Items=1 1536 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_04d8&pid_003f#e&24ba9f4d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microchip Technology Inc. Simple HID Device Demo (no serial number) (VID 1240, PID 63, version 0.2) Max Lengths: Input 65, Output 65, Feature 0 Serial Ports: Report Descriptor: 06 00 FF 09 01 A1 01 19 01 29 40 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 40 81 00 96 C0 01 81 03 19 01 29 40 95 40 91 00 96 C0 01 91 03 C1 00 (49 bytes) UsagePage 65280 Usage 1 Collection 1 UsageMinimum 1 UsageMaximum 64 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 64 Input 0 ReportCount 448 Input 3 UsageMinimum 1 UsageMaximum 64 ReportCount 64 Output 0 ReportCount 448 Output 3 EndCollection 0 Usage: FF000001 4278190081 Input: ReportID=0, Length=65, Items=2 64 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: None, Usages: FF000001 4278190081, FF000002 4278190082, FF000003 4278190083, FF000004 4278190084, FF000005 4278190085, FF000006 4278190086, FF000007 4278190087, FF000008 4278190088, FF000009 4278190089, FF00000A 4278190090, FF00000B 4278190091, FF00000C 4278190092, FF00000D 4278190093, FF00000E 4278190094, FF00000F 4278190095, FF000010 4278190096, FF000011 4278190097, FF000012 4278190098, FF000013 4278190099, FF000014 4278190100, FF000015 4278190101, FF000016 4278190102, FF000017 4278190103, FF000018 4278190104, FF000019 4278190105, FF00001A 4278190106, FF00001B 4278190107, FF00001C 4278190108, FF00001D 4278190109, FF00001E 4278190110, FF00001F 4278190111, FF000020 4278190112, FF000021 4278190113, FF000022 4278190114, FF000023 4278190115, FF000024 4278190116, FF000025 4278190117, FF000026 4278190118, FF000027 4278190119, FF000028 4278190120, FF000029 4278190121, FF00002A 4278190122, FF00002B 4278190123, FF00002C 4278190124, FF00002D 4278190125, FF00002E 4278190126, FF00002F 4278190127, FF000030 4278190128, FF000031 4278190129, FF000032 4278190130, FF000033 4278190131, FF000034 4278190132, FF000035 4278190133, FF000036 4278190134, FF000037 4278190135, FF000038 4278190136, FF000039 4278190137, FF00003A 4278190138, FF00003B 4278190139, FF00003C 4278190140, FF00003D 4278190141, FF00003E 4278190142, FF00003F 4278190143, FF000040 4278190144 448 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=0, Length=65, Items=2 64 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: None, Usages: FF000001 4278190081, FF000002 4278190082, FF000003 4278190083, FF000004 4278190084, FF000005 4278190085, FF000006 4278190086, FF000007 4278190087, FF000008 4278190088, FF000009 4278190089, FF00000A 4278190090, FF00000B 4278190091, FF00000C 4278190092, FF00000D 4278190093, FF00000E 4278190094, FF00000F 4278190095, FF000010 4278190096, FF000011 4278190097, FF000012 4278190098, FF000013 4278190099, FF000014 4278190100, FF000015 4278190101, FF000016 4278190102, FF000017 4278190103, FF000018 4278190104, FF000019 4278190105, FF00001A 4278190106, FF00001B 4278190107, FF00001C 4278190108, FF00001D 4278190109, FF00001E 4278190110, FF00001F 4278190111, FF000020 4278190112, FF000021 4278190113, FF000022 4278190114, FF000023 4278190115, FF000024 4278190116, FF000025 4278190117, FF000026 4278190118, FF000027 4278190119, FF000028 4278190120, FF000029 4278190121, FF00002A 4278190122, FF00002B 4278190123, FF00002C 4278190124, FF00002D 4278190125, FF00002E 4278190126, FF00002F 4278190127, FF000030 4278190128, FF000031 4278190129, FF000032 4278190130, FF000033 4278190131, FF000034 4278190132, FF000035 4278190133, FF000036 4278190134, FF000037 4278190135, FF000038 4278190136, FF000039 4278190137, FF00003A 4278190138, FF00003B 4278190139, FF00003C 4278190140, FF00003D 4278190141, FF00003E 4278190142, FF00003F 4278190143, FF000040 4278190144 448 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_413c&pid_b06f#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} (unnamed manufacturer) (no serial number) (VID 16700, PID 45167, version 1.1) Max Lengths: Input 193, Output 193, Feature 0 Serial Ports: Report Descriptor: 06 DA FF 09 DA A1 01 09 DA 25 7F 35 00 45 00 65 00 55 00 75 08 95 01 81 02 15 00 25 01 45 01 75 01 96 F8 05 81 03 96 00 06 91 03 C1 00 (45 bytes) UsagePage 65498 Usage 218 Collection 1 Usage 218 LogicalMaximum 127 PhysicalMinimum 0 PhysicalMaximum 0 Unit 0 UnitExponent 0 ReportSize 8 ReportCount 1 Input 2 LogicalMinimum 0 LogicalMaximum 1 PhysicalMaximum 1 ReportSize 1 ReportCount 1528 Input 3 ReportCount 1536 Output 3 EndCollection 0 Usage: FFDA00DA 4292477146 Input: ReportID=0, Length=193, Items=2 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FFDA00DA 4292477146 1528 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=0, Length=193, Items=1 1536 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. Press a key to exit... ``` </details>
mcuee commented 2021-06-17 08:52:38 -05:00 (Migrated from github.com)

mac-hid-dump output seems to be a bit too simple.

./mac-hid-dump 
mac-hid-dump:
0000 0000: Apple - Headset
DESCRIPTOR:
  05  0c  09  01  a1  01  05  0c  09  cd  09  ea  09  e9  15  00 
  25  01  95  03  75  01  81  02  95  05  81  05  c0  
  (29 bytes)
1915 1025: ZY.Ltd - ZY Control Mic
DESCRIPTOR:
  05  01  09  02  a1  01  85  04  09  01  a1  00  05  09  19  01 
  29  05  15  00  25  01  95  03  75  01  81  02  95  01  75  05 
  81  03  05  01  09  30  09  31  09  38  15  81  25  7f  75  08 
  95  03  81  06  c0  c0  05  0c  09  01  a1  01  85  01  75  10 
  95  01  15  00  26  ff  03  19  00  2a  ff  03  81  00  c0  05 
  01  09  80  a1  01  85  02  75  01  95  02  15  00  25  01  09 
  81  09  82  81  02  75  01  95  0e  81  03  c0  06  00  ff  09 
  00  a1  01  85  06  15  00  26  ff  00  75  08  95  1f  09  00 
  b1  02  c0  
  (131 bytes)
0000 0000: Apple - 
DESCRIPTOR:
  06  00  ff  0a  ff  00  a1  01  15  00  26  ff  00  75  08  95 
  01  81  02  c0  
  (20 bytes)
046D C52B: Logitech - USB Receiver
DESCRIPTOR:
  06  00  ff  09  01  a1  01  85  10  75  08  95  06  15  00  26 
  ff  00  09  01  81  00  09  01  91  00  c0  06  00  ff  09  02 
  a1  01  85  11  75  08  95  13  15  00  26  ff  00  09  02  81 
  00  09  02  91  00  c0  06  00  ff  09  04  a1  01  85  20  75 
  08  95  0e  15  00  26  ff  00  09  41  81  00  09  41  91  00 
  85  21  95  1f  15  00  26  ff  00  09  42  81  00  09  42  91 
  00  c0  
  (98 bytes)
046D C52B: Logitech - USB Receiver
DESCRIPTOR:
  05  01  09  02  a1  01  85  02  09  01  a1  00  05  09  19  01 
  29  10  15  00  25  01  95  10  75  01  81  02  05  01  16  01 
  f8  26  ff  07  75  0c  95  02  09  30  09  31  81  06  15  81 
  25  7f  75  08  95  01  09  38  81  06  05  0c  0a  38  02  95 
  01  81  06  c0  c0  05  0c  09  01  a1  01  85  03  75  10  95 
  02  15  01  26  ff  02  19  01  2a  ff  02  81  00  c0  05  01 
  09  80  a1  01  85  04  75  02  95  01  15  01  25  03  09  82 
  09  81  09  83  81  60  75  06  81  03  c0  06  bc  ff  09  88 
  a1  01  85  08  19  01  29  ff  15  01  26  ff  00  75  08  95 
  01  81  00  c0  
  (148 bytes)
046D C52B: Logitech - USB Receiver
DESCRIPTOR:
  05  01  09  06  a1  01  05  07  19  e0  29  e7  15  00  25  01 
  75  01  95  08  81  02  81  03  95  05  05  08  19  01  29  05 
  91  02  95  01  75  03  91  01  95  06  75  08  15  00  26  a4 
  00  05  07  19  00  2a  a4  00  81  00  c0  
  (59 bytes)
0000 0000: APPL - BTM
DESCRIPTOR:
  06  00  ff  0a  48  00  a1  01  06  29  ff  85  01  25  7f  95 
  01  75  08  09  01  b1  02  09  02  b1  02  09  25  a1  03  85 
  02  24  76  98  3e  09  03  81  22  09  04  76  38  02  b1  02 
  c0  c0  
  (50 bytes)
1915 1025: ZY.Ltd - ZY Control Mic
DESCRIPTOR:
  05  01  09  06  a1  01  05  07  19  e0  29  e7  15  00  25  01 
  75  01  95  08  81  02  95  01  75  08  81  01  95  03  75  01 
  05  08  19  01  29  03  91  02  95  05  75  01  91  01  95  06 
  75  08  15  00  26  ff  00  05  07  19  00  2a  ff  00  81  00 
  c0  
  (65 bytes)

Edit to add: but external tools can parse the output.
Example mentioned by #262
https://eleccelerator.com/usbdescreqparser/

Raw HID reports (part of Logitech USB Receiver):

  05  01  09  02  a1  01  85  02  09  01  a1  00  05  09  19  01 
  29  10  15  00  25  01  95  10  75  01  81  02  05  01  16  01 
  f8  26  ff  07  75  0c  95  02  09  30  09  31  81  06  15  81 
  25  7f  75  08  95  01  09  38  81  06  05  0c  0a  38  02  95 
  01  81  06  c0  c0  05  0c  09  01  a1  01  85  03  75  10  95 
  02  15  01  26  ff  02  19  01  2a  ff  02  81  00  c0  05  01 
  09  80  a1  01  85  04  75  02  95  01  15  01  25  03  09  82 
  09  81  09  83  81  60  75  06  81  03  c0  06  bc  ff  09  88 
  a1  01  85  08  19  01  29  ff  15  01  26  ff  00  75  08  95 
  01  81  00  c0 

Parsed output from the above website.

0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x02,        // Usage (Mouse)
0xA1, 0x01,        // Collection (Application)
0x85, 0x02,        //   Report ID (2)
0x09, 0x01,        //   Usage (Pointer)
0xA1, 0x00,        //   Collection (Physical)
0x05, 0x09,        //     Usage Page (Button)
0x19, 0x01,        //     Usage Minimum (0x01)
0x29, 0x10,        //     Usage Maximum (0x10)
0x15, 0x00,        //     Logical Minimum (0)
0x25, 0x01,        //     Logical Maximum (1)
0x95, 0x10,        //     Report Count (16)
0x75, 0x01,        //     Report Size (1)
0x81, 0x02,        //     Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x01,        //     Usage Page (Generic Desktop Ctrls)
0x16, 0x01, 0xF8,  //     Logical Minimum (-2047)
0x26, 0xFF, 0x07,  //     Logical Maximum (2047)
0x75, 0x0C,        //     Report Size (12)
0x95, 0x02,        //     Report Count (2)
0x09, 0x30,        //     Usage (X)
0x09, 0x31,        //     Usage (Y)
0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0x15, 0x81,        //     Logical Minimum (-127)
0x25, 0x7F,        //     Logical Maximum (127)
0x75, 0x08,        //     Report Size (8)
0x95, 0x01,        //     Report Count (1)
0x09, 0x38,        //     Usage (Wheel)
0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0x05, 0x0C,        //     Usage Page (Consumer)
0x0A, 0x38, 0x02,  //     Usage (AC Pan)
0x95, 0x01,        //     Report Count (1)
0x81, 0x06,        //     Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              //   End Collection
0xC0,              // End Collection
0x05, 0x0C,        // Usage Page (Consumer)
0x09, 0x01,        // Usage (Consumer Control)
0xA1, 0x01,        // Collection (Application)
0x85, 0x03,        //   Report ID (3)
0x75, 0x10,        //   Report Size (16)
0x95, 0x02,        //   Report Count (2)
0x15, 0x01,        //   Logical Minimum (1)
0x26, 0xFF, 0x02,  //   Logical Maximum (767)
0x19, 0x01,        //   Usage Minimum (Consumer Control)
0x2A, 0xFF, 0x02,  //   Usage Maximum (0x02FF)
0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection
0x05, 0x01,        // Usage Page (Generic Desktop Ctrls)
0x09, 0x80,        // Usage (Sys Control)
0xA1, 0x01,        // Collection (Application)
0x85, 0x04,        //   Report ID (4)
0x75, 0x02,        //   Report Size (2)
0x95, 0x01,        //   Report Count (1)
0x15, 0x01,        //   Logical Minimum (1)
0x25, 0x03,        //   Logical Maximum (3)
0x09, 0x82,        //   Usage (Sys Sleep)
0x09, 0x81,        //   Usage (Sys Power Down)
0x09, 0x83,        //   Usage (Sys Wake Up)
0x81, 0x60,        //   Input (Data,Array,Abs,No Wrap,Linear,No Preferred State,Null State)
0x75, 0x06,        //   Report Size (6)
0x81, 0x03,        //   Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection
0x06, 0xBC, 0xFF,  // Usage Page (Vendor Defined 0xFFBC)
0x09, 0x88,        // Usage (0x88)
0xA1, 0x01,        // Collection (Application)
0x85, 0x08,        //   Report ID (8)
0x19, 0x01,        //   Usage Minimum (0x01)
0x29, 0xFF,        //   Usage Maximum (0xFF)
0x15, 0x01,        //   Logical Minimum (1)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x01,        //   Report Count (1)
0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection

// 148 bytes

mac-hid-dump output seems to be a bit too simple. ``` ./mac-hid-dump mac-hid-dump: 0000 0000: Apple - Headset DESCRIPTOR: 05 0c 09 01 a1 01 05 0c 09 cd 09 ea 09 e9 15 00 25 01 95 03 75 01 81 02 95 05 81 05 c0 (29 bytes) 1915 1025: ZY.Ltd - ZY Control Mic DESCRIPTOR: 05 01 09 02 a1 01 85 04 09 01 a1 00 05 09 19 01 29 05 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 03 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 95 03 81 06 c0 c0 05 0c 09 01 a1 01 85 01 75 10 95 01 15 00 26 ff 03 19 00 2a ff 03 81 00 c0 05 01 09 80 a1 01 85 02 75 01 95 02 15 00 25 01 09 81 09 82 81 02 75 01 95 0e 81 03 c0 06 00 ff 09 00 a1 01 85 06 15 00 26 ff 00 75 08 95 1f 09 00 b1 02 c0 (131 bytes) 0000 0000: Apple - DESCRIPTOR: 06 00 ff 0a ff 00 a1 01 15 00 26 ff 00 75 08 95 01 81 02 c0 (20 bytes) 046D C52B: Logitech - USB Receiver DESCRIPTOR: 06 00 ff 09 01 a1 01 85 10 75 08 95 06 15 00 26 ff 00 09 01 81 00 09 01 91 00 c0 06 00 ff 09 02 a1 01 85 11 75 08 95 13 15 00 26 ff 00 09 02 81 00 09 02 91 00 c0 06 00 ff 09 04 a1 01 85 20 75 08 95 0e 15 00 26 ff 00 09 41 81 00 09 41 91 00 85 21 95 1f 15 00 26 ff 00 09 42 81 00 09 42 91 00 c0 (98 bytes) 046D C52B: Logitech - USB Receiver DESCRIPTOR: 05 01 09 02 a1 01 85 02 09 01 a1 00 05 09 19 01 29 10 15 00 25 01 95 10 75 01 81 02 05 01 16 01 f8 26 ff 07 75 0c 95 02 09 30 09 31 81 06 15 81 25 7f 75 08 95 01 09 38 81 06 05 0c 0a 38 02 95 01 81 06 c0 c0 05 0c 09 01 a1 01 85 03 75 10 95 02 15 01 26 ff 02 19 01 2a ff 02 81 00 c0 05 01 09 80 a1 01 85 04 75 02 95 01 15 01 25 03 09 82 09 81 09 83 81 60 75 06 81 03 c0 06 bc ff 09 88 a1 01 85 08 19 01 29 ff 15 01 26 ff 00 75 08 95 01 81 00 c0 (148 bytes) 046D C52B: Logitech - USB Receiver DESCRIPTOR: 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 81 03 95 05 05 08 19 01 29 05 91 02 95 01 75 03 91 01 95 06 75 08 15 00 26 a4 00 05 07 19 00 2a a4 00 81 00 c0 (59 bytes) 0000 0000: APPL - BTM DESCRIPTOR: 06 00 ff 0a 48 00 a1 01 06 29 ff 85 01 25 7f 95 01 75 08 09 01 b1 02 09 02 b1 02 09 25 a1 03 85 02 24 76 98 3e 09 03 81 22 09 04 76 38 02 b1 02 c0 c0 (50 bytes) 1915 1025: ZY.Ltd - ZY Control Mic DESCRIPTOR: 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81 01 95 03 75 01 05 08 19 01 29 03 91 02 95 05 75 01 91 01 95 06 75 08 15 00 26 ff 00 05 07 19 00 2a ff 00 81 00 c0 (65 bytes) ``` Edit to add: but external tools can parse the output. Example mentioned by #262 https://eleccelerator.com/usbdescreqparser/ Raw HID reports (part of Logitech USB Receiver): ``` 05 01 09 02 a1 01 85 02 09 01 a1 00 05 09 19 01 29 10 15 00 25 01 95 10 75 01 81 02 05 01 16 01 f8 26 ff 07 75 0c 95 02 09 30 09 31 81 06 15 81 25 7f 75 08 95 01 09 38 81 06 05 0c 0a 38 02 95 01 81 06 c0 c0 05 0c 09 01 a1 01 85 03 75 10 95 02 15 01 26 ff 02 19 01 2a ff 02 81 00 c0 05 01 09 80 a1 01 85 04 75 02 95 01 15 01 25 03 09 82 09 81 09 83 81 60 75 06 81 03 c0 06 bc ff 09 88 a1 01 85 08 19 01 29 ff 15 01 26 ff 00 75 08 95 01 81 00 c0 ``` Parsed output from the above website. ``` 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x02, // Usage (Mouse) 0xA1, 0x01, // Collection (Application) 0x85, 0x02, // Report ID (2) 0x09, 0x01, // Usage (Pointer) 0xA1, 0x00, // Collection (Physical) 0x05, 0x09, // Usage Page (Button) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0x10, // Usage Maximum (0x10) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x95, 0x10, // Report Count (16) 0x75, 0x01, // Report Size (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x16, 0x01, 0xF8, // Logical Minimum (-2047) 0x26, 0xFF, 0x07, // Logical Maximum (2047) 0x75, 0x0C, // Report Size (12) 0x95, 0x02, // Report Count (2) 0x09, 0x30, // Usage (X) 0x09, 0x31, // Usage (Y) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0x15, 0x81, // Logical Minimum (-127) 0x25, 0x7F, // Logical Maximum (127) 0x75, 0x08, // Report Size (8) 0x95, 0x01, // Report Count (1) 0x09, 0x38, // Usage (Wheel) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0x05, 0x0C, // Usage Page (Consumer) 0x0A, 0x38, 0x02, // Usage (AC Pan) 0x95, 0x01, // Report Count (1) 0x81, 0x06, // Input (Data,Var,Rel,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0xC0, // End Collection 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x03, // Report ID (3) 0x75, 0x10, // Report Size (16) 0x95, 0x02, // Report Count (2) 0x15, 0x01, // Logical Minimum (1) 0x26, 0xFF, 0x02, // Logical Maximum (767) 0x19, 0x01, // Usage Minimum (Consumer Control) 0x2A, 0xFF, 0x02, // Usage Maximum (0x02FF) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0x05, 0x01, // Usage Page (Generic Desktop Ctrls) 0x09, 0x80, // Usage (Sys Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x04, // Report ID (4) 0x75, 0x02, // Report Size (2) 0x95, 0x01, // Report Count (1) 0x15, 0x01, // Logical Minimum (1) 0x25, 0x03, // Logical Maximum (3) 0x09, 0x82, // Usage (Sys Sleep) 0x09, 0x81, // Usage (Sys Power Down) 0x09, 0x83, // Usage (Sys Wake Up) 0x81, 0x60, // Input (Data,Array,Abs,No Wrap,Linear,No Preferred State,Null State) 0x75, 0x06, // Report Size (6) 0x81, 0x03, // Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection 0x06, 0xBC, 0xFF, // Usage Page (Vendor Defined 0xFFBC) 0x09, 0x88, // Usage (0x88) 0xA1, 0x01, // Collection (Application) 0x85, 0x08, // Report ID (8) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0xFF, // Usage Maximum (0xFF) 0x15, 0x01, // Logical Minimum (1) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x01, // Report Count (1) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection // 148 bytes ```
JoergAtGithub commented 2021-06-17 12:36:05 -05:00 (Migrated from github.com)

@DJm00n
I have rewritten my code that is trying to get HID Report Descriptor from USB devices. Can you give it a try?
https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump
It successfully dumps descriptor from my keyboard, dualshock4, dualsense, stadia controller etc into debug output in MSVS. > > Now without memleaks and crashes :)
Cannot dump descriptor from my mouse because it supports only Boot Interface Subclass (see 4.2 Subclass in HID spec).

It uses IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION under the hood.

PS: Bluetooth and Bluetooth LE another story that I'll try to investigate.

I tested your new code, on my Windows 7 system. unfortunateley it always fails with:

'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\psapi.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\cryptbase.dll'. 
[RawInputDevice::QueryDeviceInfo:34] Cannot get USB device info from '\\?\USB#VID_17CC&PID_1130#C86013EA#{a5dcbf10-6530-11d2-901f-00c04fb951ed}' interface.
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:0000,PID:0000][UP:0000,U:0000]: Manufacturer: '(Standardsystemgeräte)', Product: 'HID-konformes Gerät', Interface: `\\?\HID#VID_17CC&PID_1130&MI_04#9&11d406cd&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:0000,PID:0000,VER:0000]: Manufacturer: '', Product: '', Serial Number: ``, Interface: `\\?\USB#VID_17CC&PID_1130#C86013EA#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceManager::RawInputManagerImpl::OnInputDeviceChange:309] Invalid device: '255270837'
[RawInputDeviceHid::~RawInputDeviceHid:42] Removed HID device: 'HID-konformes Gerät', Interface: `\\?\HID#VID_17CC&PID_1130&MI_04#9&11d406cd&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
Debug Error!

Program: ...oerg\source\repos\RawInputDemo\bin\x64\Debug\RawInputDemo.exe

abort() has been called

(Press Retry to debug the application)
[RawInputDeviceManager::RawInputManagerImpl::OnInput:355] Device 0xb0039 not found
[RawInputDeviceManager::RawInputManagerImpl::OnInput:355] Device 0xb0039 not found
[RawInputDeviceManager::RawInputManagerImpl::OnInput:355] Device 0xb0039 not found

I would be glad if your approach would work, because gather the real Report Descriptor would be better than any reconstruction.

> > > @DJm00n > I have rewritten my code that is trying to get HID Report Descriptor from USB devices. Can you give it a try? > https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump > It successfully dumps descriptor from my keyboard, dualshock4, dualsense, stadia controller etc into debug output in MSVS. > > Now without memleaks and crashes :) > Cannot dump descriptor from my mouse because it supports only Boot Interface Subclass (see 4.2 Subclass in HID spec). > > It uses IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION under the hood. > > PS: Bluetooth and Bluetooth LE another story that I'll try to investigate. I tested your new code, on my Windows 7 system. unfortunateley it always fails with: ``` 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\psapi.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\cryptbase.dll'. [RawInputDevice::QueryDeviceInfo:34] Cannot get USB device info from '\\?\USB#VID_17CC&PID_1130#C86013EA#{a5dcbf10-6530-11d2-901f-00c04fb951ed}' interface. [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:0000,PID:0000][UP:0000,U:0000]: Manufacturer: '(Standardsystemgeräte)', Product: 'HID-konformes Gerät', Interface: `\\?\HID#VID_17CC&PID_1130&MI_04#9&11d406cd&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:0000,PID:0000,VER:0000]: Manufacturer: '', Product: '', Serial Number: ``, Interface: `\\?\USB#VID_17CC&PID_1130#C86013EA#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceManager::RawInputManagerImpl::OnInputDeviceChange:309] Invalid device: '255270837' [RawInputDeviceHid::~RawInputDeviceHid:42] Removed HID device: 'HID-konformes Gerät', Interface: `\\?\HID#VID_17CC&PID_1130&MI_04#9&11d406cd&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` Debug Error! Program: ...oerg\source\repos\RawInputDemo\bin\x64\Debug\RawInputDemo.exe abort() has been called (Press Retry to debug the application) [RawInputDeviceManager::RawInputManagerImpl::OnInput:355] Device 0xb0039 not found [RawInputDeviceManager::RawInputManagerImpl::OnInput:355] Device 0xb0039 not found [RawInputDeviceManager::RawInputManagerImpl::OnInput:355] Device 0xb0039 not found ``` I would be glad if your approach would work, because gather the real Report Descriptor would be better than any reconstruction.
mcuee commented 2021-06-17 20:19:36 -05:00 (Migrated from github.com)

@DJm00n I tried RawInputDemo under Windows 10 using VS2019, no problem running it but the RawInputDemo.exe does not seem to do anything. How do I use it?

@DJm00n I tried RawInputDemo under Windows 10 using VS2019, no problem running it but the RawInputDemo.exe does not seem to do anything. How do I use it?
mcuee commented 2021-06-17 22:16:15 -05:00 (Migrated from github.com)

@JoergAtGithub #262 seems to running fine at my Dell Windows 10 laptop with a docking edition and quite some HID devices. The only problem is that I do not know the original HID report descriptor of the devices other than the device I have access to the FW (say Microchip based Simple HID Demo, PICkit 2, Lakeview Research HID demo) and they are on the simpler side.

@JoergAtGithub #262 seems to running fine at my Dell Windows 10 laptop with a docking edition and quite some HID devices. The only problem is that I do not know the original HID report descriptor of the devices other than the device I have access to the FW (say Microchip based Simple HID Demo, PICkit 2, Lakeview Research HID demo) and they are on the simpler side.
mcuee commented 2021-06-17 23:02:18 -05:00 (Migrated from github.com)

But HIDSharp seems to work. I have a long list of HID device in the system (Windows 10, Dell Laptop with a docking station).

Further test shows that HIDSharp is not so stable for my system, sometime it hangs.

Pull request #262 seems to be pretty stable and product consistent results (but I need to check whether it is correct or not).

> But HIDSharp seems to work. I have a long list of HID device in the system (Windows 10, Dell Laptop with a docking station). Further test shows that HIDSharp is not so stable for my system, sometime it hangs. Pull request #262 seems to be pretty stable and product consistent results (but I need to check whether it is correct or not).
DJm00n commented 2021-06-18 00:03:53 -05:00 (Migrated from github.com)

@mcuee sorry. I forgot to mention - it outputs info to debug console window in msvs.

@mcuee sorry. I forgot to mention - it outputs info to debug console window in msvs.
mcuee commented 2021-06-18 00:44:29 -05:00 (Migrated from github.com)

@mcuee sorry. I forgot to mention - it outputs info to debug console window in msvs.

This is what I got in the VS2019 output window. Where can I see the debug console? Sorry but I seldom use VS.

'RawInputDemo.exe' (Win32): Loaded 'C:\work\libusb\RawInputDemo\bin\x64\Debug\RawInputDemo.exe'. Symbols loaded.
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\apphelp.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\cfgmgr32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbase.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\hid.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\win32u.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\gdi32full.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msvcp_win.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140_1d.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140d.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msvcp140d.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. 
'RawInputDemo.exe' (Win32): Unloaded 'C:\Windows\System32\ucrtbased.dll'
'RawInputDemo.exe' (Win32): Unloaded 'C:\Windows\System32\ucrtbased.dll'
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\imm32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\umppc13702.dll'. 
'RawInputDemo.exe' (Win32): Unloaded 'C:\Windows\System32\umppc13702.dll'
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\umppc13702.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\kernel.appcore.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\uxtheme.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\combase.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msctf.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\oleaut32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\TextShaping.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\bcryptprimitives.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\TextInputFramework.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\CoreUIComponents.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\SHCore.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\CoreMessaging.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ws2_32.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ntmarta.dll'. 
'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\WinTypes.dll'. 
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:047F,PID:C056][UP:000B,U:0005]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Interface: `\\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:047F,PID:C056,VER:0210]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Serial Number: `D1CEC32927974D5F9BD6B2AEBF2EA8E3`, Interface: `\\?\USB#VID_047F&PID_C056#D1CEC32927974D5F9BD6B2AEBF2EA8E3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:047F,PID:C056][UP:FFA0,U:0003]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Interface: `\\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:047F,PID:C056,VER:0210]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Serial Number: `D1CEC32927974D5F9BD6B2AEBF2EA8E3`, Interface: `\\?\USB#VID_047F&PID_C056#D1CEC32927974D5F9BD6B2AEBF2EA8E3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:047F,PID:C056][UP:000C,U:0001]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Interface: `\\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:047F,PID:C056,VER:0210]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Serial Number: `D1CEC32927974D5F9BD6B2AEBF2EA8E3`, Interface: `\\?\USB#VID_047F&PID_C056#D1CEC32927974D5F9BD6B2AEBF2EA8E3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:04D8,PID:0033][UP:FF00,U:0001]: Manufacturer: 'Microchip Technology Inc.', Product: 'PICkit 2 Microcontroller Programmer', Interface: `\\?\HID#VID_04D8&PID_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:04D8,PID:0033,VER:0002]: Manufacturer: 'Microchip Technology Inc.', Product: 'PICkit 2 Microcontroller Programmer', Serial Number: `pk2new`, Interface: `\\?\USB#VID_04D8&PID_0033#pk2new#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:046D,PID:C534][UP:000C,U:0001]: Manufacturer: 'Logitech', Product: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col02#7&1ebb799e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:413C,PID:B06F][UP:FFDA,U:00DA]: Manufacturer: '(Standard system devices)', Product: 'Dell dock', Interface: `\\?\HID#VID_413C&PID_B06F#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:413C,PID:B06F,VER:0101]: Manufacturer: '', Product: 'Dellﴠ﷽���', Serial Number: ``, Interface: `\\?\USB#VID_413C&PID_B06F#c&1f76a113&0&5#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceManager::RawInputManagerImpl::CreateRawInputDevice:374] Unknown device type 3.
[RawInputDeviceManager::RawInputManagerImpl::OnInputDeviceChange:309] Invalid device: '131153'
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:0488,PID:121F][UP:FF01,U:0001]: Manufacturer: 'Microsoft', Product: 'HIDI2C Device', Interface: `\\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:045E,PID:0000][UP:000C,U:0001]: Manufacturer: 'Microsoft', Product: 'HID-compliant consumer control device', Interface: `\\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:413C,PID:B06E][UP:FFDA,U:00DA]: Manufacturer: '(Standard system devices)', Product: 'Dell dock', Interface: `\\?\HID#VID_413C&PID_B06E#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:413C,PID:B06E,VER:0101]: Manufacturer: '', Product: 'Dellﴠ﷽���', Serial Number: ``, Interface: `\\?\USB#VID_413C&PID_B06E#b&2eaf716d&0&5#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:0488,PID:121F][UP:000D,U:0005]: Manufacturer: 'Microsoft', Product: 'HIDI2C Device', Interface: `\\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:8087,PID:0A1E][UP:0001,U:000D]: Manufacturer: 'Microsoft', Product: 'Portable Device Control device', Interface: `\\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:8087,PID:0A1E][UP:0001,U:000C]: Manufacturer: '(Standard system devices)', Product: 'HID-compliant wireless radio controls', Interface: `\\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:046D,PID:C534][UP:FF00,U:0002]: Manufacturer: 'Logitech', Product: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col05#7&1ebb799e&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:046D,PID:C534][UP:FF00,U:0001]: Manufacturer: 'Logitech', Product: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col04#7&1ebb799e&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceHid::RawInputDeviceHid:37]   ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'HID Keyboard Device', Interface: `\\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:21]   ->Its HID Device[VID:045E,PID:0000]: Interface: `\\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: '', Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:21]   ->Its HID Device[VID:044E,PID:1212]: Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'Dell USB Entry Keyboard', Interface: `\\?\HID#VID_413C&PID_2107#e&11005b8d&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:21]   ->Its HID Device[VID:413C,PID:2107]: Interface: `\\?\HID#VID_413C&PID_2107#e&11005b8d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:24]   ->Its USB Device[VID:413C,PID:2107,VER:0178]: Manufacturer: 'DELL', Product: 'Dell USB Entry Keyboard', Serial Number: ``, Interface: `\\?\USB#VID_413C&PID_2107#d&3e263b&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_00#7&51bc424&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:21]   ->Its HID Device[VID:046D,PID:C534]: Interface: `\\?\HID#VID_046D&PID_C534&MI_00#7&51bc424&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:24]   ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'Standard PS/2 Keyboard', Interface: `\\?\ACPI#DLLK091A#4&3864e190&0#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: 'HIDI2C Device', Interface: `\\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceMouse::RawInputDeviceMouse:18]   ->Its HID Device[VID:0488,PID:121F]: Interface: `\\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col01#7&1ebb799e&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceMouse::RawInputDeviceMouse:18]   ->Its HID Device[VID:046D,PID:C534]: Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col01#7&1ebb799e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceMouse::RawInputDeviceMouse:21]   ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: 'USB Optical Mouse', Interface: `\\?\HID#VID_046D&PID_C077#e&113cd935&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceMouse::RawInputDeviceMouse:18]   ->Its HID Device[VID:046D,PID:C077]: Interface: `\\?\HID#VID_046D&PID_C077#e&113cd935&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`
[RawInputDeviceMouse::RawInputDeviceMouse:21]   ->Its USB Device[VID:046D,PID:C077,VER:7200]: Manufacturer: 'Logitech', Product: 'USB Optical Mouse', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C077#d&3e263b&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed}`
[RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: '', Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}`
[RawInputDeviceMouse::RawInputDeviceMouse:18]   ->Its HID Device[VID:044E,PID:1212]: Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}`

> @mcuee sorry. I forgot to mention - it outputs info to debug console window in msvs. This is what I got in the VS2019 output window. Where can I see the debug console? Sorry but I seldom use VS. ``` 'RawInputDemo.exe' (Win32): Loaded 'C:\work\libusb\RawInputDemo\bin\x64\Debug\RawInputDemo.exe'. Symbols loaded. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\apphelp.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\cfgmgr32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbase.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\hid.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\win32u.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\gdi32full.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msvcp_win.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140_1d.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140d.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msvcp140d.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. 'RawInputDemo.exe' (Win32): Unloaded 'C:\Windows\System32\ucrtbased.dll' 'RawInputDemo.exe' (Win32): Unloaded 'C:\Windows\System32\ucrtbased.dll' 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\imm32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\umppc13702.dll'. 'RawInputDemo.exe' (Win32): Unloaded 'C:\Windows\System32\umppc13702.dll' 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\umppc13702.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\kernel.appcore.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\uxtheme.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\combase.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\msctf.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\oleaut32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\TextShaping.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\bcryptprimitives.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\TextInputFramework.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\CoreUIComponents.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\SHCore.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\CoreMessaging.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ws2_32.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\ntmarta.dll'. 'RawInputDemo.exe' (Win32): Loaded 'C:\Windows\System32\WinTypes.dll'. [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:047F,PID:C056][UP:000B,U:0005]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Interface: `\\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:047F,PID:C056,VER:0210]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Serial Number: `D1CEC32927974D5F9BD6B2AEBF2EA8E3`, Interface: `\\?\USB#VID_047F&PID_C056#D1CEC32927974D5F9BD6B2AEBF2EA8E3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:047F,PID:C056][UP:FFA0,U:0003]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Interface: `\\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:047F,PID:C056,VER:0210]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Serial Number: `D1CEC32927974D5F9BD6B2AEBF2EA8E3`, Interface: `\\?\USB#VID_047F&PID_C056#D1CEC32927974D5F9BD6B2AEBF2EA8E3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:047F,PID:C056][UP:000C,U:0001]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Interface: `\\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:047F,PID:C056,VER:0210]: Manufacturer: 'Plantronics', Product: 'Plantronics Blackwire 3220 Series', Serial Number: `D1CEC32927974D5F9BD6B2AEBF2EA8E3`, Interface: `\\?\USB#VID_047F&PID_C056#D1CEC32927974D5F9BD6B2AEBF2EA8E3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:04D8,PID:0033][UP:FF00,U:0001]: Manufacturer: 'Microchip Technology Inc.', Product: 'PICkit 2 Microcontroller Programmer', Interface: `\\?\HID#VID_04D8&PID_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:04D8,PID:0033,VER:0002]: Manufacturer: 'Microchip Technology Inc.', Product: 'PICkit 2 Microcontroller Programmer', Serial Number: `pk2new`, Interface: `\\?\USB#VID_04D8&PID_0033#pk2new#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:046D,PID:C534][UP:000C,U:0001]: Manufacturer: 'Logitech', Product: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col02#7&1ebb799e&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:413C,PID:B06F][UP:FFDA,U:00DA]: Manufacturer: '(Standard system devices)', Product: 'Dell dock', Interface: `\\?\HID#VID_413C&PID_B06F#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:413C,PID:B06F,VER:0101]: Manufacturer: '', Product: 'Dellﴠ﷽���', Serial Number: ``, Interface: `\\?\USB#VID_413C&PID_B06F#c&1f76a113&0&5#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceManager::RawInputManagerImpl::CreateRawInputDevice:374] Unknown device type 3. [RawInputDeviceManager::RawInputManagerImpl::OnInputDeviceChange:309] Invalid device: '131153' [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:0488,PID:121F][UP:FF01,U:0001]: Manufacturer: 'Microsoft', Product: 'HIDI2C Device', Interface: `\\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:045E,PID:0000][UP:000C,U:0001]: Manufacturer: 'Microsoft', Product: 'HID-compliant consumer control device', Interface: `\\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:413C,PID:B06E][UP:FFDA,U:00DA]: Manufacturer: '(Standard system devices)', Product: 'Dell dock', Interface: `\\?\HID#VID_413C&PID_B06E#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:413C,PID:B06E,VER:0101]: Manufacturer: '', Product: 'Dellﴠ﷽���', Serial Number: ``, Interface: `\\?\USB#VID_413C&PID_B06E#b&2eaf716d&0&5#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:0488,PID:121F][UP:000D,U:0005]: Manufacturer: 'Microsoft', Product: 'HIDI2C Device', Interface: `\\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:8087,PID:0A1E][UP:0001,U:000D]: Manufacturer: 'Microsoft', Product: 'Portable Device Control device', Interface: `\\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:8087,PID:0A1E][UP:0001,U:000C]: Manufacturer: '(Standard system devices)', Product: 'HID-compliant wireless radio controls', Interface: `\\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:046D,PID:C534][UP:FF00,U:0002]: Manufacturer: 'Logitech', Product: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col05#7&1ebb799e&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceHid::RawInputDeviceHid:25] New HID device[VID:046D,PID:C534][UP:FF00,U:0001]: Manufacturer: 'Logitech', Product: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col04#7&1ebb799e&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceHid::RawInputDeviceHid:37] ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'HID Keyboard Device', Interface: `\\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:21] ->Its HID Device[VID:045E,PID:0000]: Interface: `\\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: '', Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:21] ->Its HID Device[VID:044E,PID:1212]: Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'Dell USB Entry Keyboard', Interface: `\\?\HID#VID_413C&PID_2107#e&11005b8d&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:21] ->Its HID Device[VID:413C,PID:2107]: Interface: `\\?\HID#VID_413C&PID_2107#e&11005b8d&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:24] ->Its USB Device[VID:413C,PID:2107,VER:0178]: Manufacturer: 'DELL', Product: 'Dell USB Entry Keyboard', Serial Number: ``, Interface: `\\?\USB#VID_413C&PID_2107#d&3e263b&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_00#7&51bc424&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:21] ->Its HID Device[VID:046D,PID:C534]: Interface: `\\?\HID#VID_046D&PID_C534&MI_00#7&51bc424&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:24] ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceKeyboard::RawInputDeviceKeyboard:18] New Keyboard device: 'Standard PS/2 Keyboard', Interface: `\\?\ACPI#DLLK091A#4&3864e190&0#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: 'HIDI2C Device', Interface: `\\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceMouse::RawInputDeviceMouse:18] ->Its HID Device[VID:0488,PID:121F]: Interface: `\\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: 'USB Receiver', Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col01#7&1ebb799e&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceMouse::RawInputDeviceMouse:18] ->Its HID Device[VID:046D,PID:C534]: Interface: `\\?\HID#VID_046D&PID_C534&MI_01&Col01#7&1ebb799e&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceMouse::RawInputDeviceMouse:21] ->Its USB Device[VID:046D,PID:C534,VER:2901]: Manufacturer: 'Logitech', Product: 'USB Receiver', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C534#5&e9f3e45&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: 'USB Optical Mouse', Interface: `\\?\HID#VID_046D&PID_C077#e&113cd935&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceMouse::RawInputDeviceMouse:18] ->Its HID Device[VID:046D,PID:C077]: Interface: `\\?\HID#VID_046D&PID_C077#e&113cd935&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` [RawInputDeviceMouse::RawInputDeviceMouse:21] ->Its USB Device[VID:046D,PID:C077,VER:7200]: Manufacturer: 'Logitech', Product: 'USB Optical Mouse', Serial Number: ``, Interface: `\\?\USB#VID_046D&PID_C077#d&3e263b&0&4#{a5dcbf10-6530-11d2-901f-00c04fb951ed}` [RawInputDeviceMouse::RawInputDeviceMouse:15] New Mouse device: '', Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}` [RawInputDeviceMouse::RawInputDeviceMouse:18] ->Its HID Device[VID:044E,PID:1212]: Interface: `\\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}` ```
mcuee commented 2021-06-18 00:51:39 -05:00 (Migrated from github.com)

I found that pull request #262 is not correct for Microchip PICKit 2 and then I run HIDSharp again and it is also not correct.

Original HID report descriptor

rom struct{byte report[29];}hid_rpt01={
    0x06, 0x00, 0xFF,       // Usage Page (Vendor Defined)
    0x09, 0x01,             // Usage (Vendor Usage)
    0xA1, 0x01,             // Collection (Application)
    0x19, 0x01,             //      Usage Minimum (Vendor Usage = 1)
//    0x29, 0x08,             //      Usage Maximum (Vendor Usage = 8)
    0x29, 0x40,             //      Usage Maximum (Vendor Usage = 64)
    0x15, 0x00,             //      Logical Minimum (Vendor Usage = 0)
    0x26, 0xFF, 0x00,       //      Logical Maximum (Vendor Usage = 255)
    0x75, 0x08,             //      Report Size (Vendor Usage = 8)
//    0x95, 0x08,             //      Report Count (Vendor Usage = 8)
    0x95, 0x40,             //      Report Count (Vendor Usage = 64)
    0x81, 0x02,             //      Input (Data, Var, Abs)
    0x19, 0x01,             //      Usage Minimum (Vendor Usage = 1)
//    0x29, 0x08,             //      Usage Maximum (Vendor Usage = 8)
    0x29, 0x40,             //      Usage Maximum (Vendor Usage = 64)
    0x91, 0x02,             //      Output (Data, Var, Ads)
    0xC0};                  // End Collection

Dumped by pull request #262

 06  00  FF  09  01  A1  01  19  01  29  40  15  00  26  FF  00  75  08  95  01  81  02  19  01  29  40  15  00  26  FF  00  75  08  95  01  91  02  C0 

https://eleccelerator.com/usbdescreqparser/ output.

0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x19, 0x01,        //   Usage Minimum (0x01)
0x29, 0x40,        //   Usage Maximum (0x40)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x01,        //   Report Count (1)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x19, 0x01,        //   Usage Minimum (0x01)
0x29, 0x40,        //   Usage Maximum (0x40)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x01,        //   Report Count (1)
0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection

// 38 bytes

As a comparison, this is what I get from HIDSharp which is also not correct.

\\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microchip Technology Inc. PICkit 2 Microcontroller Programmer pk2new (VID 1240, PID 51, version 0.2)
Max Lengths: Input 65, Output 65, Feature 0
Serial Ports:
Report Descriptor:
  06 00 FF 09 01 A1 01 15 00 25 01 35 00 45 01 65 00 55 00 75 01 96 00 02 81 03 91 03 C1 00 (30 bytes)
  UsagePage 65280
  Usage 1
  Collection 1
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 512
    Input 3
    Output 3
  EndCollection 0
Usage: FF000001 4278190081
Input: ReportID=0, Length=65, Items=1
  512 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=0, Length=65, Items=1
  512 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.

I found that pull request #262 is not correct for Microchip PICKit 2 and then I run HIDSharp again and it is also not correct. Original HID report descriptor ``` rom struct{byte report[29];}hid_rpt01={ 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined) 0x09, 0x01, // Usage (Vendor Usage) 0xA1, 0x01, // Collection (Application) 0x19, 0x01, // Usage Minimum (Vendor Usage = 1) // 0x29, 0x08, // Usage Maximum (Vendor Usage = 8) 0x29, 0x40, // Usage Maximum (Vendor Usage = 64) 0x15, 0x00, // Logical Minimum (Vendor Usage = 0) 0x26, 0xFF, 0x00, // Logical Maximum (Vendor Usage = 255) 0x75, 0x08, // Report Size (Vendor Usage = 8) // 0x95, 0x08, // Report Count (Vendor Usage = 8) 0x95, 0x40, // Report Count (Vendor Usage = 64) 0x81, 0x02, // Input (Data, Var, Abs) 0x19, 0x01, // Usage Minimum (Vendor Usage = 1) // 0x29, 0x08, // Usage Maximum (Vendor Usage = 8) 0x29, 0x40, // Usage Maximum (Vendor Usage = 64) 0x91, 0x02, // Output (Data, Var, Ads) 0xC0}; // End Collection ``` Dumped by pull request #262 ``` 06 00 FF 09 01 A1 01 19 01 29 40 15 00 26 FF 00 75 08 95 01 81 02 19 01 29 40 15 00 26 FF 00 75 08 95 01 91 02 C0 ``` https://eleccelerator.com/usbdescreqparser/ output. ``` 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x09, 0x01, // Usage (0x01) 0xA1, 0x01, // Collection (Application) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0x40, // Usage Maximum (0x40) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x01, // Report Count (1) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0x40, // Usage Maximum (0x40) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x01, // Report Count (1) 0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection // 38 bytes ``` As a comparison, this is what I get from HIDSharp which is also not correct. ``` \\?\hid#vid_04d8&pid_0033#e&bd5b18b&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microchip Technology Inc. PICkit 2 Microcontroller Programmer pk2new (VID 1240, PID 51, version 0.2) Max Lengths: Input 65, Output 65, Feature 0 Serial Ports: Report Descriptor: 06 00 FF 09 01 A1 01 15 00 25 01 35 00 45 01 65 00 55 00 75 01 96 00 02 81 03 91 03 C1 00 (30 bytes) UsagePage 65280 Usage 1 Collection 1 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 512 Input 3 Output 3 EndCollection 0 Usage: FF000001 4278190081 Input: ReportID=0, Length=65, Items=1 512 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=0, Length=65, Items=1 512 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. ```
todbot commented 2021-06-18 00:57:58 -05:00 (Migrated from github.com)

The HID Report Descriptors that HIDSharp (and win-hid-dump) emit are reconstructions based on what is available via Windows HID APIs, it is not the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure".

It should be semantically (to the OS) the same, however. If it's not, it usually means the descriptor sent by the device is wrong in some subtle way. For vendor usages, this doesn't much matter, as then all that really matters is REPORT_ID, REPORT_COUNT, and REPORT_SIZE

The HID Report Descriptors that HIDSharp (and `win-hid-dump`) emit are reconstructions based on what is available via Windows HID APIs, it is *not* the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure". It should be semantically (to the OS) the same, however. If it's not, it usually means the descriptor sent by the device is wrong in some subtle way. For vendor usages, this doesn't much matter, as then all that really matters is REPORT_ID, REPORT_COUNT, and REPORT_SIZE
mcuee commented 2021-06-18 00:59:44 -05:00 (Migrated from github.com)

The HID Report Descriptors that HIDSharp (and win-hid-dump) emit are reconstructions based on what is available via Windows HID APIs, it is not the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure".

I understand, but in this case, it is quite a bit OFF. It is totally different from what the device does. REPORT_COUNT and REPORT_SIZE are totally wrong.

#262 actually looks better in this case.

> The HID Report Descriptors that HIDSharp (and `win-hid-dump`) emit are reconstructions based on what is available via Windows HID APIs, it is _not_ the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure". I understand, but in this case, it is quite a bit OFF. It is totally different from what the device does. REPORT_COUNT and REPORT_SIZE are totally wrong. #262 actually looks better in this case.
mcuee commented 2021-06-18 01:03:34 -05:00 (Migrated from github.com)

@todbot Maybe this device is indeed strange, it has two USB configurations but that should not matter as Windows will ignore the second configuration.

Full USB Descriptor C source code for reference.

click to expand
/*********************************************************************
 *
 *                Microchip USB C18 Firmware Version 1.0
 *
 * This file is generated by Microchip USB Wizard Version 1.0, 2004
 *********************************************************************
 * FileName:        usbdsc.c
 * Dependencies:    See INCLUDES section below
 * Processor:       PIC18
 * Compiler:        C18 3.00
 * Company:         Microchip Technology, Inc.
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the “Company”) for its PICmicro® Microcontroller is intended and
 * supplied to you, the Company’s customer, for use solely and
 * exclusively on Microchip PICmicro Microcontroller products. The
 * software is owned by the Company and/or its supplier, and is
 * protected under applicable copyright laws. All rights are reserved.
 * Any use in violation of the foregoing restrictions may subject the
 * user to criminal sanctions under applicable laws, as well as to
 * civil liability for the breach of the terms and conditions of this
 * license.
 *
 * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 ********************************************************************/

/*********************************************************************
 * Descriptor specific type definitions are defined in:
 * system\usb\usbdefs\usbdefs_std_dsc.h
 *
 * Configuration information is defined in:
 * autofiles\usbcfg.h
 ********************************************************************/
 
/** I N C L U D E S *************************************************/
#include "system\typedefs.h"
#include "system\usb\usb.h"

/** C O N S T A N T S ************************************************/
#pragma romdata

/* Device Descriptor */
rom USB_DEV_DSC device_dsc=
{    
    sizeof(USB_DEV_DSC),    // Size of this descriptor in bytes
    DSC_DEV,                // DEVICE descriptor type
    0x0200,                 // USB Spec Release Number in BCD format
    0x00,                   // Class Code
    0x00,                   // Subclass code
    0x00,                   // Protocol code
    EP0_BUFF_SIZE,          // Max packet size for EP0, see usbcfg.h
    0x04D8,                 // Vendor ID = 1240
    0x0033,                 // Product ID = 51
    0x0002,                 // Device release number in BCD format
    0x01,                   // Manufacturer string index
    0x02,                   // Product string index
    SERIAL_UNITID_DSC,                   // Device serial number string index
    0x02                    // Number of possible configurations
};

/* Configuration 1 Descriptor */
CFG01={
    /* Configuration Descriptor */
    sizeof(USB_CFG_DSC),    // Size of this descriptor in bytes
    DSC_CFG,                // CONFIGURATION descriptor type
    sizeof(cfg01),          // Total length of data for this cfg
    1,                      // Number of interfaces in this cfg
    1,                      // Index value of this configuration
    2,                      // Configuration string index
    _DEFAULT,               // Attributes, see usbdefs_std_dsc.h
    50,                     // Max power consumption (2X mA)

    /* Interface Descriptor */
    sizeof(USB_INTF_DSC),   // Size of this descriptor in bytes
    DSC_INTF,               // INTERFACE descriptor type
    0,                      // Interface Number
    0,                      // Alternate Setting Number
    2,                      // Number of endpoints in this intf
    HID_INTF,               // Class code
    0,                      // Subclass code
    0,                      // Protocol code
    0,                      // Interface string index

    /* HID Class-Specific Descriptor */
    sizeof(USB_HID_DSC),    // Size of this descriptor in bytes
    DSC_HID,                // HID descriptor type
    0x0001,                 // HID Spec Release Number in BCD format
    0x00,                   // Country Code (0x00 for Not supported)
    1,                      // Number of class descriptors, see usbcfg.h
    DSC_RPT,                // Report descriptor type
    sizeof(hid_rpt01),      // Size of the report descriptor

    /* Endpoint Descriptor 1 in */
    sizeof(USB_EP_DSC),
    DSC_EP,
    _EP01_IN,
    _INT,
    HID_INT_IN_EP_SIZE,
    0x01,

    /* Endpoint Descriptor 1 out */
    sizeof(USB_EP_DSC),
    DSC_EP,
    _EP01_OUT,
    _INT,
    HID_INT_OUT_EP_SIZE,
    0x01
};

/* Configuration 2 Descriptor */
CFG02={
    /* Configuration Descriptor */
    sizeof(USB_CFG_DSC),    // Size of this descriptor in bytes
    DSC_CFG,                // CONFIGURATION descriptor type
    sizeof(cfg02),          // Total length of data for this cfg
    1,                      // Number of interfaces in this cfg
    2,                      // Index value of this configuration
    4,                      // Configuration string index
    _DEFAULT,               // Attributes, see usbdefs_std_dsc.h
    50,                     // Max power consumption (2X mA)

    /* Interface Descriptor */
    sizeof(USB_INTF_DSC),   // Size of this descriptor in bytes
    DSC_INTF,               // INTERFACE descriptor type
    0,                      // Interface Number
    0,                      // Alternate Setting Number
    2,                      // Number of endpoints in this intf
    0xFF,                   // Class code (vendor defined)
    0,                      // Subclass code
    0,                      // Protocol code
    0,                      // Interface string index

    /* Endpoint Descriptor 1 in */
    sizeof(USB_EP_DSC),
    DSC_EP,
    _EP01_IN,
    _INT,
    HID_INT_IN_EP_SIZE,
    0x01,

    /* Endpoint Descriptor 1 out */
    sizeof(USB_EP_DSC),
    DSC_EP,
    _EP01_OUT,
    _INT,
    HID_INT_OUT_EP_SIZE,
    0x01
};

rom struct{byte bLength;byte bDscType;word string[1];}sd000={
sizeof(sd000),DSC_STR,0x0409};

rom struct{byte bLength;byte bDscType;word string[25];}sd001={
sizeof(sd001),DSC_STR,
'M','i','c','r','o','c','h','i','p',' ','T','e','c','h','n','o','l','o','g','y',' ','I','n','c','.'};

rom struct{byte bLength;byte bDscType;word string[35];}sd002={
sizeof(sd002),DSC_STR,
'P','I','C','k','i','t',' ','2',' ','M','i','c','r','o','c','o','n','t','r','o','l','l','e','r',' ','P','r','o','g','r','a','m','m','e','r'};

//rom struct{byte bLength;byte bDscType;word string[10];}sd003={
//sizeof(sd003),DSC_STR,
//'O','l','H','o', 's', 's', 'X', 0, 0, 0};

//rom struct{byte bLength;byte bDscType;word string[24];}sd004={
//sizeof(sd004),DSC_STR,
//'P','I','C','k','i','t',' ','2',' ','C','o','n','f','i','g','u','r','a','t','i','o','n',' ','2'};

rom struct{byte report[29];}hid_rpt01={
    0x06, 0x00, 0xFF,       // Usage Page (Vendor Defined)
    0x09, 0x01,             // Usage (Vendor Usage)
    0xA1, 0x01,             // Collection (Application)
    0x19, 0x01,             //      Usage Minimum (Vendor Usage = 1)
//    0x29, 0x08,             //      Usage Maximum (Vendor Usage = 8)
    0x29, 0x40,             //      Usage Maximum (Vendor Usage = 64)
    0x15, 0x00,             //      Logical Minimum (Vendor Usage = 0)
    0x26, 0xFF, 0x00,       //      Logical Maximum (Vendor Usage = 255)
    0x75, 0x08,             //      Report Size (Vendor Usage = 8)
//    0x95, 0x08,             //      Report Count (Vendor Usage = 8)
    0x95, 0x40,             //      Report Count (Vendor Usage = 64)
    0x81, 0x02,             //      Input (Data, Var, Abs)
    0x19, 0x01,             //      Usage Minimum (Vendor Usage = 1)
//    0x29, 0x08,             //      Usage Maximum (Vendor Usage = 8)
    0x29, 0x40,             //      Usage Maximum (Vendor Usage = 64)
    0x91, 0x02,             //      Output (Data, Var, Ads)
    0xC0};                  // End Collection

rom const unsigned char *rom USB_CD_Ptr[]={&cfg01,&cfg02};
//rom const unsigned char *rom USB_SD_Ptr[]={&sd000,&sd001,&sd002,&sd003,&sd004};
rom const unsigned char *rom USB_SD_Ptr[]={&sd000,&sd001,&sd002};

rom pFunc ClassReqHandler[1]=
{
    &USBCheckHIDRequest
};

#pragma code

/** EOF usbdsc.c ****************************************************/

@todbot Maybe this device is indeed strange, it has two USB configurations but that should not matter as Windows will ignore the second configuration. Full USB Descriptor C source code for reference. <details> <summary> click to expand </summary> ``` /********************************************************************* * * Microchip USB C18 Firmware Version 1.0 * * This file is generated by Microchip USB Wizard Version 1.0, 2004 ********************************************************************* * FileName: usbdsc.c * Dependencies: See INCLUDES section below * Processor: PIC18 * Compiler: C18 3.00 * Company: Microchip Technology, Inc. * * Software License Agreement * * The software supplied herewith by Microchip Technology Incorporated * (the “Company”) for its PICmicro® Microcontroller is intended and * supplied to you, the Company’s customer, for use solely and * exclusively on Microchip PICmicro Microcontroller products. The * software is owned by the Company and/or its supplier, and is * protected under applicable copyright laws. All rights are reserved. * Any use in violation of the foregoing restrictions may subject the * user to criminal sanctions under applicable laws, as well as to * civil liability for the breach of the terms and conditions of this * license. * * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES, * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. * ********************************************************************/ /********************************************************************* * Descriptor specific type definitions are defined in: * system\usb\usbdefs\usbdefs_std_dsc.h * * Configuration information is defined in: * autofiles\usbcfg.h ********************************************************************/ /** I N C L U D E S *************************************************/ #include "system\typedefs.h" #include "system\usb\usb.h" /** C O N S T A N T S ************************************************/ #pragma romdata /* Device Descriptor */ rom USB_DEV_DSC device_dsc= { sizeof(USB_DEV_DSC), // Size of this descriptor in bytes DSC_DEV, // DEVICE descriptor type 0x0200, // USB Spec Release Number in BCD format 0x00, // Class Code 0x00, // Subclass code 0x00, // Protocol code EP0_BUFF_SIZE, // Max packet size for EP0, see usbcfg.h 0x04D8, // Vendor ID = 1240 0x0033, // Product ID = 51 0x0002, // Device release number in BCD format 0x01, // Manufacturer string index 0x02, // Product string index SERIAL_UNITID_DSC, // Device serial number string index 0x02 // Number of possible configurations }; /* Configuration 1 Descriptor */ CFG01={ /* Configuration Descriptor */ sizeof(USB_CFG_DSC), // Size of this descriptor in bytes DSC_CFG, // CONFIGURATION descriptor type sizeof(cfg01), // Total length of data for this cfg 1, // Number of interfaces in this cfg 1, // Index value of this configuration 2, // Configuration string index _DEFAULT, // Attributes, see usbdefs_std_dsc.h 50, // Max power consumption (2X mA) /* Interface Descriptor */ sizeof(USB_INTF_DSC), // Size of this descriptor in bytes DSC_INTF, // INTERFACE descriptor type 0, // Interface Number 0, // Alternate Setting Number 2, // Number of endpoints in this intf HID_INTF, // Class code 0, // Subclass code 0, // Protocol code 0, // Interface string index /* HID Class-Specific Descriptor */ sizeof(USB_HID_DSC), // Size of this descriptor in bytes DSC_HID, // HID descriptor type 0x0001, // HID Spec Release Number in BCD format 0x00, // Country Code (0x00 for Not supported) 1, // Number of class descriptors, see usbcfg.h DSC_RPT, // Report descriptor type sizeof(hid_rpt01), // Size of the report descriptor /* Endpoint Descriptor 1 in */ sizeof(USB_EP_DSC), DSC_EP, _EP01_IN, _INT, HID_INT_IN_EP_SIZE, 0x01, /* Endpoint Descriptor 1 out */ sizeof(USB_EP_DSC), DSC_EP, _EP01_OUT, _INT, HID_INT_OUT_EP_SIZE, 0x01 }; /* Configuration 2 Descriptor */ CFG02={ /* Configuration Descriptor */ sizeof(USB_CFG_DSC), // Size of this descriptor in bytes DSC_CFG, // CONFIGURATION descriptor type sizeof(cfg02), // Total length of data for this cfg 1, // Number of interfaces in this cfg 2, // Index value of this configuration 4, // Configuration string index _DEFAULT, // Attributes, see usbdefs_std_dsc.h 50, // Max power consumption (2X mA) /* Interface Descriptor */ sizeof(USB_INTF_DSC), // Size of this descriptor in bytes DSC_INTF, // INTERFACE descriptor type 0, // Interface Number 0, // Alternate Setting Number 2, // Number of endpoints in this intf 0xFF, // Class code (vendor defined) 0, // Subclass code 0, // Protocol code 0, // Interface string index /* Endpoint Descriptor 1 in */ sizeof(USB_EP_DSC), DSC_EP, _EP01_IN, _INT, HID_INT_IN_EP_SIZE, 0x01, /* Endpoint Descriptor 1 out */ sizeof(USB_EP_DSC), DSC_EP, _EP01_OUT, _INT, HID_INT_OUT_EP_SIZE, 0x01 }; rom struct{byte bLength;byte bDscType;word string[1];}sd000={ sizeof(sd000),DSC_STR,0x0409}; rom struct{byte bLength;byte bDscType;word string[25];}sd001={ sizeof(sd001),DSC_STR, 'M','i','c','r','o','c','h','i','p',' ','T','e','c','h','n','o','l','o','g','y',' ','I','n','c','.'}; rom struct{byte bLength;byte bDscType;word string[35];}sd002={ sizeof(sd002),DSC_STR, 'P','I','C','k','i','t',' ','2',' ','M','i','c','r','o','c','o','n','t','r','o','l','l','e','r',' ','P','r','o','g','r','a','m','m','e','r'}; //rom struct{byte bLength;byte bDscType;word string[10];}sd003={ //sizeof(sd003),DSC_STR, //'O','l','H','o', 's', 's', 'X', 0, 0, 0}; //rom struct{byte bLength;byte bDscType;word string[24];}sd004={ //sizeof(sd004),DSC_STR, //'P','I','C','k','i','t',' ','2',' ','C','o','n','f','i','g','u','r','a','t','i','o','n',' ','2'}; rom struct{byte report[29];}hid_rpt01={ 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined) 0x09, 0x01, // Usage (Vendor Usage) 0xA1, 0x01, // Collection (Application) 0x19, 0x01, // Usage Minimum (Vendor Usage = 1) // 0x29, 0x08, // Usage Maximum (Vendor Usage = 8) 0x29, 0x40, // Usage Maximum (Vendor Usage = 64) 0x15, 0x00, // Logical Minimum (Vendor Usage = 0) 0x26, 0xFF, 0x00, // Logical Maximum (Vendor Usage = 255) 0x75, 0x08, // Report Size (Vendor Usage = 8) // 0x95, 0x08, // Report Count (Vendor Usage = 8) 0x95, 0x40, // Report Count (Vendor Usage = 64) 0x81, 0x02, // Input (Data, Var, Abs) 0x19, 0x01, // Usage Minimum (Vendor Usage = 1) // 0x29, 0x08, // Usage Maximum (Vendor Usage = 8) 0x29, 0x40, // Usage Maximum (Vendor Usage = 64) 0x91, 0x02, // Output (Data, Var, Ads) 0xC0}; // End Collection rom const unsigned char *rom USB_CD_Ptr[]={&cfg01,&cfg02}; //rom const unsigned char *rom USB_SD_Ptr[]={&sd000,&sd001,&sd002,&sd003,&sd004}; rom const unsigned char *rom USB_SD_Ptr[]={&sd000,&sd001,&sd002}; rom pFunc ClassReqHandler[1]= { &USBCheckHIDRequest }; #pragma code /** EOF usbdsc.c ****************************************************/ ``` </details>
todbot commented 2021-06-18 01:05:07 -05:00 (Migrated from github.com)

Also, @mcuee since this is a PICkit2 and not your own device, have you uninstalled all the Microchip Windows drivers? Vendor drivers usually really mess up USB HID libraries. (Some even create fake HID devices that mask the real device. Not what's going on here I think)

Also, @mcuee since this is a PICkit2 and not your own device, have you uninstalled all the Microchip Windows drivers? Vendor drivers usually really mess up USB HID libraries. (Some even create fake HID devices that mask the real device. Not what's going on here I think)
mcuee commented 2021-06-18 01:11:11 -05:00 (Migrated from github.com)

@todbot This is a standard HID device and no vendor driver is needed (ignore the second configuration, which was a legacy from PICkit 1, and meant for macOS last time). I know this Microchip PICKit 2 very well as I was helping Microchip to test the cross platform pk2cmd applications many years ago.

@todbot This is a standard HID device and no vendor driver is needed (ignore the second configuration, which was a legacy from PICkit 1, and meant for macOS last time). I know this Microchip PICKit 2 very well as I was helping Microchip to test the cross platform pk2cmd applications many years ago.
mcuee commented 2021-06-18 01:18:02 -05:00 (Migrated from github.com)

The HID Report Descriptors that HIDSharp (and win-hid-dump) emit are reconstructions based on what is available via Windows HID APIs, it is not the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure".

It should be semantically (to the OS) the same, however. If it's not, it usually means the descriptor sent by the device is wrong in some subtle way. For vendor usages, this doesn't much matter, as then all that really matters is REPORT_ID, REPORT_COUNT, and REPORT_SIZE

@todbot This is a good point. In that case, it seems #262 is actually okay for Microchip PICkit 2. Report size of 8 bytes is correct. Report count of 1 is actually correct as well. Report ID is in fact also correct (0, or no report ID).

> The HID Report Descriptors that HIDSharp (and `win-hid-dump`) emit are reconstructions based on what is available via Windows HID APIs, it is _not_ the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure". > > It should be semantically (to the OS) the same, however. If it's not, it usually means the descriptor sent by the device is wrong in some subtle way. For vendor usages, this doesn't much matter, as then all that really matters is REPORT_ID, REPORT_COUNT, and REPORT_SIZE @todbot This is a good point. In that case, it seems #262 is actually okay for Microchip PICkit 2. Report size of 8 bytes is correct. Report count of 1 is actually correct as well. Report ID is in fact also correct (0, or no report ID).
mcuee commented 2021-06-18 06:03:07 -05:00 (Migrated from github.com)

The following raw report is reported by mac-hid-dump (https://github.com/todbot/mac-hid-dump). It matches exactly as the Firmware codes. Good.

04D8 0033: Microchip Technology Inc. - PICkit 2 Microcontroller Programmer
DESCRIPTOR:
  06  00  ff  09  01  a1  01  19  01  29  40  15  00  26  ff  00 
  75  08  95  40  81  02  19  01  29  40  91  02  c0  
  (29 bytes)

Translation from https://eleccelerator.com/usbdescreqparser/

0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x19, 0x01,        //   Usage Minimum (0x01)
0x29, 0x40,        //   Usage Maximum (0x40)
0x15, 0x00,        //   Logical Minimum (0)
0x26, 0xFF, 0x00,  //   Logical Maximum (255)
0x75, 0x08,        //   Report Size (8)
0x95, 0x40,        //   Report Count (64)
0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x19, 0x01,        //   Usage Minimum (0x01)
0x29, 0x40,        //   Usage Maximum (0x40)
0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection

// 29 bytes
The following raw report is reported by mac-hid-dump (https://github.com/todbot/mac-hid-dump). It matches exactly as the Firmware codes. Good. ``` 04D8 0033: Microchip Technology Inc. - PICkit 2 Microcontroller Programmer DESCRIPTOR: 06 00 ff 09 01 a1 01 19 01 29 40 15 00 26 ff 00 75 08 95 40 81 02 19 01 29 40 91 02 c0 (29 bytes) ``` Translation from https://eleccelerator.com/usbdescreqparser/ ``` 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x09, 0x01, // Usage (0x01) 0xA1, 0x01, // Collection (Application) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0x40, // Usage Maximum (0x40) 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8) 0x95, 0x40, // Report Count (64) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x19, 0x01, // Usage Minimum (0x01) 0x29, 0x40, // Usage Maximum (0x40) 0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection // 29 bytes ```
mcuee commented 2021-06-18 06:22:26 -05:00 (Migrated from github.com)

The following is from USB Prober under macOS Big Sur (Mac Mini M1), results seem to be similar to mac-hid-dump.

Full Speed device @ 15 (0x02145700): .............................................   Composite device: "PICkit 2 Microcontroller Programmer"
    Port Information:   0x0018
           Not Captive
           External Device
           Connected
           Enabled
    Number Of Endpoints (includes EP0):   
        Total Endpoints for Configuration 1 (current):   3
        Total Endpoints for Configuration 2 :   3
    Device Descriptor   
        Descriptor Version Number:   0x0200
        Device Class:   0   (Composite)
        Device Subclass:   0
        Device Protocol:   0
        Device MaxPacketSize:   8
        Device VendorID/ProductID:   0x04D8/0x0033   (Microchip Technology Inc.)
        Device Version Number:   0x0002
        Number of Configurations:   2
        Manufacturer String:   1 "Microchip Technology Inc."
        Product String:   2 "PICkit 2 Microcontroller Programmer"
        Serial Number String:   3 "pk2new"
    Configuration Descriptor (current config): ......................   "PICkit 2 Microcontroller Programmer"
        Length (and contents):   41
            Raw Descriptor (hex)    0000: 09 02 29 00 01 01 02 80  32 09 04 00 00 02 03 00  
            Raw Descriptor (hex)    0010: 00 00 09 21 01 00 00 01  22 1D 00 07 05 81 03 40  
            Raw Descriptor (hex)    0020: 00 01 07 05 01 03 40 00  01 
        Number of Interfaces:   1
        Configuration Value:   1
        Attributes:   0x80 (bus-powered)
        MaxPower:   100 mA
        Interface #0 - HID   
            Alternate Setting   0
            Number of Endpoints   2
            Interface Class:   3   (HID)
            Interface Subclass;   0
            Interface Protocol:   0
            HID Descriptor   
                Descriptor Version Number:   0x0001
                Country Code:   0
                Descriptor Count:   1
                Descriptor 1   
                    Type:   0x22  (Report Descriptor)
                    Length (and contents):   29
                        Raw Descriptor (hex)    0000: 06 00 FF 09 01 A1 01 19  01 29 40 15 00 26 FF 00  
                        Raw Descriptor (hex)    0010: 75 08 95 40 81 02 19 01  29 40 91 02 C0 
                    Parsed Report Descriptor:   
                          Usage Page    (Vendor defined 0) 
                          Usage 1 (0x1)    
                              Collection (Application)    
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (64)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (255)  
                                Report Size.............    (8)  
                                Report Count............    (64)  
                                Input...................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (64)  
                                Output..................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                              End Collection     
            Endpoint 0x81 - Interrupt Input   
                Address:   0x81  (IN)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   64
                Polling Interval:   1 ms
            Endpoint 0x01 - Interrupt Output   
                Address:   0x01  (OUT)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   64
                Polling Interval:   1 ms
    Configuration Descriptor: .......................................   ""
        Length (and contents):   32
            Raw Descriptor (hex)    0000: 09 02 20 00 01 02 04 80  32 09 04 00 00 02 FF 00  
            Raw Descriptor (hex)    0010: 00 00 07 05 81 03 40 00  01 07 05 01 03 40 00 01  
            Unknown Descriptor   0020: 
        Number of Interfaces:   1
        Configuration Value:   2
        Attributes:   0x80 (bus-powered)
        MaxPower:   100 mA
        Interface #0 - Vendor-specific   
            Alternate Setting   0
            Number of Endpoints   2
            Interface Class:   255   (Vendor-specific)
            Interface Subclass;   0   (Vendor-specific)
            Interface Protocol:   0
            Endpoint 0x81 - Interrupt Input   
                Address:   0x81  (IN)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   64
                Polling Interval:   1 ms
            Endpoint 0x01 - Interrupt Output   
                Address:   0x01  (OUT)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   64
                Polling Interval:   1 ms
The following is from USB Prober under macOS Big Sur (Mac Mini M1), results seem to be similar to mac-hid-dump. ``` Full Speed device @ 15 (0x02145700): ............................................. Composite device: "PICkit 2 Microcontroller Programmer" Port Information: 0x0018 Not Captive External Device Connected Enabled Number Of Endpoints (includes EP0): Total Endpoints for Configuration 1 (current): 3 Total Endpoints for Configuration 2 : 3 Device Descriptor Descriptor Version Number: 0x0200 Device Class: 0 (Composite) Device Subclass: 0 Device Protocol: 0 Device MaxPacketSize: 8 Device VendorID/ProductID: 0x04D8/0x0033 (Microchip Technology Inc.) Device Version Number: 0x0002 Number of Configurations: 2 Manufacturer String: 1 "Microchip Technology Inc." Product String: 2 "PICkit 2 Microcontroller Programmer" Serial Number String: 3 "pk2new" Configuration Descriptor (current config): ...................... "PICkit 2 Microcontroller Programmer" Length (and contents): 41 Raw Descriptor (hex) 0000: 09 02 29 00 01 01 02 80 32 09 04 00 00 02 03 00 Raw Descriptor (hex) 0010: 00 00 09 21 01 00 00 01 22 1D 00 07 05 81 03 40 Raw Descriptor (hex) 0020: 00 01 07 05 01 03 40 00 01 Number of Interfaces: 1 Configuration Value: 1 Attributes: 0x80 (bus-powered) MaxPower: 100 mA Interface #0 - HID Alternate Setting 0 Number of Endpoints 2 Interface Class: 3 (HID) Interface Subclass; 0 Interface Protocol: 0 HID Descriptor Descriptor Version Number: 0x0001 Country Code: 0 Descriptor Count: 1 Descriptor 1 Type: 0x22 (Report Descriptor) Length (and contents): 29 Raw Descriptor (hex) 0000: 06 00 FF 09 01 A1 01 19 01 29 40 15 00 26 FF 00 Raw Descriptor (hex) 0010: 75 08 95 40 81 02 19 01 29 40 91 02 C0 Parsed Report Descriptor: Usage Page (Vendor defined 0) Usage 1 (0x1) Collection (Application) Usage Minimum........... (1) Usage Maximum........... (64) Logical Minimum......... (0) Logical Maximum......... (255) Report Size............. (8) Report Count............ (64) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Usage Minimum........... (1) Usage Maximum........... (64) Output.................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) End Collection Endpoint 0x81 - Interrupt Input Address: 0x81 (IN) Attributes: 0x03 (Interrupt) Max Packet Size: 64 Polling Interval: 1 ms Endpoint 0x01 - Interrupt Output Address: 0x01 (OUT) Attributes: 0x03 (Interrupt) Max Packet Size: 64 Polling Interval: 1 ms Configuration Descriptor: ....................................... "" Length (and contents): 32 Raw Descriptor (hex) 0000: 09 02 20 00 01 02 04 80 32 09 04 00 00 02 FF 00 Raw Descriptor (hex) 0010: 00 00 07 05 81 03 40 00 01 07 05 01 03 40 00 01 Unknown Descriptor 0020: Number of Interfaces: 1 Configuration Value: 2 Attributes: 0x80 (bus-powered) MaxPower: 100 mA Interface #0 - Vendor-specific Alternate Setting 0 Number of Endpoints 2 Interface Class: 255 (Vendor-specific) Interface Subclass; 0 (Vendor-specific) Interface Protocol: 0 Endpoint 0x81 - Interrupt Input Address: 0x81 (IN) Attributes: 0x03 (Interrupt) Max Packet Size: 64 Polling Interval: 1 ms Endpoint 0x01 - Interrupt Output Address: 0x01 (OUT) Attributes: 0x03 (Interrupt) Max Packet Size: 64 Polling Interval: 1 ms ```
mcuee commented 2021-06-18 06:48:28 -05:00 (Migrated from github.com)

mac-hid-dump is very accurate accurate. It matches exactly my FW codes.

0925 7001: Lakeview Research - Generic HID
DESCRIPTOR:
  06  00  ff  09  01  a1  01  15  00  26  ff  00  75  08  95  02 
  85  01  09  00  82  02  01  85  02  09  00  92  02  01  85  03 
  09  00  b2  02  01  85  04  09  00  b2  02  01  c0  
  (45 bytes)

FW:

ROM struct{BYTE report[HID_RPT01_SIZE];}hid_rpt01={
 {
   0x06, 0x00, 0xFF,               // Usage page (Vendor Defined Page1)
   0x09, 0x01,                     // Usage (Vendor Usage 1)
   0xA1, 0x01,                     // Collection (Application)

   // Global items apply to all reports below

   0x15, 0x00,                     // Logical Minimum (0)
   0x26, 0xFF, 0x00,               // Logical Maximum (255)
   0x75, 0x08,                     // Report Size (8 bits)
   0x95, 0x02,                     // Report Count (2 fields)

   // Input report
   0x85, 0x01,                     // Report ID (1)
   0x09, 0x00,                     // Usage (Undefined)
   0x82, 0x02, 0x01,               // Input (Data,Var,Abs,Buf)

   // Output report
   0x85, 0x02,                     // Report ID (2)
   0x09, 0x00,                     // Usage (Undefined)
   0x92, 0x02, 0x01,               // Output (Data,Var,Abs,Buf)

   // Feature report
   0x85, 0x03,                     // Report ID (3)
   0x09, 0x00,                     // Usage (Undefined)
   0xB2, 0x02, 0x01,               // Feature (Data,Var,Abs,Buf)

   // Feature report
   0x85, 0x04,                     // Report ID (4)
   0x09, 0x00,                     // Usage (Undefined)
   0xB2, 0x02, 0x01,               // Feature (Data,Var,Abs,Buf)

   0xC0                            // end collection
 }```
mac-hid-dump is very accurate accurate. It matches exactly my FW codes. ``` 0925 7001: Lakeview Research - Generic HID DESCRIPTOR: 06 00 ff 09 01 a1 01 15 00 26 ff 00 75 08 95 02 85 01 09 00 82 02 01 85 02 09 00 92 02 01 85 03 09 00 b2 02 01 85 04 09 00 b2 02 01 c0 (45 bytes) ``` FW: ``` ROM struct{BYTE report[HID_RPT01_SIZE];}hid_rpt01={ { 0x06, 0x00, 0xFF, // Usage page (Vendor Defined Page1) 0x09, 0x01, // Usage (Vendor Usage 1) 0xA1, 0x01, // Collection (Application) // Global items apply to all reports below 0x15, 0x00, // Logical Minimum (0) 0x26, 0xFF, 0x00, // Logical Maximum (255) 0x75, 0x08, // Report Size (8 bits) 0x95, 0x02, // Report Count (2 fields) // Input report 0x85, 0x01, // Report ID (1) 0x09, 0x00, // Usage (Undefined) 0x82, 0x02, 0x01, // Input (Data,Var,Abs,Buf) // Output report 0x85, 0x02, // Report ID (2) 0x09, 0x00, // Usage (Undefined) 0x92, 0x02, 0x01, // Output (Data,Var,Abs,Buf) // Feature report 0x85, 0x03, // Report ID (3) 0x09, 0x00, // Usage (Undefined) 0xB2, 0x02, 0x01, // Feature (Data,Var,Abs,Buf) // Feature report 0x85, 0x04, // Report ID (4) 0x09, 0x00, // Usage (Undefined) 0xB2, 0x02, 0x01, // Feature (Data,Var,Abs,Buf) 0xC0 // end collection }```
mcuee commented 2021-06-18 07:11:03 -05:00 (Migrated from github.com)

Actually, it somewhat comes for free as the basic usage page and usage are extracted from the report descriptor

While this indeed already available and easy to get for libusb and hidraw backends, one of the first things about HIDAPI is being cross-platform.

So we seem to have a good solution for Linux/FreeBSD already. For macOS, it seems to me mac-hid-dump is a good base.

Only Windows may be challenging. But it seems to me #262 works reasonably well based on my limited testing.

> > Actually, it somewhat comes for free as the basic usage page and usage are extracted from the report descriptor > > While this indeed already available and easy to get for libusb and hidraw backends, one of the first things about HIDAPI is being cross-platform. So we seem to have a good solution for Linux/FreeBSD already. For macOS, it seems to me mac-hid-dump is a good base. Only Windows may be challenging. But it seems to me #262 works reasonably well based on my limited testing.
mcuee commented 2021-06-18 07:19:06 -05:00 (Migrated from github.com)

usbhid-dump under Linux is indeed very accurate too. It matched exactly the FW codes.

For 0925 7001: Lakeview Research - Generic HID

001:009:000:DESCRIPTOR         1624018582.659913
 06 00 FF 09 01 A1 01 15 00 26 FF 00 75 08 95 02
 85 01 09 00 82 02 01 85 02 09 00 92 02 01 85 03
 09 00 B2 02 01 85 04 09 00 B2 02 01 C0

hidrd on master ❯ usbhid-dump -d 0925 | grep -v : | xxd -r -p | ./src/hidrd-convert -o spec
Usage Page (FF00h),                     ; FF00h, vendor-defined
Usage (01h),
Collection (Application),
    Logical Minimum (0),
    Logical Maximum (255),
    Report Size (8),
    Report Count (2),
    Report ID (1),
    Usage (00h),
    Input (Variable, Buffered Bytes),
    Report ID (2),
    Usage (00h),
    Output (Variable, Buffered Bytes),
    Report ID (3),
    Usage (00h),
    Feature (Variable, Buffered Bytes),
    Report ID (4),
    Usage (00h),
    Feature (Variable, Buffered Bytes),
End Collection


For 04D8 0033: Microchip Technology Inc. - PICkit 2 Microcontroller Programmer

001:010:000:DESCRIPTOR         1624018768.302725
 06 00 FF 09 01 A1 01 19 01 29 40 15 00 26 FF 00
 75 08 95 40 81 02 19 01 29 40 91 02 C0
usbhid-dump under Linux is indeed very accurate too. It matched exactly the FW codes. For 0925 7001: Lakeview Research - Generic HID ``` 001:009:000:DESCRIPTOR 1624018582.659913 06 00 FF 09 01 A1 01 15 00 26 FF 00 75 08 95 02 85 01 09 00 82 02 01 85 02 09 00 92 02 01 85 03 09 00 B2 02 01 85 04 09 00 B2 02 01 C0 hidrd on master ❯ usbhid-dump -d 0925 | grep -v : | xxd -r -p | ./src/hidrd-convert -o spec Usage Page (FF00h), ; FF00h, vendor-defined Usage (01h), Collection (Application), Logical Minimum (0), Logical Maximum (255), Report Size (8), Report Count (2), Report ID (1), Usage (00h), Input (Variable, Buffered Bytes), Report ID (2), Usage (00h), Output (Variable, Buffered Bytes), Report ID (3), Usage (00h), Feature (Variable, Buffered Bytes), Report ID (4), Usage (00h), Feature (Variable, Buffered Bytes), End Collection ``` For 04D8 0033: Microchip Technology Inc. - PICkit 2 Microcontroller Programmer ``` 001:010:000:DESCRIPTOR 1624018768.302725 06 00 FF 09 01 A1 01 19 01 29 40 15 00 26 FF 00 75 08 95 40 81 02 19 01 29 40 91 02 C0 ```
JoergAtGithub commented 2021-06-18 12:25:37 -05:00 (Migrated from github.com)

The HID Report Descriptors that HIDSharp (and win-hid-dump) emit are reconstructions based on what is available via Windows HID APIs, it is not the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure".
It should be semantically (to the OS) the same, however. If it's not, it usually means the descriptor sent by the device is wrong in some subtle way. For vendor usages, this doesn't much matter, as then all that really matters is REPORT_ID, REPORT_COUNT, and REPORT_SIZE

@todbot This is a good point. In that case, it seems #262 is actually okay for Microchip PICkit 2. Report size of 8 bytes is correct. Report count of 1 is actually correct as well. Report ID is in fact also correct (0, or no report ID).

Did you change the Report Descriptor of your test device between the tests? Otherwise I can't understand why Report count of 1 is Ok here.

> > > > The HID Report Descriptors that HIDSharp (and `win-hid-dump`) emit are reconstructions based on what is available via Windows HID APIs, it is _not_ the actual descriptor sent by the device, but rather a "consolation-of-a-parsed-data-structure". > > It should be semantically (to the OS) the same, however. If it's not, it usually means the descriptor sent by the device is wrong in some subtle way. For vendor usages, this doesn't much matter, as then all that really matters is REPORT_ID, REPORT_COUNT, and REPORT_SIZE > > @todbot This is a good point. In that case, it seems #262 is actually okay for Microchip PICkit 2. Report size of 8 bytes is correct. Report count of 1 is actually correct as well. Report ID is in fact also correct (0, or no report ID). Did you change the Report Descriptor of your test device between the tests? Otherwise I can't understand why Report count of 1 is Ok here.
JoergAtGithub commented 2021-06-18 12:37:13 -05:00 (Migrated from github.com)

MacOS and Linux provide APIs for reading the Report descriptor of an HID device. Therefore you get the unmodified Report Descriptor on these operating systems.
Unfortunately the Windows HID subsystem doesn't provide such an API. What I did in #262 is to reconstruct a Report Descriptor from the available high-level HID API (same technical approach as win-hid-dump). This reconstructed Report Descriptor has the same logical meaning in most aspects, as the original Report Descriptor, but is bytewise different.
There is another promissing approach by @DJm00n , which unfortunately doesn't work for me yet, to download the real HID report Descriptor using Windows USB API: https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump

MacOS and Linux provide APIs for reading the Report descriptor of an HID device. Therefore you get the unmodified Report Descriptor on these operating systems. Unfortunately the Windows HID subsystem doesn't provide such an API. What I did in #262 is to reconstruct a Report Descriptor from the available high-level HID API (same technical approach as win-hid-dump). This reconstructed Report Descriptor has the same logical meaning in most aspects, as the original Report Descriptor, but is bytewise different. There is another promissing approach by @DJm00n , which unfortunately doesn't work for me yet, to download the real HID report Descriptor using Windows USB API: https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump
mcuee commented 2021-06-18 20:58:09 -05:00 (Migrated from github.com)

I have asked in the libusb-devel to see if Tim Roberts has some suggestions.

I have asked in the libusb-devel to see if Tim Roberts has some suggestions.
mcuee commented 2021-06-18 21:02:25 -05:00 (Migrated from github.com)

No I did not change. So looks like there are still issues.

BTW, I am not that confident of the report parser website or Linux hidrd for the devices. I will probably check the output from Apple USB Prober under macOS.

Did you change the Report Descriptor of your test device between the tests? Otherwise I can't understand why Report count of 1 is Ok here.

No I did not change. So looks like there are still issues. BTW, I am not that confident of the report parser website or Linux hidrd for the devices. I will probably check the output from Apple USB Prober under macOS. > Did you change the Report Descriptor of your test device between the tests? Otherwise I can't understand why Report count of 1 is Ok here.
mcuee commented 2021-06-19 02:56:59 -05:00 (Migrated from github.com)

Answer from Tim in libusb-devel mailing list

On Sat, Jun 19, 2021 at 12:14 PM Tim Roberts wrote:

On 6/18/21 6:56 PM, Xiaofan Chen wrote:

Hi Tim,

Switch to another question. Hopefully you can shed some light on this as well. Thanks.

MacOS and Linux provide APIs for reading the HID Report descriptor of an HID device. Therefore we can get the unmodified HID Report Descriptor on these operating systems. Unfortunately the Windows HID subsystem doesn't provide such an API.

Yes.  This is a huge irritation to me.  I have done two projects recently where I needed to imitate another device.  If I could have grabbed the original report descriptor, this task would have been way easier.  In both cases, I ended up hard-coding the report descriptor, which is distasteful.

What will be the good approach to reconstruct the HID report descriptor?

I spent some time with this, and I don't think it is possible.  There's just not enough information in the "parsed descriptors" to do that.

MAYBE (I haven't proven this to myself) you could use the same hub backdoor that "usbview" uses, and fetch the report descriptor that way.

If we just limit to USB HID device and not Bluetooth HID device, will it be a bit easier?

I don't think it makes much difference.  The "usbview" trick would only be for USB HID devices.

--
Tim Roberts
Providenza & Boekelheide, Inc.

Answer from Tim in libusb-devel mailing list On Sat, Jun 19, 2021 at 12:14 PM Tim Roberts wrote: > > On 6/18/21 6:56 PM, Xiaofan Chen wrote: >> >> Hi Tim, >> >> Switch to another question. Hopefully you can shed some light on this as well. Thanks. >> >> MacOS and Linux provide APIs for reading the HID Report descriptor of an HID device. Therefore we can get the unmodified HID Report Descriptor on these operating systems. Unfortunately the Windows HID subsystem doesn't provide such an API. > > Yes.  This is a huge irritation to me.  I have done two projects recently where I needed to imitate another device.  If I could have grabbed the original report descriptor, this task would have been way easier.  In both cases, I ended up hard-coding the report descriptor, which is distasteful. > >> What will be the good approach to reconstruct the HID report descriptor? > > I spent some time with this, and I don't think it is possible.  There's just not enough information in the "parsed descriptors" to do that. > > MAYBE (I haven't proven this to myself) you could use the same hub backdoor that "usbview" uses, and fetch the report descriptor that way. > > >If we just limit to USB HID device and not Bluetooth HID device, will it be a bit easier? > > I don't think it makes much difference.  The "usbview" trick would only be for USB HID devices. > > -- > Tim Roberts > Providenza & Boekelheide, Inc.
mcuee commented 2021-06-19 03:07:18 -05:00 (Migrated from github.com)

So it seems to me the only possibility is probably the usbview trick. It is only for USB HID devices though, not Bluetooth.
https://github.com/microsoft/Windows-driver-samples/tree/master/usb/usbview
https://github.com/DJm00n/Windows-driver-samples/commits/usb-hid-descriptor/usb/usbview

I need to check again the following.
https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump

So it seems to me the only possibility is probably the usbview trick. It is only for USB HID devices though, not Bluetooth. https://github.com/microsoft/Windows-driver-samples/tree/master/usb/usbview https://github.com/DJm00n/Windows-driver-samples/commits/usb-hid-descriptor/usb/usbview I need to check again the following. https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump
JoergAtGithub commented 2021-06-19 03:26:10 -05:00 (Migrated from github.com)

There is also the reconstructor from Google Chromiums WebHID implementation, which accesses the not official documented struct _HIDP_PREPARSED_DATA directly instead of using the official functions for this.
https://chromium.googlesource.com/chromium/src/+/73fdaaf605bb60caf34d5f30bb84a417688aa528/services/device/hid/hid_preparsed_data.cc

This approach could solve the remaining issues with #262 and win_hid_dump, where HidP_SetData returns HIDP_STATUS_IS_VALUE_ARRAY ( button array with usage 0). I think this case is an error in the HidP_SetData function, which Google circumvented by accessing the _HIDP_PREPARSED_DATA direct, which is the input for HidP_SetData.

There is also the reconstructor from Google Chromiums WebHID implementation, which accesses the not official documented struct _HIDP_PREPARSED_DATA directly instead of using the official functions for this. https://chromium.googlesource.com/chromium/src/+/73fdaaf605bb60caf34d5f30bb84a417688aa528/services/device/hid/hid_preparsed_data.cc This approach could solve the remaining issues with #262 and win_hid_dump, where HidP_SetData returns HIDP_STATUS_IS_VALUE_ARRAY ( button array with usage 0). I think this case is an error in the HidP_SetData function, which Google circumvented by accessing the _HIDP_PREPARSED_DATA direct, which is the input for HidP_SetData.
JoergAtGithub commented 2021-06-19 03:34:03 -05:00 (Migrated from github.com)

No I did not change. So looks like there are still issues.

BTW, I am not that confident of the report parser website or Linux hidrd for the devices. I will probably check the output from Apple USB Prober under macOS.

Did you change the Report Descriptor of your test device between the tests? Otherwise I can't understand why Report count of 1 is Ok here.

This should be solveable, it is the second case in rd_determine_value_bitpositions, where I commented "// EXPERIMENTAL - No device available for test": github.com/libusb/hidapi@b54a041cad/windows/hid.c (L871)
win_hid_dump does this better here, but therefore fails with the report_size, which #262 determines correct . But it proves that the needed data are available. The win_hid_dump implementation of this case is here: github.com/IntergatedCircuits/HidSharp@e8359220e0/HidSharp/Platform/Windows/WinHidDevice.ReportDescriptorReconstructor.cs (L161)

> > > No I did not change. So looks like there are still issues. > > BTW, I am not that confident of the report parser website or Linux hidrd for the devices. I will probably check the output from Apple USB Prober under macOS. > > > Did you change the Report Descriptor of your test device between the tests? Otherwise I can't understand why Report count of 1 is Ok here. This should be solveable, it is the second case in rd_determine_value_bitpositions, where I commented "// EXPERIMENTAL - No device available for test": https://github.com/libusb/hidapi/blob/b54a041cad6dee24703bc5baa0db0aa71f068e51/windows/hid.c#L871 win_hid_dump does this better here, but therefore fails with the report_size, which #262 determines correct . But it proves that the needed data are available. The win_hid_dump implementation of this case is here: https://github.com/IntergatedCircuits/HidSharp/blob/e8359220e0cdb1541844835055f5f19af02a9f4c/HidSharp/Platform/Windows/WinHidDevice.ReportDescriptorReconstructor.cs#L161
mcuee commented 2021-06-19 03:45:29 -05:00 (Migrated from github.com)

Personally I think using unofficiallly documented internal struct _HIDP_PREPARSED_DATA is not the way to go for HIDAPI. But anyway, I have asked in the libusb-devel mailing list again.
https://marc.info/?t=162372687300002&r=1&w=2

I will check the general question in OSR forum as well.
https://community.osr.com/discussion/292947/how-to-get-hid-report-descriptor-using-windows-api

Personally I think using unofficiallly documented internal struct _HIDP_PREPARSED_DATA is not the way to go for HIDAPI. But anyway, I have asked in the libusb-devel mailing list again. https://marc.info/?t=162372687300002&r=1&w=2 I will check the general question in OSR forum as well. https://community.osr.com/discussion/292947/how-to-get-hid-report-descriptor-using-windows-api
JoergAtGithub commented 2021-06-19 04:34:35 -05:00 (Migrated from github.com)

I think the best possible approach would be, to try the USB hub trick to read the real Report Descriptor, and if it fails return the reconstructed Report Descriptor instead. The later is needed anyway, because the USB hub trick will not work with Bluetooth HID devices.

I think the best possible approach would be, to try the USB hub trick to read the real Report Descriptor, and if it fails return the reconstructed Report Descriptor instead. The later is needed anyway, because the USB hub trick will not work with Bluetooth HID devices.
mcuee commented 2021-06-19 05:47:42 -05:00 (Migrated from github.com)

Just tried this one and it does not seem to work at all for USB HID Report Descriptor, tested on my home Acer Windows 10 laptop.
https://github.com/DJm00n/Windows-driver-samples/tree/usb-hid-descriptor/usb/usbview

For example, this is the output from my mode of Lakeview Research Demo.

       ---===>Full Configuration Descriptor<===---

          ===>Configuration Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x02
wTotalLength:                    0x0029  -> Validated
bNumInterfaces:                    0x01
bConfigurationValue:               0x01
iConfiguration:                    0x00
bmAttributes:                      0xC0  -> Self Powered
MaxPower:                          0x32 = 100 mA

          ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x00
bAlternateSetting:                 0x00
bNumEndpoints:                     0x02
bInterfaceClass:                   0x03  -> HID Interface Class
bInterfaceSubClass:                0x00
bInterfaceProtocol:                0x00
iInterface:                        0x00

          ===>HID Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x21
bcdHID:                          0x0111
bCountryCode:                      0x00
bNumDescriptors:                   0x01
bDescriptorType:                   0x22 (Report Descriptor)
wDescriptorLength:               0x002D
*!*ERROR:  No HID Descriptor for interface 0!

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmAttributes:                      0x03  -> Interrupt Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x01

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x01  -> Direction: OUT - EndpointID: 1
bmAttributes:                      0x03  -> Interrupt Transfer Type
wMaxPacketSize:                  0x0040 = 0x40 bytes
bInterval:                         0x01

For this particular device, HIDSharp is about right.

\\?\hid#vid_0925&pid_7001#6&18b7cc42&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Lakeview Research Generic HID (no serial number) (VID 2341, PID 28673, version 0.1)
Max Lengths: Input 3, Output 3, Feature 3
Serial Ports:
Report Descriptor:
  06 00 FF 09 01 A1 01 85 01 09 00 15 00 25 FF 35 00 45 00 65 00 55 00 75 08 95 02 82 02 01 85 02 09 00 92 02 01 85 03 09 00 B2 02 01 85 04 09 00 B2 02 01 C1 00 (53 bytes)
  UsagePage 65280
  Usage 1
  Collection 1
    ReportID 1
    Usage 0
    LogicalMinimum 0
    LogicalMaximum 255
    PhysicalMinimum 0
    PhysicalMaximum 0
    Unit 0
    UnitExponent 0
    ReportSize 8
    ReportCount 2
    Input 258
    ReportID 2
    Usage 0
    Output 258
    ReportID 3
    Usage 0
    Feature 258
    ReportID 4
    Usage 0
    Feature 258
  EndCollection 0
Usage: FF000001 4278190081
Input: ReportID=1, Length=3, Items=1
  2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080
Output: ReportID=2, Length=3, Items=1
  2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080
Feature: ReportID=3, Length=3, Items=1
  2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080
Feature: ReportID=4, Length=3, Items=1
  2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080
Opening device for 20 seconds...
Opened device.
Closed device.
Just tried this one and it does not seem to work at all for USB HID Report Descriptor, tested on my home Acer Windows 10 laptop. https://github.com/DJm00n/Windows-driver-samples/tree/usb-hid-descriptor/usb/usbview For example, this is the output from my mode of Lakeview Research Demo. ``` ---===>Full Configuration Descriptor<===--- ===>Configuration Descriptor<=== bLength: 0x09 bDescriptorType: 0x02 wTotalLength: 0x0029 -> Validated bNumInterfaces: 0x01 bConfigurationValue: 0x01 iConfiguration: 0x00 bmAttributes: 0xC0 -> Self Powered MaxPower: 0x32 = 100 mA ===>Interface Descriptor<=== bLength: 0x09 bDescriptorType: 0x04 bInterfaceNumber: 0x00 bAlternateSetting: 0x00 bNumEndpoints: 0x02 bInterfaceClass: 0x03 -> HID Interface Class bInterfaceSubClass: 0x00 bInterfaceProtocol: 0x00 iInterface: 0x00 ===>HID Descriptor<=== bLength: 0x09 bDescriptorType: 0x21 bcdHID: 0x0111 bCountryCode: 0x00 bNumDescriptors: 0x01 bDescriptorType: 0x22 (Report Descriptor) wDescriptorLength: 0x002D *!*ERROR: No HID Descriptor for interface 0! ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x81 -> Direction: IN - EndpointID: 1 bmAttributes: 0x03 -> Interrupt Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x01 ===>Endpoint Descriptor<=== bLength: 0x07 bDescriptorType: 0x05 bEndpointAddress: 0x01 -> Direction: OUT - EndpointID: 1 bmAttributes: 0x03 -> Interrupt Transfer Type wMaxPacketSize: 0x0040 = 0x40 bytes bInterval: 0x01 ``` For this particular device, HIDSharp is about right. ``` \\?\hid#vid_0925&pid_7001#6&18b7cc42&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Lakeview Research Generic HID (no serial number) (VID 2341, PID 28673, version 0.1) Max Lengths: Input 3, Output 3, Feature 3 Serial Ports: Report Descriptor: 06 00 FF 09 01 A1 01 85 01 09 00 15 00 25 FF 35 00 45 00 65 00 55 00 75 08 95 02 82 02 01 85 02 09 00 92 02 01 85 03 09 00 B2 02 01 85 04 09 00 B2 02 01 C1 00 (53 bytes) UsagePage 65280 Usage 1 Collection 1 ReportID 1 Usage 0 LogicalMinimum 0 LogicalMaximum 255 PhysicalMinimum 0 PhysicalMaximum 0 Unit 0 UnitExponent 0 ReportSize 8 ReportCount 2 Input 258 ReportID 2 Usage 0 Output 258 ReportID 3 Usage 0 Feature 258 ReportID 4 Usage 0 Feature 258 EndCollection 0 Usage: FF000001 4278190081 Input: ReportID=1, Length=3, Items=1 2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080 Output: ReportID=2, Length=3, Items=1 2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080 Feature: ReportID=3, Length=3, Items=1 2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080 Feature: ReportID=4, Length=3, Items=1 2 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, BufferedBytes, Usages: FF000000 4278190080 Opening device for 20 seconds... Opened device. Closed device. ```
mcuee commented 2021-06-19 06:06:02 -05:00 (Migrated from github.com)

Then I tried RawInputDemo here with my home Acer Windows 10 laptop and it crashed.
https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump

abort() has been called

(Press Retry to debug the application)
RawInputDemo.exe has triggered a breakpoint.

Call stack

 	ucrtbased.dll!00007ffb691e7c75()	Unknown
 	ucrtbased.dll!00007ffb691e7e13()	Unknown
 	ucrtbased.dll!00007ffb691fe01d()	Unknown
>	RawInputDemo.exe!LogMessageFatal::~LogMessageFatal() Line 176	C++
 	RawInputDemo.exe!`anonymous namespace'::GetUsbHidReportDescriptor(const std::unique_ptr<void,ScopedHandleDeleter> & usbHubHandle, unsigned long connectionIndex, std::vector<unsigned char,std::allocator<unsigned char>> & outReportDescriptor) Line 315	C++
 	RawInputDemo.exe!RawInputDevice::QueryUsbDeviceInfo() Line 367	C++
 	RawInputDemo.exe!RawInputDevice::QueryDeviceInfo() Line 32	C++
 	RawInputDemo.exe!RawInputDeviceHid::QueryDeviceInfo() Line 54	C++
 	RawInputDemo.exe!RawInputDeviceHid::RawInputDeviceHid(void * handle) Line 23	C++
 	RawInputDemo.exe!RawInputDeviceFactory<RawInputDeviceHid>::Create(void * handle) Line 96	C++
 	RawInputDemo.exe!RawInputDeviceManager::RawInputManagerImpl::CreateRawInputDevice(unsigned long deviceType, void * handle) Line 371	C++
 	RawInputDemo.exe!RawInputDeviceManager::RawInputManagerImpl::OnInputDeviceChange() Line 306	C++
 	RawInputDemo.exe!RawInputDeviceManager::RawInputManagerImpl::ThreadRun() Line 140	C++

Edit to add: if not plugging in the Lakeview Research HID demo, it will not crash but I do not see any output of HID report descriptors.

Then I tried RawInputDemo here with my home Acer Windows 10 laptop and it crashed. https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump ``` abort() has been called (Press Retry to debug the application) RawInputDemo.exe has triggered a breakpoint. ``` Call stack ``` ucrtbased.dll!00007ffb691e7c75() Unknown ucrtbased.dll!00007ffb691e7e13() Unknown ucrtbased.dll!00007ffb691fe01d() Unknown > RawInputDemo.exe!LogMessageFatal::~LogMessageFatal() Line 176 C++ RawInputDemo.exe!`anonymous namespace'::GetUsbHidReportDescriptor(const std::unique_ptr<void,ScopedHandleDeleter> & usbHubHandle, unsigned long connectionIndex, std::vector<unsigned char,std::allocator<unsigned char>> & outReportDescriptor) Line 315 C++ RawInputDemo.exe!RawInputDevice::QueryUsbDeviceInfo() Line 367 C++ RawInputDemo.exe!RawInputDevice::QueryDeviceInfo() Line 32 C++ RawInputDemo.exe!RawInputDeviceHid::QueryDeviceInfo() Line 54 C++ RawInputDemo.exe!RawInputDeviceHid::RawInputDeviceHid(void * handle) Line 23 C++ RawInputDemo.exe!RawInputDeviceFactory<RawInputDeviceHid>::Create(void * handle) Line 96 C++ RawInputDemo.exe!RawInputDeviceManager::RawInputManagerImpl::CreateRawInputDevice(unsigned long deviceType, void * handle) Line 371 C++ RawInputDemo.exe!RawInputDeviceManager::RawInputManagerImpl::OnInputDeviceChange() Line 306 C++ RawInputDemo.exe!RawInputDeviceManager::RawInputManagerImpl::ThreadRun() Line 140 C++ ``` Edit to add: if not plugging in the Lakeview Research HID demo, it will not crash but I do not see any output of HID report descriptors.
Be-ing commented 2021-06-19 11:43:03 -05:00 (Migrated from github.com)

Thanks for working on this @mcuee and @JoergAtGithub!

Thanks for working on this @mcuee and @JoergAtGithub!
Youw commented 2021-06-19 11:48:57 -05:00 (Migrated from github.com)

There is one general issue with "usbview" or "IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION" way:

Those would give the descriptor of the entire HID device (usb interface) which is basically what we can get on Linux/macOS.
But that wouldn't be accurate in case of Windows, because Windows creates a unique virtual HID device for each usage_page/usage combination of the HID device.
Each such virtual device accepts only a subset of reports that are corresponding to a specific usage_page/usage combination.
When we are (attempting) to reconstruct the describtor based on capabilities reported by WinAPI - we at least prividing more-or-less accurate information about the virtual device (even if it is not identical to the real descriptor).
If we provide the entire descriptor of a real HID interface/device - it will contain reports that cannot be accepter by the device.

There is one general issue with "usbview" or "IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION" way: Those would give the descriptor of the entire HID device (usb interface) which is basically what we can get on Linux/macOS. But that wouldn't be accurate in case of Windows, because Windows creates a unique virtual HID device for each usage_page/usage combination of the HID device. Each such virtual device accepts only a subset of reports that are corresponding to a specific usage_page/usage combination. When we are (attempting) to reconstruct the describtor based on capabilities reported by WinAPI - we at least prividing more-or-less accurate information about the virtual device (even if it is not identical to the real descriptor). If we provide the entire descriptor of a real HID interface/device - it will contain reports that cannot be accepter by the device.
mcuee commented 2021-06-19 22:15:40 -05:00 (Migrated from github.com)

There is one general issue with "usbview" or "IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION" way:

Those would give the descriptor of the entire HID device (usb interface) which is basically what we can get on Linux/macOS.
But that wouldn't be accurate in case of Windows, because Windows creates a unique virtual HID device for each usage_page/usage combination of the HID device.

Indeed this can be a potential problem. Windows treats them just like USB Composite Devices.

Windows HID Top-Level Collections:
https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/hid-collections

In Windows, the HID device setup class (HIDClass) generates a unique physical device object (PDO) for each Top Level Collection described by the Report Descriptor. Microsoft defines a top-level collection as a HID collection that is not nested within another collection. An unnested collection is always a top-level collection, regardless of its HID type. In particular, a top-level collection does not have to be an Application collection, as defined by the USB HID Standard.

> There is one general issue with "usbview" or "IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION" way: > > Those would give the descriptor of the entire HID device (usb interface) which is basically what we can get on Linux/macOS. > But that wouldn't be accurate in case of Windows, because Windows creates a unique virtual HID device for each usage_page/usage combination of the HID device. Indeed this can be a potential problem. Windows treats them just like USB Composite Devices. Windows HID Top-Level Collections: https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/hid-collections In Windows, the HID device setup class (HIDClass) generates a unique physical device object (PDO) for each Top Level Collection described by the Report Descriptor. Microsoft defines a top-level collection as a HID collection that is not nested within another collection. An unnested collection is always a top-level collection, regardless of its HID type. In particular, a top-level collection does not have to be an Application collection, as defined by the USB HID Standard.
mcuee commented 2021-06-19 22:21:00 -05:00 (Migrated from github.com)

There is one general issue with "usbview" or "IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION" way

There are some arguments about this.

Ref: https://community.osr.com/discussion/287808/ioctl-usb-get-descriptor-from-node-connection
For a HID report descriptor, the Recipient bits of bmRequestType must be set to Interface (1).
IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION sets bmRequestType to 0x80.

From github.com/DJm00n/RawInputDemo@026261520b

            // According to HID spec we need to do Report Descriptor request with
            // bmRequest set to 0x81 (Interface_In) but seems its also working with 0x80 for some reason
            const USHORT hidReportDescriptorSize = hidDescriptor->DescriptorList[0].wReportLength;
            std::unique_ptr<uint8_t[]> hidReportDescriptor = GetUsbDescriptor(usbHubHandle, connectionIndex, HID_REPORT_DESCRIPTOR_TYPE, hidReportDescriptorSize, 0, interfaceDescriptor->bInterfaceNumber);


>There is one general issue with "usbview" or "IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION" way There are some arguments about this. Ref: https://community.osr.com/discussion/287808/ioctl-usb-get-descriptor-from-node-connection For a HID report descriptor, the Recipient bits of bmRequestType must be set to Interface (1). IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION sets bmRequestType to 0x80. From https://github.com/DJm00n/RawInputDemo/commit/026261520bfcf93ed9559c482fd36cd66960d9b4 ``` // According to HID spec we need to do Report Descriptor request with // bmRequest set to 0x81 (Interface_In) but seems its also working with 0x80 for some reason const USHORT hidReportDescriptorSize = hidDescriptor->DescriptorList[0].wReportLength; std::unique_ptr<uint8_t[]> hidReportDescriptor = GetUsbDescriptor(usbHubHandle, connectionIndex, HID_REPORT_DESCRIPTOR_TYPE, hidReportDescriptorSize, 0, interfaceDescriptor->bInterfaceNumber); ```
mcuee commented 2021-06-20 02:07:44 -05:00 (Migrated from github.com)

Example Logitech USB Receiver. It is a USB Composite Device, under Windows Device Manager, it will show as 9 devices, one USB Composite Device parent, then six devices in Human Interface Devices section, one in mouse and one in keyboard.

HIDSharp will show it as six HID devices, one for Interface 0, one for each top level collection of Interface 1 (col 1/2/3/4/5)..

Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}

Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd

Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}

Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}

Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}

Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}

Full run-log of HIDSharp under my Acer laptop with the Logitech USB receiver installed.

click to expand
All device list:
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1) @ \\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1) @ \\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
BLE device list:

Press any key

Complete device list (took 0 ms to get 12 devices):
\\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 5, Output 0, Feature 0
Serial Ports:
System.NotSupportedException: Unable to reconstruct the report descriptor.
   at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\hid\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195
   at HidSharp.Test.Program.Main(String[] args) in C:\work\hid\HidSharp\HidSharp.Test\Program.cs:line 249
\\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 9, Output 2, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 05 08 19 01 29 05 95 05 91 02 95 03 91 03 C1 00 (50 bytes)
  UsagePage 1
  Usage 6
  Collection 1
    UsagePage 7
    UsageMinimum 224
    UsageMaximum 231
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 8
    Input 2
    ReportCount 56
    Input 3
    UsagePage 8
    UsageMinimum 1
    UsageMaximum 5
    ReportCount 5
    Output 2
    ReportCount 3
    Output 3
  EndCollection 0
Usage: 10006 GenericDesktopKeyboard
Input: ReportID=0, Length=9, Items=2
  8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI
  56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=0, Length=2, Items=2
  5 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 80001 LedNumLock, 80002 LedCapsLock, 80003 LedScrollLock, 80004 LedCompose, 80005 LedKana
  3 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 8, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 02 A1 01 85 02 09 01 A1 00 05 09 19 01 29 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 10 81 02 05 01 09 30 26 FF 07 45 00 75 0C 95 01 81 06 09 31 81 06 09 38 25 7F 75 08 81 06 05 0C 0A 38 02 81 06 C1 00 C1 00 (74 bytes)
  UsagePage 1
  Usage 2
  Collection 1
    ReportID 2
    Usage 1
    Collection 0
      UsagePage 9
      UsageMinimum 1
      UsageMaximum 16
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 16
      Input 2
      UsagePage 1
      Usage 48
      LogicalMaximum 2047
      PhysicalMaximum 0
      ReportSize 12
      ReportCount 1
      Input 6
      Usage 49
      Input 6
      Usage 56
      LogicalMaximum 127
      ReportSize 8
      Input 6
      UsagePage 12
      Usage 568
      Input 6
    EndCollection 0
  EndCollection 0
Usage: 10002 GenericDesktopMouse
Input: ReportID=2, Length=8, Items=5
  16 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3, 90004 Button4, 90005 Button5, 90006 Button6, 90007 Button7, 90008 Button8, 90009 Button9, 9000A Button10, 9000B Button11, 9000C Button12, 9000D Button13, 9000E Button14, 9000F Button15, 90010 Button16
  1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX
  1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: C0238 787000
Opening device for 20 seconds...
Failed to open device.


\\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 7, Output 7, Feature 0
Serial Ports:
Report Descriptor:
  06 00 FF 09 01 A1 01 85 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 30 81 03 91 03 C1 00 (31 bytes)
  UsagePage 65280
  Usage 1
  Collection 1
    ReportID 16
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 48
    Input 3
    Output 3
  EndCollection 0
Usage: FF000001 4278190081
Input: ReportID=16, Length=7, Items=1
  48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=16, Length=7, Items=1
  48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 2, Output 0, Feature 0
Serial Ports:
System.NotSupportedException: Unable to reconstruct the report descriptor.
   at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\hid\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195
   at HidSharp.Test.Program.Main(String[] args) in C:\work\hid\HidSharp\HidSharp.Test\Program.cs:line 249
\\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3)
Max Lengths: Input 12, Output 0, Feature 705
Serial Ports:
Report Descriptor:
  06 00 FF 09 01 A1 01 85 5C 09 01 15 00 25 FF 35 00 45 00 65 00 55 00 75 08 95 0B 81 06 85 0D 09 C5 95 04 B1 02 25 01 45 01 75 01 96 E0 15 B1 03 85 0C 09 C6 25 FF 45 00 75 08 96 C0 02 B1 02 85 0B 09 C7 95 42 B1 02 25 01 45 01 75 01 96 F0 13 B1 03 C1 00 (84 bytes)
  UsagePage 65280
  Usage 1
  Collection 1
    ReportID 92
    Usage 1
    LogicalMinimum 0
    LogicalMaximum 255
    PhysicalMinimum 0
    PhysicalMaximum 0
    Unit 0
    UnitExponent 0
    ReportSize 8
    ReportCount 11
    Input 6
    ReportID 13
    Usage 197
    ReportCount 4
    Feature 2
    LogicalMaximum 1
    PhysicalMaximum 1
    ReportSize 1
    ReportCount 5600
    Feature 3
    ReportID 12
    Usage 198
    LogicalMaximum 255
    PhysicalMaximum 0
    ReportSize 8
    ReportCount 704
    Feature 2
    ReportID 11
    Usage 199
    ReportCount 66
    Feature 2
    LogicalMaximum 1
    PhysicalMaximum 1
    ReportSize 1
    ReportCount 5104
    Feature 3
  EndCollection 0
Usage: FF000001 4278190081
Input: ReportID=92, Length=12, Items=1
  11 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: FF000001 4278190081
Feature: ReportID=13, Length=705, Items=2
  4 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277
  5600 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=12, Length=705, Items=1
  704 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C6 4278190278
Feature: ReportID=11, Length=705, Items=2
  66 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C7 4278190279
  5104 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1)
Max Lengths: Input 20, Output 20, Feature 0
Serial Ports:
Report Descriptor:
  06 00 FF 09 02 A1 01 85 11 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 98 81 03 91 03 C1 00 (31 bytes)
  UsagePage 65280
  Usage 2
  Collection 1
    ReportID 17
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 152
    Input 3
    Output 3
  EndCollection 0
Usage: FF000002 4278190082
Input: ReportID=17, Length=20, Items=1
  152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Output: ReportID=17, Length=20, Items=1
  152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3)
Max Lengths: Input 9, Output 0, Feature 5
Serial Ports:
Report Descriptor:
  05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01 29 02 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 02 81 02 95 06 81 03 05 01 09 30 25 7F 45 00 75 08 95 01 81 06 09 31 81 06 15 00 25 01 45 01 75 01 95 28 81 03 85 0E C1 00 06 00 FF 09 01 25 FF 45 00 75 08 95 01 B1 02 09 C5 95 03 B1 02 C1 00 (97 bytes)
  UsagePage 1
  Usage 2
  Collection 1
    ReportID 1
    Usage 1
    Collection 0
      UsagePage 9
      UsageMinimum 1
      UsageMaximum 2
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 2
      Input 2
      ReportCount 6
      Input 3
      UsagePage 1
      Usage 48
      LogicalMaximum 127
      PhysicalMaximum 0
      ReportSize 8
      ReportCount 1
      Input 6
      Usage 49
      Input 6
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMaximum 1
      ReportSize 1
      ReportCount 40
      Input 3
      ReportID 14
    EndCollection 0
    UsagePage 65280
    Usage 1
    LogicalMaximum 255
    PhysicalMaximum 0
    ReportSize 8
    ReportCount 1
    Feature 2
    Usage 197
    ReportCount 3
    Feature 2
  EndCollection 0
Usage: 10002 GenericDesktopMouse
Input: ReportID=1, Length=9, Items=5
  2 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2
  6 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY
  40 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=14, Length=5, Items=2
  1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF000001 4278190081
  3 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277
Opening device for 20 seconds...
Failed to open device.


\\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3)
Max Lengths: Input 12, Output 0, Feature 257
Serial Ports:
Report Descriptor:
  05 0D 09 05 A1 01 85 04 09 22 A1 02 09 47 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 42 81 02 95 02 81 03 09 51 25 0F 45 00 75 04 95 01 81 02 05 01 09 30 26 A2 0C 46 94 01 65 13 55 0E 75 10 81 02 09 31 26 26 09 46 24 01 81 02 C1 00 05 0D 09 56 26 FF FF 46 FF FF 66 01 10 55 0C 81 02 09 54 25 7F 75 08 81 02 05 09 09 01 25 01 45 01 65 00 55 00 75 01 81 02 95 07 81 03 09 C5 46 FF FF 66 01 10 55 0C 75 08 95 02 81 03 85 07 05 0D 09 60 45 01 65 00 55 00 75 01 95 01 B1 02 96 FF 07 B1 03 85 02 09 55 25 0F 46 FF FF 66 01 10 55 0C 75 04 95 01 B1 02 09 59 B1 02 25 01 45 01 65 00 55 00 75 01 96 F8 07 B1 03 85 06 06 00 FF 09 C5 25 FF 46 FF FF 66 01 10 55 0C 75 08 96 00 01 B1 02 C1 00 (231 bytes)
  UsagePage 13
  Usage 5
  Collection 1
    ReportID 4
    Usage 34
    Collection 2
      Usage 71
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 1
      Input 2
      Usage 66
      Input 2
      ReportCount 2
      Input 3
      Usage 81
      LogicalMaximum 15
      PhysicalMaximum 0
      ReportSize 4
      ReportCount 1
      Input 2
      UsagePage 1
      Usage 48
      LogicalMaximum 3234
      PhysicalMaximum 404
      Unit 19
      UnitExponent 14
      ReportSize 16
      Input 2
      Usage 49
      LogicalMaximum 2342
      PhysicalMaximum 292
      Input 2
    EndCollection 0
    UsagePage 13
    Usage 86
    LogicalMaximum 65535
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    Input 2
    Usage 84
    LogicalMaximum 127
    ReportSize 8
    Input 2
    UsagePage 9
    Usage 1
    LogicalMaximum 1
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    Input 2
    ReportCount 7
    Input 3
    Usage 197
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 8
    ReportCount 2
    Input 3
    ReportID 7
    UsagePage 13
    Usage 96
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Feature 2
    ReportCount 2047
    Feature 3
    ReportID 2
    Usage 85
    LogicalMaximum 15
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 4
    ReportCount 1
    Feature 2
    Usage 89
    Feature 2
    LogicalMaximum 1
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 2040
    Feature 3
    ReportID 6
    UsagePage 65280
    Usage 197
    LogicalMaximum 255
    PhysicalMaximum 65535
    Unit 4097
    UnitExponent 12
    ReportSize 8
    ReportCount 256
    Feature 2
  EndCollection 0
Usage: D0005 851973
Input: ReportID=4, Length=12, Items=11
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0047 852039
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0042 852034
  2 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  1 Elements x 4 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: D0051 852049
  1 Elements x 16 Bits, Units: EnglishLinear, Expected Usage Type: 0, Flags: Variable, Usages: 10030 GenericDesktopX
  1 Elements x 16 Bits, Units: EnglishLinear, Expected Usage Type: 0, Flags: Variable, Usages: 10031 GenericDesktopY
  1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0056 852054
  1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0054 852052
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
  2 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 900C5 590021
Feature: ReportID=7, Length=257, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0060 852064
  2047 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=2, Length=257, Items=3
  1 Elements x 4 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0055 852053
  1 Elements x 4 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0059 852057
  2040 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=6, Length=257, Items=1
  256 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277
Opening device for 20 seconds...
Failed to open device.


\\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3)
Max Lengths: Input 0, Output 0, Feature 3
Serial Ports:
Report Descriptor:
  05 0D 09 0E A1 01 85 05 09 22 A1 00 09 57 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 B1 02 09 58 B1 02 95 0E B1 03 85 03 C1 00 09 22 A1 00 09 52 25 0A 46 FF FF 66 01 10 55 0C 75 10 95 01 B1 02 C1 00 C1 00 (70 bytes)
  UsagePage 13
  Usage 14
  Collection 1
    ReportID 5
    Usage 34
    Collection 0
      Usage 87
      LogicalMinimum 0
      LogicalMaximum 1
      PhysicalMinimum 0
      PhysicalMaximum 1
      Unit 0
      UnitExponent 0
      ReportSize 1
      ReportCount 1
      Feature 2
      Usage 88
      Feature 2
      ReportCount 14
      Feature 3
      ReportID 3
    EndCollection 0
    Usage 34
    Collection 0
      Usage 82
      LogicalMaximum 10
      PhysicalMaximum 65535
      Unit 4097
      UnitExponent 12
      ReportSize 16
      ReportCount 1
      Feature 2
    EndCollection 0
  EndCollection 0
Usage: D000E 851982
Feature: ReportID=5, Length=3, Items=3
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0057 852055
  1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0058 852056
  14 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Feature: ReportID=3, Length=3, Items=1
  1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0052 852050
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1)
Max Lengths: Input 2, Output 0, Feature 0
Serial Ports:
Report Descriptor:
  05 01 09 0C A1 01 85 01 09 C6 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 95 07 81 03 C1 00 (34 bytes)
  UsagePage 1
  Usage 12
  Collection 1
    ReportID 1
    Usage 198
    LogicalMinimum 0
    LogicalMaximum 1
    PhysicalMinimum 0
    PhysicalMaximum 1
    Unit 0
    UnitExponent 0
    ReportSize 1
    ReportCount 1
    Input 6
    ReportCount 7
    Input 3
  EndCollection 0
Usage: 1000C 65548
Input: ReportID=1, Length=2, Items=2
  1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: 100C6 65734
  7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages:
Opening device for 20 seconds...
Opened device.
Closed device.


\\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1)
Max Lengths: Input 17, Output 17, Feature 0
Serial Ports:
Report Descriptor:
  06 00 FF 09 01 A1 01 85 40 09 02 15 00 25 FF 35 00 45 00 65 00 55 00 75 08 95 10 81 02 09 02 91 02 C1 00 (35 bytes)
  UsagePage 65280
  Usage 1
  Collection 1
    ReportID 64
    Usage 2
    LogicalMinimum 0
    LogicalMaximum 255
    PhysicalMinimum 0
    PhysicalMaximum 0
    Unit 0
    UnitExponent 0
    ReportSize 8
    ReportCount 16
    Input 2
    Usage 2
    Output 2
  EndCollection 0
Usage: FF000001 4278190081
Input: ReportID=64, Length=17, Items=1
  16 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF000002 4278190082
Output: ReportID=64, Length=17, Items=1
  16 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF000002 4278190082
Opening device for 20 seconds...
Opened device.
Closed device.


Press a key to exit...

USB Prober output from Mac Mini M1.

click to expand
Full Speed device @ 22 (0x02146000): .............................................   Composite device: "USB Receiver"
    Port Information:   0x0018
           Not Captive
           External Device
           Connected
           Enabled
    Number Of Endpoints (includes EP0):   
        Total Endpoints for Configuration 1 (current):   3
    Device Descriptor   
        Descriptor Version Number:   0x0200
        Device Class:   0   (Composite)
        Device Subclass:   0
        Device Protocol:   0
        Device MaxPacketSize:   8
        Device VendorID/ProductID:   0x046D/0xC534   (Logitech Inc.)
        Device Version Number:   0x2901
        Number of Configurations:   1
        Manufacturer String:   1 "Logitech"
        Product String:   2 "USB Receiver"
        Serial Number String:   0 (none)
    Configuration Descriptor (current config): ......................   "RQR29.01_B0016"
        Length (and contents):   59
            Raw Descriptor (hex)    0000: 09 02 3B 00 02 01 04 A0  31 09 04 00 00 01 03 01  
            Raw Descriptor (hex)    0010: 01 00 09 21 11 01 00 01  22 3B 00 07 05 81 03 08  
            Raw Descriptor (hex)    0020: 00 08 09 04 01 00 01 03  01 02 00 09 21 11 01 00  
            Raw Descriptor (hex)    0030: 01 22 B1 00 07 05 82 03  14 00 02 
        Number of Interfaces:   2
        Configuration Value:   1
        Attributes:   0xA0 (bus-powered, remote wakeup)
        MaxPower:   98 mA
        Interface #0 - HID/Boot Interface   
            Alternate Setting   0
            Number of Endpoints   1
            Interface Class:   3   (HID)
            Interface Subclass;   1   (Boot Interface)
            Interface Protocol:   1
            HID Descriptor   
                Descriptor Version Number:   0x0111
                Country Code:   0
                Descriptor Count:   1
                Descriptor 1   
                    Type:   0x22  (Report Descriptor)
                    Length (and contents):   59
                        Raw Descriptor (hex)    0000: 05 01 09 06 A1 01 05 07  19 E0 29 E7 15 00 25 01  
                        Raw Descriptor (hex)    0010: 75 01 95 08 81 02 81 03  95 05 05 08 19 01 29 05  
                        Raw Descriptor (hex)    0020: 91 02 95 01 75 03 91 01  95 06 75 08 15 00 26 A4  
                        Raw Descriptor (hex)    0030: 00 05 07 19 00 2A A4 00  81 00 C0 
                    Parsed Report Descriptor:   
                          Usage Page    (Generic Desktop) 
                          Usage (Keyboard)    
                              Collection (Application)    
                                Usage Page    (Keyboard/Keypad) 
                                Usage Minimum...........    (224)  
                                Usage Maximum...........    (231)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (1)  
                                Report Size.............    (1)  
                                Report Count............    (8)  
                                Input...................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                Input...................   (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                Report Count............    (5)  
                                Usage Page    (LED) 
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (5)  
                                Output..................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                                Report Count............    (1)  
                                Report Size.............    (3)  
                                Output..................   (Constant, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                                Report Count............    (6)  
                                Report Size.............    (8)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (164)  
                                Usage Page    (Keyboard/Keypad) 
                                Usage Minimum...........    (0)  
                                Usage Maximum...........    (164)  
                                Input...................   (Data, Array, Absolute) 
                              End Collection     
            Endpoint 0x81 - Interrupt Input   
                Address:   0x81  (IN)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   8
                Polling Interval:   8 ms
        Interface #1 - HID/Boot Interface   
            Alternate Setting   0
            Number of Endpoints   1
            Interface Class:   3   (HID)
            Interface Subclass;   1   (Boot Interface)
            Interface Protocol:   2
            HID Descriptor   
                Descriptor Version Number:   0x0111
                Country Code:   0
                Descriptor Count:   1
                Descriptor 1   
                    Type:   0x22  (Report Descriptor)
                    Length (and contents):   177
                        Raw Descriptor (hex)    0000: 05 01 09 02 A1 01 85 02  09 01 A1 00 05 09 19 01  
                        Raw Descriptor (hex)    0010: 29 10 15 00 25 01 95 10  75 01 81 02 05 01 16 01  
                        Raw Descriptor (hex)    0020: F8 26 FF 07 75 0C 95 02  09 30 09 31 81 06 15 81  
                        Raw Descriptor (hex)    0030: 25 7F 75 08 95 01 09 38  81 06 05 0C 0A 38 02 95  
                        Raw Descriptor (hex)    0040: 01 81 06 C0 C0 05 0C 09  01 A1 01 85 03 75 10 95  
                        Raw Descriptor (hex)    0050: 02 15 01 26 8C 02 19 01  2A 8C 02 81 00 C0 05 01  
                        Raw Descriptor (hex)    0060: 09 80 A1 01 85 04 75 02  95 01 15 01 25 03 09 82  
                        Raw Descriptor (hex)    0070: 09 81 09 83 81 60 75 06  81 03 C0 06 00 FF 09 01  
                        Raw Descriptor (hex)    0080: A1 01 85 10 75 08 95 06  15 00 26 FF 00 09 01 81  
                        Raw Descriptor (hex)    0090: 00 09 01 91 00 C0 06 00  FF 09 02 A1 01 85 11 75  
                        Raw Descriptor (hex)    00a0: 08 95 13 15 00 26 FF 00  09 02 81 00 09 02 91 00  
                        Raw Descriptor (hex)    00b0: C0 
                    Parsed Report Descriptor:   
                          Usage Page    (Generic Desktop) 
                          Usage (Mouse)    
                              Collection (Application)    
                                ReportID................    (2)  
                                Usage (Pointer)    
                                    Collection (Physical)    
                                      Usage Page    (Button) 
                                      Usage Minimum...........    (1)  
                                      Usage Maximum...........    (16)  
                                      Logical Minimum.........    (0)  
                                      Logical Maximum.........    (1)  
                                      Report Count............    (16)  
                                      Report Size.............    (1)  
                                      Input...................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                      Usage Page    (Generic Desktop) 
                                      Logical Minimum.........    (-2047)  
                                      Logical Maximum.........    (2047)  
                                      Report Size.............    (12)  
                                      Report Count............    (2)  
                                      Usage (X)    
                                      Usage (Y)    
                                      Input...................   (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                      Logical Minimum.........    (-127)  
                                      Logical Maximum.........    (127)  
                                      Report Size.............    (8)  
                                      Report Count............    (1)  
                                      Usage (Wheel)    
                                      Input...................   (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                      Usage Page    (Consumer) 
                                      Usage 568 (0x238)    
                                      Report Count............    (1)  
                                      Input...................   (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                    End Collection     
                              End Collection     
                          Usage Page    (Consumer) 
                          Usage 1 (0x1)    
                              Collection (Application)    
                                ReportID................    (3)  
                                Report Size.............    (16)  
                                Report Count............    (2)  
                                Logical Minimum.........    (1)  
                                Logical Maximum.........    (652)  
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (652)  
                                Input...................   (Data, Array, Absolute) 
                              End Collection     
                          Usage Page    (Generic Desktop) 
                          Usage (System Control)    
                              Collection (Application)    
                                ReportID................    (4)  
                                Report Size.............    (2)  
                                Report Count............    (1)  
                                Logical Minimum.........    (1)  
                                Logical Maximum.........    (3)  
                                Usage (System Sleep)    
                                Usage (System Power Down)    
                                Usage (System Wakeup)    
                                Input...................   (Data, Array, Absolute) 
                                Report Size.............    (6)  
                                Input...................   (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                              End Collection     
                          Usage Page    (Vendor defined 0) 
                          Usage 1 (0x1)    
                              Collection (Application)    
                                ReportID................    (16)  
                                Report Size.............    (8)  
                                Report Count............    (6)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (255)  
                                Usage 1 (0x1)    
                                Input...................   (Data, Array, Absolute) 
                                Usage 1 (0x1)    
                                Output..................   (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                              End Collection     
                          Usage Page    (Vendor defined 0) 
                          Usage 2 (0x2)    
                              Collection (Application)    
                                ReportID................    (17)  
                                Report Size.............    (8)  
                                Report Count............    (19)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (255)  
                                Usage 2 (0x2)    
                                Input...................   (Data, Array, Absolute) 
                                Usage 2 (0x2)    
                                Output..................   (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                              End Collection     
            Endpoint 0x82 - Interrupt Input   
                Address:   0x82  (IN)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   20
                Polling Interval:   2 ms
Example Logitech USB Receiver. It is a USB Composite Device, under Windows Device Manager, it will show as 9 devices, one USB Composite Device parent, then six devices in Human Interface Devices section, one in mouse and one in keyboard. HIDSharp will show it as six HID devices, one for Interface 0, one for each top level collection of Interface 1 (col 1/2/3/4/5).. ``` Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} ``` Full run-log of HIDSharp under my Acer laptop with the Logitech USB receiver installed. <details> <summary> click to expand </summary> ``` All device list: Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) @ \\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1) @ \\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1) @ \\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} BLE device list: Press any key Complete device list (took 0 ms to get 12 devices): \\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 5, Output 0, Feature 0 Serial Ports: System.NotSupportedException: Unable to reconstruct the report descriptor. at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\hid\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195 at HidSharp.Test.Program.Main(String[] args) in C:\work\hid\HidSharp\HidSharp.Test\Program.cs:line 249 \\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 9, Output 2, Feature 0 Serial Ports: Report Descriptor: 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 08 81 02 95 38 81 03 05 08 19 01 29 05 95 05 91 02 95 03 91 03 C1 00 (50 bytes) UsagePage 1 Usage 6 Collection 1 UsagePage 7 UsageMinimum 224 UsageMaximum 231 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 8 Input 2 ReportCount 56 Input 3 UsagePage 8 UsageMinimum 1 UsageMaximum 5 ReportCount 5 Output 2 ReportCount 3 Output 3 EndCollection 0 Usage: 10006 GenericDesktopKeyboard Input: ReportID=0, Length=9, Items=2 8 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 700E0 KeyboardLeftControl, 700E1 KeyboardLeftShift, 700E2 KeyboardLeftAlt, 700E3 KeyboardLeftGUI, 700E4 KeyboardRightControl, 700E5 KeyboardRightShift, 700E6 KeyboardRightAlt, 700E7 KeyboardRightGUI 56 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=0, Length=2, Items=2 5 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 80001 LedNumLock, 80002 LedCapsLock, 80003 LedScrollLock, 80004 LedCompose, 80005 LedKana 3 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Failed to open device. \\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 8, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 02 A1 01 85 02 09 01 A1 00 05 09 19 01 29 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 10 81 02 05 01 09 30 26 FF 07 45 00 75 0C 95 01 81 06 09 31 81 06 09 38 25 7F 75 08 81 06 05 0C 0A 38 02 81 06 C1 00 C1 00 (74 bytes) UsagePage 1 Usage 2 Collection 1 ReportID 2 Usage 1 Collection 0 UsagePage 9 UsageMinimum 1 UsageMaximum 16 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 16 Input 2 UsagePage 1 Usage 48 LogicalMaximum 2047 PhysicalMaximum 0 ReportSize 12 ReportCount 1 Input 6 Usage 49 Input 6 Usage 56 LogicalMaximum 127 ReportSize 8 Input 6 UsagePage 12 Usage 568 Input 6 EndCollection 0 EndCollection 0 Usage: 10002 GenericDesktopMouse Input: ReportID=2, Length=8, Items=5 16 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2, 90003 Button3, 90004 Button4, 90005 Button5, 90006 Button6, 90007 Button7, 90008 Button8, 90009 Button9, 9000A Button10, 9000B Button11, 9000C Button12, 9000D Button13, 9000E Button14, 9000F Button15, 90010 Button16 1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX 1 Elements x 12 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10038 GenericDesktopWheel 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: C0238 787000 Opening device for 20 seconds... Failed to open device. \\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 7, Output 7, Feature 0 Serial Ports: Report Descriptor: 06 00 FF 09 01 A1 01 85 10 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 30 81 03 91 03 C1 00 (31 bytes) UsagePage 65280 Usage 1 Collection 1 ReportID 16 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 48 Input 3 Output 3 EndCollection 0 Usage: FF000001 4278190081 Input: ReportID=16, Length=7, Items=1 48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=16, Length=7, Items=1 48 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 2, Output 0, Feature 0 Serial Ports: System.NotSupportedException: Unable to reconstruct the report descriptor. at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() in C:\work\hid\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 195 at HidSharp.Test.Program.Main(String[] args) in C:\work\hid\HidSharp\HidSharp.Test\Program.cs:line 249 \\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) Max Lengths: Input 12, Output 0, Feature 705 Serial Ports: Report Descriptor: 06 00 FF 09 01 A1 01 85 5C 09 01 15 00 25 FF 35 00 45 00 65 00 55 00 75 08 95 0B 81 06 85 0D 09 C5 95 04 B1 02 25 01 45 01 75 01 96 E0 15 B1 03 85 0C 09 C6 25 FF 45 00 75 08 96 C0 02 B1 02 85 0B 09 C7 95 42 B1 02 25 01 45 01 75 01 96 F0 13 B1 03 C1 00 (84 bytes) UsagePage 65280 Usage 1 Collection 1 ReportID 92 Usage 1 LogicalMinimum 0 LogicalMaximum 255 PhysicalMinimum 0 PhysicalMaximum 0 Unit 0 UnitExponent 0 ReportSize 8 ReportCount 11 Input 6 ReportID 13 Usage 197 ReportCount 4 Feature 2 LogicalMaximum 1 PhysicalMaximum 1 ReportSize 1 ReportCount 5600 Feature 3 ReportID 12 Usage 198 LogicalMaximum 255 PhysicalMaximum 0 ReportSize 8 ReportCount 704 Feature 2 ReportID 11 Usage 199 ReportCount 66 Feature 2 LogicalMaximum 1 PhysicalMaximum 1 ReportSize 1 ReportCount 5104 Feature 3 EndCollection 0 Usage: FF000001 4278190081 Input: ReportID=92, Length=12, Items=1 11 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: FF000001 4278190081 Feature: ReportID=13, Length=705, Items=2 4 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277 5600 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=12, Length=705, Items=1 704 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C6 4278190278 Feature: ReportID=11, Length=705, Items=2 66 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C7 4278190279 5104 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} Logitech USB Receiver (no serial number) (VID 1133, PID 50484, version 29.1) Max Lengths: Input 20, Output 20, Feature 0 Serial Ports: Report Descriptor: 06 00 FF 09 02 A1 01 85 11 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 98 81 03 91 03 C1 00 (31 bytes) UsagePage 65280 Usage 2 Collection 1 ReportID 17 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 152 Input 3 Output 3 EndCollection 0 Usage: FF000002 4278190082 Input: ReportID=17, Length=20, Items=1 152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Output: ReportID=17, Length=20, Items=1 152 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) Max Lengths: Input 9, Output 0, Feature 5 Serial Ports: Report Descriptor: 05 01 09 02 A1 01 85 01 09 01 A1 00 05 09 19 01 29 02 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 02 81 02 95 06 81 03 05 01 09 30 25 7F 45 00 75 08 95 01 81 06 09 31 81 06 15 00 25 01 45 01 75 01 95 28 81 03 85 0E C1 00 06 00 FF 09 01 25 FF 45 00 75 08 95 01 B1 02 09 C5 95 03 B1 02 C1 00 (97 bytes) UsagePage 1 Usage 2 Collection 1 ReportID 1 Usage 1 Collection 0 UsagePage 9 UsageMinimum 1 UsageMaximum 2 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 2 Input 2 ReportCount 6 Input 3 UsagePage 1 Usage 48 LogicalMaximum 127 PhysicalMaximum 0 ReportSize 8 ReportCount 1 Input 6 Usage 49 Input 6 LogicalMinimum 0 LogicalMaximum 1 PhysicalMaximum 1 ReportSize 1 ReportCount 40 Input 3 ReportID 14 EndCollection 0 UsagePage 65280 Usage 1 LogicalMaximum 255 PhysicalMaximum 0 ReportSize 8 ReportCount 1 Feature 2 Usage 197 ReportCount 3 Feature 2 EndCollection 0 Usage: 10002 GenericDesktopMouse Input: ReportID=1, Length=9, Items=5 2 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1, 90002 Button2 6 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10030 GenericDesktopX 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Relative, Usages: 10031 GenericDesktopY 40 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=14, Length=5, Items=2 1 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF000001 4278190081 3 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277 Opening device for 20 seconds... Failed to open device. \\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) Max Lengths: Input 12, Output 0, Feature 257 Serial Ports: Report Descriptor: 05 0D 09 05 A1 01 85 04 09 22 A1 02 09 47 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 02 09 42 81 02 95 02 81 03 09 51 25 0F 45 00 75 04 95 01 81 02 05 01 09 30 26 A2 0C 46 94 01 65 13 55 0E 75 10 81 02 09 31 26 26 09 46 24 01 81 02 C1 00 05 0D 09 56 26 FF FF 46 FF FF 66 01 10 55 0C 81 02 09 54 25 7F 75 08 81 02 05 09 09 01 25 01 45 01 65 00 55 00 75 01 81 02 95 07 81 03 09 C5 46 FF FF 66 01 10 55 0C 75 08 95 02 81 03 85 07 05 0D 09 60 45 01 65 00 55 00 75 01 95 01 B1 02 96 FF 07 B1 03 85 02 09 55 25 0F 46 FF FF 66 01 10 55 0C 75 04 95 01 B1 02 09 59 B1 02 25 01 45 01 65 00 55 00 75 01 96 F8 07 B1 03 85 06 06 00 FF 09 C5 25 FF 46 FF FF 66 01 10 55 0C 75 08 96 00 01 B1 02 C1 00 (231 bytes) UsagePage 13 Usage 5 Collection 1 ReportID 4 Usage 34 Collection 2 Usage 71 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 2 Usage 66 Input 2 ReportCount 2 Input 3 Usage 81 LogicalMaximum 15 PhysicalMaximum 0 ReportSize 4 ReportCount 1 Input 2 UsagePage 1 Usage 48 LogicalMaximum 3234 PhysicalMaximum 404 Unit 19 UnitExponent 14 ReportSize 16 Input 2 Usage 49 LogicalMaximum 2342 PhysicalMaximum 292 Input 2 EndCollection 0 UsagePage 13 Usage 86 LogicalMaximum 65535 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 Input 2 Usage 84 LogicalMaximum 127 ReportSize 8 Input 2 UsagePage 9 Usage 1 LogicalMaximum 1 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 Input 2 ReportCount 7 Input 3 Usage 197 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 2 Input 3 ReportID 7 UsagePage 13 Usage 96 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Feature 2 ReportCount 2047 Feature 3 ReportID 2 Usage 85 LogicalMaximum 15 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 4 ReportCount 1 Feature 2 Usage 89 Feature 2 LogicalMaximum 1 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 2040 Feature 3 ReportID 6 UsagePage 65280 Usage 197 LogicalMaximum 255 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 8 ReportCount 256 Feature 2 EndCollection 0 Usage: D0005 851973 Input: ReportID=4, Length=12, Items=11 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0047 852039 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0042 852034 2 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 1 Elements x 4 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: D0051 852049 1 Elements x 16 Bits, Units: EnglishLinear, Expected Usage Type: 0, Flags: Variable, Usages: 10030 GenericDesktopX 1 Elements x 16 Bits, Units: EnglishLinear, Expected Usage Type: 0, Flags: Variable, Usages: 10031 GenericDesktopY 1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0056 852054 1 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0054 852052 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: 90001 Button1 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 2 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Constant, Variable, Usages: 900C5 590021 Feature: ReportID=7, Length=257, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0060 852064 2047 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=2, Length=257, Items=3 1 Elements x 4 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0055 852053 1 Elements x 4 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0059 852057 2040 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=6, Length=257, Items=1 256 Elements x 8 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: FF0000C5 4278190277 Opening device for 20 seconds... Failed to open device. \\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) Max Lengths: Input 0, Output 0, Feature 3 Serial Ports: Report Descriptor: 05 0D 09 0E A1 01 85 05 09 22 A1 00 09 57 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 B1 02 09 58 B1 02 95 0E B1 03 85 03 C1 00 09 22 A1 00 09 52 25 0A 46 FF FF 66 01 10 55 0C 75 10 95 01 B1 02 C1 00 C1 00 (70 bytes) UsagePage 13 Usage 14 Collection 1 ReportID 5 Usage 34 Collection 0 Usage 87 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Feature 2 Usage 88 Feature 2 ReportCount 14 Feature 3 ReportID 3 EndCollection 0 Usage 34 Collection 0 Usage 82 LogicalMaximum 10 PhysicalMaximum 65535 Unit 4097 UnitExponent 12 ReportSize 16 ReportCount 1 Feature 2 EndCollection 0 EndCollection 0 Usage: D000E 851982 Feature: ReportID=5, Length=3, Items=3 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0057 852055 1 Elements x 1 Bits, Units: None, Expected Usage Type: PushButton, Flags: Variable, Usages: D0058 852056 14 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Feature: ReportID=3, Length=3, Items=1 1 Elements x 16 Bits, Units: SILinear, Expected Usage Type: 0, Flags: Variable, Usages: D0052 852050 Opening device for 20 seconds... Opened device. Closed device. \\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1) Max Lengths: Input 2, Output 0, Feature 0 Serial Ports: Report Descriptor: 05 01 09 0C A1 01 85 01 09 C6 15 00 25 01 35 00 45 01 65 00 55 00 75 01 95 01 81 06 95 07 81 03 C1 00 (34 bytes) UsagePage 1 Usage 12 Collection 1 ReportID 1 Usage 198 LogicalMinimum 0 LogicalMaximum 1 PhysicalMinimum 0 PhysicalMaximum 1 Unit 0 UnitExponent 0 ReportSize 1 ReportCount 1 Input 6 ReportCount 7 Input 3 EndCollection 0 Usage: 1000C 65548 Input: ReportID=1, Length=2, Items=2 1 Elements x 1 Bits, Units: None, Expected Usage Type: OneShot, Flags: Variable, Relative, Usages: 100C6 65734 7 Elements x 1 Bits, Units: None, Expected Usage Type: 0, Flags: Constant, Variable, Usages: Opening device for 20 seconds... Opened device. Closed device. \\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} Acer Inc. Launch Manager Wireless Device (no serial number) (VID 11254, PID 41110, version 0.1) Max Lengths: Input 17, Output 17, Feature 0 Serial Ports: Report Descriptor: 06 00 FF 09 01 A1 01 85 40 09 02 15 00 25 FF 35 00 45 00 65 00 55 00 75 08 95 10 81 02 09 02 91 02 C1 00 (35 bytes) UsagePage 65280 Usage 1 Collection 1 ReportID 64 Usage 2 LogicalMinimum 0 LogicalMaximum 255 PhysicalMinimum 0 PhysicalMaximum 0 Unit 0 UnitExponent 0 ReportSize 8 ReportCount 16 Input 2 Usage 2 Output 2 EndCollection 0 Usage: FF000001 4278190081 Input: ReportID=64, Length=17, Items=1 16 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF000002 4278190082 Output: ReportID=64, Length=17, Items=1 16 Elements x 8 Bits, Units: None, Expected Usage Type: 0, Flags: Variable, Usages: FF000002 4278190082 Opening device for 20 seconds... Opened device. Closed device. Press a key to exit... ``` </details> USB Prober output from Mac Mini M1. <details> <summary> click to expand </summary> ``` Full Speed device @ 22 (0x02146000): ............................................. Composite device: "USB Receiver" Port Information: 0x0018 Not Captive External Device Connected Enabled Number Of Endpoints (includes EP0): Total Endpoints for Configuration 1 (current): 3 Device Descriptor Descriptor Version Number: 0x0200 Device Class: 0 (Composite) Device Subclass: 0 Device Protocol: 0 Device MaxPacketSize: 8 Device VendorID/ProductID: 0x046D/0xC534 (Logitech Inc.) Device Version Number: 0x2901 Number of Configurations: 1 Manufacturer String: 1 "Logitech" Product String: 2 "USB Receiver" Serial Number String: 0 (none) Configuration Descriptor (current config): ...................... "RQR29.01_B0016" Length (and contents): 59 Raw Descriptor (hex) 0000: 09 02 3B 00 02 01 04 A0 31 09 04 00 00 01 03 01 Raw Descriptor (hex) 0010: 01 00 09 21 11 01 00 01 22 3B 00 07 05 81 03 08 Raw Descriptor (hex) 0020: 00 08 09 04 01 00 01 03 01 02 00 09 21 11 01 00 Raw Descriptor (hex) 0030: 01 22 B1 00 07 05 82 03 14 00 02 Number of Interfaces: 2 Configuration Value: 1 Attributes: 0xA0 (bus-powered, remote wakeup) MaxPower: 98 mA Interface #0 - HID/Boot Interface Alternate Setting 0 Number of Endpoints 1 Interface Class: 3 (HID) Interface Subclass; 1 (Boot Interface) Interface Protocol: 1 HID Descriptor Descriptor Version Number: 0x0111 Country Code: 0 Descriptor Count: 1 Descriptor 1 Type: 0x22 (Report Descriptor) Length (and contents): 59 Raw Descriptor (hex) 0000: 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 Raw Descriptor (hex) 0010: 75 01 95 08 81 02 81 03 95 05 05 08 19 01 29 05 Raw Descriptor (hex) 0020: 91 02 95 01 75 03 91 01 95 06 75 08 15 00 26 A4 Raw Descriptor (hex) 0030: 00 05 07 19 00 2A A4 00 81 00 C0 Parsed Report Descriptor: Usage Page (Generic Desktop) Usage (Keyboard) Collection (Application) Usage Page (Keyboard/Keypad) Usage Minimum........... (224) Usage Maximum........... (231) Logical Minimum......... (0) Logical Maximum......... (1) Report Size............. (1) Report Count............ (8) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Input................... (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Report Count............ (5) Usage Page (LED) Usage Minimum........... (1) Usage Maximum........... (5) Output.................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) Report Count............ (1) Report Size............. (3) Output.................. (Constant, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) Report Count............ (6) Report Size............. (8) Logical Minimum......... (0) Logical Maximum......... (164) Usage Page (Keyboard/Keypad) Usage Minimum........... (0) Usage Maximum........... (164) Input................... (Data, Array, Absolute) End Collection Endpoint 0x81 - Interrupt Input Address: 0x81 (IN) Attributes: 0x03 (Interrupt) Max Packet Size: 8 Polling Interval: 8 ms Interface #1 - HID/Boot Interface Alternate Setting 0 Number of Endpoints 1 Interface Class: 3 (HID) Interface Subclass; 1 (Boot Interface) Interface Protocol: 2 HID Descriptor Descriptor Version Number: 0x0111 Country Code: 0 Descriptor Count: 1 Descriptor 1 Type: 0x22 (Report Descriptor) Length (and contents): 177 Raw Descriptor (hex) 0000: 05 01 09 02 A1 01 85 02 09 01 A1 00 05 09 19 01 Raw Descriptor (hex) 0010: 29 10 15 00 25 01 95 10 75 01 81 02 05 01 16 01 Raw Descriptor (hex) 0020: F8 26 FF 07 75 0C 95 02 09 30 09 31 81 06 15 81 Raw Descriptor (hex) 0030: 25 7F 75 08 95 01 09 38 81 06 05 0C 0A 38 02 95 Raw Descriptor (hex) 0040: 01 81 06 C0 C0 05 0C 09 01 A1 01 85 03 75 10 95 Raw Descriptor (hex) 0050: 02 15 01 26 8C 02 19 01 2A 8C 02 81 00 C0 05 01 Raw Descriptor (hex) 0060: 09 80 A1 01 85 04 75 02 95 01 15 01 25 03 09 82 Raw Descriptor (hex) 0070: 09 81 09 83 81 60 75 06 81 03 C0 06 00 FF 09 01 Raw Descriptor (hex) 0080: A1 01 85 10 75 08 95 06 15 00 26 FF 00 09 01 81 Raw Descriptor (hex) 0090: 00 09 01 91 00 C0 06 00 FF 09 02 A1 01 85 11 75 Raw Descriptor (hex) 00a0: 08 95 13 15 00 26 FF 00 09 02 81 00 09 02 91 00 Raw Descriptor (hex) 00b0: C0 Parsed Report Descriptor: Usage Page (Generic Desktop) Usage (Mouse) Collection (Application) ReportID................ (2) Usage (Pointer) Collection (Physical) Usage Page (Button) Usage Minimum........... (1) Usage Maximum........... (16) Logical Minimum......... (0) Logical Maximum......... (1) Report Count............ (16) Report Size............. (1) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Usage Page (Generic Desktop) Logical Minimum......... (-2047) Logical Maximum......... (2047) Report Size............. (12) Report Count............ (2) Usage (X) Usage (Y) Input................... (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Logical Minimum......... (-127) Logical Maximum......... (127) Report Size............. (8) Report Count............ (1) Usage (Wheel) Input................... (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Usage Page (Consumer) Usage 568 (0x238) Report Count............ (1) Input................... (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) End Collection End Collection Usage Page (Consumer) Usage 1 (0x1) Collection (Application) ReportID................ (3) Report Size............. (16) Report Count............ (2) Logical Minimum......... (1) Logical Maximum......... (652) Usage Minimum........... (1) Usage Maximum........... (652) Input................... (Data, Array, Absolute) End Collection Usage Page (Generic Desktop) Usage (System Control) Collection (Application) ReportID................ (4) Report Size............. (2) Report Count............ (1) Logical Minimum......... (1) Logical Maximum......... (3) Usage (System Sleep) Usage (System Power Down) Usage (System Wakeup) Input................... (Data, Array, Absolute) Report Size............. (6) Input................... (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) End Collection Usage Page (Vendor defined 0) Usage 1 (0x1) Collection (Application) ReportID................ (16) Report Size............. (8) Report Count............ (6) Logical Minimum......... (0) Logical Maximum......... (255) Usage 1 (0x1) Input................... (Data, Array, Absolute) Usage 1 (0x1) Output.................. (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) End Collection Usage Page (Vendor defined 0) Usage 2 (0x2) Collection (Application) ReportID................ (17) Report Size............. (8) Report Count............ (19) Logical Minimum......... (0) Logical Maximum......... (255) Usage 2 (0x2) Input................... (Data, Array, Absolute) Usage 2 (0x2) Output.................. (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) End Collection Endpoint 0x82 - Interrupt Input Address: 0x82 (IN) Attributes: 0x03 (Interrupt) Max Packet Size: 20 Polling Interval: 2 ms ``` </details>
JoergAtGithub commented 2021-06-20 03:51:49 -05:00 (Migrated from github.com)

The HidSharp report descriptor reconstructor doesn't implement reconstruction of the collection structure, but #262 does.
Can you please upload the output for this device with #262 too.

The HidSharp report descriptor reconstructor doesn't implement reconstruction of the collection structure, but #262 does. Can you please upload the output for this device with #262 too.
Youw commented 2021-06-20 03:55:26 -05:00 (Migrated from github.com)

Windows creates a unique virtual HID device for each usage_page/usage combination of the HID device

In Windows, the HID device setup class (HIDClass) generates a unique physical device object (PDO) for each Top Level Collection described by the Report Descriptor

I guess I wasn't technically correct, as usage_page/usage combination isn't always a Top Level Collection (I was referencing to my knowledge/experience at the time, instead of check with the documentation), but that doesn't change the root of the problem.

> Windows creates a unique virtual HID device for each usage_page/usage combination of the HID device > In Windows, the HID device setup class (HIDClass) generates a unique physical device object (PDO) for each Top Level Collection described by the Report Descriptor I guess I wasn't technically correct, as usage_page/usage combination isn't always a Top Level Collection (I was referencing to my knowledge/experience at the time, instead of check with the documentation), but that doesn't change the root of the problem.
mcuee commented 2021-06-20 04:08:10 -05:00 (Migrated from github.com)

The HidSharp report descriptor reconstructor doesn't implement reconstruction of the collection structure, but #262 does.
Can you please upload the output for this device with #262 too.

This is the run log from #262 under my Acer Windows 10 laptop (with Acer built-in HID device and the Logitech M238 USB wireless mouse). I just use the following branch.
https://github.com/JoergAtGithub/hidapi/tree/windows_report_descriptor_reconstructor

click to expand
C:\work\hid\hidapi_test\windows\Debug> .\hidtest.exe
hidapi test/example tool. Compiled with hidapi version 0.10.1, runtime version 0.10.1.
Compile-time version matches runtime version of hidapi.

05 01            Usage Page (1)
09 02            Usage  (2)
A1 01            Collection (Application)
09 01            Usage  (1)
A1 00            Collection (Physical)
85 02            Report ID (2)
05 09            Usage Page (9)
19 01            Usage Minimum (1)
29 10            Usage Maximum (16)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 10            Report Count (16)
81 02            Input (0x02)
05 01            Usage Page (1)
09 30            Usage (48)
09 31            Usage (49)
16 01 F8         Logical Minimum (-2047)
26 FF 07         Logical Maximum (2047)
75 0C            Report Size (12)
95 02            Report Count (2)
81 06            Input (0x06)
09 38            Usage (56)
15 81            Logical Minimum (-127)
25 7F            Logical Maximum (127)
75 08            Report Size (8)
95 01            Report Count (1)
81 06            Input (0x06)
05 0C            Usage Page (12)
0A 38 02         Usage (568)
15 81            Logical Minimum (-127)
25 7F            Logical Maximum (127)
75 08            Report Size (8)
95 01            Report Count (1)
81 06            Input (0x06)
C0               End Collection
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev0.txt ###
05 0C            Usage Page (12)
09 01            Usage  (1)
A1 01            Collection (Application)
85 03            Report ID (3)
19 01            Usage Minimum (1)
2A 8C 02         Usage Maximum (652)
15 01            Logical Minimum (1)
26 8C 02         Logical Maximum (652)
75 10            Report Size (16)
95 02            Report Count (2)
81 00            Input (0x00)
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev1.txt ###
05 01            Usage Page (1)
09 06            Usage  (6)
A1 01            Collection (Application)
05 07            Usage Page (7)
19 E0            Usage Minimum (224)
29 E7            Usage Maximum (231)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 08            Report Count (8)
81 02            Input (0x02)
75 08            Report Size (8)
95 01            Report Count (1)
81 03            Input (0x03) Padding
19 00            Usage Minimum (0)
29 A4            Usage Maximum (164)
15 00            Logical Minimum (0)
26 A4 00         Logical Maximum (164)
75 08            Report Size (8)
95 06            Report Count (6)
81 00            Input (0x00)
05 08            Usage Page (8)
19 01            Usage Minimum (1)
29 05            Usage Maximum (5)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 05            Report Count (5)
91 02            Output (0x02)
75 03            Report Size (3)
95 01            Report Count (1)
91 03            Output (0x03) Padding
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev2.txt ###
05 01            Usage Page (1)
09 80            Usage  (128)
A1 01            Collection (Application)
85 04            Report ID (4)
09 83            Usage (131)
09 81            Usage (129)
09 82            Usage (130)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 03            Report Count (3)
81 60            Input (0x60)
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev3.txt ###
06 00 FF         Usage Page (65280)
09 01            Usage  (1)
A1 01            Collection (Application)
85 10            Report ID (16)
09 01            Usage (1)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 01            Report Count (1)
81 00            Input (0x00)
09 01            Usage (1)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 01            Report Count (1)
91 00            Output (0x00)
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev4.txt ###
05 01            Usage Page (1)
09 02            Usage  (2)
A1 01            Collection (Application)
09 01            Usage  (1)
A1 00            Collection (Physical)
85 01            Report ID (1)
05 09            Usage Page (9)
19 01            Usage Minimum (1)
29 02            Usage Maximum (2)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 02            Report Count (2)
81 02            Input (0x02)
75 06            Report Size (6)
95 01            Report Count (1)
81 03            Input (0x03) Padding
05 01            Usage Page (1)
09 30            Usage (48)
09 31            Usage (49)
15 81            Logical Minimum (-127)
25 7F            Logical Maximum (127)
75 08            Report Size (8)
95 02            Report Count (2)
81 06            Input (0x06)
C0               End Collection
85 0E            Report ID (14)
06 00 FF         Usage Page (65280)
09 C5            Usage (197)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
95 03            Report Count (3)
B1 02            Feature (0x02)
09 01            Usage (1)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
95 01            Report Count (1)
B1 02            Feature (0x02)
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev5.txt ###
06 00 FF         Usage Page (65280)
09 02            Usage  (2)
A1 01            Collection (Application)
85 11            Report ID (17)
09 02            Usage (2)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 01            Report Count (1)
81 00            Input (0x00)
09 02            Usage (2)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 01            Report Count (1)
91 00            Output (0x00)
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev6.txt ###
06 00 FF         Usage Page (65280)
09 01            Usage  (1)
A1 01            Collection (Application)
85 5C            Report ID (92)
09 01            Usage (1)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
95 0B            Report Count (11)
81 06            Input (0x06)
85 0D            Report ID (13)
09 C5            Usage (197)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
95 04            Report Count (4)
B1 02            Feature (0x02)
85 0C            Report ID (12)
09 C6            Usage (198)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
96 C0 02         Report Count (704)
B1 02            Feature (0x02)
85 0B            Report ID (11)
09 C7            Usage (199)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
95 42            Report Count (66)
B1 02            Feature (0x02)
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev7.txt ###
05 0D            Usage Page (13)
09 05            Usage  (5)
A1 01            Collection (Application)
85 04            Report ID (4)
05 09            Usage Page (9)
09 C5            Usage (197)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
35 00            Physical Minimum (0)
47 FF FF 00 00   Physical Maximum (65535)
55 0C            Unit Exponent (12)
66 01 10         Unit (4097)
75 08            Report Size (8)
95 02            Report Count (2)
81 03            Input (0x03)
05 0D            Usage Page (13)
09 22            Usage  (34)
A1 02            Collection (Logical)
09 47            Usage (71)
09 42            Usage (66)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 02            Report Count (2)
45 00            Physical Maximum (0)
55 00            Unit Exponent (0)
65 00            Unit (0)
81 02            Input (0x02)
75 02            Report Size (2)
95 01            Report Count (1)
81 03            Input (0x03) Padding
09 51            Usage (81)
15 00            Logical Minimum (0)
25 0F            Logical Maximum (15)
75 04            Report Size (4)
95 01            Report Count (1)
81 02            Input (0x02)
05 01            Usage Page (1)
09 30            Usage (48)
15 00            Logical Minimum (0)
26 A2 0C         Logical Maximum (3234)
35 00            Physical Minimum (0)
46 94 01         Physical Maximum (404)
55 0E            Unit Exponent (14)
65 13            Unit (19)
75 10            Report Size (16)
95 01            Report Count (1)
81 02            Input (0x02)
09 31            Usage (49)
15 00            Logical Minimum (0)
26 26 09         Logical Maximum (2342)
35 00            Physical Minimum (0)
46 24 01         Physical Maximum (292)
75 10            Report Size (16)
95 01            Report Count (1)
81 02            Input (0x02)
C0               End Collection
05 0D            Usage Page (13)
09 56            Usage (86)
15 00            Logical Minimum (0)
27 FF FF 00 00   Logical Maximum (65535)
35 00            Physical Minimum (0)
47 FF FF 00 00   Physical Maximum (65535)
55 0C            Unit Exponent (12)
66 01 10         Unit (4097)
75 10            Report Size (16)
95 01            Report Count (1)
81 02            Input (0x02)
09 54            Usage (84)
15 00            Logical Minimum (0)
25 7F            Logical Maximum (127)
75 08            Report Size (8)
95 01            Report Count (1)
81 02            Input (0x02)
05 09            Usage Page (9)
09 01            Usage (1)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 01            Report Count (1)
45 00            Physical Maximum (0)
55 00            Unit Exponent (0)
65 00            Unit (0)
81 02            Input (0x02)
85 07            Report ID (7)
05 0D            Usage Page (13)
09 60            Usage (96)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 01            Report Count (1)
B1 02            Feature (0x02)
85 02            Report ID (2)
09 55            Usage (85)
09 59            Usage (89)
15 00            Logical Minimum (0)
25 0F            Logical Maximum (15)
35 00            Physical Minimum (0)
47 FF FF 00 00   Physical Maximum (65535)
55 0C            Unit Exponent (12)
66 01 10         Unit (4097)
75 04            Report Size (4)
95 02            Report Count (2)
B1 02            Feature (0x02)
85 06            Report ID (6)
06 00 FF         Usage Page (65280)
09 C5            Usage (197)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
96 00 01         Report Count (256)
B1 02            Feature (0x02)
75 07            Report Size (7)
95 01            Report Count (1)
81 03            Input (0x03) Padding
75 07            Report Size (7)
95 01            Report Count (1)
B1 03            Feature (0x03) Padding
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev8.txt ###
05 0D            Usage Page (13)
09 0E            Usage  (14)
A1 01            Collection (Application)
09 22            Usage  (34)
A1 00            Collection (Physical)
85 03            Report ID (3)
09 52            Usage (82)
15 00            Logical Minimum (0)
25 0A            Logical Maximum (10)
35 00            Physical Minimum (0)
47 FF FF 00 00   Physical Maximum (65535)
55 0C            Unit Exponent (12)
66 01 10         Unit (4097)
75 10            Report Size (16)
95 01            Report Count (1)
B1 02            Feature (0x02)
C0               End Collection
09 22            Usage  (34)
A1 00            Collection (Physical)
85 05            Report ID (5)
09 57            Usage (87)
09 58            Usage (88)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 02            Report Count (2)
45 00            Physical Maximum (0)
55 00            Unit Exponent (0)
65 00            Unit (0)
B1 02            Feature (0x02)
75 06            Report Size (6)
95 01            Report Count (1)
B1 03            Feature (0x03) Padding
C0               End Collection
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev9.txt ###
06 00 FF         Usage Page (65280)
09 01            Usage  (1)
A1 01            Collection (Application)
85 40            Report ID (64)
09 02            Usage (2)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
95 10            Report Count (16)
81 02            Input (0x02)
09 02            Usage (2)
15 00            Logical Minimum (0)
26 FF 00         Logical Maximum (255)
75 08            Report Size (8)
95 10            Report Count (16)
91 02            Output (0x02)
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev10.txt ###
05 01            Usage Page (1)
09 0C            Usage  (12)
A1 01            Collection (Application)
85 01            Report ID (1)
09 C6            Usage (198)
15 00            Logical Minimum (0)
25 01            Logical Maximum (1)
75 01            Report Size (1)
95 01            Report Count (1)
81 06            Input (0x06)
75 07            Report Size (7)
95 01            Report Count (1)
81 03            Input (0x03) Padding
C0               End Collection
### Wrote report descriptor file: hid_report_descriptor_0_0_dev11.txt ###
Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: (null)
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0x1)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: (null)
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xc)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
  serial_number: (null)
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    0
  Usage (page): 0x6 (0x1)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: (null)
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x80 (0x1)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: (null)
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x1 (0xff00)

Device Found
  type: 04f3 3060
  path: \\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      3
  Interface:    -1
  Usage (page): 0x2 (0x1)

Device Found
  type: 046d c534
  path: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: (null)
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2901
  Interface:    1
  Usage (page): 0x2 (0xff00)

Device Found
  type: 04f3 3060
  path: \\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      3
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Device Found
  type: 04f3 3060
  path: \\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      3
  Interface:    -1
  Usage (page): 0x5 (0xd)

Device Found
  type: 04f3 3060
  path: \\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      3
  Interface:    -1
  Usage (page): 0xe (0xd)

Device Found
  type: 2bf6 a096
  path: \\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: (null)
  Manufacturer: Acer Inc.
  Product:      Launch Manager Wireless Device
  Release:      1
  Interface:    -1
  Usage (page): 0x1 (0xff00)

Device Found
  type: 2bf6 a096
  path: \\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: (null)
  Manufacturer: Acer Inc.
  Product:      Launch Manager Wireless Device
  Release:      1
  Interface:    -1
  Usage (page): 0xc (0x1)

unable to open device

You can compare with the macOS USB Prober output of the particular USB receiver (part of the Logitech M238 wireless USB mouse)
USB Prober output from Mac Mini M1.

click to expand
Full Speed device @ 22 (0x02146000): .............................................   Composite device: "USB Receiver"
    Port Information:   0x0018
           Not Captive
           External Device
           Connected
           Enabled
    Number Of Endpoints (includes EP0):   
        Total Endpoints for Configuration 1 (current):   3
    Device Descriptor   
        Descriptor Version Number:   0x0200
        Device Class:   0   (Composite)
        Device Subclass:   0
        Device Protocol:   0
        Device MaxPacketSize:   8
        Device VendorID/ProductID:   0x046D/0xC534   (Logitech Inc.)
        Device Version Number:   0x2901
        Number of Configurations:   1
        Manufacturer String:   1 "Logitech"
        Product String:   2 "USB Receiver"
        Serial Number String:   0 (none)
    Configuration Descriptor (current config): ......................   "RQR29.01_B0016"
        Length (and contents):   59
            Raw Descriptor (hex)    0000: 09 02 3B 00 02 01 04 A0  31 09 04 00 00 01 03 01  
            Raw Descriptor (hex)    0010: 01 00 09 21 11 01 00 01  22 3B 00 07 05 81 03 08  
            Raw Descriptor (hex)    0020: 00 08 09 04 01 00 01 03  01 02 00 09 21 11 01 00  
            Raw Descriptor (hex)    0030: 01 22 B1 00 07 05 82 03  14 00 02 
        Number of Interfaces:   2
        Configuration Value:   1
        Attributes:   0xA0 (bus-powered, remote wakeup)
        MaxPower:   98 mA
        Interface #0 - HID/Boot Interface   
            Alternate Setting   0
            Number of Endpoints   1
            Interface Class:   3   (HID)
            Interface Subclass;   1   (Boot Interface)
            Interface Protocol:   1
            HID Descriptor   
                Descriptor Version Number:   0x0111
                Country Code:   0
                Descriptor Count:   1
                Descriptor 1   
                    Type:   0x22  (Report Descriptor)
                    Length (and contents):   59
                        Raw Descriptor (hex)    0000: 05 01 09 06 A1 01 05 07  19 E0 29 E7 15 00 25 01  
                        Raw Descriptor (hex)    0010: 75 01 95 08 81 02 81 03  95 05 05 08 19 01 29 05  
                        Raw Descriptor (hex)    0020: 91 02 95 01 75 03 91 01  95 06 75 08 15 00 26 A4  
                        Raw Descriptor (hex)    0030: 00 05 07 19 00 2A A4 00  81 00 C0 
                    Parsed Report Descriptor:   
                          Usage Page    (Generic Desktop) 
                          Usage (Keyboard)    
                              Collection (Application)    
                                Usage Page    (Keyboard/Keypad) 
                                Usage Minimum...........    (224)  
                                Usage Maximum...........    (231)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (1)  
                                Report Size.............    (1)  
                                Report Count............    (8)  
                                Input...................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                Input...................   (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                Report Count............    (5)  
                                Usage Page    (LED) 
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (5)  
                                Output..................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                                Report Count............    (1)  
                                Report Size.............    (3)  
                                Output..................   (Constant, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                                Report Count............    (6)  
                                Report Size.............    (8)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (164)  
                                Usage Page    (Keyboard/Keypad) 
                                Usage Minimum...........    (0)  
                                Usage Maximum...........    (164)  
                                Input...................   (Data, Array, Absolute) 
                              End Collection     
            Endpoint 0x81 - Interrupt Input   
                Address:   0x81  (IN)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   8
                Polling Interval:   8 ms
        Interface #1 - HID/Boot Interface   
            Alternate Setting   0
            Number of Endpoints   1
            Interface Class:   3   (HID)
            Interface Subclass;   1   (Boot Interface)
            Interface Protocol:   2
            HID Descriptor   
                Descriptor Version Number:   0x0111
                Country Code:   0
                Descriptor Count:   1
                Descriptor 1   
                    Type:   0x22  (Report Descriptor)
                    Length (and contents):   177
                        Raw Descriptor (hex)    0000: 05 01 09 02 A1 01 85 02  09 01 A1 00 05 09 19 01  
                        Raw Descriptor (hex)    0010: 29 10 15 00 25 01 95 10  75 01 81 02 05 01 16 01  
                        Raw Descriptor (hex)    0020: F8 26 FF 07 75 0C 95 02  09 30 09 31 81 06 15 81  
                        Raw Descriptor (hex)    0030: 25 7F 75 08 95 01 09 38  81 06 05 0C 0A 38 02 95  
                        Raw Descriptor (hex)    0040: 01 81 06 C0 C0 05 0C 09  01 A1 01 85 03 75 10 95  
                        Raw Descriptor (hex)    0050: 02 15 01 26 8C 02 19 01  2A 8C 02 81 00 C0 05 01  
                        Raw Descriptor (hex)    0060: 09 80 A1 01 85 04 75 02  95 01 15 01 25 03 09 82  
                        Raw Descriptor (hex)    0070: 09 81 09 83 81 60 75 06  81 03 C0 06 00 FF 09 01  
                        Raw Descriptor (hex)    0080: A1 01 85 10 75 08 95 06  15 00 26 FF 00 09 01 81  
                        Raw Descriptor (hex)    0090: 00 09 01 91 00 C0 06 00  FF 09 02 A1 01 85 11 75  
                        Raw Descriptor (hex)    00a0: 08 95 13 15 00 26 FF 00  09 02 81 00 09 02 91 00  
                        Raw Descriptor (hex)    00b0: C0 
                    Parsed Report Descriptor:   
                          Usage Page    (Generic Desktop) 
                          Usage (Mouse)    
                              Collection (Application)    
                                ReportID................    (2)  
                                Usage (Pointer)    
                                    Collection (Physical)    
                                      Usage Page    (Button) 
                                      Usage Minimum...........    (1)  
                                      Usage Maximum...........    (16)  
                                      Logical Minimum.........    (0)  
                                      Logical Maximum.........    (1)  
                                      Report Count............    (16)  
                                      Report Size.............    (1)  
                                      Input...................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                      Usage Page    (Generic Desktop) 
                                      Logical Minimum.........    (-2047)  
                                      Logical Maximum.........    (2047)  
                                      Report Size.............    (12)  
                                      Report Count............    (2)  
                                      Usage (X)    
                                      Usage (Y)    
                                      Input...................   (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                      Logical Minimum.........    (-127)  
                                      Logical Maximum.........    (127)  
                                      Report Size.............    (8)  
                                      Report Count............    (1)  
                                      Usage (Wheel)    
                                      Input...................   (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                      Usage Page    (Consumer) 
                                      Usage 568 (0x238)    
                                      Report Count............    (1)  
                                      Input...................   (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                    End Collection     
                              End Collection     
                          Usage Page    (Consumer) 
                          Usage 1 (0x1)    
                              Collection (Application)    
                                ReportID................    (3)  
                                Report Size.............    (16)  
                                Report Count............    (2)  
                                Logical Minimum.........    (1)  
                                Logical Maximum.........    (652)  
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (652)  
                                Input...................   (Data, Array, Absolute) 
                              End Collection     
                          Usage Page    (Generic Desktop) 
                          Usage (System Control)    
                              Collection (Application)    
                                ReportID................    (4)  
                                Report Size.............    (2)  
                                Report Count............    (1)  
                                Logical Minimum.........    (1)  
                                Logical Maximum.........    (3)  
                                Usage (System Sleep)    
                                Usage (System Power Down)    
                                Usage (System Wakeup)    
                                Input...................   (Data, Array, Absolute) 
                                Report Size.............    (6)  
                                Input...................   (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                              End Collection     
                          Usage Page    (Vendor defined 0) 
                          Usage 1 (0x1)    
                              Collection (Application)    
                                ReportID................    (16)  
                                Report Size.............    (8)  
                                Report Count............    (6)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (255)  
                                Usage 1 (0x1)    
                                Input...................   (Data, Array, Absolute) 
                                Usage 1 (0x1)    
                                Output..................   (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                              End Collection     
                          Usage Page    (Vendor defined 0) 
                          Usage 2 (0x2)    
                              Collection (Application)    
                                ReportID................    (17)  
                                Report Size.............    (8)  
                                Report Count............    (19)  
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (255)  
                                Usage 2 (0x2)    
                                Input...................   (Data, Array, Absolute) 
                                Usage 2 (0x2)    
                                Output..................   (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                              End Collection     
            Endpoint 0x82 - Interrupt Input   
                Address:   0x82  (IN)
                Attributes:   0x03  (Interrupt)
                Max Packet Size:   20
                Polling Interval:   2 ms
> The HidSharp report descriptor reconstructor doesn't implement reconstruction of the collection structure, but #262 does. > Can you please upload the output for this device with #262 too. This is the run log from #262 under my Acer Windows 10 laptop (with Acer built-in HID device and the Logitech M238 USB wireless mouse). I just use the following branch. https://github.com/JoergAtGithub/hidapi/tree/windows_report_descriptor_reconstructor <details> <summary> click to expand </summary> ``` C:\work\hid\hidapi_test\windows\Debug> .\hidtest.exe hidapi test/example tool. Compiled with hidapi version 0.10.1, runtime version 0.10.1. Compile-time version matches runtime version of hidapi. 05 01 Usage Page (1) 09 02 Usage (2) A1 01 Collection (Application) 09 01 Usage (1) A1 00 Collection (Physical) 85 02 Report ID (2) 05 09 Usage Page (9) 19 01 Usage Minimum (1) 29 10 Usage Maximum (16) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 10 Report Count (16) 81 02 Input (0x02) 05 01 Usage Page (1) 09 30 Usage (48) 09 31 Usage (49) 16 01 F8 Logical Minimum (-2047) 26 FF 07 Logical Maximum (2047) 75 0C Report Size (12) 95 02 Report Count (2) 81 06 Input (0x06) 09 38 Usage (56) 15 81 Logical Minimum (-127) 25 7F Logical Maximum (127) 75 08 Report Size (8) 95 01 Report Count (1) 81 06 Input (0x06) 05 0C Usage Page (12) 0A 38 02 Usage (568) 15 81 Logical Minimum (-127) 25 7F Logical Maximum (127) 75 08 Report Size (8) 95 01 Report Count (1) 81 06 Input (0x06) C0 End Collection C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev0.txt ### 05 0C Usage Page (12) 09 01 Usage (1) A1 01 Collection (Application) 85 03 Report ID (3) 19 01 Usage Minimum (1) 2A 8C 02 Usage Maximum (652) 15 01 Logical Minimum (1) 26 8C 02 Logical Maximum (652) 75 10 Report Size (16) 95 02 Report Count (2) 81 00 Input (0x00) C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev1.txt ### 05 01 Usage Page (1) 09 06 Usage (6) A1 01 Collection (Application) 05 07 Usage Page (7) 19 E0 Usage Minimum (224) 29 E7 Usage Maximum (231) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 08 Report Count (8) 81 02 Input (0x02) 75 08 Report Size (8) 95 01 Report Count (1) 81 03 Input (0x03) Padding 19 00 Usage Minimum (0) 29 A4 Usage Maximum (164) 15 00 Logical Minimum (0) 26 A4 00 Logical Maximum (164) 75 08 Report Size (8) 95 06 Report Count (6) 81 00 Input (0x00) 05 08 Usage Page (8) 19 01 Usage Minimum (1) 29 05 Usage Maximum (5) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 05 Report Count (5) 91 02 Output (0x02) 75 03 Report Size (3) 95 01 Report Count (1) 91 03 Output (0x03) Padding C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev2.txt ### 05 01 Usage Page (1) 09 80 Usage (128) A1 01 Collection (Application) 85 04 Report ID (4) 09 83 Usage (131) 09 81 Usage (129) 09 82 Usage (130) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 03 Report Count (3) 81 60 Input (0x60) C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev3.txt ### 06 00 FF Usage Page (65280) 09 01 Usage (1) A1 01 Collection (Application) 85 10 Report ID (16) 09 01 Usage (1) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 01 Report Count (1) 81 00 Input (0x00) 09 01 Usage (1) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 01 Report Count (1) 91 00 Output (0x00) C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev4.txt ### 05 01 Usage Page (1) 09 02 Usage (2) A1 01 Collection (Application) 09 01 Usage (1) A1 00 Collection (Physical) 85 01 Report ID (1) 05 09 Usage Page (9) 19 01 Usage Minimum (1) 29 02 Usage Maximum (2) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 02 Report Count (2) 81 02 Input (0x02) 75 06 Report Size (6) 95 01 Report Count (1) 81 03 Input (0x03) Padding 05 01 Usage Page (1) 09 30 Usage (48) 09 31 Usage (49) 15 81 Logical Minimum (-127) 25 7F Logical Maximum (127) 75 08 Report Size (8) 95 02 Report Count (2) 81 06 Input (0x06) C0 End Collection 85 0E Report ID (14) 06 00 FF Usage Page (65280) 09 C5 Usage (197) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 95 03 Report Count (3) B1 02 Feature (0x02) 09 01 Usage (1) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 95 01 Report Count (1) B1 02 Feature (0x02) C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev5.txt ### 06 00 FF Usage Page (65280) 09 02 Usage (2) A1 01 Collection (Application) 85 11 Report ID (17) 09 02 Usage (2) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 01 Report Count (1) 81 00 Input (0x00) 09 02 Usage (2) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 01 Report Count (1) 91 00 Output (0x00) C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev6.txt ### 06 00 FF Usage Page (65280) 09 01 Usage (1) A1 01 Collection (Application) 85 5C Report ID (92) 09 01 Usage (1) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 95 0B Report Count (11) 81 06 Input (0x06) 85 0D Report ID (13) 09 C5 Usage (197) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 95 04 Report Count (4) B1 02 Feature (0x02) 85 0C Report ID (12) 09 C6 Usage (198) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 96 C0 02 Report Count (704) B1 02 Feature (0x02) 85 0B Report ID (11) 09 C7 Usage (199) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 95 42 Report Count (66) B1 02 Feature (0x02) C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev7.txt ### 05 0D Usage Page (13) 09 05 Usage (5) A1 01 Collection (Application) 85 04 Report ID (4) 05 09 Usage Page (9) 09 C5 Usage (197) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 35 00 Physical Minimum (0) 47 FF FF 00 00 Physical Maximum (65535) 55 0C Unit Exponent (12) 66 01 10 Unit (4097) 75 08 Report Size (8) 95 02 Report Count (2) 81 03 Input (0x03) 05 0D Usage Page (13) 09 22 Usage (34) A1 02 Collection (Logical) 09 47 Usage (71) 09 42 Usage (66) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 02 Report Count (2) 45 00 Physical Maximum (0) 55 00 Unit Exponent (0) 65 00 Unit (0) 81 02 Input (0x02) 75 02 Report Size (2) 95 01 Report Count (1) 81 03 Input (0x03) Padding 09 51 Usage (81) 15 00 Logical Minimum (0) 25 0F Logical Maximum (15) 75 04 Report Size (4) 95 01 Report Count (1) 81 02 Input (0x02) 05 01 Usage Page (1) 09 30 Usage (48) 15 00 Logical Minimum (0) 26 A2 0C Logical Maximum (3234) 35 00 Physical Minimum (0) 46 94 01 Physical Maximum (404) 55 0E Unit Exponent (14) 65 13 Unit (19) 75 10 Report Size (16) 95 01 Report Count (1) 81 02 Input (0x02) 09 31 Usage (49) 15 00 Logical Minimum (0) 26 26 09 Logical Maximum (2342) 35 00 Physical Minimum (0) 46 24 01 Physical Maximum (292) 75 10 Report Size (16) 95 01 Report Count (1) 81 02 Input (0x02) C0 End Collection 05 0D Usage Page (13) 09 56 Usage (86) 15 00 Logical Minimum (0) 27 FF FF 00 00 Logical Maximum (65535) 35 00 Physical Minimum (0) 47 FF FF 00 00 Physical Maximum (65535) 55 0C Unit Exponent (12) 66 01 10 Unit (4097) 75 10 Report Size (16) 95 01 Report Count (1) 81 02 Input (0x02) 09 54 Usage (84) 15 00 Logical Minimum (0) 25 7F Logical Maximum (127) 75 08 Report Size (8) 95 01 Report Count (1) 81 02 Input (0x02) 05 09 Usage Page (9) 09 01 Usage (1) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 01 Report Count (1) 45 00 Physical Maximum (0) 55 00 Unit Exponent (0) 65 00 Unit (0) 81 02 Input (0x02) 85 07 Report ID (7) 05 0D Usage Page (13) 09 60 Usage (96) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 01 Report Count (1) B1 02 Feature (0x02) 85 02 Report ID (2) 09 55 Usage (85) 09 59 Usage (89) 15 00 Logical Minimum (0) 25 0F Logical Maximum (15) 35 00 Physical Minimum (0) 47 FF FF 00 00 Physical Maximum (65535) 55 0C Unit Exponent (12) 66 01 10 Unit (4097) 75 04 Report Size (4) 95 02 Report Count (2) B1 02 Feature (0x02) 85 06 Report ID (6) 06 00 FF Usage Page (65280) 09 C5 Usage (197) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 96 00 01 Report Count (256) B1 02 Feature (0x02) 75 07 Report Size (7) 95 01 Report Count (1) 81 03 Input (0x03) Padding 75 07 Report Size (7) 95 01 Report Count (1) B1 03 Feature (0x03) Padding C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev8.txt ### 05 0D Usage Page (13) 09 0E Usage (14) A1 01 Collection (Application) 09 22 Usage (34) A1 00 Collection (Physical) 85 03 Report ID (3) 09 52 Usage (82) 15 00 Logical Minimum (0) 25 0A Logical Maximum (10) 35 00 Physical Minimum (0) 47 FF FF 00 00 Physical Maximum (65535) 55 0C Unit Exponent (12) 66 01 10 Unit (4097) 75 10 Report Size (16) 95 01 Report Count (1) B1 02 Feature (0x02) C0 End Collection 09 22 Usage (34) A1 00 Collection (Physical) 85 05 Report ID (5) 09 57 Usage (87) 09 58 Usage (88) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 02 Report Count (2) 45 00 Physical Maximum (0) 55 00 Unit Exponent (0) 65 00 Unit (0) B1 02 Feature (0x02) 75 06 Report Size (6) 95 01 Report Count (1) B1 03 Feature (0x03) Padding C0 End Collection C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev9.txt ### 06 00 FF Usage Page (65280) 09 01 Usage (1) A1 01 Collection (Application) 85 40 Report ID (64) 09 02 Usage (2) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 95 10 Report Count (16) 81 02 Input (0x02) 09 02 Usage (2) 15 00 Logical Minimum (0) 26 FF 00 Logical Maximum (255) 75 08 Report Size (8) 95 10 Report Count (16) 91 02 Output (0x02) C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev10.txt ### 05 01 Usage Page (1) 09 0C Usage (12) A1 01 Collection (Application) 85 01 Report ID (1) 09 C6 Usage (198) 15 00 Logical Minimum (0) 25 01 Logical Maximum (1) 75 01 Report Size (1) 95 01 Report Count (1) 81 06 Input (0x06) 75 07 Report Size (7) 95 01 Report Count (1) 81 03 Input (0x03) Padding C0 End Collection ### Wrote report descriptor file: hid_report_descriptor_0_0_dev11.txt ### Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: (null) Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0x1) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: (null) Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xc) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd serial_number: (null) Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 0 Usage (page): 0x6 (0x1) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col03#7&2fa52f82&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: (null) Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x80 (0x1) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col04#7&2fa52f82&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: (null) Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x1 (0xff00) Device Found type: 04f3 3060 path: \\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 3 Interface: -1 Usage (page): 0x2 (0x1) Device Found type: 046d c534 path: \\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: (null) Manufacturer: Logitech Product: USB Receiver Release: 2901 Interface: 1 Usage (page): 0x2 (0xff00) Device Found type: 04f3 3060 path: \\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 3 Interface: -1 Usage (page): 0x1 (0xff00) Device Found type: 04f3 3060 path: \\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 3 Interface: -1 Usage (page): 0x5 (0xd) Device Found type: 04f3 3060 path: \\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 3 Interface: -1 Usage (page): 0xe (0xd) Device Found type: 2bf6 a096 path: \\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: (null) Manufacturer: Acer Inc. Product: Launch Manager Wireless Device Release: 1 Interface: -1 Usage (page): 0x1 (0xff00) Device Found type: 2bf6 a096 path: \\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: (null) Manufacturer: Acer Inc. Product: Launch Manager Wireless Device Release: 1 Interface: -1 Usage (page): 0xc (0x1) unable to open device ``` </details> You can compare with the macOS USB Prober output of the particular USB receiver (part of the Logitech M238 wireless USB mouse) USB Prober output from Mac Mini M1. <details> <summary> click to expand </summary> ``` Full Speed device @ 22 (0x02146000): ............................................. Composite device: "USB Receiver" Port Information: 0x0018 Not Captive External Device Connected Enabled Number Of Endpoints (includes EP0): Total Endpoints for Configuration 1 (current): 3 Device Descriptor Descriptor Version Number: 0x0200 Device Class: 0 (Composite) Device Subclass: 0 Device Protocol: 0 Device MaxPacketSize: 8 Device VendorID/ProductID: 0x046D/0xC534 (Logitech Inc.) Device Version Number: 0x2901 Number of Configurations: 1 Manufacturer String: 1 "Logitech" Product String: 2 "USB Receiver" Serial Number String: 0 (none) Configuration Descriptor (current config): ...................... "RQR29.01_B0016" Length (and contents): 59 Raw Descriptor (hex) 0000: 09 02 3B 00 02 01 04 A0 31 09 04 00 00 01 03 01 Raw Descriptor (hex) 0010: 01 00 09 21 11 01 00 01 22 3B 00 07 05 81 03 08 Raw Descriptor (hex) 0020: 00 08 09 04 01 00 01 03 01 02 00 09 21 11 01 00 Raw Descriptor (hex) 0030: 01 22 B1 00 07 05 82 03 14 00 02 Number of Interfaces: 2 Configuration Value: 1 Attributes: 0xA0 (bus-powered, remote wakeup) MaxPower: 98 mA Interface #0 - HID/Boot Interface Alternate Setting 0 Number of Endpoints 1 Interface Class: 3 (HID) Interface Subclass; 1 (Boot Interface) Interface Protocol: 1 HID Descriptor Descriptor Version Number: 0x0111 Country Code: 0 Descriptor Count: 1 Descriptor 1 Type: 0x22 (Report Descriptor) Length (and contents): 59 Raw Descriptor (hex) 0000: 05 01 09 06 A1 01 05 07 19 E0 29 E7 15 00 25 01 Raw Descriptor (hex) 0010: 75 01 95 08 81 02 81 03 95 05 05 08 19 01 29 05 Raw Descriptor (hex) 0020: 91 02 95 01 75 03 91 01 95 06 75 08 15 00 26 A4 Raw Descriptor (hex) 0030: 00 05 07 19 00 2A A4 00 81 00 C0 Parsed Report Descriptor: Usage Page (Generic Desktop) Usage (Keyboard) Collection (Application) Usage Page (Keyboard/Keypad) Usage Minimum........... (224) Usage Maximum........... (231) Logical Minimum......... (0) Logical Maximum......... (1) Report Size............. (1) Report Count............ (8) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Input................... (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Report Count............ (5) Usage Page (LED) Usage Minimum........... (1) Usage Maximum........... (5) Output.................. (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) Report Count............ (1) Report Size............. (3) Output.................. (Constant, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) Report Count............ (6) Report Size............. (8) Logical Minimum......... (0) Logical Maximum......... (164) Usage Page (Keyboard/Keypad) Usage Minimum........... (0) Usage Maximum........... (164) Input................... (Data, Array, Absolute) End Collection Endpoint 0x81 - Interrupt Input Address: 0x81 (IN) Attributes: 0x03 (Interrupt) Max Packet Size: 8 Polling Interval: 8 ms Interface #1 - HID/Boot Interface Alternate Setting 0 Number of Endpoints 1 Interface Class: 3 (HID) Interface Subclass; 1 (Boot Interface) Interface Protocol: 2 HID Descriptor Descriptor Version Number: 0x0111 Country Code: 0 Descriptor Count: 1 Descriptor 1 Type: 0x22 (Report Descriptor) Length (and contents): 177 Raw Descriptor (hex) 0000: 05 01 09 02 A1 01 85 02 09 01 A1 00 05 09 19 01 Raw Descriptor (hex) 0010: 29 10 15 00 25 01 95 10 75 01 81 02 05 01 16 01 Raw Descriptor (hex) 0020: F8 26 FF 07 75 0C 95 02 09 30 09 31 81 06 15 81 Raw Descriptor (hex) 0030: 25 7F 75 08 95 01 09 38 81 06 05 0C 0A 38 02 95 Raw Descriptor (hex) 0040: 01 81 06 C0 C0 05 0C 09 01 A1 01 85 03 75 10 95 Raw Descriptor (hex) 0050: 02 15 01 26 8C 02 19 01 2A 8C 02 81 00 C0 05 01 Raw Descriptor (hex) 0060: 09 80 A1 01 85 04 75 02 95 01 15 01 25 03 09 82 Raw Descriptor (hex) 0070: 09 81 09 83 81 60 75 06 81 03 C0 06 00 FF 09 01 Raw Descriptor (hex) 0080: A1 01 85 10 75 08 95 06 15 00 26 FF 00 09 01 81 Raw Descriptor (hex) 0090: 00 09 01 91 00 C0 06 00 FF 09 02 A1 01 85 11 75 Raw Descriptor (hex) 00a0: 08 95 13 15 00 26 FF 00 09 02 81 00 09 02 91 00 Raw Descriptor (hex) 00b0: C0 Parsed Report Descriptor: Usage Page (Generic Desktop) Usage (Mouse) Collection (Application) ReportID................ (2) Usage (Pointer) Collection (Physical) Usage Page (Button) Usage Minimum........... (1) Usage Maximum........... (16) Logical Minimum......... (0) Logical Maximum......... (1) Report Count............ (16) Report Size............. (1) Input................... (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Usage Page (Generic Desktop) Logical Minimum......... (-2047) Logical Maximum......... (2047) Report Size............. (12) Report Count............ (2) Usage (X) Usage (Y) Input................... (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Logical Minimum......... (-127) Logical Maximum......... (127) Report Size............. (8) Report Count............ (1) Usage (Wheel) Input................... (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) Usage Page (Consumer) Usage 568 (0x238) Report Count............ (1) Input................... (Data, Variable, Relative, No Wrap, Linear, Preferred State, No Null Position, Bitfield) End Collection End Collection Usage Page (Consumer) Usage 1 (0x1) Collection (Application) ReportID................ (3) Report Size............. (16) Report Count............ (2) Logical Minimum......... (1) Logical Maximum......... (652) Usage Minimum........... (1) Usage Maximum........... (652) Input................... (Data, Array, Absolute) End Collection Usage Page (Generic Desktop) Usage (System Control) Collection (Application) ReportID................ (4) Report Size............. (2) Report Count............ (1) Logical Minimum......... (1) Logical Maximum......... (3) Usage (System Sleep) Usage (System Power Down) Usage (System Wakeup) Input................... (Data, Array, Absolute) Report Size............. (6) Input................... (Constant, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) End Collection Usage Page (Vendor defined 0) Usage 1 (0x1) Collection (Application) ReportID................ (16) Report Size............. (8) Report Count............ (6) Logical Minimum......... (0) Logical Maximum......... (255) Usage 1 (0x1) Input................... (Data, Array, Absolute) Usage 1 (0x1) Output.................. (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) End Collection Usage Page (Vendor defined 0) Usage 2 (0x2) Collection (Application) ReportID................ (17) Report Size............. (8) Report Count............ (19) Logical Minimum......... (0) Logical Maximum......... (255) Usage 2 (0x2) Input................... (Data, Array, Absolute) Usage 2 (0x2) Output.................. (Data, Array, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) End Collection Endpoint 0x82 - Interrupt Input Address: 0x82 (IN) Attributes: 0x03 (Interrupt) Max Packet Size: 20 Polling Interval: 2 ms ``` </details>
mcuee commented 2021-06-20 05:01:47 -05:00 (Migrated from github.com)

BTW there are no answers here in OSR forum. I guess this is a real difficult question.
https://community.osr.com/discussion/292947/how-to-get-hid-report-descriptor-using-windows-api

BTW there are no answers here in OSR forum. I guess this is a real difficult question. https://community.osr.com/discussion/292947/how-to-get-hid-report-descriptor-using-windows-api
JoergAtGithub commented 2021-06-20 05:19:47 -05:00 (Migrated from github.com)

I guess I wasn't technically correct, as usage_page/usage combination isn't always a Top Level Collection (I was referencing to my knowledge/experience at the time, instead of check with the documentation), but that doesn't change the root of the problem.

This is a serious issue for cross platform software based on HIDAPI in general, because such an device behaves different on Linux/Mac vs. Windows. The report descriptor is only one aspect were this unsolved issue appears again.
A proper fix would require, to group these virtual devices during device enumeration and represent them to the API as the same single HID device as on other platforms.

> > > I guess I wasn't technically correct, as usage_page/usage combination isn't always a Top Level Collection (I was referencing to my knowledge/experience at the time, instead of check with the documentation), but that doesn't change the root of the problem. This is a serious issue for cross platform software based on HIDAPI in general, because such an device behaves different on Linux/Mac vs. Windows. The report descriptor is only one aspect were this unsolved issue appears again. A proper fix would require, to group these virtual devices during device enumeration and represent them to the API as the same single HID device as on other platforms.
mcuee commented 2021-06-20 05:42:55 -05:00 (Migrated from github.com)

One potential way to sort out the issue is to create a libusb backend for Windows. It will have limited usage for people who are willing to use WinUSB driver to replace the Windows HID driver (and even the USB Composite Device Parent driver if that is the case)..

One potential way to sort out the issue is to create a libusb backend for Windows. It will have limited usage for people who are willing to use WinUSB driver to replace the Windows HID driver (and even the USB Composite Device Parent driver if that is the case)..
Youw commented 2021-06-20 07:05:43 -05:00 (Migrated from github.com)

A proper fix would require, to group these virtual devices during device enumeration

We're doing qite the opposite for other platforms: we report same device multiple times, so each such unique device has its own usage_page/usage filled up.

And it kind of bits off a general desing of HIDAPI - to be as simple as possible and just be a thin proxy over an OS-specific API/implementation, just enough to keep the uniform API across different platforms. (libusb backend is kind-of the most complicated in this matter, as it practically implements its own USB HID driver, but let it be the only exception.)


What I want to suggest instead is to start with a question:

  • Why would we need to report a device descriptor at all?

If I understand the initial problem correctly, a user application just wants to know the information about the reports, e.g.:

  • number of reports;
  • reports IDs;
  • report details (size, min/max values, etc.);

This is a bit out of scope of the initial HIDAPI design as well. As Alan always mentioned, that if you want to use HIDAPI, you probably already know the device you want to work with, and its API/reports etc. Clearly there are cases when a user still needs more than that (I guess Mixxx DJ SW is an example of such), and maybe we think about this problem from a different angle:

  • Why don't we just have an API to provide reports information?

E.g. as "HIDAPI specific data structure", with a number of input/output reports and its characteristics.

That would require parsing a HID descriptor on all platforms except Windows (parsing is already partially implemented, maybe not for everything, but still), and on Windows we would fill such a structure directly from WinAPI. I haven't looked at the details, but unless there is something Windows doesn't provide, that a user application might need (the "HIDAPI specific data structure" would need to contain), that should do it in a much simpler manner.

It would also make things simpler for all user applications, as there is no need to perform HID descriptor parsing.

And yes, this kind of sound like a big feature to me, but it should be quite usefull.

> A proper fix would require, to group these virtual devices during device enumeration We're doing qite the opposite for other platforms: we report same device multiple times, so each such unique device has its own usage_page/usage filled up. And it kind of bits off a general desing of HIDAPI - to be as simple as possible and just be a thin proxy over an OS-specific API/implementation, just enough to keep the uniform API across different platforms. (libusb backend is kind-of the most complicated in this matter, as it practically implements its own USB HID driver, but let it be the only exception.) --- What I want to suggest instead is to start with a question: - _Why would we need to report a device descriptor at all?_ If I understand the initial problem correctly, a user application just wants to know the information about the reports, e.g.: - number of reports; - reports IDs; - report details (size, min/max values, etc.); This is a bit out of scope of the initial HIDAPI design as well. As Alan always mentioned, that if you want to use HIDAPI, you probably already know the device you want to work with, and its API/reports etc. Clearly there are cases when a user still needs more than that (I guess `Mixxx DJ SW` is an example of such), and maybe we think about this problem from a different angle: - _Why don't we just have an API to provide reports information?_ E.g. as "_HIDAPI specific data structure_", with a number of input/output reports and its characteristics. That would require parsing a HID descriptor on all platforms except Windows (parsing is already partially implemented, maybe not for everything, but still), and on Windows we would fill such a structure directly from WinAPI. I haven't looked at the details, but unless there is something Windows doesn't provide, that a user application might need (the "_HIDAPI specific data structure_" would need to contain), that should do it in a much simpler manner. It would also make things simpler for all user applications, as there is no need to perform HID descriptor parsing. And yes, this kind of sound like a big feature to me, but it should be quite usefull.
mcuee commented 2021-06-20 07:12:43 -05:00 (Migrated from github.com)

To me the goal may need to be a bit modest: to get REPORT_ID, REPORT_COUNT, and REPORT_SIZE correct.

To me the goal may need to be a bit modest: to get REPORT_ID, REPORT_COUNT, and REPORT_SIZE correct.
mcuee commented 2021-06-20 07:15:42 -05:00 (Migrated from github.com)
As for hid report parser, there are a few past efforts. https://github.com/mcuee/libhid-win/tree/master/hidparser https://github.com/supercollider/hidapi/tree/main/hidapi_parser
JoergAtGithub commented 2021-06-20 07:35:54 -05:00 (Migrated from github.com)

My motivation is to gather the report internal structure for the represenation in Mixxx. To offer our users the correct bit range for each control (Rotary knobs, Faders, Buttons, LEDs) to map it without programming skills. Therefore it's primary LogicalMinimum/Maximum, Report ID and of cause the position of the bits in a report.

I don't see a need for an report descriptor parser inside HIDAPI. (The debug output in #262 is not intended to be released). I think many applications on top of HIDAPI are often written in higher level languages, and the developers of it want these data in the object oriented data structures of these languages anyway. Furthermore, parsing the report descriptor is not a difficult task. And it can be encapsulated in an own library.

The difficulty with the WIN32 API is not to create the report descriptor structure, it's to gather the bit positions of a capability from WIN32 API. After digging deep into this topic, I think the bytewise report descriptor is the best achievable interface between HIDAPI and high-level applications. It's a simple data structure (just an array of bytes) and it's well defined in the HID spec.

My motivation is to gather the report internal structure for the represenation in Mixxx. To offer our users the correct bit range for each control (Rotary knobs, Faders, Buttons, LEDs) to map it without programming skills. Therefore it's primary LogicalMinimum/Maximum, Report ID and of cause the position of the bits in a report. I don't see a need for an report descriptor parser inside HIDAPI. (The debug output in #262 is not intended to be released). I think many applications on top of HIDAPI are often written in higher level languages, and the developers of it want these data in the object oriented data structures of these languages anyway. Furthermore, parsing the report descriptor is not a difficult task. And it can be encapsulated in an own library. The difficulty with the WIN32 API is not to create the report descriptor structure, it's to gather the bit positions of a capability from WIN32 API. After digging deep into this topic, I think the bytewise report descriptor is the best achievable interface between HIDAPI and high-level applications. It's a simple data structure (just an array of bytes) and it's well defined in the HID spec.
Youw commented 2021-06-20 07:45:55 -05:00 (Migrated from github.com)

Furthermore, parsing the report descriptor is not a difficult task.

You said it yourself.

It is not easy-enough to ask each user to have it on its own, but it is definitely easier than reconstructing the descriptor back using WinAPI, or trying to merge multiple Windows devices into a one HIDAPI device, or trying to get a descriptor from Bluetooth HID device on Windows.

Making HIDAPI uniform across all platforms doesn't mean making it "as on Linux".

> Furthermore, parsing the report descriptor is not a difficult task. You said it yourself. It is not easy-enough to ask _each user_ to have it on its own, but it is definitely easier than reconstructing the descriptor back using WinAPI, or trying to merge multiple Windows devices into a one HIDAPI device, or trying to get a descriptor from Bluetooth HID device on Windows. Making HIDAPI uniform across all platforms doesn't mean making it "as on Linux".
JoergAtGithub commented 2021-06-20 07:59:49 -05:00 (Migrated from github.com)

I started the work on #262 after @Youw stated:

I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all platforms/backends.

It took me 3 weeks of intensive work to achieve this. If there's no quality issue with my implementation, I expect that my contribution is accepted.

I started the work on #262 after @Youw stated: > I know one successfull attempt to reconstruct a HID descriptor using WinAPI calls, but that one is written on C# (https://github.com/todbot/win-hid-dump is using it). If someone could port it to C - I'd gladly introduce a new API (to get HID descriptor) for all platforms/backends. It took me 3 weeks of intensive work to achieve this. If there's no quality issue with my implementation, I expect that my contribution is accepted.
mcuee commented 2021-06-20 09:00:26 -05:00 (Migrated from github.com)

So the idea is to have a new API like the following and not to include HID reports parser.

Take note I am just using #263 as an example but I have not tested #263.

https://github.com/libusb/hidapi/pull/263/files

static int get_hid_report_descriptor(IOHIDDeviceRef device, wchar_t* buf, size_t len)

It seems that there are no issues with macOS (eg:https://github.com/todbot/mac-hid-dump/blob/main/mac-hid-dump.c), Linux hidraw, and libusb backend. But someone needs to do it.

As for Windows, #262 seems to be reasonably well and I will carry out more tests. We can always label this Windows implementation as EXPERIMENTAL.

I am for this idea to include this new API.

So the idea is to have a new API like the following and not to include HID reports parser. Take note I am just using #263 as an example but I have not tested #263. https://github.com/libusb/hidapi/pull/263/files ``` static int get_hid_report_descriptor(IOHIDDeviceRef device, wchar_t* buf, size_t len) ``` It seems that there are no issues with macOS (eg:https://github.com/todbot/mac-hid-dump/blob/main/mac-hid-dump.c), Linux hidraw, and libusb backend. But someone needs to do it. As for Windows, #262 seems to be reasonably well and I will carry out more tests. We can always label this Windows implementation as EXPERIMENTAL. I am for this idea to include this new API.
Be-ing commented 2021-06-20 12:33:43 -05:00 (Migrated from github.com)

For further context, the end goal for Mixxx is to create a declarative system for mapping HID report fields to callbacks which manipulate application state when the state of the field changes between received reports. This would help unify the APIs for mapping MIDI and HID devices.

For further context, the end goal for Mixxx is to create a declarative system for mapping HID report fields to callbacks which manipulate application state when the state of the field changes between received reports. This would help unify the APIs for mapping MIDI and HID devices.
mcuee commented 2021-06-20 20:51:46 -05:00 (Migrated from github.com)

@Be-ing
Is an API like "static int get_hid_report_descriptor(IOHIDDeviceRef device, wchar_t* buf, size_t len)" good enough for you? You have to carry out the HID report parsing in the Mixxx application.

BTW, have you guys give #262 a test for Mixxx (USB and Bluetooth)? Most of my devices are USB HID device with the exception of Xbox One S controller (USB/Bluetooth).

@Be-ing Is an API like "static int get_hid_report_descriptor(IOHIDDeviceRef device, wchar_t* buf, size_t len)" good enough for you? You have to carry out the HID report parsing in the Mixxx application. BTW, have you guys give #262 a test for Mixxx (USB and Bluetooth)? Most of my devices are USB HID device with the exception of Xbox One S controller (USB/Bluetooth).
mcuee commented 2021-06-20 22:57:23 -05:00 (Migrated from github.com)

Based on my testing of #262 and HIDSharp, it seems to me that HID report can be written in many different variations and it is not easy to get right (maybe impossible) if you do not know the HID report format of a particular device.

But if you know the device, then you do not need to guess and you can send the right request. That is probably the initial thought of Alan Ott -- you need to know the device in order to use HIDAPI (and libusb for that matter).

Based on my testing of #262 and HIDSharp, it seems to me that HID report can be written in many different variations and it is not easy to get right (maybe impossible) if you do not know the HID report format of a particular device. But if you know the device, then you do not need to guess and you can send the right request. That is probably the initial thought of Alan Ott -- you need to know the device in order to use HIDAPI (and libusb for that matter).
mcuee commented 2021-06-20 22:59:30 -05:00 (Migrated from github.com)

A wild idea: we provide the API for macOS and Linux hidraw and libusb backend, and also Windows. But for Windows, user may need to provide a template HID report descriptor (based on the dumping from Linux and macOS) for the API to get right. If not, then it is based on the #262 or similar best efforts (not guaranteed to work).

A wild idea: we provide the API for macOS and Linux hidraw and libusb backend, and also Windows. But for Windows, user may need to provide a template HID report descriptor (based on the dumping from Linux and macOS) for the API to get right. If not, then it is based on the #262 or similar best efforts (not guaranteed to work).
mcuee commented 2021-06-21 00:10:21 -05:00 (Migrated from github.com)

A wild idea: we provide the API for macOS and Linux hidraw and libusb backend, and also Windows. But for Windows, user may need to provide a template HID report descriptor (based on the dumping from Linux and macOS if necessary) for the API to get right. If not, then it is based on the #262 or similar best efforts (not guaranteed to work).

Example: compare the hidpp Linux and Windows code, Windows code has to provide the hard coded HID Report Descriptors.
https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_windows.cpp (native Windows HID API).
https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_linux.cpp (hidraw)

> A wild idea: we provide the API for macOS and Linux hidraw and libusb backend, and also Windows. But for Windows, user may need to provide a template HID report descriptor (based on the dumping from Linux and macOS if necessary) for the API to get right. If not, then it is based on the #262 or similar best efforts (not guaranteed to work). Example: compare the hidpp Linux and Windows code, Windows code has to provide the hard coded HID Report Descriptors. https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_windows.cpp (native Windows HID API). https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_linux.cpp (hidraw)
mcuee commented 2021-06-21 00:14:56 -05:00 (Migrated from github.com)

Issues mentioned in hidpp
https://github.com/cvuchener/hidpp/issues/12
https://github.com/cvuchener/hidpp/pull/14

From hidpp author cvuchener

I've been looking more closely at Windows API, and there is an issue for checking the sizes. "Buttons" (array or 1-bit variable fields, I guess) don't have the report size or count information. HID++ fields are "buttons" (because they are arrays) and so it is not possible to know their length on Windows. There are report lengths stored in HIDP_CAPS but it is for the top-level collection, not the report. If there are multiple report in a top-level collection, the length is the maximum, I think. What would be the best solution? Ignoring the report/field length and only check the usages? Or checking the report length but on Windows it may be bigger than the actual size, if there are several reports in the collection?

Issues mentioned in hidpp https://github.com/cvuchener/hidpp/issues/12 https://github.com/cvuchener/hidpp/pull/14 From hidpp author cvuchener >I've been looking more closely at Windows API, and there is an issue for checking the sizes. "Buttons" (array or 1-bit variable fields, I guess) don't have the report size or count information. HID++ fields are "buttons" (because they are arrays) and so it is not possible to know their length on Windows. There are report lengths stored in HIDP_CAPS but it is for the top-level collection, not the report. If there are multiple report in a top-level collection, the length is the maximum, I think. What would be the best solution? Ignoring the report/field length and only check the usages? Or checking the report length but on Windows it may be bigger than the actual size, if there are several reports in the collection?
JoergAtGithub commented 2021-06-21 01:51:57 -05:00 (Migrated from github.com)

I would like to add a function
int HID_API_EXPORT HID_API_CALL hid_get_report_descriptor(hid_device *dev, unsigned char *data, size_t length);
which returns the real report descriptor for libusb/hidraw/MacOS and the reconstructed Report Descriptor on Windows.

For the Mixxx case only the machine readable Report Descriptor is needed, no text representation. But if somebody else needs such a text representation, he could implement it on top of this new API.

I would like to add a function `int HID_API_EXPORT HID_API_CALL hid_get_report_descriptor(hid_device *dev, unsigned char *data, size_t length);` which returns the real report descriptor for libusb/hidraw/MacOS and the reconstructed Report Descriptor on Windows. For the Mixxx case only the machine readable Report Descriptor is needed, no text representation. But if somebody else needs such a text representation, he could implement it on top of this new API.
mcuee commented 2021-06-21 02:17:44 -05:00 (Migrated from github.com)

The function name sounds good to me.

int HID_API_EXPORT HID_API_CALL hid_get_report_descriptor(hid_device *dev, unsigned char *data, size_t length);
The function name sounds good to me. ``` int HID_API_EXPORT HID_API_CALL hid_get_report_descriptor(hid_device *dev, unsigned char *data, size_t length); ```
DJm00n commented 2021-06-22 03:40:23 -05:00 (Migrated from github.com)

@mcuee regarding Chromium HID descriptor reconstruction code. You can look at real HIDP_PREPARSED_DATA in leaked Windows XP source code. See hidparse.h.

But keep in mind that exact struct could be changed since WinXp and that struct was hidden for a reason:

The internal structure of a _HIDP_PREPARSED_DATA structure is reserved for internal system use.

PS: Also there is code for kernel debugger command !hidkd.hidppd.

@mcuee regarding Chromium HID descriptor reconstruction code. You can look at real `HIDP_PREPARSED_DATA` in [leaked Windows XP source code](https://github.com/cryptoAlgorithm/nt5src/tree/master/Source/XPSP1/NT/drivers/wdm/input/hidparse). See `hidparse.h`. But keep in mind that exact struct could be changed since WinXp and that struct [was hidden for a reason](https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/hidclass/ni-hidclass-ioctl_hid_get_collection_descriptor): >The internal structure of a _HIDP_PREPARSED_DATA structure is reserved for internal system use. PS: Also [there is code](https://github.com/cryptoAlgorithm/nt5src/blob/daad8a087a4e75422ec96b7911f1df4669989611/Source/XPSP1/NT/base/tools/kdexts2/hid.c#L223-L309) for kernel debugger command [!hidkd.hidppd](https://docs.microsoft.com/windows-hardware/drivers/debugger/-hidkd-hidppd).
mcuee commented 2021-06-22 04:53:07 -05:00 (Migrated from github.com)

@DJm00n Thanks for the info.

@DJm00n Thanks for the info.
mcuee commented 2021-06-22 04:59:05 -05:00 (Migrated from github.com)

@DJm00n I looked at the code from https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump and I kind of know why it does not work for my device.

Ref: https://community.osr.com/discussion/287808/ioctl-usb-get-descriptor-from-node-connection
For a HID report descriptor, the Recipient bits of bmRequestType must be set to Interface (1).
IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION sets bmRequestType to 0x80.

https://github.com/DJm00n/RawInputDemo/blob/hid_report_descriptor_dump/RawInputLib/RawInputDevice.cpp#L308

            // According to HID spec we need to do Report Descriptor request with
            // bmRequest set to 0x81 (Interface_In) but seems its also working with 0x80 for some reason

Apparently 0x80 does not work for my device. The FW checks the request is sent to the HID interface number.

/********************************************************************
  File Information:
    FileName:       usb_function_hid.c
    Dependencies:   See INCLUDES section
    Processor:      PIC18 or PIC24 USB Microcontrollers
    Hardware:       The code is natively intended to be used on the following
                    hardware platforms: PICDEM™ FS USB Demo Board, 
                    PIC18F87J50 FS USB Plug-In Module, or
                    Explorer 16 + PIC24 USB PIM.  The firmware may be
                    modified for use on other USB platforms by editing the
                    HardwareProfile.h file.
    Complier:  	    Microchip C18 (for PIC18) or C30 (for PIC24)
    Company:        Microchip Technology, Inc.
    
    Software License Agreement:
    
    The software supplied herewith by Microchip Technology Incorporated
    (the “Company”) for its PIC® Microcontroller is intended and
    supplied to you, the Company’s customer, for use solely and
    exclusively on Microchip PIC Microcontroller products. The
    software is owned by the Company and/or its supplier, and is
    protected under applicable copyright laws. All rights are reserved.
    Any use in violation of the foregoing restrictions may subject the
    user to criminal sanctions under applicable laws, as well as to
    civil liability for the breach of the terms and conditions of this
    license.
    
    THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
    WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
    TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
    PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
    IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
    CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
    ...

void USBCheckHIDRequest(void)
{
    if(SetupPkt.Recipient != USB_SETUP_RECIPIENT_INTERFACE_BITFIELD) return;
    if(SetupPkt.bIntfID != HID_INTF_ID) return;
    
    /*
     * There are two standard requests that hid.c may support.
     * 1. GET_DSC(DSC_HID,DSC_RPT,DSC_PHY);
     * 2. SET_DSC(DSC_HID,DSC_RPT,DSC_PHY);
     */
    if(SetupPkt.bRequest == USB_REQUEST_GET_DESCRIPTOR)
    {
        switch(SetupPkt.bDescriptorType)
        {
            case DSC_HID: //HID Descriptor          
                if(USBActiveConfiguration == 1)
                {
                    USBEP0SendROMPtr(
                        (ROM BYTE*)&configDescriptor1 + 18,		//18 is a magic number.  It is the offset from start of the configuration descriptor to the start of the HID descriptor.
                        sizeof(USB_HID_DSC)+3,
                        USB_EP0_INCLUDE_ZERO);
                }
                break;
            case DSC_RPT:  //Report Descriptor           
                if(USBActiveConfiguration == 1)
                {
                    USBEP0SendROMPtr(
                        (ROM BYTE*)&hid_rpt01,
                        sizeof(hid_rpt01),     //See usbcfg.h
                        USB_EP0_INCLUDE_ZERO);
                }
                break;
            case DSC_PHY:  //Physical Descriptor
                //Note: The below placeholder code is commented out.  HID Physical Descriptors are optional and are not used
                //in many types of HID applications.  If an application does not have a physical descriptor,
                //then the device should return STALL in response to this request (stack will do this automatically
                //if no-one claims ownership of the control transfer).
                //If an application does implement a physical descriptor, then make sure to declare
                //hid_phy01 (rom structure containing the descriptor data), and hid_phy01 (the size of the descriptors in bytes),
                //and then uncomment the below code.
                //if(USBActiveConfiguration == 1)
                //{
                //    USBEP0SendROMPtr((ROM BYTE*)&hid_phy01, sizeof(hid_phy01), USB_EP0_INCLUDE_ZERO);
                //}
                break;
        }//end switch(SetupPkt.bDescriptorType)
    }//end if(SetupPkt.bRequest == GET_DSC)
@DJm00n I looked at the code from https://github.com/DJm00n/RawInputDemo/tree/hid_report_descriptor_dump and I kind of know why it does not work for my device. Ref: https://community.osr.com/discussion/287808/ioctl-usb-get-descriptor-from-node-connection For a HID report descriptor, the Recipient bits of bmRequestType must be set to Interface (1). IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION sets bmRequestType to 0x80. https://github.com/DJm00n/RawInputDemo/blob/hid_report_descriptor_dump/RawInputLib/RawInputDevice.cpp#L308 ``` // According to HID spec we need to do Report Descriptor request with // bmRequest set to 0x81 (Interface_In) but seems its also working with 0x80 for some reason ``` Apparently 0x80 does not work for my device. The FW checks the request is sent to the HID interface number. ``` /******************************************************************** File Information: FileName: usb_function_hid.c Dependencies: See INCLUDES section Processor: PIC18 or PIC24 USB Microcontrollers Hardware: The code is natively intended to be used on the following hardware platforms: PICDEM™ FS USB Demo Board, PIC18F87J50 FS USB Plug-In Module, or Explorer 16 + PIC24 USB PIM. The firmware may be modified for use on other USB platforms by editing the HardwareProfile.h file. Complier: Microchip C18 (for PIC18) or C30 (for PIC24) Company: Microchip Technology, Inc. Software License Agreement: The software supplied herewith by Microchip Technology Incorporated (the “Company”) for its PIC® Microcontroller is intended and supplied to you, the Company’s customer, for use solely and exclusively on Microchip PIC Microcontroller products. The software is owned by the Company and/or its supplier, and is protected under applicable copyright laws. All rights are reserved. Any use in violation of the foregoing restrictions may subject the user to criminal sanctions under applicable laws, as well as to civil liability for the breach of the terms and conditions of this license. THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. ... void USBCheckHIDRequest(void) { if(SetupPkt.Recipient != USB_SETUP_RECIPIENT_INTERFACE_BITFIELD) return; if(SetupPkt.bIntfID != HID_INTF_ID) return; /* * There are two standard requests that hid.c may support. * 1. GET_DSC(DSC_HID,DSC_RPT,DSC_PHY); * 2. SET_DSC(DSC_HID,DSC_RPT,DSC_PHY); */ if(SetupPkt.bRequest == USB_REQUEST_GET_DESCRIPTOR) { switch(SetupPkt.bDescriptorType) { case DSC_HID: //HID Descriptor if(USBActiveConfiguration == 1) { USBEP0SendROMPtr( (ROM BYTE*)&configDescriptor1 + 18, //18 is a magic number. It is the offset from start of the configuration descriptor to the start of the HID descriptor. sizeof(USB_HID_DSC)+3, USB_EP0_INCLUDE_ZERO); } break; case DSC_RPT: //Report Descriptor if(USBActiveConfiguration == 1) { USBEP0SendROMPtr( (ROM BYTE*)&hid_rpt01, sizeof(hid_rpt01), //See usbcfg.h USB_EP0_INCLUDE_ZERO); } break; case DSC_PHY: //Physical Descriptor //Note: The below placeholder code is commented out. HID Physical Descriptors are optional and are not used //in many types of HID applications. If an application does not have a physical descriptor, //then the device should return STALL in response to this request (stack will do this automatically //if no-one claims ownership of the control transfer). //If an application does implement a physical descriptor, then make sure to declare //hid_phy01 (rom structure containing the descriptor data), and hid_phy01 (the size of the descriptors in bytes), //and then uncomment the below code. //if(USBActiveConfiguration == 1) //{ // USBEP0SendROMPtr((ROM BYTE*)&hid_phy01, sizeof(hid_phy01), USB_EP0_INCLUDE_ZERO); //} break; }//end switch(SetupPkt.bDescriptorType) }//end if(SetupPkt.bRequest == GET_DSC) ```
mcuee commented 2021-06-22 07:01:25 -05:00 (Migrated from github.com)

BTW, I was puzzled why hidapi was not able to find my Microchip PICkit 2 programmer. Then I remember that many years ago (in May 2008) I submitted a trivial kernel patch (released in 2.6.26) to blacklist the device from kernel HID driver.

usbhid-dump does not care as it is based on libusb.
mcuee@rpi400Ubuntu:~/build/libusb/hidapi$ usbhid-dump -d 04d8:0033
001:017:000:DESCRIPTOR 1624363237.908977
06 00 FF 09 01 A1 01 19 01 29 40 15 00 26 FF 00
75 08 95 40 81 02 19 01 29 40 91 02 C0

BTW, I was puzzled why hidapi was not able to find my Microchip PICkit 2 programmer. Then I remember that many years ago (in May 2008) I submitted a trivial kernel patch (released in 2.6.26) to blacklist the device from kernel HID driver. usbhid-dump does not care as it is based on libusb. mcuee@rpi400Ubuntu:~/build/libusb/hidapi$ usbhid-dump -d 04d8:0033 001:017:000:DESCRIPTOR 1624363237.908977 06 00 FF 09 01 A1 01 19 01 29 40 15 00 26 FF 00 75 08 95 40 81 02 19 01 29 40 91 02 C0
DJm00n commented 2021-06-22 09:13:03 -05:00 (Migrated from github.com)

@mcuee

I kind of know why it does not work for my device

I added that comment because I aware of that peculiarity of IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION.
It is documented here: https://docs.microsoft.com/windows-hardware/drivers/ddi/usbioctl/ns-usbioctl-_usb_descriptor_request
But on my Windows 10 1909 PC it really works and I can dump HID Report Descriptors.

It may be that this Windows version just caching that descriptors (they are get requested by HIDClass driver after device connection). Because didn't saw these request via Wireshark (I captured USB traffic with USBPcap) while running my program. Just a speculation.

@mcuee >I kind of know why it does not work for my device I added that comment because I aware of that peculiarity of IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION. It is documented here: https://docs.microsoft.com/windows-hardware/drivers/ddi/usbioctl/ns-usbioctl-_usb_descriptor_request But on my Windows 10 1909 PC it really works and I can dump HID Report Descriptors. It may be that this Windows version just caching that descriptors (they are get requested by HIDClass driver after device connection). Because didn't saw these request via Wireshark (I captured USB traffic with USBPcap) while running my program. Just a speculation.
mcuee commented 2021-06-23 01:29:43 -05:00 (Migrated from github.com)

Not so sure if we can get some ideas from here too. But it is using Windows API so probably it has the same limitation.
https://github.com/rene-aguirre/pywinusb/tree/master/pywinusb/hid

Not so sure if we can get some ideas from here too. But it is using Windows API so probably it has the same limitation. https://github.com/rene-aguirre/pywinusb/tree/master/pywinusb/hid
Youw commented 2021-06-23 05:26:58 -05:00 (Migrated from github.com)

pywinusb uses HidD_GetPhysicalDescriptor (the only routine I've found inside, that is closely related to HID descriptor)
I believe someone tried to use this function with no luck so far

pywinusb uses [`HidD_GetPhysicalDescriptor`](https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/hidsdi/nf-hidsdi-hidd_getphysicaldescriptor) (the only routine I've found inside, that is closely related to HID descriptor) I believe someone tried to use this function with no luck so far
JoergAtGithub commented 2021-06-23 13:39:04 -05:00 (Migrated from github.com)

The HID Physical Descriptor is something different. It's a seldom used optional data structure of the HID protocol, which provides information about the specific part or parts of the human body that are activating a control. In case of a race car control, this would be "Both hands" for the steering wheel, and "Right hand" for the gear shift stick.

The HID Physical Descriptor is something different. It's a seldom used optional data structure of the HID protocol, which provides information about the specific part or parts of the human body that are activating a control. In case of a race car control, this would be "Both hands" for the steering wheel, and "Right hand" for the gear shift stick.
mcuee commented 2021-06-23 22:23:58 -05:00 (Migrated from github.com)

pyusb uses standard Win32 API like HidD_GetPreparsedData(), HidP_GetCaps(), HidP_GetButtonCaps(), HidP_GetValueCaps(). So I guess it has the same limitation as the others.
https://github.com/rene-aguirre/pywinusb/blob/master/pywinusb/hid/core.py
https://github.com/rene-aguirre/pywinusb/blob/master/pywinusb/hid/usage_pages.py

The only thing I am not so sure is that if it can use the self.__input_report_templates to have the user give the known HID Report Descriptors if the user knows (for example from macOS or Linux).

pyusb uses standard Win32 API like HidD_GetPreparsedData(), HidP_GetCaps(), HidP_GetButtonCaps(), HidP_GetValueCaps(). So I guess it has the same limitation as the others. https://github.com/rene-aguirre/pywinusb/blob/master/pywinusb/hid/core.py https://github.com/rene-aguirre/pywinusb/blob/master/pywinusb/hid/usage_pages.py The only thing I am not so sure is that if it can use the self.__input_report_templates to have the user give the known HID Report Descriptors if the user knows (for example from macOS or Linux).
mcuee commented 2021-06-23 23:29:55 -05:00 (Migrated from github.com)

Basically my idea is that a new API can do this.

  1. under macOS and Linux, use native API
  2. with libusb backend, use libusb API to dump the HID report descriptors
  3. with Windows, the user needs to provide the raw data (if #262 proves to be not working for many devices).

The hidapi can use the API to decide the report ID, report size and report count, and the data can be used to sort out issues like #210.

Basically my idea is that a new API can do this. 1) under macOS and Linux, use native API 2) with libusb backend, use libusb API to dump the HID report descriptors 3) with Windows, the user needs to provide the raw data (if #262 proves to be not working for many devices). The hidapi can use the API to decide the report ID, report size and report count, and the data can be used to sort out issues like #210.
mcuee commented 2021-06-24 08:22:00 -05:00 (Migrated from github.com)

Interestingly, just notice that libusb xusb example has the following codes. I do not have the HID test device in xusb.c so I had never tested this. I doubt it would work for Windows HID driver.

https://github.com/libusb/libusb/blob/master/examples/xusb.c#L616

	printf("\nReading HID Report Descriptors:\n");
	descriptor_size = libusb_control_transfer(handle, LIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_STANDARD|LIBUSB_RECIPIENT_INTERFACE,
		LIBUSB_REQUEST_GET_DESCRIPTOR, LIBUSB_DT_REPORT<<8, 0, hid_report_descriptor, sizeof(hid_report_descriptor), 1000);
	if (descriptor_size < 0) {
		printf("   Failed\n");
		return -1;
	}

Control transfer codes for the libusb Windows HID backend.
https://github.com/libusb/libusb/blob/master/libusb/os/windows_winusb.c#L3957

Interestingly, just notice that libusb xusb example has the following codes. I do not have the HID test device in xusb.c so I had never tested this. I doubt it would work for Windows HID driver. https://github.com/libusb/libusb/blob/master/examples/xusb.c#L616 ``` printf("\nReading HID Report Descriptors:\n"); descriptor_size = libusb_control_transfer(handle, LIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_STANDARD|LIBUSB_RECIPIENT_INTERFACE, LIBUSB_REQUEST_GET_DESCRIPTOR, LIBUSB_DT_REPORT<<8, 0, hid_report_descriptor, sizeof(hid_report_descriptor), 1000); if (descriptor_size < 0) { printf(" Failed\n"); return -1; } ``` Control transfer codes for the libusb Windows HID backend. https://github.com/libusb/libusb/blob/master/libusb/os/windows_winusb.c#L3957
mcuee commented 2021-06-24 08:47:31 -05:00 (Migrated from github.com)

Okay here is the history of libusb HID Windows backend and xusb example.
https://github.com/libusb/libusb/blob/master/libusb/os/windows_winusb.c#L3452
https://github.com/libusb/libusb/blob/master/examples/xusb.c

The xusb example hid report reconstruction code was actually based on the libusb-win32 1.0 branch.
https://github.com/mcuee/libusb-win32/blob/master/libusb1/src/dll/usbi_backend_hid.c#L287

From Pete Batard's email dated 6-April-2010.
https://marc.info/?l=libusb-devel&m=127050528618692&w=2

Yes, that is expected, as the HID API of Windows does not provide the ability to actually read the report descriptor from the device, but will only provide the input/output/feature report sizes (in bytes) through the HIDP_CAPS struct
(http://msdn.microsoft.com/en-us/library/ms899397.aspx). AFAIK, this is about as far as we can get with regards to getting HID descriptor report data on Windows.

Thus, the report descriptor provided by libusb on Windows is a "fake" report, reconstructed from the sizes, and will pretty much always be much shorted than the Linux version. At the end of this e-mail, I'm providing the code that builds this fake report for reference (which I actually picked from libusb-win32).

Diving into the xusb source, it seems that the problem arises in get_hid_input_record_size(), since the "found_direction" flag stays false and therefore record_size[j] stays zero.

Yes, I'm afraid that get_hid_input_record_size() was something I crafted very quickly so that it worked against the devices I had at my disposal, and which I had quite some trouble getting right actually. There doesn't seem to be any easy reference on how to deduce the report sizes from full fledged report descriptor (having to digest the whole report
descriptor section from the HID specs to recreate a parser is more time than I was willing to allocate on this) and I didn't find any HID report descriptor parser code that I could simply copy/paste. Especially as this was only needed for non Windows environments, since we know exactly where exactly to lift our data in the fake Windows report, as little time as possible was spent on this section of code.

Okay here is the history of libusb HID Windows backend and xusb example. https://github.com/libusb/libusb/blob/master/libusb/os/windows_winusb.c#L3452 https://github.com/libusb/libusb/blob/master/examples/xusb.c The xusb example hid report reconstruction code was actually based on the libusb-win32 1.0 branch. https://github.com/mcuee/libusb-win32/blob/master/libusb1/src/dll/usbi_backend_hid.c#L287 From Pete Batard's email dated 6-April-2010. https://marc.info/?l=libusb-devel&m=127050528618692&w=2 >Yes, that is expected, as the HID API of Windows does not provide the ability to actually read the report descriptor from the device, but will only provide the input/output/feature report sizes (in bytes) through the HIDP_CAPS struct (http://msdn.microsoft.com/en-us/library/ms899397.aspx). AFAIK, this is about as far as we can get with regards to getting HID descriptor report data on Windows. > > Thus, the report descriptor provided by libusb on Windows is a "fake" report, reconstructed from the sizes, and will pretty much always be much shorted than the Linux version. At the end of this e-mail, I'm providing the code that builds this fake report for reference (which I actually picked from libusb-win32). > >> Diving into the xusb source, it seems that the problem arises in get_hid_input_record_size(), since the "found_direction" flag stays false and therefore record_size[j] stays zero. > > Yes, I'm afraid that get_hid_input_record_size() was something I crafted very quickly so that it worked against the devices I had at my disposal, and which I had quite some trouble getting right actually. There doesn't seem to be any easy reference on how to deduce the report sizes from full fledged report descriptor (having to digest the whole report descriptor section from the HID specs to recreate a parser is more time than I was willing to allocate on this) and I didn't find any HID report descriptor parser code that I could simply copy/paste. Especially as this was only needed for non Windows environments, since we know exactly where exactly to lift our data in the fake Windows report, as little time as possible was spent on this section of code.
mcuee commented 2021-06-25 03:18:14 -05:00 (Migrated from github.com)

Quick hack to have libusb xusb example to dump the HID report descriptor for HID device.
https://github.com/libusb/libusb/blob/master/examples/xusb.c

diff --git a/examples/xusb.c b/examples/xusb.c
index bf328fe..77ec516 100644
--- a/examples/xusb.c
+++ b/examples/xusb.c
@@ -1044,15 +1044,19 @@ int main(int argc, char** argv)
                                        test_mode = USE_PS3;
                                        break;
                                case 's':
-                                       // Microsoft Sidewinder Precision Pro Joystick - 1 HID interface
-                                       VID = 0x045E;
-                                       PID = 0x0008;
+                                       if (!VID && !PID) {
+                                               // Microsoft Sidewinder Precision Pro Joystick - 1 HID interface
+                                               VID = 0x045E;
+                                               PID = 0x0008;
+                                       }
                                        test_mode = USE_HID;
                                        break;

Run log under Windows with the generic Lakeview Research HID demo mod


C:\work\libusb\libusb_test [master ≡ +0 ~2 -0 !]> .\x64\Release\examples\xusb.exe -s 0925:7001
Using libusb v1.0.24.11630

Opening device 0925:7001...

Reading device descriptor:
            length: 18
      device class: 0
               S/N: 0
           VID:PID: 0925:7001
         bcdDevice: 0001
   iMan:iProd:iSer: 1:2:0
          nb confs: 1

Reading BOS descriptor: libusb: warning [_hid_get_descriptor] unsupported
libusb: error [libusb_get_bos_descriptor] failed to read BOS (-12)
no descriptor

Reading first configuration descriptor:
             nb interfaces: 1
              interface[0]: id = 0
interface[0].altsetting[0]: num endpoints = 2
   Class.SubClass.Protocol: 03.00.00
       endpoint[0].address: 81
           max packet size: 0040
          polling interval: 01
       endpoint[1].address: 01
           max packet size: 0040
          polling interval: 01

Claiming interface 0...

Reading string descriptors:
   String (0x01): "Lakeview Research"
   String (0x02): "Generic HID"

Reading HID Report Descriptors:

  00000000  06 00 ff 09 01 a1 01 09 01 15 00 25 ff 75 08 95  ...........%.u..
  00000010  02 81 00 09 02 15 00 25 ff 75 08 95 02 91 00 09  .......%.u......
  00000020  03 15 00 25 ff 75 08 95 02 b2 02 01 c0           ...%.u.......

Reading Feature Report (length 2)...
libusb: error [_hid_get_report] failed to read HID Report: [87] The parameter is incorrect.
   Error: Input/Output Error

Reading Input Report (length 2)...
libusb: error [_hid_get_report] failed to read HID Report: [87] The parameter is incorrect.
   Error: Input/Output Error

Testing interrupt read using endpoint 81...
   Operation timed out

Releasing interface 0...
Closing device...

HID report parser output: the output is actually pretty good and correct.

0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x09, 0x01,        //   Usage (0x01)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0xFF,        //   Logical Maximum (-1)
0x75, 0x08,        //   Report Size (8)
0x95, 0x02,        //   Report Count (2)
0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x02,        //   Usage (0x02)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0xFF,        //   Logical Maximum (-1)
0x75, 0x08,        //   Report Size (8)
0x95, 0x02,        //   Report Count (2)
0x91, 0x00,        //   Output (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x09, 0x03,        //   Usage (0x03)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0xFF,        //   Logical Maximum (-1)
0x75, 0x08,        //   Report Size (8)
0x95, 0x02,        //   Report Count (2)
0xB2, 0x02, 0x01,  //   Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile,Buffered Bytes)
0xC0,              // End Collection

// 45 bytes

Quick hack to have libusb xusb example to dump the HID report descriptor for HID device. https://github.com/libusb/libusb/blob/master/examples/xusb.c ``` diff --git a/examples/xusb.c b/examples/xusb.c index bf328fe..77ec516 100644 --- a/examples/xusb.c +++ b/examples/xusb.c @@ -1044,15 +1044,19 @@ int main(int argc, char** argv) test_mode = USE_PS3; break; case 's': - // Microsoft Sidewinder Precision Pro Joystick - 1 HID interface - VID = 0x045E; - PID = 0x0008; + if (!VID && !PID) { + // Microsoft Sidewinder Precision Pro Joystick - 1 HID interface + VID = 0x045E; + PID = 0x0008; + } test_mode = USE_HID; break; ``` Run log under Windows with the generic Lakeview Research HID demo mod ``` C:\work\libusb\libusb_test [master ≡ +0 ~2 -0 !]> .\x64\Release\examples\xusb.exe -s 0925:7001 Using libusb v1.0.24.11630 Opening device 0925:7001... Reading device descriptor: length: 18 device class: 0 S/N: 0 VID:PID: 0925:7001 bcdDevice: 0001 iMan:iProd:iSer: 1:2:0 nb confs: 1 Reading BOS descriptor: libusb: warning [_hid_get_descriptor] unsupported libusb: error [libusb_get_bos_descriptor] failed to read BOS (-12) no descriptor Reading first configuration descriptor: nb interfaces: 1 interface[0]: id = 0 interface[0].altsetting[0]: num endpoints = 2 Class.SubClass.Protocol: 03.00.00 endpoint[0].address: 81 max packet size: 0040 polling interval: 01 endpoint[1].address: 01 max packet size: 0040 polling interval: 01 Claiming interface 0... Reading string descriptors: String (0x01): "Lakeview Research" String (0x02): "Generic HID" Reading HID Report Descriptors: 00000000 06 00 ff 09 01 a1 01 09 01 15 00 25 ff 75 08 95 ...........%.u.. 00000010 02 81 00 09 02 15 00 25 ff 75 08 95 02 91 00 09 .......%.u...... 00000020 03 15 00 25 ff 75 08 95 02 b2 02 01 c0 ...%.u....... Reading Feature Report (length 2)... libusb: error [_hid_get_report] failed to read HID Report: [87] The parameter is incorrect. Error: Input/Output Error Reading Input Report (length 2)... libusb: error [_hid_get_report] failed to read HID Report: [87] The parameter is incorrect. Error: Input/Output Error Testing interrupt read using endpoint 81... Operation timed out Releasing interface 0... Closing device... ``` HID report parser output: the output is actually pretty good and correct. ``` 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x09, 0x01, // Usage (0x01) 0xA1, 0x01, // Collection (Application) 0x09, 0x01, // Usage (0x01) 0x15, 0x00, // Logical Minimum (0) 0x25, 0xFF, // Logical Maximum (-1) 0x75, 0x08, // Report Size (8) 0x95, 0x02, // Report Count (2) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x09, 0x02, // Usage (0x02) 0x15, 0x00, // Logical Minimum (0) 0x25, 0xFF, // Logical Maximum (-1) 0x75, 0x08, // Report Size (8) 0x95, 0x02, // Report Count (2) 0x91, 0x00, // Output (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0x09, 0x03, // Usage (0x03) 0x15, 0x00, // Logical Minimum (0) 0x25, 0xFF, // Logical Maximum (-1) 0x75, 0x08, // Report Size (8) 0x95, 0x02, // Report Count (2) 0xB2, 0x02, 0x01, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile,Buffered Bytes) 0xC0, // End Collection // 45 bytes ```
mcuee commented 2021-06-25 03:20:40 -05:00 (Migrated from github.com)

Mod xusb output for Microchip PICKit 2.


C:\work\libusb\libusb_test [master ≡ +0 ~2 -0 !]> .\x64\Release\examples\xusb.exe -s 04d8:0033
Using libusb v1.0.24.11630

Opening device 04D8:0033...
libusb: info [cache_config_descriptors] could not access configuration descriptor 1 (dummy) for 'USB\VID_04D8&PID_0033\PK2NEW': [31] A device attached to the system is not functioning.

Reading device descriptor:
            length: 18
      device class: 0
               S/N: 3
           VID:PID: 04D8:0033
         bcdDevice: 0002
   iMan:iProd:iSer: 1:2:3
          nb confs: 2

Reading BOS descriptor: libusb: warning [_hid_get_descriptor] unsupported
libusb: error [libusb_get_bos_descriptor] failed to read BOS (-12)
no descriptor

Reading first configuration descriptor:
             nb interfaces: 1
              interface[0]: id = 0
interface[0].altsetting[0]: num endpoints = 2
   Class.SubClass.Protocol: 03.00.00
       endpoint[0].address: 81
           max packet size: 0040
          polling interval: 01
       endpoint[1].address: 01
           max packet size: 0040
          polling interval: 01

Claiming interface 0...

Reading string descriptors:
   String (0x01): "Microchip Technology Inc."
   String (0x02): "PICkit 2 Microcontroller Programmer"
   String (0x03): "pk2new"

Reading HID Report Descriptors:

  00000000  06 00 ff 09 01 a1 01 09 01 15 00 25 ff 75 08 95  ...........%.u..
  00000010  40 81 00 09 02 15 00 25 ff 75 08 95 40 91 00 c0  @......%.u..@...

Skipping Feature Report readout (None detected)

Reading Input Report (length 64)...
libusb: error [_hid_get_report] failed to read HID Report: [31] A device attached to the system is not functioning.
   Error: Input/Output Error

Testing interrupt read using endpoint 81...
   Operation timed out

Releasing interface 0...
Closing device...

HID report parser output. Again, it is actually correct.

0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)
0x09, 0x01,        // Usage (0x01)
0xA1, 0x01,        // Collection (Application)
0x09, 0x01,        //   Usage (0x01)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0xFF,        //   Logical Maximum (-1)
0x75, 0x08,        //   Report Size (8)
0x95, 0x40,        //   Report Count (64)
0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x09, 0x02,        //   Usage (0x02)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0xFF,        //   Logical Maximum (-1)
0x75, 0x08,        //   Report Size (8)
0x95, 0x40,        //   Report Count (64)
0x91, 0x00,        //   Output (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0,              // End Collection

// 32 bytes
Mod xusb output for Microchip PICKit 2. ``` C:\work\libusb\libusb_test [master ≡ +0 ~2 -0 !]> .\x64\Release\examples\xusb.exe -s 04d8:0033 Using libusb v1.0.24.11630 Opening device 04D8:0033... libusb: info [cache_config_descriptors] could not access configuration descriptor 1 (dummy) for 'USB\VID_04D8&PID_0033\PK2NEW': [31] A device attached to the system is not functioning. Reading device descriptor: length: 18 device class: 0 S/N: 3 VID:PID: 04D8:0033 bcdDevice: 0002 iMan:iProd:iSer: 1:2:3 nb confs: 2 Reading BOS descriptor: libusb: warning [_hid_get_descriptor] unsupported libusb: error [libusb_get_bos_descriptor] failed to read BOS (-12) no descriptor Reading first configuration descriptor: nb interfaces: 1 interface[0]: id = 0 interface[0].altsetting[0]: num endpoints = 2 Class.SubClass.Protocol: 03.00.00 endpoint[0].address: 81 max packet size: 0040 polling interval: 01 endpoint[1].address: 01 max packet size: 0040 polling interval: 01 Claiming interface 0... Reading string descriptors: String (0x01): "Microchip Technology Inc." String (0x02): "PICkit 2 Microcontroller Programmer" String (0x03): "pk2new" Reading HID Report Descriptors: 00000000 06 00 ff 09 01 a1 01 09 01 15 00 25 ff 75 08 95 ...........%.u.. 00000010 40 81 00 09 02 15 00 25 ff 75 08 95 40 91 00 c0 @......%.u..@... Skipping Feature Report readout (None detected) Reading Input Report (length 64)... libusb: error [_hid_get_report] failed to read HID Report: [31] A device attached to the system is not functioning. Error: Input/Output Error Testing interrupt read using endpoint 81... Operation timed out Releasing interface 0... Closing device... ``` HID report parser output. Again, it is actually correct. ``` 0x06, 0x00, 0xFF, // Usage Page (Vendor Defined 0xFF00) 0x09, 0x01, // Usage (0x01) 0xA1, 0x01, // Collection (Application) 0x09, 0x01, // Usage (0x01) 0x15, 0x00, // Logical Minimum (0) 0x25, 0xFF, // Logical Maximum (-1) 0x75, 0x08, // Report Size (8) 0x95, 0x40, // Report Count (64) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0x09, 0x02, // Usage (0x02) 0x15, 0x00, // Logical Minimum (0) 0x25, 0xFF, // Logical Maximum (-1) 0x75, 0x08, // Report Size (8) 0x95, 0x40, // Report Count (64) 0x91, 0x00, // Output (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 0xC0, // End Collection // 32 bytes ```
mcuee commented 2021-06-25 03:44:40 -05:00 (Migrated from github.com)

So it seems Pete has done some work on libusb Windows backend and xusb example to dump the HID report descriptor, and the codes seem to do reasonably well for my tested device (because he may have the same PICKit 2 as I). But I think it may not cover other devices and may not be generic.

libusb Windows HID backend does not support multiple HID top collections. So there is a severe limitation. For example, for the Logitech Unifying receiver, it can only dump of the top level collections.

C:\work\libusb\libusb_test [master ≡ +0 ~2 -0 !]> .\x64\Release\examples\xusb.exe -s 046d:c534
Using libusb v1.0.24.11630

Opening device 046D:C534...
libusb: info [cache_config_descriptors] could not access configuration descriptor 1 (dummy) for 'USB\VID_04D8&PID_0033\PK2NEW': [31] A device attached to the system is not functioning.
libusb: warning [hid_open] could not open HID device in R/W mode (keyboard or mouse?) - trying without
libusb: warning [hid_open] could not open HID device in R/W mode (keyboard or mouse?) - trying without

Reading device descriptor:
            length: 18
      device class: 0
               S/N: 0
           VID:PID: 046D:C534
         bcdDevice: 2901
   iMan:iProd:iSer: 1:2:0
          nb confs: 1

Reading BOS descriptor: libusb: warning [_hid_get_descriptor] unsupported
libusb: warning [_hid_get_descriptor] unsupported
libusb: error [composite_submit_control_transfer] no libusb supported interfaces to complete request
libusb: error [libusb_get_bos_descriptor] failed to read BOS (-5)
no descriptor

Reading first configuration descriptor:
             nb interfaces: 2
              interface[0]: id = 0
interface[0].altsetting[0]: num endpoints = 1
   Class.SubClass.Protocol: 03.01.01
       endpoint[0].address: 81
           max packet size: 0008
          polling interval: 08
              interface[1]: id = 1
interface[1].altsetting[0]: num endpoints = 1
   Class.SubClass.Protocol: 03.01.02
       endpoint[0].address: 82
           max packet size: 0014
          polling interval: 02

Claiming interface 0...

Claiming interface 1...

Reading string descriptors:
   String (0x01): "Logitech"
   String (0x02): "USB Receiver"

Reading HID Report Descriptors:

  00000000  06 01 00 09 02 a1 01 09 01 15 00 25 ff 75 08 95  ...........%.u..
  00000010  07 81 00 c0                                      ....

Skipping Feature Report readout (None detected)

Reading Input Report (length 7)...
libusb: error [_hid_get_report] failed to read HID Report: [1] Incorrect function.
libusb: error [_hid_get_report] failed to read HID Report: [1] Incorrect function.
   Error: Input/Output Error

Testing interrupt read using endpoint 81...
libusb: error [hid_submit_bulk_transfer] HID transfer failed: [5] Access is denied.
   Input/Output Error

Releasing interface 0...
Releasing interface 1...
Closing device...

HID report parser output

0x06, 0x01, 0x00,  // Usage Page (Generic Desktop Ctrls)
0x09, 0x02,        // Usage (Mouse)
0xA1, 0x01,        // Collection (Application)
0x09, 0x01,        //   Usage (Pointer)
0x15, 0x00,        //   Logical Minimum (0)
0x25, 0xFF,        //   Logical Maximum (-1)
0x75, 0x08,        //   Report Size (8)
0x95, 0x07,        //   Report Count (7)
0x81, 0x00,        //   Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0xC0,              // End Collection

// 20 bytes

So it seems Pete has done some work on libusb Windows backend and xusb example to dump the HID report descriptor, and the codes seem to do reasonably well for my tested device (because he may have the same PICKit 2 as I). But I think it may not cover other devices and may not be generic. libusb Windows HID backend does not support multiple HID top collections. So there is a severe limitation. For example, for the Logitech Unifying receiver, it can only dump of the top level collections. ``` C:\work\libusb\libusb_test [master ≡ +0 ~2 -0 !]> .\x64\Release\examples\xusb.exe -s 046d:c534 Using libusb v1.0.24.11630 Opening device 046D:C534... libusb: info [cache_config_descriptors] could not access configuration descriptor 1 (dummy) for 'USB\VID_04D8&PID_0033\PK2NEW': [31] A device attached to the system is not functioning. libusb: warning [hid_open] could not open HID device in R/W mode (keyboard or mouse?) - trying without libusb: warning [hid_open] could not open HID device in R/W mode (keyboard or mouse?) - trying without Reading device descriptor: length: 18 device class: 0 S/N: 0 VID:PID: 046D:C534 bcdDevice: 2901 iMan:iProd:iSer: 1:2:0 nb confs: 1 Reading BOS descriptor: libusb: warning [_hid_get_descriptor] unsupported libusb: warning [_hid_get_descriptor] unsupported libusb: error [composite_submit_control_transfer] no libusb supported interfaces to complete request libusb: error [libusb_get_bos_descriptor] failed to read BOS (-5) no descriptor Reading first configuration descriptor: nb interfaces: 2 interface[0]: id = 0 interface[0].altsetting[0]: num endpoints = 1 Class.SubClass.Protocol: 03.01.01 endpoint[0].address: 81 max packet size: 0008 polling interval: 08 interface[1]: id = 1 interface[1].altsetting[0]: num endpoints = 1 Class.SubClass.Protocol: 03.01.02 endpoint[0].address: 82 max packet size: 0014 polling interval: 02 Claiming interface 0... Claiming interface 1... Reading string descriptors: String (0x01): "Logitech" String (0x02): "USB Receiver" Reading HID Report Descriptors: 00000000 06 01 00 09 02 a1 01 09 01 15 00 25 ff 75 08 95 ...........%.u.. 00000010 07 81 00 c0 .... Skipping Feature Report readout (None detected) Reading Input Report (length 7)... libusb: error [_hid_get_report] failed to read HID Report: [1] Incorrect function. libusb: error [_hid_get_report] failed to read HID Report: [1] Incorrect function. Error: Input/Output Error Testing interrupt read using endpoint 81... libusb: error [hid_submit_bulk_transfer] HID transfer failed: [5] Access is denied. Input/Output Error Releasing interface 0... Releasing interface 1... Closing device... ``` HID report parser output ``` 0x06, 0x01, 0x00, // Usage Page (Generic Desktop Ctrls) 0x09, 0x02, // Usage (Mouse) 0xA1, 0x01, // Collection (Application) 0x09, 0x01, // Usage (Pointer) 0x15, 0x00, // Logical Minimum (0) 0x25, 0xFF, // Logical Maximum (-1) 0x75, 0x08, // Report Size (8) 0x95, 0x07, // Report Count (7) 0x81, 0x00, // Input (Data,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection // 20 bytes ```
cvuchener commented 2021-07-02 09:11:31 -05:00 (Migrated from github.com)

A wild idea: we provide the API for macOS and Linux hidraw and libusb backend, and also Windows. But for Windows, user may need to provide a template HID report descriptor (based on the dumping from Linux and macOS if necessary) for the API to get right. If not, then it is based on the #262 or similar best efforts (not guaranteed to work).

Example: compare the hidpp Linux and Windows code, Windows code has to provide the hard coded HID Report Descriptors.
https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_windows.cpp (native Windows HID API).
https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_linux.cpp (hidraw)

Comparing raw descriptors is not a good idea. I did it because I was too lazy to write a descriptor parser at the time and it stayed much too long. It created issues with equivalent descriptors that have some items swapped (not changing the meaning of the whole descriptor). So I had to compare with two different strings and it became an even bigger issue when more than two alternative became possible.

I finally implemented what I should have done long ago: parsing the raw descriptor and checking the high-level data. Which lead to the Windows issue. I opted to use the reverse-engineered preparsed data I found in a link around here. Unlike the public API, "values" and "buttons" are not separated (so "buttons" have their report size/count), you have the exact position of the field in the report, which makes it easier to reconstruct the report descriptor. It enabled me to build a very minimal report descriptor that was enough for my specific use case, but may not be for hidapi (I only store flags, usages, report size and count for each field).

I did not look much at the other data members in the preparsed data except for logical minimum/maximum and there may be issues with them. Logical minimum/maximum are some times swapped or 1 may be replaced by 0 (e.g. (1, 3) becomes (3, 0)). I have no idea what is causing those changes.

> > > > A wild idea: we provide the API for macOS and Linux hidraw and libusb backend, and also Windows. But for Windows, user may need to provide a template HID report descriptor (based on the dumping from Linux and macOS if necessary) for the API to get right. If not, then it is based on the #262 or similar best efforts (not guaranteed to work). > > Example: compare the hidpp Linux and Windows code, Windows code has to provide the hard coded HID Report Descriptors. > https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_windows.cpp (native Windows HID API). > https://github.com/cvuchener/hidpp/blob/master/src/libhidpp/hid/RawDevice_linux.cpp (hidraw) Comparing raw descriptors is not a good idea. I did it because I was too lazy to write a descriptor parser at the time and it stayed much too long. It created issues with equivalent descriptors that have some items swapped (not changing the meaning of the whole descriptor). So I had to compare with two different strings and it became an even bigger issue when more than two alternative became possible. I finally implemented what I should have done long ago: parsing the raw descriptor and checking the high-level data. Which lead to the Windows issue. I opted to use the [reverse-engineered preparsed data](https://chromium.googlesource.com/chromium/src/+/73fdaaf605bb60caf34d5f30bb84a417688aa528/services/device/hid/hid_preparsed_data.cc) I found in a link around here. Unlike the public API, "values" and "buttons" are not separated (so "buttons" have their report size/count), you have the exact position of the field in the report, which makes it easier to reconstruct the report descriptor. It enabled me to build a very minimal report descriptor that was enough for my specific use case, but may not be for hidapi (I only store flags, usages, report size and count for each field). I did not look much at the other data members in the preparsed data except for logical minimum/maximum and there may be issues with them. Logical minimum/maximum are some times swapped or 1 may be replaced by 0 (e.g. (1, 3) becomes (3, 0)). I have no idea what is causing those changes.
mcuee commented 2021-07-02 09:21:13 -05:00 (Migrated from github.com)

@cvuchener Just wondering where are your codes using the reverse-engineered praparsed data. Thanks.

@cvuchener Just wondering where are your codes using the reverse-engineered praparsed data. Thanks.
cvuchener commented 2021-07-02 09:56:25 -05:00 (Migrated from github.com)
It's not merged yet: https://github.com/cvuchener/hidpp/blob/e6e9b301b792af7b00e547d976dfbfa541fe94cb/src/libhidpp/hid/RawDevice_windows.cpp
JoergAtGithub commented 2021-07-08 11:48:55 -05:00 (Migrated from github.com)

@Youw Could you please update the branch https://github.com/libusb/hidapi/tree/get-descriptor to the latest state of the master branch.

@Youw Could you please update the branch https://github.com/libusb/hidapi/tree/get-descriptor to the latest state of the master branch.
Youw commented 2021-07-09 11:22:19 -05:00 (Migrated from github.com)

done

done
mcuee commented 2021-07-12 04:54:30 -05:00 (Migrated from github.com)

From #262 test result, it can be seen that getting Windows right is not easy with the native HID driver. But using libusb (with WinUSB driver) it is easy to dump the HID report descriptor, that is anyway expected (same as the libusb backend for HIDAPI).

Ref: I have tested the method (using WinUSB driver to replace the native HID driver) with Logitech USB Receiver and it matches the dump from macOS USB prober.
https://github.com/libusb/hidapi/pull/262#issuecomment-878127839

Of course this is not the solution for HIDAPI, just a easy method for me to test without using macOS/Linux.

From #262 test result, it can be seen that getting Windows right is not easy with the native HID driver. But using libusb (with WinUSB driver) it is easy to dump the HID report descriptor, that is anyway expected (same as the libusb backend for HIDAPI). Ref: I have tested the method (using WinUSB driver to replace the native HID driver) with Logitech USB Receiver and it matches the dump from macOS USB prober. https://github.com/libusb/hidapi/pull/262#issuecomment-878127839 Of course this is not the solution for HIDAPI, just a easy method for me to test without using macOS/Linux.
DJm00n commented 2021-07-12 15:08:28 -05:00 (Migrated from github.com)

@mcuee easier method is to use wireshark tool with usbpcap installed - then you can see and dump usb and bluetooth packets that are 100% flying by the wire.
This is way I used to dump all those HID report descriptors: https://github.com/DJm00n/ControllersInfo

@mcuee easier method is to use wireshark tool with usbpcap installed - then you can see and dump usb and bluetooth packets that are 100% flying by the wire. This is way I used to dump all those HID report descriptors: https://github.com/DJm00n/ControllersInfo
mcuee commented 2021-07-13 02:10:57 -05:00 (Migrated from github.com)

@DJm00n Thanks for the pointer. Unfortunately usb-pcap does not for work for my Windows 10 PC (hangs during installation and all my the USB port will not work) so I can not use wireshark.

@DJm00n Thanks for the pointer. Unfortunately usb-pcap does not for work for my Windows 10 PC (hangs during installation and all my the USB port will not work) so I can not use wireshark.
mcuee commented 2021-07-14 00:59:50 -05:00 (Migrated from github.com)

Interesting I found one old Cypress Control Center application which also has some HID report descriptor parse function. I have not looked into the codes in details yet. I was actually playing with the EZ-USB FX2LP example FW which has nothing to do with HID.

AN4053: it has the C# source code for the Control Center application.
https://www.cypress.com/documentation/application-notes/an4053-streaming-data-through-isochronous-or-bulk-endpoints-ez-usb

It is also part of the SuiteUSB package from Cypress.
https://www.cypress.com/documentation/software-and-drivers/suiteusb-34-usb-development-tools-visual-studio

Interesting I found one old Cypress Control Center application which also has some HID report descriptor parse function. I have not looked into the codes in details yet. I was actually playing with the EZ-USB FX2LP example FW which has nothing to do with HID. AN4053: it has the C# source code for the Control Center application. https://www.cypress.com/documentation/application-notes/an4053-streaming-data-through-isochronous-or-bulk-endpoints-ez-usb It is also part of the SuiteUSB package from Cypress. https://www.cypress.com/documentation/software-and-drivers/suiteusb-34-usb-development-tools-visual-studio
mcuee commented 2021-07-14 01:16:03 -05:00 (Migrated from github.com)

Output from Cypress Control Center for FX2LP (not the new one for FX3).

For the Logitech Receiver, it will display as many devices in the tree view.

I will compare with the macOS USB Prober output mentioned here.
https://github.com/libusb/hidapi/issues/249#issuecomment-864510041

For the first device.

click to expand for the output
<HID_DEVICE>
	FriendlyName=""
	Manufacturer="Logitech"
	Product="USB Receiver"
	SerialNumber=""
	VendorID="04 6D"
	ProductID="C5 34"
	Class="00h"
	SubClass="00h"
	Protocol="00h"
	BcdUSB="00 00"
	Usage="00 02"
	UsagePage="00 01"
	Version="29 01"
	<INPUT>
		RptByteLen="8"
		Buttons="1"
		Values="4"
		<BUTTON>
			ReportID="2"
			Usage="00 01"
			UsagePage="00 09"
			UsageMax="00 10"
			BitField="00 02"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="True"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="15"
		</BUTTON>
		<VALUE>
			ReportID="2"
			Usage="00 31"
			UsagePage="00 01"
			UsageMax="00 31"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="False"
			HasNull="False"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="16"
			DataIndexMax="16"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			BitSize="12"
			ReportCount="1"
			Units="0"
			UnitsExp="0"
			LogicalMin="-2047"
			LogicalMax="2047"
			PhysicalMin="0"
			PhysicalMax="0"
		</VALUE>
		<VALUE>
			ReportID="2"
			Usage="00 30"
			UsagePage="00 01"
			UsageMax="00 30"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="False"
			HasNull="False"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="17"
			DataIndexMax="17"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			BitSize="12"
			ReportCount="1"
			Units="0"
			UnitsExp="0"
			LogicalMin="-2047"
			LogicalMax="2047"
			PhysicalMin="0"
			PhysicalMax="0"
		</VALUE>
		<VALUE>
			ReportID="2"
			Usage="00 38"
			UsagePage="00 01"
			UsageMax="00 38"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="False"
			HasNull="False"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="18"
			DataIndexMax="18"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			BitSize="8"
			ReportCount="1"
			Units="0"
			UnitsExp="0"
			LogicalMin="-127"
			LogicalMax="127"
			PhysicalMin="0"
			PhysicalMax="0"
		</VALUE>
		<VALUE>
			ReportID="2"
			Usage="02 38"
			UsagePage="00 0C"
			UsageMax="02 38"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="False"
			HasNull="False"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="19"
			DataIndexMax="19"
			BitField="00 06"
			LinkCollection="00 01"
			LinkUsage="00 01"
			LinkUsagePage="00 01"
			BitSize="8"
			ReportCount="1"
			Units="0"
			UnitsExp="0"
			LogicalMin="-127"
			LogicalMax="127"
			PhysicalMin="0"
			PhysicalMax="0"
		</VALUE>
	</INPUT>
</HID_DEVICE>

Output from Cypress Control Center for FX2LP (not the new one for FX3). For the Logitech Receiver, it will display as many devices in the tree view. I will compare with the macOS USB Prober output mentioned here. https://github.com/libusb/hidapi/issues/249#issuecomment-864510041 For the first device. <details> <summary> click to expand for the output </summary> ``` <HID_DEVICE> FriendlyName="" Manufacturer="Logitech" Product="USB Receiver" SerialNumber="" VendorID="04 6D" ProductID="C5 34" Class="00h" SubClass="00h" Protocol="00h" BcdUSB="00 00" Usage="00 02" UsagePage="00 01" Version="29 01" <INPUT> RptByteLen="8" Buttons="1" Values="4" <BUTTON> ReportID="2" Usage="00 01" UsagePage="00 09" UsageMax="00 10" BitField="00 02" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" IsAlias="False" IsRange="True" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="15" </BUTTON> <VALUE> ReportID="2" Usage="00 31" UsagePage="00 01" UsageMax="00 31" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="False" HasNull="False" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="16" DataIndexMax="16" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" BitSize="12" ReportCount="1" Units="0" UnitsExp="0" LogicalMin="-2047" LogicalMax="2047" PhysicalMin="0" PhysicalMax="0" </VALUE> <VALUE> ReportID="2" Usage="00 30" UsagePage="00 01" UsageMax="00 30" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="False" HasNull="False" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="17" DataIndexMax="17" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" BitSize="12" ReportCount="1" Units="0" UnitsExp="0" LogicalMin="-2047" LogicalMax="2047" PhysicalMin="0" PhysicalMax="0" </VALUE> <VALUE> ReportID="2" Usage="00 38" UsagePage="00 01" UsageMax="00 38" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="False" HasNull="False" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="18" DataIndexMax="18" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" BitSize="8" ReportCount="1" Units="0" UnitsExp="0" LogicalMin="-127" LogicalMax="127" PhysicalMin="0" PhysicalMax="0" </VALUE> <VALUE> ReportID="2" Usage="02 38" UsagePage="00 0C" UsageMax="02 38" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="False" HasNull="False" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="19" DataIndexMax="19" BitField="00 06" LinkCollection="00 01" LinkUsage="00 01" LinkUsagePage="00 01" BitSize="8" ReportCount="1" Units="0" UnitsExp="0" LogicalMin="-127" LogicalMax="127" PhysicalMin="0" PhysicalMax="0" </VALUE> </INPUT> </HID_DEVICE> ``` </details>
mcuee commented 2021-07-14 01:16:54 -05:00 (Migrated from github.com)

Second device.

click to expand for the output
<HID_DEVICE>
	FriendlyName=""
	Manufacturer="Logitech"
	Product="USB Receiver"
	SerialNumber=""
	VendorID="04 6D"
	ProductID="C5 34"
	Class="00h"
	SubClass="00h"
	Protocol="00h"
	BcdUSB="00 00"
	Usage="00 01"
	UsagePage="00 0C"
	Version="29 01"
	<INPUT>
		RptByteLen="5"
		Buttons="1"
		Values="0"
		<BUTTON>
			ReportID="3"
			Usage="00 01"
			UsagePage="00 0C"
			UsageMax="02 8C"
			BitField="00 00"
			LinkCollection="00 00"
			LinkUsage="00 01"
			LinkUsagePage="00 0C"
			IsAlias="False"
			IsRange="True"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="651"
		</BUTTON>
	</INPUT>
</HID_DEVICE>

Second device. <details> <summary> click to expand for the output </summary> ``` <HID_DEVICE> FriendlyName="" Manufacturer="Logitech" Product="USB Receiver" SerialNumber="" VendorID="04 6D" ProductID="C5 34" Class="00h" SubClass="00h" Protocol="00h" BcdUSB="00 00" Usage="00 01" UsagePage="00 0C" Version="29 01" <INPUT> RptByteLen="5" Buttons="1" Values="0" <BUTTON> ReportID="3" Usage="00 01" UsagePage="00 0C" UsageMax="02 8C" BitField="00 00" LinkCollection="00 00" LinkUsage="00 01" LinkUsagePage="00 0C" IsAlias="False" IsRange="True" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="651" </BUTTON> </INPUT> </HID_DEVICE> ``` </details>
mcuee commented 2021-07-14 01:17:39 -05:00 (Migrated from github.com)

Third device.

click to expand for the output
<HID_DEVICE>
	FriendlyName=""
	Manufacturer="Logitech"
	Product="USB Receiver"
	SerialNumber=""
	VendorID="04 6D"
	ProductID="C5 34"
	Class="00h"
	SubClass="00h"
	Protocol="00h"
	BcdUSB="00 00"
	Usage="00 80"
	UsagePage="00 01"
	Version="29 01"
	<INPUT>
		RptByteLen="2"
		Buttons="3"
		Values="0"
		<BUTTON>
			ReportID="4"
			Usage="00 83"
			UsagePage="00 01"
			UsageMax="00 83"
			BitField="00 60"
			LinkCollection="00 00"
			LinkUsage="00 80"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="2"
			DataIndexMax="2"
		</BUTTON>
		<BUTTON>
			ReportID="4"
			Usage="00 81"
			UsagePage="00 01"
			UsageMax="00 81"
			BitField="00 60"
			LinkCollection="00 00"
			LinkUsage="00 80"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="1"
			DataIndexMax="1"
		</BUTTON>
		<BUTTON>
			ReportID="4"
			Usage="00 82"
			UsagePage="00 01"
			UsageMax="00 82"
			BitField="00 60"
			LinkCollection="00 00"
			LinkUsage="00 80"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="0"
		</BUTTON>
	</INPUT>
</HID_DEVICE>

Third device. <details> <summary> click to expand for the output </summary> ``` <HID_DEVICE> FriendlyName="" Manufacturer="Logitech" Product="USB Receiver" SerialNumber="" VendorID="04 6D" ProductID="C5 34" Class="00h" SubClass="00h" Protocol="00h" BcdUSB="00 00" Usage="00 80" UsagePage="00 01" Version="29 01" <INPUT> RptByteLen="2" Buttons="3" Values="0" <BUTTON> ReportID="4" Usage="00 83" UsagePage="00 01" UsageMax="00 83" BitField="00 60" LinkCollection="00 00" LinkUsage="00 80" LinkUsagePage="00 01" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="2" DataIndexMax="2" </BUTTON> <BUTTON> ReportID="4" Usage="00 81" UsagePage="00 01" UsageMax="00 81" BitField="00 60" LinkCollection="00 00" LinkUsage="00 80" LinkUsagePage="00 01" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="1" DataIndexMax="1" </BUTTON> <BUTTON> ReportID="4" Usage="00 82" UsagePage="00 01" UsageMax="00 82" BitField="00 60" LinkCollection="00 00" LinkUsage="00 80" LinkUsagePage="00 01" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="0" </BUTTON> </INPUT> </HID_DEVICE> ``` </details>
mcuee commented 2021-07-14 01:18:17 -05:00 (Migrated from github.com)

4th device.

click to expand for the output
<HID_DEVICE>
	FriendlyName=""
	Manufacturer="Logitech"
	Product="USB Receiver"
	SerialNumber=""
	VendorID="04 6D"
	ProductID="C5 34"
	Class="00h"
	SubClass="00h"
	Protocol="00h"
	BcdUSB="00 00"
	Usage="00 01"
	UsagePage="FF 00"
	Version="29 01"
	<INPUT>
		RptByteLen="7"
		Buttons="1"
		Values="0"
		<BUTTON>
			ReportID="16"
			Usage="00 01"
			UsagePage="FF 00"
			UsageMax="00 01"
			BitField="00 00"
			LinkCollection="00 00"
			LinkUsage="00 01"
			LinkUsagePage="FF 00"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="0"
		</BUTTON>
	</INPUT>
	<OUTPUT>
		RptByteLen="7"
		Buttons="1"
		Values="0"
		<BUTTON>
			ReportID="16"
			Usage="00 01"
			UsagePage="FF 00"
			UsageMax="00 01"
			BitField="00 00"
			LinkCollection="00 00"
			LinkUsage="00 01"
			LinkUsagePage="FF 00"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="0"
		</BUTTON>
	</OUTPUT>
</HID_DEVICE>
4th device. <details> <summary> click to expand for the output </summary> ``` <HID_DEVICE> FriendlyName="" Manufacturer="Logitech" Product="USB Receiver" SerialNumber="" VendorID="04 6D" ProductID="C5 34" Class="00h" SubClass="00h" Protocol="00h" BcdUSB="00 00" Usage="00 01" UsagePage="FF 00" Version="29 01" <INPUT> RptByteLen="7" Buttons="1" Values="0" <BUTTON> ReportID="16" Usage="00 01" UsagePage="FF 00" UsageMax="00 01" BitField="00 00" LinkCollection="00 00" LinkUsage="00 01" LinkUsagePage="FF 00" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="0" </BUTTON> </INPUT> <OUTPUT> RptByteLen="7" Buttons="1" Values="0" <BUTTON> ReportID="16" Usage="00 01" UsagePage="FF 00" UsageMax="00 01" BitField="00 00" LinkCollection="00 00" LinkUsage="00 01" LinkUsagePage="FF 00" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="0" </BUTTON> </OUTPUT> </HID_DEVICE> ``` </details>
mcuee commented 2021-07-14 01:20:13 -05:00 (Migrated from github.com)

5th device.

click to expand for the output
<HID_DEVICE>
	FriendlyName=""
	Manufacturer="Logitech"
	Product="USB Receiver"
	SerialNumber=""
	VendorID="04 6D"
	ProductID="C5 34"
	Class="00h"
	SubClass="00h"
	Protocol="00h"
	BcdUSB="00 00"
	Usage="00 02"
	UsagePage="FF 00"
	Version="29 01"
	<INPUT>
		RptByteLen="20"
		Buttons="1"
		Values="0"
		<BUTTON>
			ReportID="17"
			Usage="00 02"
			UsagePage="FF 00"
			UsageMax="00 02"
			BitField="00 00"
			LinkCollection="00 00"
			LinkUsage="00 02"
			LinkUsagePage="FF 00"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="0"
		</BUTTON>
	</INPUT>
	<OUTPUT>
		RptByteLen="20"
		Buttons="1"
		Values="0"
		<BUTTON>
			ReportID="17"
			Usage="00 02"
			UsagePage="FF 00"
			UsageMax="00 02"
			BitField="00 00"
			LinkCollection="00 00"
			LinkUsage="00 02"
			LinkUsagePage="FF 00"
			IsAlias="False"
			IsRange="False"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="0"
		</BUTTON>
	</OUTPUT>
</HID_DEVICE>

5th device. <details> <summary> click to expand for the output </summary> ``` <HID_DEVICE> FriendlyName="" Manufacturer="Logitech" Product="USB Receiver" SerialNumber="" VendorID="04 6D" ProductID="C5 34" Class="00h" SubClass="00h" Protocol="00h" BcdUSB="00 00" Usage="00 02" UsagePage="FF 00" Version="29 01" <INPUT> RptByteLen="20" Buttons="1" Values="0" <BUTTON> ReportID="17" Usage="00 02" UsagePage="FF 00" UsageMax="00 02" BitField="00 00" LinkCollection="00 00" LinkUsage="00 02" LinkUsagePage="FF 00" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="0" </BUTTON> </INPUT> <OUTPUT> RptByteLen="20" Buttons="1" Values="0" <BUTTON> ReportID="17" Usage="00 02" UsagePage="FF 00" UsageMax="00 02" BitField="00 00" LinkCollection="00 00" LinkUsage="00 02" LinkUsagePage="FF 00" IsAlias="False" IsRange="False" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="0" </BUTTON> </OUTPUT> </HID_DEVICE> ``` </details>
mcuee commented 2021-07-14 01:21:28 -05:00 (Migrated from github.com)

6th device.

click to expand for the output
<HID_DEVICE>
	FriendlyName=""
	Manufacturer="Logitech"
	Product="USB Receiver"
	SerialNumber=""
	VendorID="04 6D"
	ProductID="C5 34"
	Class="00h"
	SubClass="00h"
	Protocol="00h"
	BcdUSB="00 00"
	Usage="00 06"
	UsagePage="00 01"
	Version="29 01"
	<INPUT>
		RptByteLen="9"
		Buttons="2"
		Values="0"
		<BUTTON>
			ReportID="0"
			Usage="00 E0"
			UsagePage="00 07"
			UsageMax="00 E7"
			BitField="00 02"
			LinkCollection="00 00"
			LinkUsage="00 06"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="True"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="7"
		</BUTTON>
		<BUTTON>
			ReportID="0"
			Usage="00 00"
			UsagePage="00 07"
			UsageMax="00 A4"
			BitField="00 00"
			LinkCollection="00 00"
			LinkUsage="00 06"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="True"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="8"
			DataIndexMax="172"
		</BUTTON>
	</INPUT>
	<OUTPUT>
		RptByteLen="2"
		Buttons="1"
		Values="0"
		<BUTTON>
			ReportID="0"
			Usage="00 01"
			UsagePage="00 08"
			UsageMax="00 05"
			BitField="00 02"
			LinkCollection="00 00"
			LinkUsage="00 06"
			LinkUsagePage="00 01"
			IsAlias="False"
			IsRange="True"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="4"
		</BUTTON>
	</OUTPUT>
</HID_DEVICE>

6th device. <details> <summary> click to expand for the output </summary> ``` <HID_DEVICE> FriendlyName="" Manufacturer="Logitech" Product="USB Receiver" SerialNumber="" VendorID="04 6D" ProductID="C5 34" Class="00h" SubClass="00h" Protocol="00h" BcdUSB="00 00" Usage="00 06" UsagePage="00 01" Version="29 01" <INPUT> RptByteLen="9" Buttons="2" Values="0" <BUTTON> ReportID="0" Usage="00 E0" UsagePage="00 07" UsageMax="00 E7" BitField="00 02" LinkCollection="00 00" LinkUsage="00 06" LinkUsagePage="00 01" IsAlias="False" IsRange="True" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="7" </BUTTON> <BUTTON> ReportID="0" Usage="00 00" UsagePage="00 07" UsageMax="00 A4" BitField="00 00" LinkCollection="00 00" LinkUsage="00 06" LinkUsagePage="00 01" IsAlias="False" IsRange="True" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="8" DataIndexMax="172" </BUTTON> </INPUT> <OUTPUT> RptByteLen="2" Buttons="1" Values="0" <BUTTON> ReportID="0" Usage="00 01" UsagePage="00 08" UsageMax="00 05" BitField="00 02" LinkCollection="00 00" LinkUsage="00 06" LinkUsagePage="00 01" IsAlias="False" IsRange="True" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="4" </BUTTON> </OUTPUT> </HID_DEVICE> ``` </details>
JoergAtGithub commented 2021-07-14 01:21:59 -05:00 (Migrated from github.com)

This looks like a dump of what WIN32 API returns, but it does not contain information about the bit positions. This does not help.

This looks like a dump of what WIN32 API returns, but it does not contain information about the bit positions. This does not help.
mcuee commented 2021-07-14 01:26:12 -05:00 (Migrated from github.com)

For Microchip PICkit 2 it reports the following.

click to expand for the output
<HID_DEVICE>
	FriendlyName=""
	Manufacturer="Microchip Technology Inc."
	Product="PICkit 2 Microcontroller Programmer"
	SerialNumber="pk2new"
	VendorID="04 D8"
	ProductID="00 33"
	Class="00h"
	SubClass="00h"
	Protocol="00h"
	BcdUSB="00 00"
	Usage="00 01"
	UsagePage="FF 00"
	Version="00 02"
	<INPUT>
		RptByteLen="65"
		Buttons="0"
		Values="1"
		<VALUE>
			ReportID="0"
			Usage="00 01"
			UsagePage="FF 00"
			UsageMax="00 40"
			BitField="00 02"
			LinkCollection="00 00"
			LinkUsage="00 01"
			LinkUsagePage="FF 00"
			IsAlias="False"
			IsRange="True"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			HasNull="False"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="63"
			BitField="00 02"
			LinkCollection="00 00"
			LinkUsage="00 01"
			LinkUsagePage="FF 00"
			BitSize="8"
			ReportCount="1"
			Units="0"
			UnitsExp="0"
			LogicalMin="0"
			LogicalMax="255"
			PhysicalMin="0"
			PhysicalMax="0"
		</VALUE>
	</INPUT>
	<OUTPUT>
		RptByteLen="65"
		Buttons="0"
		Values="1"
		<VALUE>
			ReportID="0"
			Usage="00 01"
			UsagePage="FF 00"
			UsageMax="00 40"
			BitField="00 02"
			LinkCollection="00 00"
			LinkUsage="00 01"
			LinkUsagePage="FF 00"
			IsAlias="False"
			IsRange="True"
			IsStringRange="False"
			IsDesignatorRange="False"
			IsAbsolute="True"
			HasNull="False"
			StringIndex="0"
			StringMax="0"
			DesignatorIndex="0"
			DesignatorMax="0"
			DataIndex="0"
			DataIndexMax="63"
			BitField="00 02"
			LinkCollection="00 00"
			LinkUsage="00 01"
			LinkUsagePage="FF 00"
			BitSize="8"
			ReportCount="1"
			Units="0"
			UnitsExp="0"
			LogicalMin="0"
			LogicalMax="255"
			PhysicalMin="0"
			PhysicalMax="0"
		</VALUE>
	</OUTPUT>
</HID_DEVICE>

For Microchip PICkit 2 it reports the following. <details> <summary> click to expand for the output </summary> ``` <HID_DEVICE> FriendlyName="" Manufacturer="Microchip Technology Inc." Product="PICkit 2 Microcontroller Programmer" SerialNumber="pk2new" VendorID="04 D8" ProductID="00 33" Class="00h" SubClass="00h" Protocol="00h" BcdUSB="00 00" Usage="00 01" UsagePage="FF 00" Version="00 02" <INPUT> RptByteLen="65" Buttons="0" Values="1" <VALUE> ReportID="0" Usage="00 01" UsagePage="FF 00" UsageMax="00 40" BitField="00 02" LinkCollection="00 00" LinkUsage="00 01" LinkUsagePage="FF 00" IsAlias="False" IsRange="True" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" HasNull="False" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="63" BitField="00 02" LinkCollection="00 00" LinkUsage="00 01" LinkUsagePage="FF 00" BitSize="8" ReportCount="1" Units="0" UnitsExp="0" LogicalMin="0" LogicalMax="255" PhysicalMin="0" PhysicalMax="0" </VALUE> </INPUT> <OUTPUT> RptByteLen="65" Buttons="0" Values="1" <VALUE> ReportID="0" Usage="00 01" UsagePage="FF 00" UsageMax="00 40" BitField="00 02" LinkCollection="00 00" LinkUsage="00 01" LinkUsagePage="FF 00" IsAlias="False" IsRange="True" IsStringRange="False" IsDesignatorRange="False" IsAbsolute="True" HasNull="False" StringIndex="0" StringMax="0" DesignatorIndex="0" DesignatorMax="0" DataIndex="0" DataIndexMax="63" BitField="00 02" LinkCollection="00 00" LinkUsage="00 01" LinkUsagePage="FF 00" BitSize="8" ReportCount="1" Units="0" UnitsExp="0" LogicalMin="0" LogicalMax="255" PhysicalMin="0" PhysicalMax="0" </VALUE> </OUTPUT> </HID_DEVICE> ``` </details>
mcuee commented 2021-07-14 01:31:11 -05:00 (Migrated from github.com)

This looks like a dump of what WIN32 API returns, but it does not contain information about the bit positions. This does not help.

Looks like you are right.

> This looks like a dump of what WIN32 API returns, but it does not contain information about the bit positions. This does not help. Looks like you are right.
mcuee commented 2021-07-16 06:07:50 -05:00 (Migrated from github.com)

Test result for the macOS implementation.
https://github.com/libusb/hidapi/pull/303 (now merged here: https://github.com/libusb/hidapi/tree/get-descriptor)

Mostly it is okay but there is a bit strange output for Logitech USB Receiver.

Test result for the macOS implementation. https://github.com/libusb/hidapi/pull/303 (now merged here: https://github.com/libusb/hidapi/tree/get-descriptor) Mostly it is okay but there is a bit strange output for Logitech USB Receiver.
mcuee commented 2021-07-16 06:08:39 -05:00 (Migrated from github.com)

@Youw Please take a look at the results in #303 to see if it is a problem or not. Thanks.

@Youw Please take a look at the results in #303 to see if it is a problem or not. Thanks.
mcuee commented 2021-07-17 23:52:15 -05:00 (Migrated from github.com)

Just tested #303 with a bluetooth mouse (Logitech M557) and it works fine as well under macOS (Mac Mini M1).

Just tested #303 with a bluetooth mouse (Logitech M557) and it works fine as well under macOS (Mac Mini M1).
JoergAtGithub commented 2021-07-18 08:03:41 -05:00 (Migrated from github.com)

I created #306 (a variant of #262) but using the reverse-engineered praparsed data struct approach. This seems to cover the remaining edge cases.

I created #306 (a variant of #262) but using the reverse-engineered praparsed data struct approach. This seems to cover the remaining edge cases.
mcuee commented 2021-07-18 09:50:00 -05:00 (Migrated from github.com)

For Windows #306 seems to be much better than #262 with the first quick check. It seems to be working pretty well.

For Windows #306 seems to be much better than #262 with the first quick check. It seems to be working pretty well.
mcuee commented 2021-07-20 04:59:03 -05:00 (Migrated from github.com)

For Linux hidraw, it seems to me Alan Ott (orginal developer of hidapi) has the codes.
https://github.com/torvalds/linux/blob/master/samples/hidraw/hid-example.c

For Linux hidraw, it seems to me Alan Ott (orginal developer of hidapi) has the codes. https://github.com/torvalds/linux/blob/master/samples/hidraw/hid-example.c
mcuee commented 2021-07-30 23:13:28 -05:00 (Migrated from github.com)

@Youw It seems that the macOS codes can not print out the HID report descriptor from my Microsoft Xbox One S Wireless Controller (bluetooth connection). On the other hand, mac-hid-dump has no issues.

click to expand
hidapi_report on  get-descriptor via △ v3.21.1 took 2s ❯ ./hidtest/hidtest
hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 045e 02fd
  path: IOService:/IOResources/IOBluetoothHCIController/AppleBroadcomBluetoothHostController/IOBluetoothDevice/IOBluetoothL2CAPChannel/IOBluetoothHIDDriver
  serial_number: 9c-aa-1b-1c-ca-e2
  Manufacturer: Unknown
  Product:      Xbox Wireless Controller
  Release:      903
  Interface:    -1
  Usage (page): 0x5 (0x1)
  Report Descriptor: not available.

Device Found
  type: 045e 02fd
  path: IOService:/IOResources/IOBluetoothHCIController/AppleBroadcomBluetoothHostController/IOBluetoothDevice/IOBluetoothL2CAPChannel/IOBluetoothHIDDriver
  serial_number: 9c-aa-1b-1c-ca-e2
  Manufacturer: Unknown
  Product:      Xbox Wireless Controller
  Release:      903
  Interface:    -1
  Usage (page): 0x1 (0x1)
  Report Descriptor: not available.

Device Found
  type: 045e 02fd
  path: IOService:/IOResources/IOBluetoothHCIController/AppleBroadcomBluetoothHostController/IOBluetoothDevice/IOBluetoothL2CAPChannel/IOBluetoothHIDDriver
  serial_number: 9c-aa-1b-1c-ca-e2
  Manufacturer: Unknown
  Product:      Xbox Wireless Controller
  Release:      903
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: not available.

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xc)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x5 (0xb)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xffa0)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x2 (0x1)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0x1)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0xc)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x80 (0x1)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice
  serial_number: 
  Manufacturer: Apple
  Product:      
  Release:      0
  Interface:    -1
  Usage (page): 0xff (0xff00)
  Report Descriptor: (20 bytes)
0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM
  serial_number: 
  Manufacturer: APPL
  Product:      BTM
  Release:      0
  Interface:    -1
  Usage (page): 0x48 (0xff00)
  Report Descriptor: (50 bytes)
0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 
0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 
0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 
0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 
0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, 

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey
  serial_number: 
  Manufacturer: Apple
  Product:      Headset
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (29 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 
0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 
0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x1 (0xff00)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x2 (0xff00)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x4 (0xff00)
  Report Descriptor: not available.

unable to open device

mac-hid-dump on  main ❯ ./mac-hid-dump 
mac-hid-dump:
0000 0000: Apple - Headset
DESCRIPTOR:
  05  0c  09  01  a1  01  05  0c  09  cd  09  ea  09  e9  15  00 
  25  01  95  03  75  01  81  02  95  05  81  05  c0  
  (29 bytes)
046D C52B: Logitech - USB Receiver
DESCRIPTOR:
  05  01  09  06  a1  01  05  07  19  e0  29  e7  15  00  25  01 
  75  01  95  08  81  02  81  03  95  05  05  08  19  01  29  05 
  91  02  95  01  75  03  91  01  95  06  75  08  15  00  26  a4 
  00  05  07  19  00  2a  a4  00  81  00  c0  
  (59 bytes)
0000 0000: Apple - 
DESCRIPTOR:
  06  00  ff  0a  ff  00  a1  01  15  00  26  ff  00  75  08  95 
  01  81  02  c0  
  (20 bytes)
046D C52B: Logitech - USB Receiver
DESCRIPTOR:
  05  01  09  02  a1  01  85  02  09  01  a1  00  05  09  19  01 
  29  10  15  00  25  01  95  10  75  01  81  02  05  01  16  01 
  f8  26  ff  07  75  0c  95  02  09  30  09  31  81  06  15  81 
  25  7f  75  08  95  01  09  38  81  06  05  0c  0a  38  02  95 
  01  81  06  c0  c0  05  0c  09  01  a1  01  85  03  75  10  95 
  02  15  01  26  ff  02  19  01  2a  ff  02  81  00  c0  05  01 
  09  80  a1  01  85  04  75  02  95  01  15  01  25  03  09  82 
  09  81  09  83  81  60  75  06  81  03  c0  06  bc  ff  09  88 
  a1  01  85  08  19  01  29  ff  15  01  26  ff  00  75  08  95 
  01  81  00  c0  
  (148 bytes)
045E 02FD: Unknown - Xbox Wireless Controller
DESCRIPTOR:
  05  01  09  05  a1  01  85  01  09  01  a1  00  09  30  09  31 
  15  00  27  ff  ff  00  00  95  02  75  10  81  02  c0  09  01 
  a1  00  09  32  09  35  15  00  27  ff  ff  00  00  95  02  75 
  10  81  02  c0  05  02  09  c5  15  00  26  ff  03  95  01  75 
  0a  81  02  15  00  25  00  75  06  95  01  81  03  05  02  09 
  c4  15  00  26  ff  03  95  01  75  0a  81  02  15  00  25  00 
  75  06  95  01  81  03  05  01  09  39  15  01  25  08  35  00 
  46  3b  01  66  14  00  75  04  95  01  81  42  75  04  95  01 
  15  00  25  00  35  00  45  00  65  00  81  03  05  09  19  01 
  29  0f  15  00  25  01  75  01  95  0f  81  02  15  00  25  00 
  75  01  95  01  81  03  05  0c  0a  24  02  15  00  25  01  95 
  01  75  01  81  02  15  00  25  00  75  07  95  01  81  03  05 
  0c  09  01  85  02  a1  01  05  0c  0a  23  02  15  00  25  01 
  95  01  75  01  81  02  15  00  25  00  75  07  95  01  81  03 
  c0  05  0f  09  21  85  03  a1  02  09  97  15  00  25  01  75 
  04  95  01  91  02  15  00  25  00  75  04  95  01  91  03  09 
  70  15  00  25  64  75  08  95  04  91  02  09  50  66  01  10 
  55  0e  15  00  26  ff  00  75  08  95  01  91  02  09  a7  15 
  00  26  ff  00  75  08  95  01  91  02  65  00  55  00  09  7c 
  15  00  26  ff  00  75  08  95  01  91  02  c0  85  04  05  06 
  09  20  15  00  26  ff  00  75  08  95  01  81  02  c0  
  (334 bytes)
047F C025: Plantronics - Plantronics C320-M
DESCRIPTOR:
  05  0c  09  01  a1  01  85  01  15  00  25  01  09  e9  09  ea 
  75  01  95  02  81  06  95  06  81  01  85  02  05  0c  09  00 
  95  10  81  02  85  04  09  00  75  08  95  24  91  02  85  05 
  09  00  95  20  81  02  85  06  09  00  95  24  91  02  85  07 
  09  00  95  20  81  02  c0  05  0b  09  05  a1  01  85  08  15 
  00  25  01  09  2f  75  01  95  01  81  06  09  20  09  21  75 
  01  95  02  81  22  95  05  81  01  05  08  85  09  09  09  95 
  01  91  22  95  07  91  01  85  17  09  17  95  01  91  22  95 
  07  91  01  85  18  09  18  95  01  91  22  95  07  91  01  85 
  1e  09  1e  95  01  91  22  95  07  91  01  85  20  09  20  95 
  01  91  22  95  07  91  01  85  2a  09  2a  95  01  91  22  95 
  07  91  01  c0  06  a0  ff  09  01  a1  01  85  03  09  30  75 
  08  95  20  91  02  85  03  09  30  75  08  95  20  81  02  85 
  14  09  b1  09  b2  09  b5  09  b7  09  b3  15  00  25  01  75 
  01  95  05  81  06  95  03  81  01  85  15  09  8c  15  00  27 
  ff  ff  00  00  75  10  95  01  81  22  85  19  09  8d  09  8f 
  09  9e  09  dc  15  00  25  01  75  01  95  04  91  22  09  d2 
  09  d9  15  00  25  01  75  01  95  02  91  06  95  02  91  01 
  85  1a  09  b5  15  00  25  01  75  01  95  01  91  22  95  07 
  91  01  85  1b  09  cf  09  b5  09  de  75  01  95  03  b1  22 
  09  d8  95  01  b1  23  95  04  b1  01  09  09  09  17  09  18 
  09  1e  09  20  09  2a  75  01  95  06  b1  22  95  02  b1  01 
  85  1f  09  9c  75  01  95  01  81  06  95  07  81  01  c0  
  (367 bytes)
046D C52B: Logitech - USB Receiver
DESCRIPTOR:
  06  00  ff  09  01  a1  01  85  10  75  08  95  06  15  00  26 
  ff  00  09  01  81  00  09  01  91  00  c0  06  00  ff  09  02 
  a1  01  85  11  75  08  95  13  15  00  26  ff  00  09  02  81 
  00  09  02  91  00  c0  06  00  ff  09  04  a1  01  85  20  75 
  08  95  0e  15  00  26  ff  00  09  41  81  00  09  41  91  00 
  85  21  95  1f  15  00  26  ff  00  09  42  81  00  09  42  91 
  00  c0  
  (98 bytes)
0000 0000: APPL - BTM
DESCRIPTOR:
  06  00  ff  0a  48  00  a1  01  06  29  ff  85  01  25  7f  95 
  01  75  08  09  01  b1  02  09  02  b1  02  09  25  a1  03  85 
  02  24  76  98  3e  09  03  81  22  09  04  76  38  02  b1  02 
  c0  c0  
  (50 bytes)
@Youw It seems that the macOS codes can not print out the HID report descriptor from my Microsoft Xbox One S Wireless Controller (bluetooth connection). On the other hand, mac-hid-dump has no issues. <details> <summary> click to expand </summary> ``` hidapi_report on  get-descriptor via △ v3.21.1 took 2s ❯ ./hidtest/hidtest hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0. Compile-time version matches runtime version of hidapi. Device Found type: 045e 02fd path: IOService:/IOResources/IOBluetoothHCIController/AppleBroadcomBluetoothHostController/IOBluetoothDevice/IOBluetoothL2CAPChannel/IOBluetoothHIDDriver serial_number: 9c-aa-1b-1c-ca-e2 Manufacturer: Unknown Product: Xbox Wireless Controller Release: 903 Interface: -1 Usage (page): 0x5 (0x1) Report Descriptor: not available. Device Found type: 045e 02fd path: IOService:/IOResources/IOBluetoothHCIController/AppleBroadcomBluetoothHostController/IOBluetoothDevice/IOBluetoothL2CAPChannel/IOBluetoothHIDDriver serial_number: 9c-aa-1b-1c-ca-e2 Manufacturer: Unknown Product: Xbox Wireless Controller Release: 903 Interface: -1 Usage (page): 0x1 (0x1) Report Descriptor: not available. Device Found type: 045e 02fd path: IOService:/IOResources/IOBluetoothHCIController/AppleBroadcomBluetoothHostController/IOBluetoothDevice/IOBluetoothL2CAPChannel/IOBluetoothHIDDriver serial_number: 9c-aa-1b-1c-ca-e2 Manufacturer: Unknown Product: Xbox Wireless Controller Release: 903 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: not available. Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xc) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x5 (0xb) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xffa0) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x2 (0x1) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0x1) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0xc) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x80 (0x1) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x88 (0xffbc) Report Descriptor: not available. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice serial_number: Manufacturer: Apple Product: Release: 0 Interface: -1 Usage (page): 0xff (0xff00) Report Descriptor: (20 bytes) 0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: not available. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM serial_number: Manufacturer: APPL Product: BTM Release: 0 Interface: -1 Usage (page): 0x48 (0xff00) Report Descriptor: (50 bytes) 0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey serial_number: Manufacturer: Apple Product: Headset Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (29 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x1 (0xff00) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x2 (0xff00) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x4 (0xff00) Report Descriptor: not available. unable to open device mac-hid-dump on  main ❯ ./mac-hid-dump mac-hid-dump: 0000 0000: Apple - Headset DESCRIPTOR: 05 0c 09 01 a1 01 05 0c 09 cd 09 ea 09 e9 15 00 25 01 95 03 75 01 81 02 95 05 81 05 c0 (29 bytes) 046D C52B: Logitech - USB Receiver DESCRIPTOR: 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 81 03 95 05 05 08 19 01 29 05 91 02 95 01 75 03 91 01 95 06 75 08 15 00 26 a4 00 05 07 19 00 2a a4 00 81 00 c0 (59 bytes) 0000 0000: Apple - DESCRIPTOR: 06 00 ff 0a ff 00 a1 01 15 00 26 ff 00 75 08 95 01 81 02 c0 (20 bytes) 046D C52B: Logitech - USB Receiver DESCRIPTOR: 05 01 09 02 a1 01 85 02 09 01 a1 00 05 09 19 01 29 10 15 00 25 01 95 10 75 01 81 02 05 01 16 01 f8 26 ff 07 75 0c 95 02 09 30 09 31 81 06 15 81 25 7f 75 08 95 01 09 38 81 06 05 0c 0a 38 02 95 01 81 06 c0 c0 05 0c 09 01 a1 01 85 03 75 10 95 02 15 01 26 ff 02 19 01 2a ff 02 81 00 c0 05 01 09 80 a1 01 85 04 75 02 95 01 15 01 25 03 09 82 09 81 09 83 81 60 75 06 81 03 c0 06 bc ff 09 88 a1 01 85 08 19 01 29 ff 15 01 26 ff 00 75 08 95 01 81 00 c0 (148 bytes) 045E 02FD: Unknown - Xbox Wireless Controller DESCRIPTOR: 05 01 09 05 a1 01 85 01 09 01 a1 00 09 30 09 31 15 00 27 ff ff 00 00 95 02 75 10 81 02 c0 09 01 a1 00 09 32 09 35 15 00 27 ff ff 00 00 95 02 75 10 81 02 c0 05 02 09 c5 15 00 26 ff 03 95 01 75 0a 81 02 15 00 25 00 75 06 95 01 81 03 05 02 09 c4 15 00 26 ff 03 95 01 75 0a 81 02 15 00 25 00 75 06 95 01 81 03 05 01 09 39 15 01 25 08 35 00 46 3b 01 66 14 00 75 04 95 01 81 42 75 04 95 01 15 00 25 00 35 00 45 00 65 00 81 03 05 09 19 01 29 0f 15 00 25 01 75 01 95 0f 81 02 15 00 25 00 75 01 95 01 81 03 05 0c 0a 24 02 15 00 25 01 95 01 75 01 81 02 15 00 25 00 75 07 95 01 81 03 05 0c 09 01 85 02 a1 01 05 0c 0a 23 02 15 00 25 01 95 01 75 01 81 02 15 00 25 00 75 07 95 01 81 03 c0 05 0f 09 21 85 03 a1 02 09 97 15 00 25 01 75 04 95 01 91 02 15 00 25 00 75 04 95 01 91 03 09 70 15 00 25 64 75 08 95 04 91 02 09 50 66 01 10 55 0e 15 00 26 ff 00 75 08 95 01 91 02 09 a7 15 00 26 ff 00 75 08 95 01 91 02 65 00 55 00 09 7c 15 00 26 ff 00 75 08 95 01 91 02 c0 85 04 05 06 09 20 15 00 26 ff 00 75 08 95 01 81 02 c0 (334 bytes) 047F C025: Plantronics - Plantronics C320-M DESCRIPTOR: 05 0c 09 01 a1 01 85 01 15 00 25 01 09 e9 09 ea 75 01 95 02 81 06 95 06 81 01 85 02 05 0c 09 00 95 10 81 02 85 04 09 00 75 08 95 24 91 02 85 05 09 00 95 20 81 02 85 06 09 00 95 24 91 02 85 07 09 00 95 20 81 02 c0 05 0b 09 05 a1 01 85 08 15 00 25 01 09 2f 75 01 95 01 81 06 09 20 09 21 75 01 95 02 81 22 95 05 81 01 05 08 85 09 09 09 95 01 91 22 95 07 91 01 85 17 09 17 95 01 91 22 95 07 91 01 85 18 09 18 95 01 91 22 95 07 91 01 85 1e 09 1e 95 01 91 22 95 07 91 01 85 20 09 20 95 01 91 22 95 07 91 01 85 2a 09 2a 95 01 91 22 95 07 91 01 c0 06 a0 ff 09 01 a1 01 85 03 09 30 75 08 95 20 91 02 85 03 09 30 75 08 95 20 81 02 85 14 09 b1 09 b2 09 b5 09 b7 09 b3 15 00 25 01 75 01 95 05 81 06 95 03 81 01 85 15 09 8c 15 00 27 ff ff 00 00 75 10 95 01 81 22 85 19 09 8d 09 8f 09 9e 09 dc 15 00 25 01 75 01 95 04 91 22 09 d2 09 d9 15 00 25 01 75 01 95 02 91 06 95 02 91 01 85 1a 09 b5 15 00 25 01 75 01 95 01 91 22 95 07 91 01 85 1b 09 cf 09 b5 09 de 75 01 95 03 b1 22 09 d8 95 01 b1 23 95 04 b1 01 09 09 09 17 09 18 09 1e 09 20 09 2a 75 01 95 06 b1 22 95 02 b1 01 85 1f 09 9c 75 01 95 01 81 06 95 07 81 01 c0 (367 bytes) 046D C52B: Logitech - USB Receiver DESCRIPTOR: 06 00 ff 09 01 a1 01 85 10 75 08 95 06 15 00 26 ff 00 09 01 81 00 09 01 91 00 c0 06 00 ff 09 02 a1 01 85 11 75 08 95 13 15 00 26 ff 00 09 02 81 00 09 02 91 00 c0 06 00 ff 09 04 a1 01 85 20 75 08 95 0e 15 00 26 ff 00 09 41 81 00 09 41 91 00 85 21 95 1f 15 00 26 ff 00 09 42 81 00 09 42 91 00 c0 (98 bytes) 0000 0000: APPL - BTM DESCRIPTOR: 06 00 ff 0a 48 00 a1 01 06 29 ff 85 01 25 7f 95 01 75 08 09 01 b1 02 09 02 b1 02 09 25 a1 03 85 02 24 76 98 3e 09 03 81 22 09 04 76 38 02 b1 02 c0 c0 (50 bytes) ``` </details>
Youw commented 2021-08-02 06:34:56 -05:00 (Migrated from github.com)

@mcuee, could you try to modify this line?
github.com/libusb/hidapi@26d45bf427/mac/hid.c (L794)

Make it:

ret = IOHIDDeviceOpen(dev->device_handle, 0);

and let see if it helps

@mcuee, could you try to modify this line? https://github.com/libusb/hidapi/blob/26d45bf4272ddcf4c845a5f28e5c451cf7999695/mac/hid.c#L794 Make it: ```c ret = IOHIDDeviceOpen(dev->device_handle, 0); ``` and let see if it helps
mcuee commented 2021-08-02 07:13:28 -05:00 (Migrated from github.com)

@Youw No, this does not seem to be good enough.

click to expand

hidapi_report on  get-descriptor [!] via △ v3.21.1 ❯ ./hidtest/hidtest 
hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey
  serial_number: 
  Manufacturer: Apple
  Product:      Headset
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (29 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 
0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 
0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x1 (0xff00)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x2 (0xff00)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x4 (0xff00)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x2 (0x1)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0x1)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0xc)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x80 (0x1)
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM
  serial_number: 
  Manufacturer: APPL
  Product:      BTM
  Release:      0
  Interface:    -1
  Usage (page): 0x48 (0xff00)
  Report Descriptor: (50 bytes)
0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 
0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 
0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 
0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 
0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xc)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x5 (0xb)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xffa0)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice
  serial_number: 
  Manufacturer: Apple
  Product:      
  Release:      0
  Interface:    -1
  Usage (page): 0xff (0xff00)
  Report Descriptor: (20 bytes)
0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, 

unable to open device

@Youw No, this does not seem to be good enough. <details> <summary> click to expand </summary> ``` hidapi_report on  get-descriptor [!] via △ v3.21.1 ❯ ./hidtest/hidtest hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0. Compile-time version matches runtime version of hidapi. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey serial_number: Manufacturer: Apple Product: Headset Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (29 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x1 (0xff00) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x2 (0xff00) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x4 (0xff00) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x2 (0x1) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0x1) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0xc) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x80 (0x1) Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x88 (0xffbc) Report Descriptor: not available. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM serial_number: Manufacturer: APPL Product: BTM Release: 0 Interface: -1 Usage (page): 0x48 (0xff00) Report Descriptor: (50 bytes) 0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xc) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x5 (0xb) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xffa0) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: not available. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice serial_number: Manufacturer: Apple Product: Release: 0 Interface: -1 Usage (page): 0xff (0xff00) Report Descriptor: (20 bytes) 0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, unable to open device ``` </details>
Youw commented 2021-08-02 07:29:22 -05:00 (Migrated from github.com)

interesting
need to debug hid_open_path - on which step does it fail, and with what error

interesting need to debug `hid_open_path` - on which step does it fail, and with what error
mcuee commented 2021-08-04 08:27:47 -05:00 (Migrated from github.com)

interesting
need to debug hid_open_path - on which step does it fail, and with what error

@youw Any pointer of debug messages to print out? So you think the issue is not the added codes github.com/libusb/hidapi@0db25f9132 but with existing hid_open_path codes for macOS?

> interesting > need to debug `hid_open_path` - on which step does it fail, and with what error @youw Any pointer of debug messages to print out? So you think the issue is not the added codes https://github.com/libusb/hidapi/commit/0db25f9132efaa3dfed3e376ba4cfea5e7c7fed8 but with existing hid_open_path codes for macOS?
mcuee commented 2021-08-06 19:53:22 -05:00 (Migrated from github.com)

Okay, here is the git diff I used to troubleshoot the issue.

hidapi_report on  get-descriptor [!?] via △ v3.21.1 ❯ git diff          
diff --git a/mac/hid.c b/mac/hid.c
index c3f0485..e7139fe 100644
--- a/mac/hid.c
+++ b/mac/hid.c
@@ -780,6 +780,7 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path)
        entry = IORegistryEntryFromPath(kIOMasterPortDefault, path);
        if (entry == MACH_PORT_NULL) {
                /* Path wasn't valid (maybe device was removed?) */
+               printf("HID device path invalid, maybe removed. \n");           
                goto return_error;
        }
 
@@ -787,11 +788,12 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path)
        dev->device_handle = IOHIDDeviceCreate(kCFAllocatorDefault, entry);
        if (dev->device_handle == NULL) {
                /* Error creating the HID device */
+               printf("Failed to create the HID device.\n");
                goto return_error;
        }
 
        /* Open the IOHIDDevice */
-       ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeSeizeDevice);
+       ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone);
        if (ret == kIOReturnSuccess) {
                char str[32];
 
@@ -821,6 +823,7 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path)
                return dev;
        }
        else {
+               printf("Failed to open device for access.\n");
                goto return_error;
        }
 

Here is the output.

click to expand
riptor [!?] via △ v3.21.1 ❯ ./hidtest/hidtest 
hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey
  serial_number: 
  Manufacturer: Apple
  Product:      Headset
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (29 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 
0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 
0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice
  serial_number: 
  Manufacturer: Apple
  Product:      
  Release:      0
  Interface:    -1
  Usage (page): 0xff (0xff00)
  Report Descriptor: (20 bytes)
0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x1 (0xff00)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x2 (0xff00)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x4 (0xff00)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM
  serial_number: 
  Manufacturer: APPL
  Product:      BTM
  Release:      0
  Interface:    -1
  Usage (page): 0x48 (0xff00)
  Report Descriptor: (50 bytes)
0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 
0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 
0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 
0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 
0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xc)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x5 (0xb)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xffa0)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x2 (0x1)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0x1)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0xc)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x80 (0x1)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

Device Found
  type: 046d c52b
  path: 
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x88 (0xffbc)
HID device path invalid, maybe removed. 
  Report Descriptor: not available.

unable to open device
Okay, here is the git diff I used to troubleshoot the issue. ``` hidapi_report on  get-descriptor [!?] via △ v3.21.1 ❯ git diff diff --git a/mac/hid.c b/mac/hid.c index c3f0485..e7139fe 100644 --- a/mac/hid.c +++ b/mac/hid.c @@ -780,6 +780,7 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path) entry = IORegistryEntryFromPath(kIOMasterPortDefault, path); if (entry == MACH_PORT_NULL) { /* Path wasn't valid (maybe device was removed?) */ + printf("HID device path invalid, maybe removed. \n"); goto return_error; } @@ -787,11 +788,12 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path) dev->device_handle = IOHIDDeviceCreate(kCFAllocatorDefault, entry); if (dev->device_handle == NULL) { /* Error creating the HID device */ + printf("Failed to create the HID device.\n"); goto return_error; } /* Open the IOHIDDevice */ - ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeSeizeDevice); + ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone); if (ret == kIOReturnSuccess) { char str[32]; @@ -821,6 +823,7 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path) return dev; } else { + printf("Failed to open device for access.\n"); goto return_error; } ``` Here is the output. <details> <summary> click to expand </summary> ``` riptor [!?] via △ v3.21.1 ❯ ./hidtest/hidtest hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0. Compile-time version matches runtime version of hidapi. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey serial_number: Manufacturer: Apple Product: Headset Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (29 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice serial_number: Manufacturer: Apple Product: Release: 0 Interface: -1 Usage (page): 0xff (0xff00) Report Descriptor: (20 bytes) 0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x1 (0xff00) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x2 (0xff00) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x4 (0xff00) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM serial_number: Manufacturer: APPL Product: BTM Release: 0 Interface: -1 Usage (page): 0x48 (0xff00) Report Descriptor: (50 bytes) 0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xc) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x5 (0xb) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xffa0) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x2 (0x1) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0x1) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0xc) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x80 (0x1) HID device path invalid, maybe removed. Report Descriptor: not available. Device Found type: 046d c52b path: serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x88 (0xffbc) HID device path invalid, maybe removed. Report Descriptor: not available. unable to open device ``` </details>
mcuee commented 2021-08-06 19:54:51 -05:00 (Migrated from github.com)

@Youw So basically the Logitech device does not show proper path. mac_hid_dump (https://github.com/todbot/mac-hid-dump/blob/main/mac-hid-dump.c) does not use the path so it does not have such issue.

@Youw So basically the Logitech device does not show proper path. mac_hid_dump (https://github.com/todbot/mac-hid-dump/blob/main/mac-hid-dump.c) does not use the path so it does not have such issue.
mcuee commented 2021-08-06 20:27:27 -05:00 (Migrated from github.com)

@Youw Okay, I figured out the issue, the issue is not with your codes, but rather #236. I have two external hubs (USB 3.0 --> USB 2.0) so the path is too long. My External Hubs are more complicated hubs (nested hub).

Once I move the Logitech receiver to the root hub, it will mostly succeed. If I move it to the Port 7 of the first external USB 3.0 hub , it is still not working though.

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02240000/USB Receiver@02240000/IOUSBHostInterface@0/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: not available.

If I moved it to the Port 1 of the external USB hub, it will mostly succeed.

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02211000/USB Receiver@02211000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

If I move it to the root hub, almost everything will succeed, except one.

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@0/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: not available.

Full output once I move the receiver to the root hub.

click to expand
hidapi_report/build on  get-descriptor [?] via △ v3.21.1 ❯ ./hidtest/hidtest
hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@2/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x1 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@2/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x2 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@2/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x4 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@0/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice
  serial_number: 
  Manufacturer: Apple
  Product:      
  Release:      0
  Interface:    -1
  Usage (page): 0xff (0xff00)
  Report Descriptor: (20 bytes)
0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, 

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM
  serial_number: 
  Manufacturer: APPL
  Product:      BTM
  Release:      0
  Interface:    -1
  Usage (page): 0x48 (0xff00)
  Report Descriptor: (50 bytes)
0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 
0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 
0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 
0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 
0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xc)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x5 (0xb)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xffa0)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x2 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x80 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 0000 0000
  path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey
  serial_number: 
  Manufacturer: Apple
  Product:      Headset
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (29 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 
0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 
0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, 
@Youw Okay, I figured out the issue, the issue is not with your codes, but rather #236. I have two external hubs (USB 3.0 --> USB 2.0) so the path is too long. My External Hubs are more complicated hubs (nested hub). Once I move the Logitech receiver to the root hub, it will mostly succeed. If I move it to the Port 7 of the first external USB 3.0 hub , it is still not working though. ``` Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02240000/USB Receiver@02240000/IOUSBHostInterface@0/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: not available. ``` If I moved it to the Port 1 of the external USB hub, it will mostly succeed. ``` Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02211000/USB Receiver@02211000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x88 (0xffbc) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, ``` If I move it to the root hub, almost everything will succeed, except one. ``` Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@0/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: not available. ``` Full output once I move the receiver to the root hub. <details> <summary> click to expand </summary> ``` hidapi_report/build on  get-descriptor [?] via △ v3.21.1 ❯ ./hidtest/hidtest hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0. Compile-time version matches runtime version of hidapi. Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@2/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x1 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@2/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x2 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@2/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x4 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@0/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: not available. Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/aop@4A400000/AppleASCWrapV4/iop-aop-nub/RTBuddyV2/AOPEndpoint6/AppleSPU@10000001/wakehint/AppleSPUHIDDevice serial_number: Manufacturer: Apple Product: Release: 0 Interface: -1 Usage (page): 0xff (0xff00) Report Descriptor: (20 bytes) 0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/nub-spmi@3D0D9300/AppleT8101SPMIController/btm@F/AppleBTM serial_number: Manufacturer: APPL Product: BTM Release: 0 Interface: -1 Usage (page): 0x48 (0xff00) Report Descriptor: (50 bytes) 0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xc) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x5 (0xb) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port2@02200000/4-Port USB 2.0 Hub@02200000/AppleUSB20Hub@02200000/AppleUSB20HubPort@02210000/4-Port USB 2.0 Hub@02210000/AppleUSB20Hub@02210000/AppleUSB20HubPort@02212000/USB 2.0 Hub [MTT]@02212000/AppleUSB20Hub@02212000/AppleUSB20HubPort@02212600/Plantronics C320-M@02212600/IOUSBHostInterface@3/AppleUserUSBHostHIDDevice serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xffa0) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x2 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0xc) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x80 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/apcie@90000000/AppleT8103PCIe/pci-bridge1@1/IOPP/pcie-xhci@0/AppleT8103USBXHCIFL1100@02000000/pcie-xhci-hs-port1@02100000/USB Receiver@02100000/IOUSBHostInterface@1/AppleUserUSBHostHIDDevice serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x88 (0xffbc) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 0000 0000 path: IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/i2c2@35018000/AppleS5L8940XI2CController/audio-codec-output@48/AppleCS42L83Audio/AppleCS42L83Mikey serial_number: Manufacturer: Apple Product: Headset Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (29 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, ``` </details>
Youw commented 2021-08-12 03:42:43 -05:00 (Migrated from github.com)

Okay, I figured out the issue, the issue is not with your codes, but rather #236.

GJ finding that out. So it works from the ROOT hub with the original implementation (with kIOHIDOptionsTypeSeizeDevice)?

> Okay, I figured out the issue, the issue is not with your codes, but rather #236. GJ finding that out. So it works from the ROOT hub with the original implementation (with `kIOHIDOptionsTypeSeizeDevice`)?
mcuee commented 2021-08-12 04:05:44 -05:00 (Migrated from github.com)

GJ finding that out. So it works from the ROOT hub with the original implementation (with kIOHIDOptionsTypeSeizeDevice)?

Yes that is correct, except one device as mentioned above. I tend to think it may still be due to #236.

> GJ finding that out. So it works from the ROOT hub with the original implementation (with `kIOHIDOptionsTypeSeizeDevice`)? Yes that is correct, except one device as mentioned above. I tend to think it may still be due to #236.
mcuee commented 2021-08-25 06:30:18 -05:00 (Migrated from github.com)

https://github.com/libusb/hidapi/pull/322 has been merged. So I apply the two patches from the macOS get-descriptor branch and here is the result. The way I apply the patch may not be so correct but the patching is successful.

Only one output is a bit strange.

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969637
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: not available.
hidapi on  master [?] via △ v3.21.1 ❯ git branch mytest

hidapi on  master [?] via △ v3.21.1 ❯ git checkout mytest
Switched to branch 'mytest'
		
hidapi on  mytest [?] via △ v3.21.1 ❯ wget https://github.com/libusb/hidapi/commit/0db25f9132efaa3dfed3e376ba4cfea5e7c7fed8.patch
...

2021-08-25 19:16:44 (23.1 MB/s) - ‘0db25f9132efaa3dfed3e376ba4cfea5e7c7fed8.patch’ saved [5560/5560]

hidapi on  mytest [?] via △ v3.21.1 ❯ git apply 0db25f9132efaa3dfed3e376ba4cfea5e7c7fed8.patch 
hidapi on  mytest [!?] via △ v3.21.1 took 9s ❯ wget https://github.com/libusb/hidapi/commit/26d45bf4272ddcf4c845a5f28e5c451cf7999695.patch
...
2021-08-25 19:17:52 (2.32 MB/s) - ‘26d45bf4272ddcf4c845a5f28e5c451cf7999695.patch’ saved [592/592]

hidapi on  mytest [!?] via △ v3.21.1 ❯ git apply 26d45bf4272ddcf4c845a5f28e5c451cf7999695.patch 

hidapi/buildtest on  mytest [!?] via △ v3.21.1 ❯ ./hidtest/hidtest 
hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 0000 0000
  path: DevSrvsID:4294969110
  serial_number: 
  Manufacturer: Apple
  Product:      
  Release:      0
  Interface:    -1
  Usage (page): 0xff (0xff00)
  Report Descriptor: (20 bytes)
0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, 

Device Found
  type: 047f c025
  path: DevSrvsID:4294969635
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xc)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: DevSrvsID:4294969635
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x5 (0xb)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: DevSrvsID:4294969635
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xffa0)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969643
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x1 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969643
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x2 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969643
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x4 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d 1000
  path: DevSrvsID:4294969732
  serial_number: 
  Manufacturer: Logitech
  Product:      LogiVirtualHIDDevice
  Release:      1
  Interface:    2
  Usage (page): 0x2 (0x1)
  Report Descriptor: (69 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 

Device Found
  type: 046d 1000
  path: DevSrvsID:4294969732
  serial_number: 
  Manufacturer: Logitech
  Product:      LogiVirtualHIDDevice
  Release:      1
  Interface:    2
  Usage (page): 0x1 (0x1)
  Report Descriptor: (69 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x2 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x80 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969637
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: not available.

Device Found
  type: 0000 0000
  path: DevSrvsID:4294968845
  serial_number: 
  Manufacturer: APPL
  Product:      BTM
  Release:      0
  Interface:    -1
  Usage (page): 0x48 (0xff00)
  Report Descriptor: (50 bytes)
0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 
0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 
0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 
0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 
0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, 

Device Found
  type: 0000 0000
  path: DevSrvsID:4294968508
  serial_number: 
  Manufacturer: Apple
  Product:      Headset
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (29 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 
0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 
0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, 

unable to open device

https://github.com/libusb/hidapi/pull/322 has been merged. So I apply the two patches from the macOS get-descriptor branch and here is the result. The way I apply the patch may not be so correct but the patching is successful. Only one output is a bit strange. ``` Device Found type: 046d c52b path: DevSrvsID:4294969637 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: not available. ``` ``` hidapi on  master [?] via △ v3.21.1 ❯ git branch mytest hidapi on  master [?] via △ v3.21.1 ❯ git checkout mytest Switched to branch 'mytest' hidapi on  mytest [?] via △ v3.21.1 ❯ wget https://github.com/libusb/hidapi/commit/0db25f9132efaa3dfed3e376ba4cfea5e7c7fed8.patch ... 2021-08-25 19:16:44 (23.1 MB/s) - ‘0db25f9132efaa3dfed3e376ba4cfea5e7c7fed8.patch’ saved [5560/5560] hidapi on  mytest [?] via △ v3.21.1 ❯ git apply 0db25f9132efaa3dfed3e376ba4cfea5e7c7fed8.patch hidapi on  mytest [!?] via △ v3.21.1 took 9s ❯ wget https://github.com/libusb/hidapi/commit/26d45bf4272ddcf4c845a5f28e5c451cf7999695.patch ... 2021-08-25 19:17:52 (2.32 MB/s) - ‘26d45bf4272ddcf4c845a5f28e5c451cf7999695.patch’ saved [592/592] hidapi on  mytest [!?] via △ v3.21.1 ❯ git apply 26d45bf4272ddcf4c845a5f28e5c451cf7999695.patch hidapi/buildtest on  mytest [!?] via △ v3.21.1 ❯ ./hidtest/hidtest hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0. Compile-time version matches runtime version of hidapi. Device Found type: 0000 0000 path: DevSrvsID:4294969110 serial_number: Manufacturer: Apple Product: Release: 0 Interface: -1 Usage (page): 0xff (0xff00) Report Descriptor: (20 bytes) 0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, Device Found type: 047f c025 path: DevSrvsID:4294969635 serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xc) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: DevSrvsID:4294969635 serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x5 (0xb) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: DevSrvsID:4294969635 serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xffa0) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969643 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x1 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969643 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x2 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969643 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x4 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d 1000 path: DevSrvsID:4294969732 serial_number: Manufacturer: Logitech Product: LogiVirtualHIDDevice Release: 1 Interface: 2 Usage (page): 0x2 (0x1) Report Descriptor: (69 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 046d 1000 path: DevSrvsID:4294969732 serial_number: Manufacturer: Logitech Product: LogiVirtualHIDDevice Release: 1 Interface: 2 Usage (page): 0x1 (0x1) Report Descriptor: (69 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x2 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0xc) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x80 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x88 (0xffbc) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969637 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: not available. Device Found type: 0000 0000 path: DevSrvsID:4294968845 serial_number: Manufacturer: APPL Product: BTM Release: 0 Interface: -1 Usage (page): 0x48 (0xff00) Report Descriptor: (50 bytes) 0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, Device Found type: 0000 0000 path: DevSrvsID:4294968508 serial_number: Manufacturer: Apple Product: Headset Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (29 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, unable to open device ```
mcuee commented 2021-08-25 06:33:11 -05:00 (Migrated from github.com)

@Youw The issue goes away once I run with sudo. Not so sure why.

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969637
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: (59 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 
0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 
0x81, 0x02, 0x81, 0x03, 0x95, 0x05, 0x05, 0x08, 0x19, 0x01, 
0x29, 0x05, 0x91, 0x02, 0x95, 0x01, 0x75, 0x03, 0x91, 0x01, 
0x95, 0x06, 0x75, 0x08, 0x15, 0x00, 0x26, 0xa4, 0x00, 0x05, 
0x07, 0x19, 0x00, 0x2a, 0xa4, 0x00, 0x81, 0x00, 0xc0, 
hidapi/buildtest on  mytest [!?] via △ v3.21.1 ❯ sudo ./hidtest/hidtest
Password:
hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x2 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x80 (0x1)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969641
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    1
  Usage (page): 0x88 (0xffbc)
  Report Descriptor: (148 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 
0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 
0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 
0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 
0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 
0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 
0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 
0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 
0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, 

Device Found
  type: 0000 0000
  path: DevSrvsID:4294969110
  serial_number: 
  Manufacturer: Apple
  Product:      
  Release:      0
  Interface:    -1
  Usage (page): 0xff (0xff00)
  Report Descriptor: (20 bytes)
0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969637
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    0
  Usage (page): 0x6 (0x1)
  Report Descriptor: (59 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 
0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 
0x81, 0x02, 0x81, 0x03, 0x95, 0x05, 0x05, 0x08, 0x19, 0x01, 
0x29, 0x05, 0x91, 0x02, 0x95, 0x01, 0x75, 0x03, 0x91, 0x01, 
0x95, 0x06, 0x75, 0x08, 0x15, 0x00, 0x26, 0xa4, 0x00, 0x05, 
0x07, 0x19, 0x00, 0x2a, 0xa4, 0x00, 0x81, 0x00, 0xc0, 

Device Found
  type: 046d 1000
  path: DevSrvsID:4294969732
  serial_number: 
  Manufacturer: Logitech
  Product:      LogiVirtualHIDDevice
  Release:      1
  Interface:    2
  Usage (page): 0x2 (0x1)
  Report Descriptor: (69 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 

Device Found
  type: 046d 1000
  path: DevSrvsID:4294969732
  serial_number: 
  Manufacturer: Logitech
  Product:      LogiVirtualHIDDevice
  Release:      1
  Interface:    2
  Usage (page): 0x1 (0x1)
  Report Descriptor: (69 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 
0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 
0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 
0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 
0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 
0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 
0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 

Device Found
  type: 0000 0000
  path: DevSrvsID:4294968508
  serial_number: 
  Manufacturer: Apple
  Product:      Headset
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (29 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 
0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 
0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, 

Device Found
  type: 047f c025
  path: DevSrvsID:4294969635
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xc)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: DevSrvsID:4294969635
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x5 (0xb)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 047f c025
  path: DevSrvsID:4294969635
  serial_number: CB13A3E40E8E47D6A40769C27E90A38E
  Manufacturer: Plantronics
  Product:      Plantronics C320-M
  Release:      135
  Interface:    3
  Usage (page): 0x1 (0xffa0)
  Report Descriptor: (367 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 
0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 
0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 
0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 
0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 
0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 
0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 
0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 
0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 
0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 
0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 
0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 
0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 
0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 
0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 
0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 
0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 
0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 
0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 
0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 
0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 
0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 
0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 
0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 
0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 
0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 
0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 
0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 
0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 
0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 
0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 
0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, 

Device Found
  type: 0000 0000
  path: DevSrvsID:4294968845
  serial_number: 
  Manufacturer: APPL
  Product:      BTM
  Release:      0
  Interface:    -1
  Usage (page): 0x48 (0xff00)
  Report Descriptor: (50 bytes)
0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 
0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 
0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 
0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 
0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969643
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x1 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969643
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x2 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

Device Found
  type: 046d c52b
  path: DevSrvsID:4294969643
  serial_number: 
  Manufacturer: Logitech
  Product:      USB Receiver
  Release:      2410
  Interface:    2
  Usage (page): 0x4 (0xff00)
  Report Descriptor: (98 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 
0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 
0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 
0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 
0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 
0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 
0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 
0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 
0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 
0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, 

unable to open device

@Youw The issue goes away once I run with sudo. Not so sure why. ``` Device Found type: 046d c52b path: DevSrvsID:4294969637 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: (59 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x81, 0x03, 0x95, 0x05, 0x05, 0x08, 0x19, 0x01, 0x29, 0x05, 0x91, 0x02, 0x95, 0x01, 0x75, 0x03, 0x91, 0x01, 0x95, 0x06, 0x75, 0x08, 0x15, 0x00, 0x26, 0xa4, 0x00, 0x05, 0x07, 0x19, 0x00, 0x2a, 0xa4, 0x00, 0x81, 0x00, 0xc0, ``` ``` hidapi/buildtest on  mytest [!?] via △ v3.21.1 ❯ sudo ./hidtest/hidtest Password: hidapi test/example tool. Compiled with hidapi version 0.11.0, runtime version 0.11.0. Compile-time version matches runtime version of hidapi. Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x2 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x1 (0xc) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x80 (0x1) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969641 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 1 Usage (page): 0x88 (0xffbc) Report Descriptor: (148 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x75, 0x10, 0x95, 0x02, 0x15, 0x01, 0x26, 0xff, 0x02, 0x19, 0x01, 0x2a, 0xff, 0x02, 0x81, 0x00, 0xc0, 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x04, 0x75, 0x02, 0x95, 0x01, 0x15, 0x01, 0x25, 0x03, 0x09, 0x82, 0x09, 0x81, 0x09, 0x83, 0x81, 0x60, 0x75, 0x06, 0x81, 0x03, 0xc0, 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x08, 0x19, 0x01, 0x29, 0xff, 0x15, 0x01, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 0000 0000 path: DevSrvsID:4294969110 serial_number: Manufacturer: Apple Product: Release: 0 Interface: -1 Usage (page): 0xff (0xff00) Report Descriptor: (20 bytes) 0x06, 0x00, 0xff, 0x0a, 0xff, 0x00, 0xa1, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969637 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 0 Usage (page): 0x6 (0x1) Report Descriptor: (59 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x81, 0x03, 0x95, 0x05, 0x05, 0x08, 0x19, 0x01, 0x29, 0x05, 0x91, 0x02, 0x95, 0x01, 0x75, 0x03, 0x91, 0x01, 0x95, 0x06, 0x75, 0x08, 0x15, 0x00, 0x26, 0xa4, 0x00, 0x05, 0x07, 0x19, 0x00, 0x2a, 0xa4, 0x00, 0x81, 0x00, 0xc0, Device Found type: 046d 1000 path: DevSrvsID:4294969732 serial_number: Manufacturer: Logitech Product: LogiVirtualHIDDevice Release: 1 Interface: 2 Usage (page): 0x2 (0x1) Report Descriptor: (69 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 046d 1000 path: DevSrvsID:4294969732 serial_number: Manufacturer: Logitech Product: LogiVirtualHIDDevice Release: 1 Interface: 2 Usage (page): 0x1 (0x1) Report Descriptor: (69 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x10, 0x15, 0x00, 0x25, 0x01, 0x95, 0x10, 0x75, 0x01, 0x81, 0x02, 0x05, 0x01, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x09, 0x30, 0x09, 0x31, 0x81, 0x06, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x09, 0x38, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0000 0000 path: DevSrvsID:4294968508 serial_number: Manufacturer: Apple Product: Headset Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (29 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x05, 0x0c, 0x09, 0xcd, 0x09, 0xea, 0x09, 0xe9, 0x15, 0x00, 0x25, 0x01, 0x95, 0x03, 0x75, 0x01, 0x81, 0x02, 0x95, 0x05, 0x81, 0x05, 0xc0, Device Found type: 047f c025 path: DevSrvsID:4294969635 serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xc) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: DevSrvsID:4294969635 serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x5 (0xb) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 047f c025 path: DevSrvsID:4294969635 serial_number: CB13A3E40E8E47D6A40769C27E90A38E Manufacturer: Plantronics Product: Plantronics C320-M Release: 135 Interface: 3 Usage (page): 0x1 (0xffa0) Report Descriptor: (367 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x15, 0x00, 0x25, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x95, 0x06, 0x81, 0x01, 0x85, 0x02, 0x05, 0x0c, 0x09, 0x00, 0x95, 0x10, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x05, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0x85, 0x06, 0x09, 0x00, 0x95, 0x24, 0x91, 0x02, 0x85, 0x07, 0x09, 0x00, 0x95, 0x20, 0x81, 0x02, 0xc0, 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x15, 0x00, 0x25, 0x01, 0x09, 0x2f, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x95, 0x05, 0x81, 0x01, 0x05, 0x08, 0x85, 0x09, 0x09, 0x09, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x17, 0x09, 0x17, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x18, 0x09, 0x18, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1e, 0x09, 0x1e, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x20, 0x09, 0x20, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x2a, 0x09, 0x2a, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0xc0, 0x06, 0xa0, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x03, 0x09, 0x30, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x95, 0x03, 0x81, 0x01, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x95, 0x02, 0x91, 0x01, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x95, 0x07, 0x91, 0x01, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x09, 0xde, 0x75, 0x01, 0x95, 0x03, 0xb1, 0x22, 0x09, 0xd8, 0x95, 0x01, 0xb1, 0x23, 0x95, 0x04, 0xb1, 0x01, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x95, 0x02, 0xb1, 0x01, 0x85, 0x1f, 0x09, 0x9c, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x95, 0x07, 0x81, 0x01, 0xc0, Device Found type: 0000 0000 path: DevSrvsID:4294968845 serial_number: Manufacturer: APPL Product: BTM Release: 0 Interface: -1 Usage (page): 0x48 (0xff00) Report Descriptor: (50 bytes) 0x06, 0x00, 0xff, 0x0a, 0x48, 0x00, 0xa1, 0x01, 0x06, 0x29, 0xff, 0x85, 0x01, 0x25, 0x7f, 0x95, 0x01, 0x75, 0x08, 0x09, 0x01, 0xb1, 0x02, 0x09, 0x02, 0xb1, 0x02, 0x09, 0x25, 0xa1, 0x03, 0x85, 0x02, 0x24, 0x76, 0x98, 0x3e, 0x09, 0x03, 0x81, 0x22, 0x09, 0x04, 0x76, 0x38, 0x02, 0xb1, 0x02, 0xc0, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969643 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x1 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969643 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x2 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, Device Found type: 046d c52b path: DevSrvsID:4294969643 serial_number: Manufacturer: Logitech Product: USB Receiver Release: 2410 Interface: 2 Usage (page): 0x4 (0xff00) Report Descriptor: (98 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x75, 0x08, 0x95, 0x06, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x01, 0x81, 0x00, 0x09, 0x01, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x75, 0x08, 0x95, 0x13, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x02, 0x81, 0x00, 0x09, 0x02, 0x91, 0x00, 0xc0, 0x06, 0x00, 0xff, 0x09, 0x04, 0xa1, 0x01, 0x85, 0x20, 0x75, 0x08, 0x95, 0x0e, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x41, 0x81, 0x00, 0x09, 0x41, 0x91, 0x00, 0x85, 0x21, 0x95, 0x1f, 0x15, 0x00, 0x26, 0xff, 0x00, 0x09, 0x42, 0x81, 0x00, 0x09, 0x42, 0x91, 0x00, 0xc0, unable to open device ```
Youw commented 2021-08-25 06:41:07 -05:00 (Migrated from github.com)

The issue goes away once I run with sudo. Not so sure why.

Not sure either.
Does IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone); makes any difference?

> The issue goes away once I run with sudo. Not so sure why. Not sure either. Does `IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone);` makes any difference?
mcuee commented 2021-08-25 08:20:43 -05:00 (Migrated from github.com)

The issue goes away once I run with sudo. Not so sure why.

Not sure either.
Does IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone); makes any difference?

Indeed that makes the difference. With the change, no need to use sudo.

hidapi_report on  get-descriptor [!?] via △ v3.21.1 took 1m11s ❯ git diff
diff --git a/mac/hid.c b/mac/hid.c
index baaf4e1..f8d1a82 100644
--- a/mac/hid.c
+++ b/mac/hid.c
@@ -830,7 +830,7 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path)
        }
 
        /* Open the IOHIDDevice */
-       ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeSeizeDevice);
+       ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone);
        if (ret == kIOReturnSuccess) {
                char str[32];
> > The issue goes away once I run with sudo. Not so sure why. > > Not sure either. > Does `IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone);` makes any difference? Indeed that makes the difference. With the change, no need to use sudo. ``` hidapi_report on  get-descriptor [!?] via △ v3.21.1 took 1m11s ❯ git diff diff --git a/mac/hid.c b/mac/hid.c index baaf4e1..f8d1a82 100644 --- a/mac/hid.c +++ b/mac/hid.c @@ -830,7 +830,7 @@ hid_device * HID_API_EXPORT hid_open_path(const char *path) } /* Open the IOHIDDevice */ - ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeSeizeDevice); + ret = IOHIDDeviceOpen(dev->device_handle, kIOHIDOptionsTypeNone); if (ret == kIOReturnSuccess) { char str[32]; ```
Youw commented 2021-08-25 08:35:18 -05:00 (Migrated from github.com)

That means that there is another application/daemon running in the background that has that device opened.

That means that there is another application/daemon running in the background that has that device opened.
mcuee commented 2022-03-17 03:14:49 -05:00 (Migrated from github.com)

Just the latest test result from the get-descriptor branch under Windows.

Click for the run log
C:\work\hid\hidapi_test\hidapi\windows\x64\Release [get-descriptor ≡]> .\hidtest.exe
hidapi test/example tool. Compiled with hidapi version 0.11.2, runtime version 0.11.2.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 046d b010
  path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col04#8&1cf1c1b9&4&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0xff00)
  Report Descriptor: (36 bytes)
0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x09,
0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x13,
0x81, 0x00, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75,
0x08, 0x95, 0x13, 0x91, 0x00, 0xc0,

Device Found
  type: 046d b010
  path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col06#8&1cf1c1b9&4&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (31 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x05, 0x0a, 0x25,
0x02, 0x0a, 0x24, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x81, 0x02, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03,
0xc0,

Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Report Descriptor: (69 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03,
0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25,
0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0,

Device Found
  type: 8087 0a1e
  path: \\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xc (0x1)
  Report Descriptor: (27 bytes)
0x05, 0x01, 0x09, 0x0c, 0xa1, 0x01, 0x85, 0x08, 0x09, 0xc6,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0,

Device Found
  type: 044e 1212
  path: \\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Report Descriptor: (45 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x07, 0x05, 0x07,
0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03,
0x19, 0x00, 0x29, 0x75, 0x15, 0x00, 0x25, 0xff, 0x75, 0x08,
0x95, 0x06, 0x81, 0x00, 0xc0,

Device Found
  type: 8087 0a1e
  path: \\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)
  Report Descriptor: (50 bytes)
0x05, 0x01, 0x09, 0x0d, 0xa1, 0x01, 0x09, 0x0d, 0xa1, 0x02,
0x85, 0x1c, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03,
0x09, 0xcb, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01,
0xb1, 0x02, 0x75, 0x07, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0,

Device Found
  type: 044e 1212
  path: \\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Report Descriptor: (54 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x06, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x16, 0x00, 0xfe, 0x26, 0x00, 0x02, 0x75, 0x10, 0x95, 0x02,
0x81, 0x06, 0xc0, 0xc0,

Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x5 (0xd)
  Report Descriptor: (204 bytes)
0x05, 0x0d, 0x09, 0x05, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02,
0x85, 0x08, 0x09, 0x47, 0x09, 0x42, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x02, 0x81, 0x02, 0x09, 0x51, 0x15, 0x00,
0x25, 0x05, 0x75, 0x03, 0x95, 0x01, 0x81, 0x02, 0x75, 0x03,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x15, 0x00,
0x26, 0xaf, 0x04, 0x35, 0x00, 0x46, 0xe8, 0x03, 0x55, 0x0e,
0x65, 0x11, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x31,
0x15, 0x00, 0x26, 0x7b, 0x02, 0x35, 0x00, 0x46, 0x12, 0x02,
0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0xc0, 0x05, 0x0d, 0x09,
0x56, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x35, 0x00,
0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10,
0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x54, 0x15, 0x00,
0x25, 0x05, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x05, 0x09,
0x09, 0x02, 0x09, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0x81, 0x02,
0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x0d,
0x09, 0x55, 0x15, 0x00, 0x25, 0x05, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x01, 0xb1, 0x02, 0x85, 0x0a, 0x06, 0x00, 0xff, 0x09,
0xc5, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x96, 0x00,
0x01, 0xb1, 0x02, 0xc0,

Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x1 (0xc)
  Report Descriptor: (99 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x09, 0xe9,
0x09, 0xea, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02,
0x81, 0x06, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x02,
0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x10,
0x81, 0x02, 0x85, 0x05, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01,
0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x07, 0x09, 0x00,
0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02,
0x85, 0x04, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08,
0x95, 0x24, 0x91, 0x02, 0x85, 0x06, 0x09, 0x00, 0x15, 0x00,
0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0xc0,

Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (32 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0x09, 0xe9,
0x09, 0xea, 0x0a, 0x21, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75,
0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81,
0x03, 0xc0,

Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x5 (0xb)
  Report Descriptor: (163 bytes)
0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x09, 0x2f,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x09, 0x20, 0x09, 0x21, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x81, 0x22, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03,
0x85, 0x09, 0x05, 0x08, 0x09, 0x09, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x17, 0x09, 0x17, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x18, 0x09, 0x18, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x1e, 0x09, 0x1e, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x20, 0x09, 0x20, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x2a, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0xc0,

Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)
  Report Descriptor: (27 bytes)
0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x81,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0,

Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x3 (0xffa0)
  Report Descriptor: (235 bytes)
0x06, 0xa0, 0xff, 0x09, 0x03, 0xa1, 0x01, 0x85, 0x03, 0x09,
0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81,
0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09,
0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95,
0x05, 0x81, 0x06, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x85,
0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00,
0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x1f, 0x09, 0x9c,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x85, 0x03, 0x09, 0x30,
0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02,
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22,
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x91, 0x06, 0x75, 0x02, 0x95, 0x01, 0x91, 0x03,
0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03,
0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x02, 0xb1, 0x22, 0x09, 0xde, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x23, 0x09, 0xd8,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x22,
0x75, 0x04, 0x95, 0x01, 0xb1, 0x03, 0x09, 0x09, 0x09, 0x17,
0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x75, 0x02,
0x95, 0x01, 0xb1, 0x03, 0xc0,

Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff01)
  Report Descriptor: (80 bytes)
0x06, 0x01, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09,
0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x1b, 0x81, 0x02, 0x85, 0x04, 0x09, 0x02, 0x15, 0x00,
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85,
0x06, 0x09, 0x04, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08,
0x95, 0x07, 0x81, 0x02, 0x85, 0x05, 0x09, 0x03, 0x15, 0x00,
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0,

Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff02)
  Report Descriptor: (35 bytes)
0x06, 0x02, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x07, 0x09,
0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x86, 0xb1, 0x02, 0xc0,

Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0xe (0xd)
  Report Descriptor: (71 bytes)
0x05, 0x0d, 0x09, 0x0e, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02,
0x85, 0x0b, 0x09, 0x52, 0x15, 0x00, 0x25, 0x0a, 0x35, 0x00,
0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10,
0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0xc0, 0x09, 0x22, 0xa1,
0x00, 0x85, 0x0c, 0x09, 0x57, 0x09, 0x58, 0x15, 0x00, 0x25,
0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65,
0x00, 0xb1, 0x02, 0x75, 0x06, 0x95, 0x01, 0xb1, 0x03, 0xc0,
0xc0,

Device Found
  type: 046d b010
  path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col01#8&1cf1c1b9&4&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Report Descriptor: (75 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x02, 0x05, 0x09, 0x19, 0x01, 0x29, 0x08, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x05, 0x01,
0x09, 0x30, 0x09, 0x31, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07,
0x75, 0x0c, 0x95, 0x02, 0x81, 0x06, 0x09, 0x38, 0x15, 0x81,
0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0x05, 0x0c,
0x0a, 0x38, 0x02, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95,
0x01, 0x81, 0x06, 0xc0, 0xc0,

Device Found
  type: 046d b010
  path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col02#8&1cf1c1b9&4&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Report Descriptor: (23 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x05, 0x06,
0x09, 0x20, 0x15, 0x00, 0x25, 0x64, 0x75, 0x08, 0x95, 0x01,
0x81, 0x02, 0xc0,

Device Found
  type: 046d b010
  path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col05#8&1cf1c1b9&4&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Report Descriptor: (68 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x04, 0x05, 0x07,
0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03,
0x19, 0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75,
0x08, 0x95, 0x06, 0x81, 0x00, 0x05, 0x08, 0x19, 0x01, 0x29,
0x05, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x91,
0x02, 0x75, 0x03, 0x95, 0x01, 0x91, 0x03, 0xc0,

Device Found
  type: 046d b010
  path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col03#8&1cf1c1b9&4&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 34885dab0c12
  Manufacturer: Logitech
  Product:      Logitech Bluetooth Wireless Mouse
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xff00)
  Report Descriptor: (36 bytes)
0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x09,
0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x06,
0x81, 0x00, 0x09, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75,
0x08, 0x95, 0x06, 0x91, 0x00, 0xc0,

Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Report Descriptor: (37 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x01, 0x05, 0x07,
0x09, 0x69, 0x09, 0x6a, 0x09, 0x6b, 0x09, 0x6c, 0x09, 0xe3,
0x09, 0x4c, 0x09, 0xe2, 0x09, 0xe0, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0xc0,

unable to open device

Just the latest test result from the get-descriptor branch under Windows. <details> <summary> Click for the run log </summary> ``` C:\work\hid\hidapi_test\hidapi\windows\x64\Release [get-descriptor ≡]> .\hidtest.exe hidapi test/example tool. Compiled with hidapi version 0.11.2, runtime version 0.11.2. Compile-time version matches runtime version of hidapi. Device Found type: 046d b010 path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col04#8&1cf1c1b9&4&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0xff00) Report Descriptor: (36 bytes) 0x06, 0x00, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x11, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x13, 0x81, 0x00, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x13, 0x91, 0x00, 0xc0, Device Found type: 046d b010 path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col06#8&1cf1c1b9&4&0005#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (31 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x05, 0x0a, 0x25, 0x02, 0x0a, 0x24, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x02, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x2 (0x1) Report Descriptor: (69 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 8087 0a1e path: \\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xc (0x1) Report Descriptor: (27 bytes) 0x05, 0x01, 0x09, 0x0c, 0xa1, 0x01, 0x85, 0x08, 0x09, 0xc6, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 044e 1212 path: \\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Report Descriptor: (45 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x07, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00, 0x29, 0x75, 0x15, 0x00, 0x25, 0xff, 0x75, 0x08, 0x95, 0x06, 0x81, 0x00, 0xc0, Device Found type: 8087 0a1e path: \\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Report Descriptor: (50 bytes) 0x05, 0x01, 0x09, 0x0d, 0xa1, 0x01, 0x09, 0x0d, 0xa1, 0x02, 0x85, 0x1c, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x09, 0xcb, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x02, 0x75, 0x07, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0, Device Found type: 044e 1212 path: \\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Report Descriptor: (54 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x06, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x16, 0x00, 0xfe, 0x26, 0x00, 0x02, 0x75, 0x10, 0x95, 0x02, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x5 (0xd) Report Descriptor: (204 bytes) 0x05, 0x0d, 0x09, 0x05, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x85, 0x08, 0x09, 0x47, 0x09, 0x42, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x02, 0x09, 0x51, 0x15, 0x00, 0x25, 0x05, 0x75, 0x03, 0x95, 0x01, 0x81, 0x02, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x15, 0x00, 0x26, 0xaf, 0x04, 0x35, 0x00, 0x46, 0xe8, 0x03, 0x55, 0x0e, 0x65, 0x11, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x31, 0x15, 0x00, 0x26, 0x7b, 0x02, 0x35, 0x00, 0x46, 0x12, 0x02, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0xc0, 0x05, 0x0d, 0x09, 0x56, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x54, 0x15, 0x00, 0x25, 0x05, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x05, 0x09, 0x09, 0x02, 0x09, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0x81, 0x02, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x0d, 0x09, 0x55, 0x15, 0x00, 0x25, 0x05, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0x85, 0x0a, 0x06, 0x00, 0xff, 0x09, 0xc5, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x96, 0x00, 0x01, 0xb1, 0x02, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x1 (0xc) Report Descriptor: (99 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x02, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x10, 0x81, 0x02, 0x85, 0x05, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x07, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x06, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (32 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0x09, 0xe9, 0x09, 0xea, 0x0a, 0x21, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x5 (0xb) Report Descriptor: (163 bytes) 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x09, 0x2f, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x08, 0x09, 0x09, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x17, 0x09, 0x17, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x18, 0x09, 0x18, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1e, 0x09, 0x1e, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x20, 0x09, 0x20, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x2a, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Report Descriptor: (27 bytes) 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x3 (0xffa0) Report Descriptor: (235 bytes) 0x06, 0xa0, 0xff, 0x09, 0x03, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x1f, 0x09, 0x9c, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x85, 0x03, 0x09, 0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x75, 0x02, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0xb1, 0x22, 0x09, 0xde, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x23, 0x09, 0xd8, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x22, 0x75, 0x04, 0x95, 0x01, 0xb1, 0x03, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x75, 0x02, 0x95, 0x01, 0xb1, 0x03, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff01) Report Descriptor: (80 bytes) 0x06, 0x01, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85, 0x04, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85, 0x06, 0x09, 0x04, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0x81, 0x02, 0x85, 0x05, 0x09, 0x03, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff02) Report Descriptor: (35 bytes) 0x06, 0x02, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x07, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x86, 0xb1, 0x02, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0xe (0xd) Report Descriptor: (71 bytes) 0x05, 0x0d, 0x09, 0x0e, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x85, 0x0b, 0x09, 0x52, 0x15, 0x00, 0x25, 0x0a, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0xc0, 0x09, 0x22, 0xa1, 0x00, 0x85, 0x0c, 0x09, 0x57, 0x09, 0x58, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0xb1, 0x02, 0x75, 0x06, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0, Device Found type: 046d b010 path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col01#8&1cf1c1b9&4&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Report Descriptor: (75 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x02, 0x05, 0x09, 0x19, 0x01, 0x29, 0x08, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x16, 0x01, 0xf8, 0x26, 0xff, 0x07, 0x75, 0x0c, 0x95, 0x02, 0x81, 0x06, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 046d b010 path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col02#8&1cf1c1b9&4&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Report Descriptor: (23 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x05, 0x06, 0x09, 0x20, 0x15, 0x00, 0x25, 0x64, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0xc0, Device Found type: 046d b010 path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col05#8&1cf1c1b9&4&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Report Descriptor: (68 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x04, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x06, 0x81, 0x00, 0x05, 0x08, 0x19, 0x01, 0x29, 0x05, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x91, 0x02, 0x75, 0x03, 0x95, 0x01, 0x91, 0x03, 0xc0, Device Found type: 046d b010 path: \\?\HID#{00001124-0000-1000-8000-00805f9b34fb}_VID&0002046d_PID&b010&Col03#8&1cf1c1b9&4&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 34885dab0c12 Manufacturer: Logitech Product: Logitech Bluetooth Wireless Mouse Release: 0 Interface: -1 Usage (page): 0x1 (0xff00) Report Descriptor: (36 bytes) 0x06, 0x00, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x10, 0x09, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x06, 0x81, 0x00, 0x09, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x06, 0x91, 0x00, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Report Descriptor: (37 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x01, 0x05, 0x07, 0x09, 0x69, 0x09, 0x6a, 0x09, 0x6b, 0x09, 0x6c, 0x09, 0xe3, 0x09, 0x4c, 0x09, 0xe2, 0x09, 0xe0, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0xc0, unable to open device ``` </details>
JoergAtGithub commented 2022-05-31 15:31:33 -05:00 (Migrated from github.com)

Can I somehow help to get the get_descriptor branch merged?

Can I somehow help to get the `get_descriptor` branch merged?
Youw commented 2022-05-31 15:54:28 -05:00 (Migrated from github.com)

Get me fired from my current/main job :D

Get me fired from my current/main job :D
Youw commented 2022-08-15 12:59:15 -05:00 (Migrated from github.com)

Can I somehow help to get the get_descriptor branch merged?

Actually you can:
One of my biggest conserns is rd_item_byte. A classical linked list of a 1-byte items is one of the least efficient data structures possible.

Right now the byte_list is defined as: struct rd_item_byte *byte_list = NULL;.
A much better aproach would be to have something like:

struct rd_buffer {
    unsigned char buf[HID_API_MAX_REPORT_DESCRIPTOR_SIZE];
    size_t size;
};

in this case we still going to have convenient rd_append/write... functions, but no dynamic allocations per-byte.


My second consern is the implementation of hid_winapi_descriptor_reconstruct_pp_data.
As a human being I refuse to read/understand/check it line-by-line, and because it was written by enother human being it may contain accidental issues.

So I think we will have it mostly as is (except my consern above), but run it thru some static analyzers (we have setup project for coverity, and run unit-tests we have with ASAN enabled (maybe even have it enabled for our CI).

If no issues found (or after all issues fixed) - that will be the last item in my checklist for that branch.

> Can I somehow help to get the `get_descriptor` branch merged? Actually you can: One of my biggest conserns is `rd_item_byte`. A classical linked list of a 1-byte items is one of the least efficient data structures possible. Right now the `byte_list` is defined as: `struct rd_item_byte *byte_list = NULL;`. A much better aproach would be to have something like: ```c struct rd_buffer { unsigned char buf[HID_API_MAX_REPORT_DESCRIPTOR_SIZE]; size_t size; }; ``` in this case we still going to have convenient `rd_append/write...` functions, but no dynamic allocations _per-byte_. --- My second consern is the implementation of `hid_winapi_descriptor_reconstruct_pp_data`. As a human being I refuse to read/understand/check it line-by-line, and because it was written by enother human being it may contain accidental issues. So I think we will have it mostly as is (except my consern above), but run it thru some static analyzers (we have setup project for [coverity](https://scan.coverity.com/projects/hidapi?tab=overview), and run unit-tests we have with [ASAN](https://docs.microsoft.com/en-us/cpp/sanitizers/asan) enabled (maybe even have it enabled for our CI). If no issues found (or after all issues fixed) - that will be the last item in my checklist for that branch.
JoergAtGithub commented 2022-08-15 13:28:36 -05:00 (Migrated from github.com)

I will look, how I can adapt the proposed rd_buffer approach!

To have static code checkers in CI, makes sense to me. I wonder, how it will handle the preparsed_data itself, where the memory allocation happens in WIN32 API code and only a pointer to the struct of variable size is returned. Everything else is under our control, and therefore, should be fixable.

I will look, how I can adapt the proposed rd_buffer approach! To have static code checkers in CI, makes sense to me. I wonder, how it will handle the preparsed_data itself, where the memory allocation happens in WIN32 API code and only a pointer to the struct of variable size is returned. Everything else is under our control, and therefore, should be fixable.
mcuee commented 2023-01-19 03:19:43 -06:00 (Migrated from github.com)

Just another test results.

run log for hidtest
$ ./hidtest/hidtest.exe
hidapi test/example tool. Compiled with hidapi version 0.13.0, runtime version 0.13.0.
Compile-time version matches runtime version of hidapi.

Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 3

  Report Descriptor: (69 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03,
0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25,
0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0,
Device Found
  type: 8087 0a1e
  path: \\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xc (0x1)
  Bus type: 0

  Report Descriptor: (27 bytes)
0x05, 0x01, 0x09, 0x0c, 0xa1, 0x01, 0x85, 0x08, 0x09, 0xc6,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0,
Device Found
  type: 044e 1212
  path: \\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 0

  Report Descriptor: (45 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x07, 0x05, 0x07,
0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03,
0x19, 0x00, 0x29, 0x75, 0x15, 0x00, 0x25, 0xff, 0x75, 0x08,
0x95, 0x06, 0x81, 0x00, 0xc0,
Device Found
  type: 8087 0a1e
  path: \\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)
  Bus type: 0

  Report Descriptor: (50 bytes)
0x05, 0x01, 0x09, 0x0d, 0xa1, 0x01, 0x09, 0x0d, 0xa1, 0x02,
0x85, 0x1c, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03,
0x09, 0xcb, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01,
0xb1, 0x02, 0x75, 0x07, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0,
Device Found
  type: 044e 1212
  path: \\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 0

  Report Descriptor: (54 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x06, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x16, 0x00, 0xfe, 0x26, 0x00, 0x02, 0x75, 0x10, 0x95, 0x02,
0x81, 0x06, 0xc0, 0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x5 (0xd)
  Bus type: 3

  Report Descriptor: (204 bytes)
0x05, 0x0d, 0x09, 0x05, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02,
0x85, 0x08, 0x09, 0x47, 0x09, 0x42, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x02, 0x81, 0x02, 0x09, 0x51, 0x15, 0x00,
0x25, 0x05, 0x75, 0x03, 0x95, 0x01, 0x81, 0x02, 0x75, 0x03,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x15, 0x00,
0x26, 0xaf, 0x04, 0x35, 0x00, 0x46, 0xe8, 0x03, 0x55, 0x0e,
0x65, 0x11, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x31,
0x15, 0x00, 0x26, 0x7b, 0x02, 0x35, 0x00, 0x46, 0x12, 0x02,
0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0xc0, 0x05, 0x0d, 0x09,
0x56, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x35, 0x00,
0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10,
0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x54, 0x15, 0x00,
0x25, 0x05, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x05, 0x09,
0x09, 0x02, 0x09, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0x81, 0x02,
0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x0d,
0x09, 0x55, 0x15, 0x00, 0x25, 0x05, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x01, 0xb1, 0x02, 0x85, 0x0a, 0x06, 0x00, 0xff, 0x09,
0xc5, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x96, 0x00,
0x01, 0xb1, 0x02, 0xc0,
Device Found
  type: 413c b06e
  path: \\?\HID#VID_413C&PID_B06E#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      101
  Interface:    -1
  Usage (page): 0xda (0xffda)
  Bus type: 1

  Report Descriptor: (50 bytes)
0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19,
0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95,
0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0,
Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x1 (0xc)
  Bus type: 1

  Report Descriptor: (99 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x09, 0xe9,
0x09, 0xea, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02,
0x81, 0x06, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x02,
0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x10,
0x81, 0x02, 0x85, 0x05, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01,
0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x07, 0x09, 0x00,
0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02,
0x85, 0x04, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08,
0x95, 0x24, 0x91, 0x02, 0x85, 0x06, 0x09, 0x00, 0x15, 0x00,
0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0xc0,
Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 0

  Report Descriptor: (32 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0x09, 0xe9,
0x09, 0xea, 0x0a, 0x21, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75,
0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81,
0x03, 0xc0,
Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x5 (0xb)
  Bus type: 1

  Report Descriptor: (163 bytes)
0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x09, 0x2f,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x09, 0x20, 0x09, 0x21, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x81, 0x22, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03,
0x85, 0x09, 0x05, 0x08, 0x09, 0x09, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x17, 0x09, 0x17, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x18, 0x09, 0x18, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x1e, 0x09, 0x1e, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x20, 0x09, 0x20, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x2a, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0xc0,
Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)
  Bus type: 0

  Report Descriptor: (27 bytes)
0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x81,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0,
Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x3 (0xffa0)
  Bus type: 1

  Report Descriptor: (235 bytes)
0x06, 0xa0, 0xff, 0x09, 0x03, 0xa1, 0x01, 0x85, 0x03, 0x09,
0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81,
0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09,
0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95,
0x05, 0x81, 0x06, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x85,
0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00,
0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x1f, 0x09, 0x9c,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x85, 0x03, 0x09, 0x30,
0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02,
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22,
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x91, 0x06, 0x75, 0x02, 0x95, 0x01, 0x91, 0x03,
0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03,
0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x02, 0xb1, 0x22, 0x09, 0xde, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x23, 0x09, 0xd8,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x22,
0x75, 0x04, 0x95, 0x01, 0xb1, 0x03, 0x09, 0x09, 0x09, 0x17,
0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x75, 0x02,
0x95, 0x01, 0xb1, 0x03, 0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff01)
  Bus type: 3

  Report Descriptor: (80 bytes)
0x06, 0x01, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09,
0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x1b, 0x81, 0x02, 0x85, 0x04, 0x09, 0x02, 0x15, 0x00,
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85,
0x06, 0x09, 0x04, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08,
0x95, 0x07, 0x81, 0x02, 0x85, 0x05, 0x09, 0x03, 0x15, 0x00,
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0,
Device Found
  type: 413c 2107
  path: \\?\HID#VID_413C&PID_2107#e&1de7f0c0&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer: DELL
  Product:      Dell USB Entry Keyboard
  Release:      178
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 1

  Report Descriptor: (66 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0,
0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08,
0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00,
0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95,
0x06, 0x81, 0x00, 0x05, 0x08, 0x19, 0x01, 0x29, 0x03, 0x15,
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x91, 0x02, 0x75,
0x05, 0x95, 0x01, 0x91, 0x03, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col01#6&2a21f7ec&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 1

  Report Descriptor: (91 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x05, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x02, 0x75, 0x03,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x16, 0x00, 0x80, 0x26, 0xff, 0x7f, 0x75, 0x10, 0x95, 0x02,
0x81, 0x06, 0xc0, 0x09, 0x00, 0xa1, 0x00, 0x09, 0x38, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0,
0x09, 0x00, 0xa1, 0x00, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0,
0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff02)
  Bus type: 3

  Report Descriptor: (35 bytes)
0x06, 0x02, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x07, 0x09,
0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x86, 0xb1, 0x02, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col02#6&2a21f7ec&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x0 (0xff01)
  Bus type: 1

  Report Descriptor: (23 bytes)
0x06, 0x01, 0xff, 0x09, 0x00, 0xa1, 0x01, 0x85, 0x02, 0x09,
0x00, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07,
0x81, 0x02, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col03#6&2a21f7ec&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 1

  Report Descriptor: (25 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x05, 0x19, 0x00,
0x2a, 0x3c, 0x02, 0x15, 0x00, 0x26, 0x3c, 0x02, 0x75, 0x10,
0x95, 0x01, 0x81, 0x00, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col04#6&2a21f7ec&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x80 (0x1)
  Bus type: 1

  Report Descriptor: (29 bytes)
0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x19, 0x81,
0x29, 0x83, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03,
0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col05#6&2a21f7ec&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x88 (0xffbc)
  Bus type: 1

  Report Descriptor: (25 bytes)
0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x04, 0x19,
0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08,
0x95, 0x01, 0x81, 0x00, 0xc0,
Device Found
  type: 046d c077
  path: \\?\HID#VID_046D&PID_C077#e&fde55df&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Optical Mouse
  Release:      7200
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 1

  Report Descriptor: (46 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x05, 0x01, 0x09, 0x30,
0x09, 0x31, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08,
0x95, 0x03, 0x81, 0x06, 0xc0, 0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0xe (0xd)
  Bus type: 3

  Report Descriptor: (71 bytes)
0x05, 0x0d, 0x09, 0x0e, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02,
0x85, 0x0b, 0x09, 0x52, 0x15, 0x00, 0x25, 0x0a, 0x35, 0x00,
0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10,
0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0xc0, 0x09, 0x22, 0xa1,
0x00, 0x85, 0x0c, 0x09, 0x57, 0x09, 0x58, 0x15, 0x00, 0x25,
0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65,
0x00, 0xb1, 0x02, 0x75, 0x06, 0x95, 0x01, 0xb1, 0x03, 0xc0,
0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col06#6&2a21f7ec&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x2 (0xff02)
  Bus type: 1

  Report Descriptor: (23 bytes)
0x06, 0x02, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x06, 0x09,
0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07,
0xb1, 0x02, 0xc0,
Device Found
  type: 413c b06f
  path: \\?\HID#VID_413C&PID_B06F#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      101
  Interface:    -1
  Usage (page): 0xda (0xffda)
  Bus type: 1

  Report Descriptor: (50 bytes)
0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19,
0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95,
0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0,
Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 0

  Report Descriptor: (37 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x01, 0x05, 0x07,
0x09, 0x69, 0x09, 0x6a, 0x09, 0x6b, 0x09, 0x6c, 0x09, 0xe3,
0x09, 0x4c, 0x09, 0xe2, 0x09, 0xe0, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0xc0,
unable to open device

Just another test results. <details> <summary> run log for hidtest </summary> ``` $ ./hidtest/hidtest.exe hidapi test/example tool. Compiled with hidapi version 0.13.0, runtime version 0.13.0. Compile-time version matches runtime version of hidapi. Device Found type: 0488 121f path: \\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x2 (0x1) Bus type: 3 Report Descriptor: (69 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 8087 0a1e path: \\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xc (0x1) Bus type: 0 Report Descriptor: (27 bytes) 0x05, 0x01, 0x09, 0x0c, 0xa1, 0x01, 0x85, 0x08, 0x09, 0xc6, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 044e 1212 path: \\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 0 Report Descriptor: (45 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x07, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00, 0x29, 0x75, 0x15, 0x00, 0x25, 0xff, 0x75, 0x08, 0x95, 0x06, 0x81, 0x00, 0xc0, Device Found type: 8087 0a1e path: \\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Bus type: 0 Report Descriptor: (50 bytes) 0x05, 0x01, 0x09, 0x0d, 0xa1, 0x01, 0x09, 0x0d, 0xa1, 0x02, 0x85, 0x1c, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x09, 0xcb, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x02, 0x75, 0x07, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0, Device Found type: 044e 1212 path: \\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 0 Report Descriptor: (54 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x06, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x16, 0x00, 0xfe, 0x26, 0x00, 0x02, 0x75, 0x10, 0x95, 0x02, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x5 (0xd) Bus type: 3 Report Descriptor: (204 bytes) 0x05, 0x0d, 0x09, 0x05, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x85, 0x08, 0x09, 0x47, 0x09, 0x42, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x02, 0x09, 0x51, 0x15, 0x00, 0x25, 0x05, 0x75, 0x03, 0x95, 0x01, 0x81, 0x02, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x15, 0x00, 0x26, 0xaf, 0x04, 0x35, 0x00, 0x46, 0xe8, 0x03, 0x55, 0x0e, 0x65, 0x11, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x31, 0x15, 0x00, 0x26, 0x7b, 0x02, 0x35, 0x00, 0x46, 0x12, 0x02, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0xc0, 0x05, 0x0d, 0x09, 0x56, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x54, 0x15, 0x00, 0x25, 0x05, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x05, 0x09, 0x09, 0x02, 0x09, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0x81, 0x02, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x0d, 0x09, 0x55, 0x15, 0x00, 0x25, 0x05, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0x85, 0x0a, 0x06, 0x00, 0xff, 0x09, 0xc5, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x96, 0x00, 0x01, 0xb1, 0x02, 0xc0, Device Found type: 413c b06e path: \\?\HID#VID_413C&PID_B06E#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 101 Interface: -1 Usage (page): 0xda (0xffda) Bus type: 1 Report Descriptor: (50 bytes) 0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19, 0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x1 (0xc) Bus type: 1 Report Descriptor: (99 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x02, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x10, 0x81, 0x02, 0x85, 0x05, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x07, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x06, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 0 Report Descriptor: (32 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0x09, 0xe9, 0x09, 0xea, 0x0a, 0x21, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x5 (0xb) Bus type: 1 Report Descriptor: (163 bytes) 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x09, 0x2f, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x08, 0x09, 0x09, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x17, 0x09, 0x17, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x18, 0x09, 0x18, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1e, 0x09, 0x1e, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x20, 0x09, 0x20, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x2a, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Bus type: 0 Report Descriptor: (27 bytes) 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x3 (0xffa0) Bus type: 1 Report Descriptor: (235 bytes) 0x06, 0xa0, 0xff, 0x09, 0x03, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x1f, 0x09, 0x9c, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x85, 0x03, 0x09, 0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x75, 0x02, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0xb1, 0x22, 0x09, 0xde, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x23, 0x09, 0xd8, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x22, 0x75, 0x04, 0x95, 0x01, 0xb1, 0x03, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x75, 0x02, 0x95, 0x01, 0xb1, 0x03, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff01) Bus type: 3 Report Descriptor: (80 bytes) 0x06, 0x01, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85, 0x04, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85, 0x06, 0x09, 0x04, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0x81, 0x02, 0x85, 0x05, 0x09, 0x03, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0, Device Found type: 413c 2107 path: \\?\HID#VID_413C&PID_2107#e&1de7f0c0&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: DELL Product: Dell USB Entry Keyboard Release: 178 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 1 Report Descriptor: (66 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x06, 0x81, 0x00, 0x05, 0x08, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x91, 0x02, 0x75, 0x05, 0x95, 0x01, 0x91, 0x03, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col01#6&2a21f7ec&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 1 Report Descriptor: (91 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x05, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x02, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x16, 0x00, 0x80, 0x26, 0xff, 0x7f, 0x75, 0x10, 0x95, 0x02, 0x81, 0x06, 0xc0, 0x09, 0x00, 0xa1, 0x00, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0x09, 0x00, 0xa1, 0x00, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff02) Bus type: 3 Report Descriptor: (35 bytes) 0x06, 0x02, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x07, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x86, 0xb1, 0x02, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col02#6&2a21f7ec&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x0 (0xff01) Bus type: 1 Report Descriptor: (23 bytes) 0x06, 0x01, 0xff, 0x09, 0x00, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x00, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0x81, 0x02, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col03#6&2a21f7ec&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 1 Report Descriptor: (25 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x05, 0x19, 0x00, 0x2a, 0x3c, 0x02, 0x15, 0x00, 0x26, 0x3c, 0x02, 0x75, 0x10, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col04#6&2a21f7ec&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x80 (0x1) Bus type: 1 Report Descriptor: (29 bytes) 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x19, 0x81, 0x29, 0x83, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col05#6&2a21f7ec&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x88 (0xffbc) Bus type: 1 Report Descriptor: (25 bytes) 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x04, 0x19, 0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c077 path: \\?\HID#VID_046D&PID_C077#e&fde55df&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Optical Mouse Release: 7200 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 1 Report Descriptor: (46 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0xe (0xd) Bus type: 3 Report Descriptor: (71 bytes) 0x05, 0x0d, 0x09, 0x0e, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x85, 0x0b, 0x09, 0x52, 0x15, 0x00, 0x25, 0x0a, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0xc0, 0x09, 0x22, 0xa1, 0x00, 0x85, 0x0c, 0x09, 0x57, 0x09, 0x58, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0xb1, 0x02, 0x75, 0x06, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col06#6&2a21f7ec&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x2 (0xff02) Bus type: 1 Report Descriptor: (23 bytes) 0x06, 0x02, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x06, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0, Device Found type: 413c b06f path: \\?\HID#VID_413C&PID_B06F#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 101 Interface: -1 Usage (page): 0xda (0xffda) Bus type: 1 Report Descriptor: (50 bytes) 0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19, 0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 0 Report Descriptor: (37 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x01, 0x05, 0x07, 0x09, 0x69, 0x09, 0x6a, 0x09, 0x6b, 0x09, 0x6c, 0x09, 0xe3, 0x09, 0x4c, 0x09, 0xe2, 0x09, 0xe0, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0xc0, unable to open device ``` </details>
mcuee commented 2023-02-22 00:54:17 -06:00 (Migrated from github.com)

One more test results with latest commit.

run log for hidtest
$ ./hidtest/hidtest.exe
hidapi test/example tool. Compiled with hidapi version 0.13.1, runtime version 0.13.0.
Compile-time version is different than runtime version of hidapi.
]nDevice Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 3

  Report Descriptor: (69 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03,
0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25,
0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0,
Device Found
  type: 8087 0a1e
  path: \\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xc (0x1)
  Bus type: 0

  Report Descriptor: (27 bytes)
0x05, 0x01, 0x09, 0x0c, 0xa1, 0x01, 0x85, 0x08, 0x09, 0xc6,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0,
Device Found
  type: 044e 1212
  path: \\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 0

  Report Descriptor: (45 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x07, 0x05, 0x07,
0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03,
0x19, 0x00, 0x29, 0x75, 0x15, 0x00, 0x25, 0xff, 0x75, 0x08,
0x95, 0x06, 0x81, 0x00, 0xc0,
Device Found
  type: 8087 0a1e
  path: \\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      200
  Interface:    -1
  Usage (page): 0xd (0x1)
  Bus type: 0

  Report Descriptor: (50 bytes)
0x05, 0x01, 0x09, 0x0d, 0xa1, 0x01, 0x09, 0x0d, 0xa1, 0x02,
0x85, 0x1c, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03,
0x09, 0xcb, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01,
0xb1, 0x02, 0x75, 0x07, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0,
Device Found
  type: 044e 1212
  path: \\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 0

  Report Descriptor: (54 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x06, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x16, 0x00, 0xfe, 0x26, 0x00, 0x02, 0x75, 0x10, 0x95, 0x02,
0x81, 0x06, 0xc0, 0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x5 (0xd)
  Bus type: 3

  Report Descriptor: (204 bytes)
0x05, 0x0d, 0x09, 0x05, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02,
0x85, 0x08, 0x09, 0x47, 0x09, 0x42, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x02, 0x81, 0x02, 0x09, 0x51, 0x15, 0x00,
0x25, 0x05, 0x75, 0x03, 0x95, 0x01, 0x81, 0x02, 0x75, 0x03,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x15, 0x00,
0x26, 0xaf, 0x04, 0x35, 0x00, 0x46, 0xe8, 0x03, 0x55, 0x0e,
0x65, 0x11, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x31,
0x15, 0x00, 0x26, 0x7b, 0x02, 0x35, 0x00, 0x46, 0x12, 0x02,
0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0xc0, 0x05, 0x0d, 0x09,
0x56, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x35, 0x00,
0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10,
0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x54, 0x15, 0x00,
0x25, 0x05, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x05, 0x09,
0x09, 0x02, 0x09, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0x81, 0x02,
0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x0d,
0x09, 0x55, 0x15, 0x00, 0x25, 0x05, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x01, 0xb1, 0x02, 0x85, 0x0a, 0x06, 0x00, 0xff, 0x09,
0xc5, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x96, 0x00,
0x01, 0xb1, 0x02, 0xc0,
Device Found
  type: 413c b06e
  path: \\?\HID#VID_413C&PID_B06E#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      101
  Interface:    -1
  Usage (page): 0xda (0xffda)
  Bus type: 1

  Report Descriptor: (50 bytes)
0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19,
0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95,
0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0,
Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x1 (0xc)
  Bus type: 1

  Report Descriptor: (99 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x09, 0xe9,
0x09, 0xea, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02,
0x81, 0x06, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x02,
0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x10,
0x81, 0x02, 0x85, 0x05, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01,
0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x07, 0x09, 0x00,
0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02,
0x85, 0x04, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08,
0x95, 0x24, 0x91, 0x02, 0x85, 0x06, 0x09, 0x00, 0x15, 0x00,
0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0xc0,
Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 0

  Report Descriptor: (32 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0x09, 0xe9,
0x09, 0xea, 0x0a, 0x21, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75,
0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81,
0x03, 0xc0,
Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x5 (0xb)
  Bus type: 1

  Report Descriptor: (163 bytes)
0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x09, 0x2f,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x09, 0x20, 0x09, 0x21, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x81, 0x22, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03,
0x85, 0x09, 0x05, 0x08, 0x09, 0x09, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x17, 0x09, 0x17, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x18, 0x09, 0x18, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x1e, 0x09, 0x1e, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x20, 0x09, 0x20, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0x85, 0x2a, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01,
0x91, 0x03, 0xc0,
Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x80 (0x1)
  Bus type: 0

  Report Descriptor: (27 bytes)
0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x81,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0,
Device Found
  type: 047f c056
  path: \\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3
  Manufacturer: Plantronics
  Product:      Plantronics Blackwire 3220 Series
  Release:      210
  Interface:    3
  Usage (page): 0x3 (0xffa0)
  Bus type: 1

  Report Descriptor: (235 bytes)
0x06, 0xa0, 0xff, 0x09, 0x03, 0xa1, 0x01, 0x85, 0x03, 0x09,
0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81,
0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09,
0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95,
0x05, 0x81, 0x06, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x85,
0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00,
0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x1f, 0x09, 0x9c,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06,
0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x85, 0x03, 0x09, 0x30,
0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02,
0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22,
0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x02, 0x91, 0x06, 0x75, 0x02, 0x95, 0x01, 0x91, 0x03,
0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01,
0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03,
0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x02, 0xb1, 0x22, 0x09, 0xde, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x23, 0x09, 0xd8,
0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x22,
0x75, 0x04, 0x95, 0x01, 0xb1, 0x03, 0x09, 0x09, 0x09, 0x17,
0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x75, 0x02,
0x95, 0x01, 0xb1, 0x03, 0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff01)
  Bus type: 3

  Report Descriptor: (80 bytes)
0x06, 0x01, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09,
0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x1b, 0x81, 0x02, 0x85, 0x04, 0x09, 0x02, 0x15, 0x00,
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85,
0x06, 0x09, 0x04, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08,
0x95, 0x07, 0x81, 0x02, 0x85, 0x05, 0x09, 0x03, 0x15, 0x00,
0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0,
Device Found
  type: 413c 2107
  path: \\?\HID#VID_413C&PID_2107#e&1de7f0c0&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer: DELL
  Product:      Dell USB Entry Keyboard
  Release:      178
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 1

  Report Descriptor: (66 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0,
0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08,
0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00,
0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95,
0x06, 0x81, 0x00, 0x05, 0x08, 0x19, 0x01, 0x29, 0x03, 0x15,
0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x91, 0x02, 0x75,
0x05, 0x95, 0x01, 0x91, 0x03, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col01#6&2a21f7ec&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 1

  Report Descriptor: (91 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x05, 0x15, 0x00,
0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x02, 0x75, 0x03,
0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31,
0x16, 0x00, 0x80, 0x26, 0xff, 0x7f, 0x75, 0x10, 0x95, 0x02,
0x81, 0x06, 0xc0, 0x09, 0x00, 0xa1, 0x00, 0x09, 0x38, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0,
0x09, 0x00, 0xa1, 0x00, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0,
0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0x1 (0xff02)
  Bus type: 3

  Report Descriptor: (35 bytes)
0x06, 0x02, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x07, 0x09,
0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff,
0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08,
0x95, 0x86, 0xb1, 0x02, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col02#6&2a21f7ec&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x0 (0xff01)
  Bus type: 1

  Report Descriptor: (23 bytes)
0x06, 0x01, 0xff, 0x09, 0x00, 0xa1, 0x01, 0x85, 0x02, 0x09,
0x00, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07,
0x81, 0x02, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col03#6&2a21f7ec&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x1 (0xc)
  Bus type: 1

  Report Descriptor: (25 bytes)
0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x05, 0x19, 0x00,
0x2a, 0x3c, 0x02, 0x15, 0x00, 0x26, 0x3c, 0x02, 0x75, 0x10,
0x95, 0x01, 0x81, 0x00, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col04#6&2a21f7ec&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x80 (0x1)
  Bus type: 1

  Report Descriptor: (29 bytes)
0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x19, 0x81,
0x29, 0x83, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03,
0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col05#6&2a21f7ec&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x88 (0xffbc)
  Bus type: 1

  Report Descriptor: (25 bytes)
0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x04, 0x19,
0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08,
0x95, 0x01, 0x81, 0x00, 0xc0,
Device Found
  type: 046d c077
  path: \\?\HID#VID_046D&PID_C077#e&fde55df&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: Logitech
  Product:      USB Optical Mouse
  Release:      7200
  Interface:    -1
  Usage (page): 0x2 (0x1)
  Bus type: 1

  Report Descriptor: (46 bytes)
0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00,
0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x05, 0x01, 0x09, 0x30,
0x09, 0x31, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08,
0x95, 0x03, 0x81, 0x06, 0xc0, 0xc0,
Device Found
  type: 0488 121f
  path: \\?\HID#DELL091A&Col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number: 9999
  Manufacturer: Microsoft
  Product:      HIDI2C Device
  Release:      40d
  Interface:    -1
  Usage (page): 0xe (0xd)
  Bus type: 3

  Report Descriptor: (71 bytes)
0x05, 0x0d, 0x09, 0x0e, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02,
0x85, 0x0b, 0x09, 0x52, 0x15, 0x00, 0x25, 0x0a, 0x35, 0x00,
0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10,
0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0xc0, 0x09, 0x22, 0xa1,
0x00, 0x85, 0x0c, 0x09, 0x57, 0x09, 0x58, 0x15, 0x00, 0x25,
0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65,
0x00, 0xb1, 0x02, 0x75, 0x06, 0x95, 0x01, 0xb1, 0x03, 0xc0,
0xc0,
Device Found
  type: 2717 5013
  path: \\?\HID#VID_2717&PID_5013&Col06#6&2a21f7ec&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer: MI
  Product:      Mi Wireless Mouse
  Release:      625
  Interface:    -1
  Usage (page): 0x2 (0xff02)
  Bus type: 1

  Report Descriptor: (23 bytes)
0x06, 0x02, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x06, 0x09,
0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07,
0xb1, 0x02, 0xc0,
Device Found
  type: 413c b06f
  path: \\?\HID#VID_413C&PID_B06F#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
  serial_number:
  Manufacturer:
  Product:
  Release:      101
  Interface:    -1
  Usage (page): 0xda (0xffda)
  Bus type: 1

  Report Descriptor: (50 bytes)
0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19,
0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95,
0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15,
0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0,
Device Found
  type: 045e 0000
  path: \\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD
  serial_number:
  Manufacturer:
  Product:
  Release:      0
  Interface:    -1
  Usage (page): 0x6 (0x1)
  Bus type: 0

  Report Descriptor: (37 bytes)
0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x01, 0x05, 0x07,
0x09, 0x69, 0x09, 0x6a, 0x09, 0x6b, 0x09, 0x6c, 0x09, 0xe3,
0x09, 0x4c, 0x09, 0xe2, 0x09, 0xe0, 0x15, 0x00, 0x25, 0x01,
0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0xc0,
unable to open device
One more test results with latest commit. <details> <summary> run log for hidtest </summary> ``` $ ./hidtest/hidtest.exe hidapi test/example tool. Compiled with hidapi version 0.13.1, runtime version 0.13.0. Compile-time version is different than runtime version of hidapi. ]nDevice Found type: 0488 121f path: \\?\HID#DELL091A&Col01#5&99b72d3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x2 (0x1) Bus type: 3 Report Descriptor: (69 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03, 0x81, 0x06, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 8087 0a1e path: \\?\HID#INTC816&Col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xc (0x1) Bus type: 0 Report Descriptor: (27 bytes) 0x05, 0x01, 0x09, 0x0c, 0xa1, 0x01, 0x85, 0x08, 0x09, 0xc6, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 044e 1212 path: \\?\HID#Vid_044E&Pid_1212&Col01&Col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 0 Report Descriptor: (45 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x07, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00, 0x29, 0x75, 0x15, 0x00, 0x25, 0xff, 0x75, 0x08, 0x95, 0x06, 0x81, 0x00, 0xc0, Device Found type: 8087 0a1e path: \\?\HID#INTC816&Col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 200 Interface: -1 Usage (page): 0xd (0x1) Bus type: 0 Report Descriptor: (50 bytes) 0x05, 0x01, 0x09, 0x0d, 0xa1, 0x01, 0x09, 0x0d, 0xa1, 0x02, 0x85, 0x1c, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x09, 0xcb, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x02, 0x75, 0x07, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0, Device Found type: 044e 1212 path: \\?\HID#Vid_044E&Pid_1212&Col01&Col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 0 Report Descriptor: (54 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x06, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x16, 0x00, 0xfe, 0x26, 0x00, 0x02, 0x75, 0x10, 0x95, 0x02, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col02#5&99b72d3&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x5 (0xd) Bus type: 3 Report Descriptor: (204 bytes) 0x05, 0x0d, 0x09, 0x05, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x85, 0x08, 0x09, 0x47, 0x09, 0x42, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x02, 0x09, 0x51, 0x15, 0x00, 0x25, 0x05, 0x75, 0x03, 0x95, 0x01, 0x81, 0x02, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x15, 0x00, 0x26, 0xaf, 0x04, 0x35, 0x00, 0x46, 0xe8, 0x03, 0x55, 0x0e, 0x65, 0x11, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x31, 0x15, 0x00, 0x26, 0x7b, 0x02, 0x35, 0x00, 0x46, 0x12, 0x02, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0xc0, 0x05, 0x0d, 0x09, 0x56, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x10, 0x95, 0x01, 0x81, 0x02, 0x09, 0x54, 0x15, 0x00, 0x25, 0x05, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x05, 0x09, 0x09, 0x02, 0x09, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0x81, 0x02, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x0d, 0x09, 0x55, 0x15, 0x00, 0x25, 0x05, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0x85, 0x0a, 0x06, 0x00, 0xff, 0x09, 0xc5, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x96, 0x00, 0x01, 0xb1, 0x02, 0xc0, Device Found type: 413c b06e path: \\?\HID#VID_413C&PID_B06E#c&37ff1248&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 101 Interface: -1 Usage (page): 0xda (0xffda) Bus type: 1 Report Descriptor: (50 bytes) 0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19, 0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col01#f&39e6f119&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x1 (0xc) Bus type: 1 Report Descriptor: (99 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x01, 0x09, 0xe9, 0x09, 0xea, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x06, 0x75, 0x06, 0x95, 0x01, 0x81, 0x03, 0x85, 0x02, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x10, 0x81, 0x02, 0x85, 0x05, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x07, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x04, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0x85, 0x06, 0x09, 0x00, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x24, 0x91, 0x02, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col02#5&379854aa&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 0 Report Descriptor: (32 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0x09, 0xe9, 0x09, 0xea, 0x0a, 0x21, 0x02, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col02#f&39e6f119&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x5 (0xb) Bus type: 1 Report Descriptor: (163 bytes) 0x05, 0x0b, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x08, 0x09, 0x2f, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x09, 0x20, 0x09, 0x21, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x81, 0x22, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0x85, 0x09, 0x05, 0x08, 0x09, 0x09, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x17, 0x09, 0x17, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x18, 0x09, 0x18, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1e, 0x09, 0x1e, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x20, 0x09, 0x20, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x2a, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col03#5&379854aa&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x80 (0x1) Bus type: 0 Report Descriptor: (27 bytes) 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x81, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 047f c056 path: \\?\HID#VID_047F&PID_C056&MI_03&Col03#f&39e6f119&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: D1CEC32927974D5F9BD6B2AEBF2EA8E3 Manufacturer: Plantronics Product: Plantronics Blackwire 3220 Series Release: 210 Interface: 3 Usage (page): 0x3 (0xffa0) Bus type: 1 Report Descriptor: (235 bytes) 0x06, 0xa0, 0xff, 0x09, 0x03, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x81, 0x02, 0x85, 0x14, 0x09, 0xb1, 0x09, 0xb2, 0x09, 0xb5, 0x09, 0xb7, 0x09, 0xb3, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x06, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x85, 0x15, 0x09, 0x8c, 0x15, 0x00, 0x27, 0xff, 0xff, 0x00, 0x00, 0x75, 0x10, 0x95, 0x01, 0x81, 0x22, 0x85, 0x1f, 0x09, 0x9c, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x06, 0x75, 0x07, 0x95, 0x01, 0x81, 0x03, 0x85, 0x03, 0x09, 0x30, 0x15, 0x00, 0x25, 0x01, 0x75, 0x08, 0x95, 0x20, 0x91, 0x02, 0x85, 0x19, 0x09, 0x8d, 0x09, 0x8f, 0x09, 0x9e, 0x09, 0xdc, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x04, 0x91, 0x22, 0x09, 0xd2, 0x09, 0xd9, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x91, 0x06, 0x75, 0x02, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1a, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x91, 0x22, 0x75, 0x07, 0x95, 0x01, 0x91, 0x03, 0x85, 0x1b, 0x09, 0xcf, 0x09, 0xb5, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0xb1, 0x22, 0x09, 0xde, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x23, 0x09, 0xd8, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0xb1, 0x22, 0x75, 0x04, 0x95, 0x01, 0xb1, 0x03, 0x09, 0x09, 0x09, 0x17, 0x09, 0x18, 0x09, 0x1e, 0x09, 0x20, 0x09, 0x2a, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x06, 0xb1, 0x22, 0x75, 0x02, 0x95, 0x01, 0xb1, 0x03, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col03#5&99b72d3&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff01) Bus type: 3 Report Descriptor: (80 bytes) 0x06, 0x01, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x03, 0x09, 0x01, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85, 0x04, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x1b, 0x81, 0x02, 0x85, 0x06, 0x09, 0x04, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0x81, 0x02, 0x85, 0x05, 0x09, 0x03, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0, Device Found type: 413c 2107 path: \\?\HID#VID_413C&PID_2107#e&1de7f0c0&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: DELL Product: Dell USB Entry Keyboard Release: 178 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 1 Report Descriptor: (66 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x05, 0x07, 0x19, 0xe0, 0x29, 0xe7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x75, 0x08, 0x95, 0x01, 0x81, 0x03, 0x19, 0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x06, 0x81, 0x00, 0x05, 0x08, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x91, 0x02, 0x75, 0x05, 0x95, 0x01, 0x91, 0x03, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col01#6&2a21f7ec&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 1 Report Descriptor: (91 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x85, 0x01, 0x05, 0x09, 0x19, 0x01, 0x29, 0x05, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x05, 0x81, 0x02, 0x75, 0x03, 0x95, 0x01, 0x81, 0x03, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x16, 0x00, 0x80, 0x26, 0xff, 0x7f, 0x75, 0x10, 0x95, 0x02, 0x81, 0x06, 0xc0, 0x09, 0x00, 0xa1, 0x00, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0x09, 0x00, 0xa1, 0x00, 0x05, 0x0c, 0x0a, 0x38, 0x02, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col04#5&99b72d3&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0x1 (0xff02) Bus type: 3 Report Descriptor: (35 bytes) 0x06, 0x02, 0xff, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x07, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x86, 0xb1, 0x02, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col02#6&2a21f7ec&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x0 (0xff01) Bus type: 1 Report Descriptor: (23 bytes) 0x06, 0x01, 0xff, 0x09, 0x00, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x00, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0x81, 0x02, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col03#6&2a21f7ec&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x1 (0xc) Bus type: 1 Report Descriptor: (25 bytes) 0x05, 0x0c, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x05, 0x19, 0x00, 0x2a, 0x3c, 0x02, 0x15, 0x00, 0x26, 0x3c, 0x02, 0x75, 0x10, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col04#6&2a21f7ec&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x80 (0x1) Bus type: 1 Report Descriptor: (29 bytes) 0x05, 0x01, 0x09, 0x80, 0xa1, 0x01, 0x85, 0x03, 0x19, 0x81, 0x29, 0x83, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x03, 0x81, 0x02, 0x75, 0x05, 0x95, 0x01, 0x81, 0x03, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col05#6&2a21f7ec&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x88 (0xffbc) Bus type: 1 Report Descriptor: (25 bytes) 0x06, 0xbc, 0xff, 0x09, 0x88, 0xa1, 0x01, 0x85, 0x04, 0x19, 0x00, 0x29, 0xff, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x81, 0x00, 0xc0, Device Found type: 046d c077 path: \\?\HID#VID_046D&PID_C077#e&fde55df&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Logitech Product: USB Optical Mouse Release: 7200 Interface: -1 Usage (page): 0x2 (0x1) Bus type: 1 Report Descriptor: (46 bytes) 0x05, 0x01, 0x09, 0x02, 0xa1, 0x01, 0x09, 0x01, 0xa1, 0x00, 0x05, 0x09, 0x19, 0x01, 0x29, 0x03, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x05, 0x01, 0x09, 0x30, 0x09, 0x31, 0x09, 0x38, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x03, 0x81, 0x06, 0xc0, 0xc0, Device Found type: 0488 121f path: \\?\HID#DELL091A&Col05#5&99b72d3&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: 9999 Manufacturer: Microsoft Product: HIDI2C Device Release: 40d Interface: -1 Usage (page): 0xe (0xd) Bus type: 3 Report Descriptor: (71 bytes) 0x05, 0x0d, 0x09, 0x0e, 0xa1, 0x01, 0x09, 0x22, 0xa1, 0x02, 0x85, 0x0b, 0x09, 0x52, 0x15, 0x00, 0x25, 0x0a, 0x35, 0x00, 0x47, 0xff, 0xff, 0x00, 0x00, 0x55, 0x0c, 0x66, 0x01, 0x10, 0x75, 0x08, 0x95, 0x01, 0xb1, 0x02, 0xc0, 0x09, 0x22, 0xa1, 0x00, 0x85, 0x0c, 0x09, 0x57, 0x09, 0x58, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x02, 0x45, 0x00, 0x55, 0x00, 0x65, 0x00, 0xb1, 0x02, 0x75, 0x06, 0x95, 0x01, 0xb1, 0x03, 0xc0, 0xc0, Device Found type: 2717 5013 path: \\?\HID#VID_2717&PID_5013&Col06#6&2a21f7ec&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: MI Product: Mi Wireless Mouse Release: 625 Interface: -1 Usage (page): 0x2 (0xff02) Bus type: 1 Report Descriptor: (23 bytes) 0x06, 0x02, 0xff, 0x09, 0x02, 0xa1, 0x01, 0x85, 0x06, 0x09, 0x02, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x07, 0xb1, 0x02, 0xc0, Device Found type: 413c b06f path: \\?\HID#VID_413C&PID_B06F#d&3624b04c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} serial_number: Manufacturer: Product: Release: 101 Interface: -1 Usage (page): 0xda (0xffda) Bus type: 1 Report Descriptor: (50 bytes) 0x06, 0xda, 0xff, 0x09, 0xda, 0xa1, 0x01, 0x09, 0xda, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x19, 0x01, 0x29, 0x0e, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xbf, 0x81, 0x02, 0x05, 0xda, 0x19, 0x01, 0x29, 0x05, 0x15, 0x81, 0x25, 0x7f, 0x75, 0x08, 0x95, 0xc0, 0x91, 0x02, 0xc0, Device Found type: 045e 0000 path: \\?\HID#ConvertedDevice&Col01#5&379854aa&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\KBD serial_number: Manufacturer: Product: Release: 0 Interface: -1 Usage (page): 0x6 (0x1) Bus type: 0 Report Descriptor: (37 bytes) 0x05, 0x01, 0x09, 0x06, 0xa1, 0x01, 0x85, 0x01, 0x05, 0x07, 0x09, 0x69, 0x09, 0x6a, 0x09, 0x6b, 0x09, 0x6c, 0x09, 0xe3, 0x09, 0x4c, 0x09, 0xe2, 0x09, 0xe0, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0xc0, unable to open device ``` </details>
mcuee commented 2023-02-22 00:55:49 -06:00 (Migrated from github.com)

Comparison with libusbK kList utility for the Mi Wireless Mouse USB Receiver, by attaching libusb0.sys filter to the device.

C:\libusbK-dev-kit> .\kList.exe

Loading USB ID's maintained by Stephen J. Gowdy <linux.usb.ids@gmail.com>..

 1. WinUsb Device (WinUsb Device) [Connected]
    Service              : WINUSB
    ClassGUID            : {88BAE032-5A81-49F0-BC3D-A4FF138216D6}
    DeviceID             : USB\VID_0424&PID_2740\D&127B8A6A&0&5
    DeviceInterfaceGUID  : {b35924d6-3e16-4a9e-9782-5524a4b79bac}
    SymbolicLink         : \\?\usb#vid_0424&pid_2740#d&127b8a6a&0&5#{b35924d6-3e16-4a9e-9782-5524a4b79bac}
    DevicePath           : \\?\usb#vid_0424&pid_2740#d&127b8a6a&0&5#{b35924d6-3e16-4a9e-9782-5524a4b79bac}
    SerialNumber         : D&127B8A6A&0&5
    BusNumber            : 0
    DeviceAddress        : 5

 2. USB Input Device ((Standard system devices)) [Connected]
    Service              : HidUsb
    ClassGUID            : {745A17A0-74D3-11D0-B6FE-00A0C90F57DA}
    DeviceID             : USB\VID_2717&PID_5013\5&E9F3E45&0&1
    DeviceInterfaceGUID  : {F9F3FF14-AE21-48A0-8A25-8011A7A931D9}
    SymbolicLink         : \\?\usb#vid_2717&pid_5013#5&e9f3e45&0&1#{f9f3ff14-ae21-48a0-8a25-8011a7a931d9}
    DevicePath           : \\.\libusb0-0001
    SerialNumber         : 5&E9F3E45&0&1
    BusNumber            : 0
    DeviceAddress        : 1

 
Select device (1-2) :2

Loading driver api..
Getting descriptors..

-Device:
  bLength             :18
  bDescriptorType     :0x01
  bcdUSB              :0x0110
  bDeviceClass        :0x00 (Defined at Interface level)
  bDeviceSubClass     :0x00
  bDeviceProtocol     :0x00
  bMaxPacketSize0     :64
  idVendor            :0x2717 (Xiaomi Inc.)
  idProduct           :0x5013
  bcdDevice           :0x0625
  iManufacturer       :1 (MI)
  iProduct            :2 (Mi Wireless Mouse)
  iSerialNumber       :0
  bNumConfigurations  :1
!End Device
-Configuration:
  bLength             :9
  bDescriptorType     :0x02
  wTotalLength        :34
  bNumInterfaces      :1
  bConfigurationValue :0x01
  iConfiguration      :0
  bmAttributes        :0xA0 (Self-Powered)
  MaxPower            :50 (100ma)
 -Interface:
    bLength             :9
    bDescriptorType     :0x04
    bInterfaceNumber    :0x00
    bAlternateSetting   :0x00
    bNumEndpoints       :1
    bInterfaceClass     :0x03 (Human Interface Device)
    bInterfaceSubClass  :0x01 (Boot Interface Subclass)
    bInterfaceProtocol  :0x02 (Mouse)
    iInterface          :0
   -Hid:
      bLength             :9
      bDescriptorType     :0x21
      bcdHID              :0x0110
      bCountry            :0x00 (Not supported)
      bNumDescriptors     :1
     -Report:
        bReportType         :0x22
        wReportLength       :215
        Usage Page          :0x01 (Generic Desktop Controls)
        Usage               :0x002 (Mouse)
       *Collection            :0x01 (Application)
          Usage               :0x001 (Pointer)
         *Collection            :0x00 (Physical)
            Report ID           :0x01
            Usage Page          :0x09 (Buttons)
            Usage Minimum       :0x01
            Usage Maximum       :0x05
            Logical Minimum     :0x00
            Logical Maximum     :0x01
            Report Count        :0x05
            Report Size         :0x01
            Input               :0x02
            Report Count        :0x01
            Report Size         :0x03
            Input               :0x01
            Usage Page          :0x01 (Generic Desktop Controls)
            Usage               :0x030 (Direction-X)
            Usage               :0x031 (Direction-Y)
            Logical Minimum     :0x8000
            Logical Maximum     :0x7FFF
            Report Size         :0x10
            Report Count        :0x02
            Input               :0x06
         !End Collection
         *Collection            :0x00 (Physical)
            Usage Page          :0x01 (Generic Desktop Controls)
            Usage               :0x038 (Wheel)
            Logical Minimum     :0x81
            Logical Maximum     :0x7F
            Report Size         :0x08
            Report Count        :0x01
            Input               :0x06
         !End Collection
         *Collection            :0x00 (Physical)
            Usage Page          :0x0C (Consumer)
            Usage               :0x238 (AC Pan)
            Report Count        :0x01
            Report Size         :0x08
            Logical Minimum     :0x81
            Logical Maximum     :0x7F
            Input               :0x06
         !End Collection
       !End Collection
        Usage Page          :0xFF01 (Generic Desktop Controls)
        Usage               :0x000 (Undefined)
       *Collection            :0x01 (Application)
          Report ID           :0x02
          Usage               :0x000 (Undefined)
          Logical Minimum     :0x00
          Logical Maximum     :0x00FF
          Report Size         :0x08
          Report Count        :0x07
          Input               :0x02
       !End Collection
        Usage Page          :0x0C (Consumer)
        Usage               :0x001 (Consumer Control)
       *Collection            :0x01 (Application)
          Report ID           :0x05
          Logical Minimum     :0x00
          Logical Maximum     :0x023C
          Usage Minimum       :0x00
          Usage Maximum       :0x023C
          Report Size         :0x10
          Report Count        :0x01
          Input               :0x00
       !End Collection
        Usage Page          :0x01 (Generic Desktop Controls)
        Usage               :0x080 (System Control)
       *Collection            :0x01 (Application)
          Report ID           :0x03
          Usage Minimum       :0x81
          Usage Maximum       :0x83
          Logical Minimum     :0x00
          Logical Maximum     :0x01
          Report Count        :0x03
          Report Size         :0x01
          Input               :0x02
          Report Count        :0x01
          Report Size         :0x05
          Input               :0x01
       !End Collection
        Usage Page          :0xFFBC
        Usage               :0x88
       *Collection            :0x01 (Application)
          Report ID           :0x04
          Report Count        :0x01
          Report Size         :0x08
          Logical Minimum     :0x00
          Logical Maximum     :0x00FF
          Usage Minimum       :0x00
          Usage Maximum       :0x00FF
          Input               :0x00
       !End Collection
        Usage Page          :0xFF02 (Simulation Controls)
        Usage               :0x002 (Automobile Simulation Device)
       *Collection            :0x01 (Application)
          Report ID           :0x06
          Usage               :0x002 (Automobile Simulation Device)
          Logical Minimum     :0x00
          Logical Maximum     :0x00FF
          Report Size         :0x08
          Report Count        :0x07
          Feature             :0x02
       !End Collection
     !End Report
   !End Hid
   -Endpoint:
      bLength             :7
      bDescriptorType     :0x05
      bEndpointAddress    :0x81
      bmAttributes        :0x03 (Interrupt)
      wMaxPacketSize      :8
      bInterval           :0x02
   !End Interface
 !End Configuration

Comparison with libusbK kList utility for the Mi Wireless Mouse USB Receiver, by attaching libusb0.sys filter to the device. ``` C:\libusbK-dev-kit> .\kList.exe Loading USB ID's maintained by Stephen J. Gowdy <linux.usb.ids@gmail.com>.. 1. WinUsb Device (WinUsb Device) [Connected] Service : WINUSB ClassGUID : {88BAE032-5A81-49F0-BC3D-A4FF138216D6} DeviceID : USB\VID_0424&PID_2740\D&127B8A6A&0&5 DeviceInterfaceGUID : {b35924d6-3e16-4a9e-9782-5524a4b79bac} SymbolicLink : \\?\usb#vid_0424&pid_2740#d&127b8a6a&0&5#{b35924d6-3e16-4a9e-9782-5524a4b79bac} DevicePath : \\?\usb#vid_0424&pid_2740#d&127b8a6a&0&5#{b35924d6-3e16-4a9e-9782-5524a4b79bac} SerialNumber : D&127B8A6A&0&5 BusNumber : 0 DeviceAddress : 5 2. USB Input Device ((Standard system devices)) [Connected] Service : HidUsb ClassGUID : {745A17A0-74D3-11D0-B6FE-00A0C90F57DA} DeviceID : USB\VID_2717&PID_5013\5&E9F3E45&0&1 DeviceInterfaceGUID : {F9F3FF14-AE21-48A0-8A25-8011A7A931D9} SymbolicLink : \\?\usb#vid_2717&pid_5013#5&e9f3e45&0&1#{f9f3ff14-ae21-48a0-8a25-8011a7a931d9} DevicePath : \\.\libusb0-0001 SerialNumber : 5&E9F3E45&0&1 BusNumber : 0 DeviceAddress : 1 Select device (1-2) :2 Loading driver api.. Getting descriptors.. -Device: bLength :18 bDescriptorType :0x01 bcdUSB :0x0110 bDeviceClass :0x00 (Defined at Interface level) bDeviceSubClass :0x00 bDeviceProtocol :0x00 bMaxPacketSize0 :64 idVendor :0x2717 (Xiaomi Inc.) idProduct :0x5013 bcdDevice :0x0625 iManufacturer :1 (MI) iProduct :2 (Mi Wireless Mouse) iSerialNumber :0 bNumConfigurations :1 !End Device -Configuration: bLength :9 bDescriptorType :0x02 wTotalLength :34 bNumInterfaces :1 bConfigurationValue :0x01 iConfiguration :0 bmAttributes :0xA0 (Self-Powered) MaxPower :50 (100ma) -Interface: bLength :9 bDescriptorType :0x04 bInterfaceNumber :0x00 bAlternateSetting :0x00 bNumEndpoints :1 bInterfaceClass :0x03 (Human Interface Device) bInterfaceSubClass :0x01 (Boot Interface Subclass) bInterfaceProtocol :0x02 (Mouse) iInterface :0 -Hid: bLength :9 bDescriptorType :0x21 bcdHID :0x0110 bCountry :0x00 (Not supported) bNumDescriptors :1 -Report: bReportType :0x22 wReportLength :215 Usage Page :0x01 (Generic Desktop Controls) Usage :0x002 (Mouse) *Collection :0x01 (Application) Usage :0x001 (Pointer) *Collection :0x00 (Physical) Report ID :0x01 Usage Page :0x09 (Buttons) Usage Minimum :0x01 Usage Maximum :0x05 Logical Minimum :0x00 Logical Maximum :0x01 Report Count :0x05 Report Size :0x01 Input :0x02 Report Count :0x01 Report Size :0x03 Input :0x01 Usage Page :0x01 (Generic Desktop Controls) Usage :0x030 (Direction-X) Usage :0x031 (Direction-Y) Logical Minimum :0x8000 Logical Maximum :0x7FFF Report Size :0x10 Report Count :0x02 Input :0x06 !End Collection *Collection :0x00 (Physical) Usage Page :0x01 (Generic Desktop Controls) Usage :0x038 (Wheel) Logical Minimum :0x81 Logical Maximum :0x7F Report Size :0x08 Report Count :0x01 Input :0x06 !End Collection *Collection :0x00 (Physical) Usage Page :0x0C (Consumer) Usage :0x238 (AC Pan) Report Count :0x01 Report Size :0x08 Logical Minimum :0x81 Logical Maximum :0x7F Input :0x06 !End Collection !End Collection Usage Page :0xFF01 (Generic Desktop Controls) Usage :0x000 (Undefined) *Collection :0x01 (Application) Report ID :0x02 Usage :0x000 (Undefined) Logical Minimum :0x00 Logical Maximum :0x00FF Report Size :0x08 Report Count :0x07 Input :0x02 !End Collection Usage Page :0x0C (Consumer) Usage :0x001 (Consumer Control) *Collection :0x01 (Application) Report ID :0x05 Logical Minimum :0x00 Logical Maximum :0x023C Usage Minimum :0x00 Usage Maximum :0x023C Report Size :0x10 Report Count :0x01 Input :0x00 !End Collection Usage Page :0x01 (Generic Desktop Controls) Usage :0x080 (System Control) *Collection :0x01 (Application) Report ID :0x03 Usage Minimum :0x81 Usage Maximum :0x83 Logical Minimum :0x00 Logical Maximum :0x01 Report Count :0x03 Report Size :0x01 Input :0x02 Report Count :0x01 Report Size :0x05 Input :0x01 !End Collection Usage Page :0xFFBC Usage :0x88 *Collection :0x01 (Application) Report ID :0x04 Report Count :0x01 Report Size :0x08 Logical Minimum :0x00 Logical Maximum :0x00FF Usage Minimum :0x00 Usage Maximum :0x00FF Input :0x00 !End Collection Usage Page :0xFF02 (Simulation Controls) Usage :0x002 (Automobile Simulation Device) *Collection :0x01 (Application) Report ID :0x06 Usage :0x002 (Automobile Simulation Device) Logical Minimum :0x00 Logical Maximum :0x00FF Report Size :0x08 Report Count :0x07 Feature :0x02 !End Collection !End Report !End Hid -Endpoint: bLength :7 bDescriptorType :0x05 bEndpointAddress :0x81 bmAttributes :0x03 (Interrupt) wMaxPacketSize :8 bInterval :0x02 !End Interface !End Configuration ```
mcuee commented 2023-03-12 08:27:47 -05:00 (Migrated from github.com)

Great that this PR has finally been merged.

Great that this PR has finally been merged.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gh-libusb/hidapi#249
No description provided.