Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues with HID devices #2

Open
mcuee opened this issue Jun 17, 2021 · 24 comments
Open

Issues with HID devices #2

mcuee opened this issue Jun 17, 2021 · 24 comments

Comments

@mcuee
Copy link

mcuee commented Jun 17, 2021

It does not seem to work with Logitech USB Receiver.

/c/work/hid/winhiddump-0.2/winhiddump
$ ./winhiddump.exe
WinHIDdump:
044E:1212:  -
PATH:\\?\hid#vid_044e&pid_1212&col01&col01#7&290aacae&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_01&col03#7&1ebb799e&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}

Unhandled Exception: System.NotSupportedException: Unable to reconstruct the report descriptor.
   at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor()
   at winhiddump.Program.Main(String[] args)

@mcuee
Copy link
Author

mcuee commented Jun 17, 2021

Same with latest git.


$ ./bin/Release/winhiddump.exe
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_01&col04#7&1ebb799e&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_01&col05#7&1ebb799e&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
044E:1212:  -
PATH:\\?\hid#vid_044e&pid_1212&col01&col02#7&290aacae&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
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)

Unhandled Exception: HidSharp.Exceptions.DeviceIOException: Failed to get info.
   at HidSharp.Platform.Windows.WinHidDevice.RequiresGetInfo(GetInfoFlags flags) in C:\work\libusb\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 139
   at HidSharp.Platform.Windows.WinHidDevice.GetManufacturer() in C:\work\libusb\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs:line 156
   at winhiddump.Program.Main(String[] args) in C:\work\hid\win-hid-dump\Program.cs:line 30

@mcuee
Copy link
Author

mcuee commented Jun 17, 2021

But the issue may be related to HIDSharp.

@mcuee
Copy link
Author

mcuee commented Jun 17, 2021

HIDSharp seems to work.

I have a long list of HID device in the system.

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...

@todbot
Copy link
Owner

todbot commented Jun 17, 2021

That's weird because win-hid-dump is just a thin wrapper on the HIDSharp stuff

@mcuee
Copy link
Author

mcuee commented Jun 18, 2021

That's weird because win-hid-dump is just a thin wrapper on the HIDSharp stuff

Further tests show that HIDSharp is also not stable for my particular system, sometimes it hangs. So I think it is not a real issue of win-hid-dump (maybe adding retry may help) but rather HIDSharp issues.

@mcuee
Copy link
Author

mcuee commented Jun 19, 2021

It seems to me the issue is only with Logitech USB receiver.

Tested with my home Acer Windows 10 laptop.

With Logitech USB Receiver plugged in, it will crash.

$ ./winhiddump.exe
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_01&col01#7&2fa52f82&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}

Unhandled Exception: 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 winhiddump.Program.Main(String[] args) in C:\work\hid\win-hid-dump\Program.cs:line 32

Without the Logitech USB Receiver plugged in, it will not crash.

$ ./winhiddump.exe
2BF6:A096: Acer Inc. - Launch Manager Wireless Device
PATH:\\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
2BF6:A096: Acer Inc. - Launch Manager Wireless Device
PATH:\\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
0925:7001: Lakeview Research - Generic HID
PATH:\\?\hid#vid_0925&pid_7001#6&18b7cc42&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)

@mcuee
Copy link
Author

mcuee commented Jun 19, 2021

HIDSharp does not crash with the Logitech USB receiver plugged in.

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&col05#7&2fa52f82&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&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_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&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&col02#7&2fa52f82&0&0001#{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}
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}
Microsoft HIDI2C Device 9999 (VID 1267, PID 12384, version 0.3) @ \\?\hid#elan0501&col02#5&10870616&1&0001#{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}
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}
Lakeview Research Generic HID (no serial number) (VID 2341, PID 28673, version 0.1) @ \\?\hid#vid_0925&pid_7001#6&18b7cc42&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
BLE device list:

Press any key

Complete device list (took 0 ms to get 13 devices):
\\?\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#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_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&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#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#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#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#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#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.


\\?\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#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.


Press a key to exit...

@AWBuchanan7
Copy link

I seemed to be having a similar problem with a different device. HIDSharp appeared fine with it and this program worked fine without it plugged in. At least in my case it turned out that the 'manufacturer' value associated with the device was null so as a result when I reached this line in Program.cs:

Console.Write(string.Format("{0:X4}:{1:X4}: {2} - {3}\nPATH:{4}\n",
                    dev.VendorID, dev.ProductID, dev.GetManufacturer(), dev.GetProductName(), dev.DevicePath));

