Closed ullMarksin closed 1 year ago
raw data , before parsing: 054C:05C4: Sony Computer Entertainment - Wireless Controller
DESCRIPTOR: 05 01 09 05 A1 01 85 01 09 30 15 00 25 FF 35 00 45 00 65 00 55 00 75 08 95 01 81 02 09 31 81 02 09 32 81 02 09 35 81 02 09 39 25 07 46 3B 01 65 14 75 04 81 42 05 09 19 01 29 0E 25 01 45 01 65 00 75 01 95 0E 81 02 06 00 FF 09 20 25 7F 46 3B 01 75 06 95 01 81 02 05 01 09 33 25 FF 75 08 81 02 09 34 81 02 06 00 FF 09 21 95 36 81 02 85 05 09 22 95 1F 91 02 85 04 09 23 95 24 B1 02 25 01 45 01 75 01 95 D8 B1 03 85 02 09 24 25 FF 46 3B 01 75 08 95 24 B1 02 25 01 45 01 75 01 95 D8 B1 03 85 08 09 25 25 FF 46 3B 01 75 08 95 03 B1 02 25 01 45 01 75 01 96 E0 01 B1 03 85 10 09 26 25 FF 46 3B 01 75 08 95 04 B1 02 25 01 45 01 75 01 96 D8 01 B1 03 85 11 09 27 25 FF 46 3B 01 75 08 95 02 B1 02 25 01 45 01 75 01 96 E8 01 B1 03 85 12 06 02 FF 09 21 25 FF 46 3B 01 75 08 95 0F B1 02 25 01 45 01 75 01 96 80 01 B1 03 85 13 09 22 25 FF 46 3B 01 75 08 95 16 B1 02 25 01 45 01 75 01 96 48 01 B1 03 85 14 06 05 FF 09 20 25 FF 46 3B 01 75 08 95 10 B1 02 25 01 45 01 75 01 96 78 01 B1 03 85 15 09 21 25 FF 46 3B 01 75 08 95 2C B1 02 25 01 45 01 75 01 95 98 B1 03 85 80 06 80 FF 09 20 25 FF 46 3B 01 75 08 95 06 B1 02 25 01 45 01 75 01 96 C8 01 B1 03 85 81 09 21 25 FF 46 3B 01 75 08 95 06 B1 02 25 01 45 01 75 01 96 C8 01 B1 03 85 82 09 22 25 FF 46 3B 01 75 08 95 05 B1 02 25 01 45 01 75 01 96 D0 01 B1 03 85 83 09 23 25 FF 46 3B 01 75 08 95 01 B1 02 25 01 45 01 75 01 96 F0 01 B1 03 85 84 09 24 25 FF 46 3B 01 75 08 95 04 B1 02 25 01 45 01 75 01 96 D8 01 B1 03 85 85 09 25 25 FF 46 3B 01 75 08 95 06 B1 02 25 01 45 01 75 01 96 C8 01 B1 03 85 86 09 26 25 FF 46 3B 01 75 08 95 06 B1 02 25 01 45 01 75 01 96 C8 01 B1 03 85 87 09 27 25 FF 46 3B 01 75 08 95 23 B1 02 25 01 45 01 75 01 95 E0 B1 03 85 88 09 28 25 FF 46 3B 01 75 08 95 22 B1 02 25 01 45 01 75 01 95 E8 B1 03 85 89 09 29 25 FF 46 3B 01 75 08 95 02 B1 02 25 01 45 01 75 01 96 E8 01 B1 03 85 90 09 30 25 FF 46 3B 01 75 08 95 05 B1 02 25 01 45 01 75 01 96 D0 01 B1 03 85 91 09 31 25 FF 46 3B 01 75 08 95 03 B1 02 25 01 45 01 75 01 96 E0 01 B1 03 85 92 09 32 25 FF 46 3B 01 75 08 95 03 B1 02 25 01 45 01 75 01 96 E0 01 B1 03 85 93 09 33 25 FF 46 3B 01 75 08 95 0C B1 02 25 01 45 01 75 01 96 98 01 B1 03 85 A0 09 40 25 FF 46 3B 01 75 08 95 06 B1 02 25 01 45 01 75 01 96 C8 01 B1 03 85 A1 09 41 25 FF 46 3B 01 75 08 95 01 B1 02 25 01 45 01 75 01 96 F0 01 B1 03 85 A2 09 42 25 FF 46 3B 01 75 08 95 01 B1 02 25 01 45 01 75 01 96 F0 01 B1 03 85 A3 09 43 25 FF 46 3B 01 75 08 95 30 B1 02 25 01 45 01 75 01 95 78 B1 03 85 A4 09 44 25 FF 46 3B 01 75 08 95 0D B1 02 25 01 45 01 75 01 96 90 01 B1 03 85 A5 09 45 25 FF 46 3B 01 75 08 95 15 B1 02 25 01 45 01 75 01 96 50 01 B1 03 85 A6 09 46 25 FF 46 3B 01 75 08 95 15 B1 02 25 01 45 01 75 01 96 50 01 B1 03 85 F0 09 47 25 FF 46 3B 01 75 08 95 3F B1 02 85 F1 09 48 B1 02 85 F2 09 49 95 0F B1 02 25 01 45 01 75 01 96 80 01 B1 03 85 A7 09 4A 25 FF 46 3B 01 75 08 95 01 B1 02 25 01 45 01 75 01 96 F0 01 B1 03 85 A8 09 4B 25 FF 46 3B 01 75 08 95 01 B1 02 25 01 45 01 75 01 96 F0 01 B1 03 85 A9 09 4C 25 FF 46 3B 01 75 08 95 08 B1 02 25 01 45 01 75 01 96 B8 01 B1 03 85 AA 09 4E 25 FF 46 3B 01 75 08 95 01 B1 02 25 01 45 01 75 01 96 F0 01 B1 03 85 AB 09 4F 25 FF 46 3B 01 75 08 95 39 B1 02 25 01 45 01 75 01 95 30 B1 03 85 AC 09 50 25 FF 46 3B 01 75 08 95 39 B1 02 25 01 45 01 75 01 95 30 B1 03 85 AD 09 51 25 FF 46 3B 01 75 08 95 0B B1 02 25 01 45 01 75 01 96 A0 01 B1 03 85 AE 09 52 25 FF 46 3B 01 75 08 95 01 B1 02 25 01 45 01 75 01 96 F0 01 B1 03 85 AF 09 53 25 FF 46 3B 01 75 08 95 02 B1 02 25 01 45 01 75 01 96 E8 01 B1 03 85 B0 09 54 25 FF 46 3B 01 75 08 95 3F B1 02 85 B1 09 55 95 02 B1 02 25 01 45 01 75 01 96 E8 01 B1 03 85 B2 09 56 25 FF 46 3B 01 75 08 95 02 B1 02 25 01 45 01 75 01 96 E8 01 B1 03 85 B3 09 55 25 FF 46 3B 01 75 08 95 3F B1 02 85 B4 09 55 B1 02 C1 00 (1249 bytes)
It's not you, or this program. It's Windows.
It's impossible for userspace apps on Windows to get the actual HID Report Descriptor. This program is just a thin wrapper of the HidSharp library. You can download it and its test program to compare output.
The HidSharp library is actually being really clever, attempting to reconstruct the HID Report Descriptor from various Windows APIs. But it will never create a HID Report Descriptor that exactly matches what the device provides over the wire. For that you need either a USB Snooper, or use Linux or MacOS. The resultant HID Report Descriptors from HidSharp should be functionally identical to what the device provides, but they may be a lot more verbose because they specify defaults. The HID Report Description protocol can be quite complicated.
The hidapi library now includes a similar HID Report Descriptor reconstruction algorithm on Windows and it runs into similar problems. It's very frustrating.
Device: ps4 controller Os: Windows 10 Left side is your app output, right side is wireshark with USBPcap1 interface I captured data with wireshare using this example: https://github.com/liquidctl/liquidctl/blob/main/docs/developer/capturing-usb-traffic.md I know that right side is correct because I verified with https://www.psdevwiki.com/ps4/DS4-USB report, so it looks like your app outputs incorrect data or/and adds unnecessary data , and descriptor is more than 2x bigger(1249 bytes vs 499 bytes). I am new/not expert on this, so maybe I am something missing or don't understand?