How to file WebHID bugs
When filing a WebHID bug, please attach some information so we can debug the issue.
Product Information
Many issues only occur with a particular device. When filing a WebHID API bug, please provide a link to a page describing the device you are using so that other developers can identify it.
Examples:
- A link to an online store page where the product can be purchased.
- A link to the manufacturer's page describing the product.
- A link to a photo containing the product packaging with the product and brand names visible.
chrome://device-log
chrome://device-log
displays a filtered view of logs on multiple platforms.
- Change the Log level to Debug
- Filter to only HID.
If there are any messages with type HID, please include them in the bug.
General HID Inspection Tools
These general tools will help you explore devices that you are attempting to communicate with.
Web
Use HID Explorer to capture information about your device and add it to the bug.
If your device has multiple HID interfaces it will appear as multiple devices in HID Explorer, please include information for all device interfaces.
If you can connect to your device in the browser and capture its information with HID Explorer it is usually not necessary to use the other tools listed in this section as they provide the same information.
Windows
Use winhiddump to return a report descriptor reconstructed from the information available through the Windows HID API. This will likely differ from the actual report descriptor.
Please include the winhiddump
output in the bug report.
If the device is connected with USB, use UsbTreeView to capture device information. Select your device in the tree view pane and copy the device information into the bug.
macOS
Use the macOS I/O Registry to output information about all connected HID devices:
ioreg -c IOHIDInterface -r -d 1 > deviceinfo.txt
The device can be identified by its product name ("Product" key) or its vendor and product IDs ("VendorID" and "ProductID" keys).
IOHIDInterface <class IOHIDInterface, id 0x10000e745, registered, matched, active, busy 0 (11 ms), retain 10>
{
"Transport" = "Bluetooth Low Energy"
"HIDDefaultBehavior" = Yes
"Manufacturer" = "Logitech"
"Product" = "MX Master 3"
"MaxInputReportSize" = 20
"DeviceUsagePairs" = ({"DeviceUsagePage"=1,"DeviceUsage"=6},{"DeviceUsagePage"=1,"DeviceUsage"=2},{"DeviceUsagePage"=1,"DeviceUsage"=1},{"DeviceUsagePage"=65347,"DeviceUsage"=514})
"VendorIDSource" = 2
"MaxOutputReportSize" = 20
"ReportDescriptor" = <05010906a1018501050719e029e71500250175019508810295067508150026a400050719002aa4008100c005010902a10185020901a1009510750115002501050919012910810205011601f826ff07750c95020930093181061581257f75089501093881069501050c0a38028106c0c00643ff0a0202a101851175089513150026ff000902810009029100c0>
"CountryCode" = 0
"VendorID" = 1133
"VersionNumber" = 19
"IOServiceDEXTEntitlements" = ("com.apple.developer.driverkit.transport.hid")
"IODEXTMatchCount" = 1
"PrimaryUsage" = 6
"ProductID" = 45091
"ReportInterval" = 8000
"PrimaryUsagePage" = 1
"DeviceOpenedByEventSystem" = Yes
"MaxFeatureReportSize" = 1
}
Please include in your bug report:
- Transport
- Manufacturer
- Product
- VendorID
- ProductID
- ReportDescriptor
- VersionNumber
Linux
Use lsusb -v
to output verbose information about USB devices, if your device
is USB.
The Linux kernel exposes the HID report descriptors for connected devices through a debug filesystem interface. Find your device in the list:
sudo ls /sys/kernel/debug/hid
Directories in /sys/kernel/debug/hid
represent HID interfaces on connected
devices. The name of each directory has the form aaaa:bbbb:cccc.dddd
where:
aaaa
is the bus type (0003
for USB,0005
for Bluetooth),bbbb
andcccc
are the vendor and product IDs as 16-bit hexadecimal values, anddddd
is a device index that increments for each newly-connected device.
The report descriptor is available as a file named rdesc
inside the directory:
sudo cat /sys/kernel/debug/hid/0005:046D:B023.006F/rdesc
Please include the lsusb -v
output, edited to only include information for
your device. Please also include rdesc
for each HID interface exposed by the
device.