-
Notifications
You must be signed in to change notification settings - Fork 0
Home
A cross-platform user-mode library, for generic access to USB devices
libusbx is a cross-platform user-mode library that provides access to USB devices.
It is intended to serve as both a replacement and improvement over libusb, as the latter has barely managed to produce one release in 2 years and does not actively seek the inclusion of user-requested features, such as topology, HID or hotplug support.
Whether you already have an existing libusb application or plan to develop a new one, we encourage you to consider using libusbx as the better alternative, especially as it provides a drop-in replacement for existing libusb based code.
- Supports all the major platforms: Linux, OS X, OpenBSD and Windows
- Supports all versions of USB, from 1.0 to 3.0
- Unified modern API, that provides both synchronous and asynchronous access
- User-mode: no need for kernel access
All libusbx releases can be accessed from the releases directory.
- Linux [status: Stable]
- Any modern Linux system with
usbfs
.
- Any modern Linux system with
- OS X [status: Stable]
- Any modern version of OS X (PowerPC or x86 either in 32 and 64 bits)
-
Windows [status: EXPERIMENTAL → Stable]
-
MinGW (32 bit) or MinGW-w64. To compile a library that is both 32 and 64 bit compatible, you should use a version of MinGW-w64 that supports both
-m32
and-m64
(a.k.a. "multilib"). A pre-built multilib version can be downloaded with TDM64. - Microsoft Visual C++ (Visual Studio).
- Windows DDK build environment
-
MinGW (32 bit) or MinGW-w64. To compile a library that is both 32 and 64 bit compatible, you should use a version of MinGW-w64 that supports both
- OpenBSD and NetBSD [status: EXPERIMENTAL]
- Only device with
ugen
driver are supported
- Only device with
Note: FreeBSD 8 and above include a FreeBSD-specific reimplementation of the libusbx/libusb API, so your applications will probably work there too. The source code for this library can be found here.
If you are interested in porting to other platforms, the PORTING file tells you where to start. We are more than happy to help out here, please write to the mailing list with your questions and feedback.
The latest development tree is always available from git.
For those not familiar with git, here are the commands one can use to retrieve libusbx:
# retrieve development branch (this only needs to be done once) git clone git://github.com/libusbx/libusbx.git cd libusbx
# for further updates, once the clone has been done git pull
You can also browse the git development tree from https://github.com/libusbx/libusbx.
Also note that, when compiling from git, you may have to run ./autogen.sh
, ./bootstrap.sh
or run the autotools creation utilities, in order to have configure
and Makefile
created for you. The difference between autogen.sh
and bootstrap.sh
is that the former will invoke configure with a set of default options, whereas the latter will not.
To create projects relying on libusbx, please refer to the samples in the examples/
subdirectory.
- libfprint fingerprint scanning ``http://cgit.freedesktop.org/libfprint``
- Microdia Microdial webcam driver with uses isochronous I/O
- Some Japanese smart card thingy: tsniff and its usage
- coldsync-ppp
- libdc1394-2 (uses isochronous I/O)
- Dimax SUB-20
- libnifalcon
- libftdi-1.0
- SANE - Scanner Access Now Easy
- UsbPicProg - Open source and open hardware USB PIC programmer
- Sigrok - Open source logic analyzer software for various USB logic analyzer hardware
- xpiocards
- usbmuxd USB Multiplex Daemon for iPhone and iPod Touch
- UrJTAG Universal JTAG Library
- Exodriver Open source driver for Labjack data acquisition devices
- btstack A Portable User-Space Bluetooth Stack
- madwimax Linux driver for mobile WiMAX devices
- usbutils USB utilities for Linux, includes the usb.ids file and lsusb
- Yubikey personalization Yubikey personalization cross-platform library and tool
- Openkinnect libfreenect Cross-platfrom drivers and libraries for the Microsoft Xbox Kinect device
- Ettus uhd Cross-platform universal hardware driver for Ettus Research products
- OpenNI Open source OpenNI framework
- Haskell bindings: Low level, high level
- libusb for Ruby
- pyusb for Python
- libusbdotnet for C#, DotNet and Mono
- partial python wrapper using swig
- python-libusb1, simple Python wrapper
- Go libusb-1.0 wrapper
- node.js libusb-1.0 binding
- OCaml libusb-1.0 binding
- Fator libusb-1.0 binding
- lua libusb-1.0 binding