The dev.GetManufacturer() would result in an exception. Replacing the GetManufacturer() call with a placeholder string got things working for me. I'm not sure how commonplace a null value for any of these fields might actually be as my device here is essentially in testing and values that should be there are currently either placeholders or left empty, but for example I would think that a null product name would result in this issue as well. A null check or two here might solve the problem.

@mcuee
Copy link
Author

mcuee commented Jun 20, 2021

In my case it is different, it has no issues with "dev.GetManufacturer(), dev.GetProductName(), dev.DevicePath)" but crashes since it can not carry out the operation GetRawReportDescriptor().

The exception points to HIDSharp but HIDSharpDemo seems not to crash, strange. Here I am using git head of HIDSharp.

PATH:\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
is recognized in Windows as "HID-complaint consumer control device".

04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col01#5&10870616&1&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col02#5&10870616&1&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_01&col05#7&2fa52f82&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col03#5&10870616&1&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
2BF6:A096: Acer Inc. - Launch Manager Wireless Device
PATH:\\?\hid#hidclass&col01#1&2d595ca7&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
2BF6:A096: Acer Inc. - Launch Manager Wireless Device
PATH:\\?\hid#hidclass&col02#1&2d595ca7&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
04F3:3060: Microsoft - HIDI2C Device
PATH:\\?\hid#elan0501&col04#5&10870616&1&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
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)
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_00#7&73a81b9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd
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)
046D:C534: Logitech - USB Receiver
PATH:\\?\hid#vid_046d&pid_c534&mi_01&col02#7&2fa52f82&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}

Call stack

HidSharp.dll!HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor() Line 194
	at C:\work\hid\HidSharp\HidSharp\Platform\Windows\WinHidDevice.cs(194)
winhiddump.exe!winhiddump.Program.Main(string[] args) Line 32
	at C:\work\hid\win-hid-dump\Program.cs(32)

@mcuee
Copy link
Author

mcuee commented Jun 20, 2021

It is a pretty complicated device.
libusb/hidapi#249 (comment)

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}

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

@mcuee
Copy link
Author

mcuee commented Jun 20, 2021

