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 has a user-mode: No special privilege or elevation is required for the application to communicate with a device.
It is portable: Using a single cross-platform API, it provides access to USB devices on Windows, OS X, Linux, Android and OpenBSD.
It is version-agnostic: All versions of the USB protocol, from 1.0 to 3.0, are supported.