-
Notifications
You must be signed in to change notification settings - Fork 398
Home
For cross platform communication with HID devices, libusb project recommends HIDAPI.
HIDAPI follows (at least tries to) the Semantic Versioning scheme. Even though we're still at version 0.x.y - we're doing our best to keep backward compatibility across releases.
libusb -- https://github.com/libusb/libusb/wiki
Original version of hidapi -- https://github.com/signal11/hidapi
hidapi fork with an hid report parser based on the above old version of hidapi -- https://github.com/supercollider/hidapi
hidapitester command line tool based on HIDAPI -- https://github.com/todbot/hidapitester
hidpytoy: GUI tool based on HIDAPI -- https://github.com/todbot/hidpytoy
Python binding for HIDAPI cython-hidapi -- https://github.com/trezor/cython-hidapi
nodejs binding -- https://github.com/node-hid/node-hid.git
Rust binding -- https://github.com/ruabmbua/hidapi-rs
Single header C++23 wrapper -- https://github.com/acdemiralp/hid.hpp
Java binding -- https://github.com/gary-rowe/hid4java
QT wrapper for HIDAPI -- https://github.com/simonmeaden/qhidapi
Ruby binding -- https://rubygems.org/gems/hidapi/
C++ wrapper -- https://github.com/sensics/HIDAPIpp
.NET binding -- https://github.com/badcel/HidApi.Net.git and https://github.com/alexgubanow/hidapiw
Go binding -- https://github.com/sstallion/go-hid
WIP Kotlin Native binding -- https://git.sr.ht/~z3ntu/kotlin-native-hidapi
Free Pascal bindings for HIDAPI -- https://github.com/dioannidis/HIDAPI.pas
Erlang binding (requires a fork version of hidapi) -- https://github.com/tonyrog/hid
hidapi is not thread-safe in general. How to use hidapi in multithreaded application?
How to use hidapi with unrooted Android devices
HIDAPI Windows backend limitation
WinAPI requires that the buffer passed to WriteFile (underlying implementation of hid_write) is large-enugh to hold the largest report (the size of larger report is reported by WinAPI as well, and used by hidapi). And, apparently, it doesn't return how many actual bytes are sent to the device.
Windows HID Transport
https://learn.microsoft.com/en-us/windows-hardware/drivers/hid/hid-transports
Linux HID transport and hidraw
https://github.com/torvalds/linux/blob/master/Documentation/hid/hid-transport.rst
https://github.com/torvalds/linux/blob/master/Documentation/hid/hidraw.rst