{"id":20995297,"url":"https://github.com/todbot/win-hid-dump","last_synced_at":"2025-10-07T21:32:09.407Z","repository":{"id":51682508,"uuid":"330552975","full_name":"todbot/win-hid-dump","owner":"todbot","description":"Sort of a Windows version of `usbhid-dump` to show HID Report Descriptors","archived":false,"fork":false,"pushed_at":"2024-07-25T18:37:45.000Z","size":20,"stargazers_count":60,"open_issues_count":1,"forks_count":10,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-01-17T15:09:38.095Z","etag":null,"topics":["hid","hid-device","usb","usb-hid","windows"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/todbot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-18T04:21:40.000Z","updated_at":"2025-01-17T03:02:04.000Z","dependencies_parsed_at":"2024-07-25T21:27:08.131Z","dependency_job_id":"65eb0818-b96c-42ef-bbad-9c6982a8a5d6","html_url":"https://github.com/todbot/win-hid-dump","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fwin-hid-dump","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fwin-hid-dump/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fwin-hid-dump/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/todbot%2Fwin-hid-dump/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/todbot","download_url":"https://codeload.github.com/todbot/win-hid-dump/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235658574,"owners_count":19025084,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hid","hid-device","usb","usb-hid","windows"],"created_at":"2024-11-19T07:22:54.066Z","updated_at":"2025-10-07T21:32:04.103Z","avatar_url":"https://github.com/todbot.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# win-hid-dump\n\n`win-hid-dump` is a small command-line app to output the __HID Report Descriptors__ of all connected HID devices.  Think of it as sort of a Windows version of [`usbhid-dump`](https://github.com/DIGImend/usbhid-dump). It is designed to inspect HID devices for use with [`hidapi`](https://github.com/libusb/hidapi/), [`node-hid`](https://github.com/node-hid/node-hid), or similar HID libraries.  The output can be parsed directly by the [USB Descriptor Parser](https://eleccelerator.com/usbdescreqparser/).\n\n\n`win-hid-dump` is based on the very nice [HIDSharp library](https://www.nuget.org/packages/HidSharp/). It does the hard work of reconstructing the HID Report Descriptor from the Windows HID library, as the actual HID Report Descriptor apparently isn't available.\n\n## Usage:\n\nTo use `win-hid-dump`, download the zip file from the Releases page, unzip it, and run it.\n\nWhen run, its output looks like the below.\n\n```\nPS C:\\Users\\todbot\\Downloads\\winhiddump\u003e .\\winhiddump.exe\nWinHIDdump:\n16C0:0486: (unnamed manufacturer) - Emulated Arduino Serial\nPATH: \\\\?\\hid#vid_16c0\u0026pid_0486\u0026mi_01#b\u0026358fe38b\u00260\u00260000#{4d1e55b2-f16f-11cf-88cb-001111000030}\nDESCRIPTOR:\n  06 C9 FF 09 04 A1 5C 09 75 15 00 25 FF 35 00 45\n  00 65 00 55 00 75 08 95 40 81 02 09 76 95 20 91\n  02 09 76 95 04 B1 02 C1 00\n  (41 bytes)\n16C0:0486: (unnamed manufacturer) Teensyduino RawHID\nPATH: \\\\?\\hid#vid_16c0\u0026pid_0486\u0026mi_00#b\u00261dcc5746\u00260\u00260000#{4d1e55b2-f16f-11cf-88cb-001111000030}\nDESCRIPTOR:\n  06 AB FF 0A 00 02 A1 01 09 01 15 00 25 FF 35 00\n  45 00 65 00 55 00 75 08 95 40 81 02 09 02 91 02\n  C1 00\n  (34 bytes)\n27B8:01ED: ThingM - blink(1) mk3\nPATH: \\\\?\\hid#vid_27b8\u0026pid_01ed#a\u002627977118\u00260\u00260000#{4d1e55b2-f16f-11cf-88cb-001111000030}\nDESCRIPTOR:\n  06 AB FF 0A 00 20 A1 01 85 01 09 00 15 00 25 FF\n  35 00 45 00 65 00 55 00 75 08 95 08 B2 02 01 25\n  01 45 01 75 01 96 A0 01 B1 03 85 02 09 00 25 FF\n  45 00 75 08 95 3C B2 02 01 C1 00\n  (59 bytes)\nPS C:\\Users\\todbot\\Downloads\\winhiddump\u003e\n\n```\nThis example shows a\n[Teensy RawHID](https://www.pjrc.com/teensy/rawhid.html) and a [blink(1) USB LED](https://blink1.thingm.com/).  The Teensy RawHID descriptor shows a simple \"RawHID\" example of a single 64-byte report using no reportIDs for both Input and Output. The blink(1) descriptor shows an example that defines two reportID-based Feature reports: an 8-byte one and a 60-byte one.\n\n## Limitations\n\nThe HID Report Descriptors displayed are reconstructed by the HIDSharp library from Windows HID data, and do not represent the exact descriptor sent by the device.\n\nFor instance, the Teensy RawHID HID Report Descriptor as sent by the device is:\n```\n0x06, 0xAB, 0xFF,  // Usage Page (Vendor Defined 0xFFAB)\n0x0A, 0x00, 0x02,  // Usage (0x0200)\n0xA1, 0x01,        // Collection (Application)\n0x75, 0x08,        //   Report Size (8)\n0x15, 0x00,        //   Logical Minimum (0)\n0x26, 0xFF, 0x00,  //   Logical Maximum (255)\n0x95, 0x40,        //   Report Count (64)\n0x09, 0x01,        //   Usage (0x01)\n0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)\n0x95, 0x40,        //   Report Count (64)\n0x09, 0x02,        //   Usage (0x02)\n0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)\n0xC0,              // End Collection\n// 28 bytes\n```\n\nBut the reconstructed descriptor that HIDSharp determined from Windows parsed data is:\n```\n0x06, 0xAB, 0xFF,  // Usage Page (Vendor Defined 0xFFAB)\n0x0A, 0x00, 0x02,  // Usage (0x0200)\n0xA1, 0x01,        // Collection (Application)\n0x09, 0x01,        //   Usage (0x01)\n0x15, 0x00,        //   Logical Minimum (0)\n0x25, 0xFF,        //   Logical Maximum (-1)\n0x35, 0x00,        //   Physical Minimum (0)\n0x45, 0x00,        //   Physical Maximum (0)\n0x65, 0x00,        //   Unit (None)\n0x55, 0x00,        //   Unit Exponent (0)\n0x75, 0x08,        //   Report Size (8)\n0x95, 0x40,        //   Report Count (64)\n0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)\n0x09, 0x02,        //   Usage (0x02)\n0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)\n0xC1, 0x00,        // End Collection\n// 34 bytes\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodbot%2Fwin-hid-dump","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftodbot%2Fwin-hid-dump","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftodbot%2Fwin-hid-dump/lists"}