libusbx is a library that provides generic access to USB devices. As a library, it is meant 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, OS X, Windows and OpenBSD.
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, from 1.0 to 3.0 (latest), are supported.
Is libusbx a fork of libusb?
The reason for the fork is that, despite having dedicated contributors, libusb has barely been able to produce a release in about 3 years. Unfortunately, when a project consistently fails to produce releases, it means that you, its user, are paying the ultimate price as patches and new features, that could be highly beneficial, are being witheld and you end up wasting your time.
We are the same group of dedicated people who relentlessly tried to improve libusb and avoid the issues highlighted above, yet saw our efforts wasted. Therefore, and with overwhelming support from regular libusb members, we have decided to take action for your sake.
After using libusbx for a while, as well as engaging with our great community, we hope that you will be as convinced as we are that there exists a much better way... and a much better library.
Do I need to do anything special to use libusbx?
If you are an existing user of libusb, you don't have to change anything. Just download the libusbx library and use it in your code. The library is designed as a drop in replacement for libusb, so please give it a try. If you don't like it, you can always revert...
What are the advantages of libusbx over libusb?
Apart from frequent releases, which include regular bugfixes as well as exciting new features (please check our roadmap), you should find that we are a lot more responsive and that, rather than focus our efforts on elements that are of little interest to you, or an ever delayed promise of "better" features that fail to materialize, we strive to bring you the best possible user and developer experience today.
Also, unlike libusb, we fully subscribe to the Release Early, Release Often (RERO) philosophy, upon which the success of the Linux kernel and countless other Open Source projects is based.
Finally, if there's anything the failure of libusb has taught us, it's that a project should never fail to listen to you, its user... As such, libusbx is as much your library as it is ours, and we hope that you will engage with us to help make it even greater!