If I use the fork here ( https://github.com/afinetapestry/win-hid-dump/tree/main ), the exception seems to point to HIDSharp.

System.NotSupportedException
  HResult=0x80131515
  Message=Unable to reconstruct the report descriptor.
  Source=HidSharp
  StackTrace:
   at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor()
   at winhiddump.Program.Main(String[] args) in C:\work\hid\win-hid-dump-mod\Program.cs:line 62

@WORMSS
Copy link

WORMSS commented Sep 2, 2021

I get the same issue with Logitech - USB Reciever.
It being the first thing it reports, and dying immediately.
Going to try with no mouse, see what happens.

@WORMSS
Copy link

WORMSS commented Sep 2, 2021

okay, I found out it was my dasKeyboard that was the cause.. and of course, it was the last USB device I had to try.

Ended up using a automation program, to press enter on the command line window, after 10 seconds to giving me enough time to start it and remove ALL other USB devices other than the one I wanted a report on

@mcuee
Copy link
Author

mcuee commented Sep 3, 2021

Please refer to this thread: libusb/hidapi#249
HIDSharp is not very good for this task in reality. The resulting HID report descriptors are often not correct. This is not the fault of HIDSharp though, rather it is the limitation of Windows native HID API.

The following hidapi pull request has the same limitations.
libusb/hidapi#262

So far the best effort is here using reverse engineering. But it still needs more efforts.
libusb/hidapi#306

@imro2
Copy link
Contributor

imro2 commented Dec 30, 2021

Could you put the problematic line in try catch block so it does not fail because of a single device?

            try
            {
                rawReportDescriptor = dev.GetRawReportDescriptor();
            } catch (Exception e) { 
                Console.Write("Unable to parse report: {0}", e);
            }

@MauiJerry
Copy link

MauiJerry commented Aug 21, 2022

Trying out winHIDdump to learn a bit about the Videonics CP1 device found in my wtf boxes. It shows up in Device Manager under HDI as USB Input Device. The properties/Events shows "Device Not Migrated" event:
Device USB\VID_0947&PID_CF01\5&2edb8ad2&0&2 was not migrated due to partial or ambiguous match.

Last Device Instance Id: USB\VID_1038&PID_2006&MI_00\2&5e99c07&0&0000
Class Guid: {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
Location Path:
Migration Rank: 0xF000FFFF0000F120
Present: false
Status: 0xC0000719

winHIDdump says:
C:\Users\jerry\Downloads\winhiddump>.\winhiddump.exe
WinHIDdump:
04F3:30FA: Microsoft - HIDI2C Device
PATH:\?\hid#cust0001&col03#5&2f1d7da6&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}

Unhandled Exception: System.NotSupportedException: Unable to reconstruct the report descriptor.
at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor()
at winhiddump.Program.Main(String[] args)

My guess is the device is so old (pre-2000) and vendor gone, that its all unknown to MS. Oh well. maybe I can scavenge it for parts or put in a rPiPico

update: i grabbed https://github.com/rene-aguirre/pywinusb and the raw_data.py was able to read all the buttons, sticks, etc on the CP1.

@SteveC00k
Copy link

SteveC00k commented Sep 27, 2022

It crashes on me too. I unplugged my wacom tablet and its not crashing now.
It does crash with the generic xbox controller btw

WinHIDdump:
258A:002A: SINO WEALTH - Gaming KB
PATH:\?\hid#vid_258a&pid_002a&mi_01&col06#7&af6b46a&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}
DESCRIPTOR:
06 00 FF 09 01 A1 01 85 0A 09 00 15 00 25 FF 35
00 45 00 65 00 55 00 75 08 95 29 B1 02 C1 00
(31 bytes)
08BB:2902: Burr-Brown from TI - USB Audio CODEC
PATH:\?\hid#vid_08bb&pid_2902&mi_03#8&1f3c160&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
DESCRIPTOR:
05 0C 09 01 A1 01 09 E2 15 00 25 01 35 00 45 01
65 00 55 00 75 01 95 01 81 42 09 E9 81 42 09 EA
81 42 95 05 81 03 C1 00
(40 bytes)
056A:00F4: Tablet - Cintiq 24HD Tablet
PATH:\?\hid#vid_056a&pid_00f4&col02#8&2d57ec0f&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}

Unhandled Exception: System.NotSupportedException: Unable to reconstruct the report descriptor.
at HidSharp.Platform.Windows.WinHidDevice.GetRawReportDescriptor()
at winhiddump.Program.Main(String[] args)

@todbot
Copy link
Owner

todbot commented Sep 27, 2022

Both of these are HidSharp library error, a library that win-hid-dump is a very thin wrapper on.

You could try running the HidSharp library's HidSharp.Test.exe that's inside the HidSharp zip file. If it also errors out, then there's nothing I know of in Windows you can do to get the HID Report Descriptor. Use Linux or MacOS instead.

HidSharp is doing a kind of reconstruction of the HID Report Descriptor since Windows does not support interrogating the device directly for this information.

I think that error can occur for devices that are not true HID devices (i.e. a device with a driver that creates a "virtual HID" device for applications to use. I think XBox controllers do this) or devices that have a custom driver that overrides the default HID driver.

Again, try your device on a different OS or even a different Windows box that doesn't have any extra drivers for the device installed.

@SteveC00k
Copy link

Where is this HidSharp.test.exe? I do not see any HidSharp.zip either.

@imro2
Copy link
Contributor

imro2 commented Sep 27, 2022

For anybody that is having issues with win-hid-dump or HidSharp due to Windows limitations, try installing WSL2 (WSL1 does not support USB device redirection) and redirecting your HID device to it and then use the Linux based usbhid-dump.

@todbot
Copy link
Owner

todbot commented Sep 27, 2022

Where is this HidSharp.test.exe? I do not see any HidSharp.zip either.

Sorry I didn't provide a direct link earlier: https://www.zer7.com/software/hidsharp

That's the homepage for HidSharp. On it is a zip download containing the library and the test file.

@mcuee
Copy link
Author

mcuee commented Sep 30, 2022

I think in the end hidsharp will not work very well with many devices under Windows.

The best effors are here to try to get Windows working with hidapi and Report Descriptor, using reverse engineering approach.
https://github.com/libusb/hidapi/tree/get-descriptor

Discussions and many test reports here.
libusb/hidapi#249

@mcuee
Copy link
Author

mcuee commented Sep 30, 2022

For anybody that is having issues with win-hid-dump or HidSharp due to Windows limitations, try installing WSL2 (WSL1 does not support USB device redirection) and redirecting your HID device to it and then use the Linux based usbhid-dump.

Nice idea.

For me I just reboot my Windows laptop to Linux since I use dual-boot. :-)

Or I will use my Mac Mini.

@mcuee
Copy link
Author

mcuee commented May 7, 2023

has been closed with the merge of libusb/hidapi#451.

So if people are having issues with win-hid-dump or HIDSharp, you can try latest git of hidapi which inlcude the hidtest application. hidtest will dump the report descriptors of the HID devices.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants