libusb is a C library that provides generic access to USB devices. It is intended to be used by developers to facilitate the production of applications that communicate with USB hardware.
It is portable: Using a single cross-platform API, it provides access to USB devices on Linux, macOS, Windows, etc.
It is user-mode: No special privilege or elevation is required for the application to communicate with a device.
It is version-agnostic: All versions of the USB protocol are supported.
Homepage
Download
Recent Releases
1.0.2825 May 2025 09:05
minor bugfix:
New libusb_get_ssplus_usb_device_capability_descriptor API
for query of SuperSpeed+ Capability Descriptors.
API support for reporting USB 3.2 Gen2x2 speeds.
macOS: Zero-Length Packet for multiple packets per frame.
Windows: Base HID device descriptor on OS-cached values.
Build for Haiku and SunOS.
Many code correctness.
1.0.2711 Feb 2024 04:17
major feature:
* New libusb_init_context API to replace libusb_init
* New libusb_get_max_alt_packet_size API
* New libusb_get_platform_descriptor API (BOS)
* Allow setting log callback with libusb_set_option/libusb_init_context
* New WebAssembly + WebUSB backend using Emscripten
* Fix regression in libusb_set_interface_alt_setting
* Fix sync transfer completion race and use-after-free
* Fix hotplug exit ordering
* Linux: NO_DEVICE_DISCOVERY option set per context
* macOS: Fix missing device list cleanup locking
* macOS: Do not clear device data toggle for newer OS versions
* macOS: Fix running binaries on older OS than build host
* Windows: Allow claiming multiple associated interfaces
* Windows: Ignore non-configured devices instead of waiting
* Windows: Improved root hub detection
|