wiki:WikiStart

Version 26 (modified by northcob, 2 years ago) (diff)

--

libusb

About

This is the home of libusb, a library that gives user level applications uniform access to USB devices across many different operating systems. libusb is an open source project licensed under the GNU Lesser General Public License version 2.1.

Many participants in the libusb community have helped and continue to help with ideas, implementation, support and improvements for libusb.

Version overview

There are currently two separate core projects, with non-compatible APIs:

In addition to the core projects there are two sub-projects that provide Windows back-ends:

Stable API: libusb-1.0

Daniel Drake adopted the project in January 2008 and worked on a libusb-1.0 release, which adds several features that were missing from the 0.1 API. As of December 2008, libusb-1.0 is the stable and recommended version to use. Developers are encouraged to port their applications to the new API.

  • See the libusb-1.0 page for more information.
  • Download libusb-1.0 releases here
  • API documentation
  • Compatibility with the libusb-0.1 API is available through the libusb-compat-0.1 compatibility layer.
  • Linux and Darwin (Mac OS X see below) are supported in the latest release. Windows support is present in git as of August 2010.
  • The Windows backend currently uses WinUSB.sys or Win32 HID APIs. Support for the libusb0.sys backend (libusb0.sys is the libusb-win32 kernel driver) will be integrated later (#49) as well.
  • Darwin (Mac OS X) has a very different USB driver model when compared with Linux and most UNIXes. It is more like Windows in this area. As a result, although libusb-1.x will build and install on Darwin, many functions are not available. In particular, if the OS has an interface driver that matches the characteristics of a device, it will seize the interface and cannot be detached. So libusb will not be able to use that interface. This is a particular problem with devices, which for Windows/Mac? OS programming convenience, identify themselves as HIDs.

Legacy API: libusb-0.1

Johannes Erdfelt founded the libusb project and lead development through 2007. By then, libusb-0.1 had been developed, stabilized, and adopted by a wide range of projects.

  • Last release: libusb-0.1.12
  • Supported operating systems: Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X (and Windows, through the libusb-win32 project).
  • Development status: libusb-0.1 has reached maturity and no further changes or releases are expected.
  • Note that libusb-win32 is a separate project which still sees active development (mainly on the driver side, the existing API is stable and unlikely to be changed). Once libusb-1.0 supports the libusb0.sys device driver (#49) then the focus of the libusb-win32 project will be to continue improving the libusb0.sys driver while also contributing to Windows specific parts of libusb-1.0. At that time, libusb-win32 users will be encouraged to port their programs to the libusb-1.0 API.
  • Download libusb-0.1 releases here
  • API documentation
  • Unofficial bindings, at the libusb-win32 site
  • Projects and Examples using libusb-0.1 and libusb-win32

Support

Please ask support questions on the mailing list or in the IRC channel.

You should also read the FAQ or Frequently Asked Questions.

Bugs and feature requests

If you find a bug in libusb, libwdi, zadig or another related program, or if you wish to request an enhancement, please create a new ticket on this web page.

We require that you register an account and verify your email address before you can create a ticket, in an attempt to reduce the amount of spam that gets into the system. We are sorry for this inconvenience, but registering is quick and simple so please don't let it stop you.

Make sure to view the list of active tickets before creating a new ticket, so that duplicates can be avoided.

Thank you for helping make libusb even better!

  • usbutils includes the very useful lsusb program to view descriptors in devices