Home > USB Central > USB Host Software
USB Host Software
USB classes, host drivers (class, generic, and vendor-specific), Windows tips, Linux, Mac, and other host OSes.
USB classes | Generic drivers | Labview
Writing Windows drivers | INF files | Non-Windows hosts
Also see:
Device firmware and companion host software | Embedded hosts and OTG
USB Classes
Sometimes you don't have to write a driver because Windows or another source provides a class driver.
USB drivers included with each edition of Windows
Device Firmware Upgrade. STMicroelectronics has a Device Firmware Upgrade (DFU) implementation for ST7 USB applications.
Generic drivers
Libusb-win32 is an open-source driver library that enables Windows applications to access USB devices (under development). SharpUSBLib is a wrapper around the libusb project for .NET.
WinUSB is a generic USB driver supported by Windows Vista. The driver enables applications to access devices that don't fit into a defined class.
USB 1.x/2.0 Generic Device Driver from Andrew Pargeter & Associates.
Cypress EZ-USB chips can use the driver included in SuiteUSB.NET.
The Java USB API will allow Java applications to communicate with and manipulate USB devices. The specification is in progress. From the Java Community Process.
MCCI has a generic driver.
Thesycon's USBIO allows access to all USB devices from user mode. Free demo.
Labview
Using USB devices with Labview and LabWindows/CVI.
Writing Windows USB device drivers
Microsoft's WDK (Windows Driver Kit) has information on writing drivers, and example drivers. The kit is a free download. Formerly called the Device Driver Kit (DDK).
Jungo.com's WinDriver USB is an enhanced version of Jungo's Driverwizard, which enables developing driver code in user mode and later moving it to kernel mode.
Windows issues
If you get a broken link: Microsoft frequently changes the URLs of its content but at least has improved its "page not found" page to show some possibilities for the missing content. If all else fails, search microsoft.com for the name of the page (such as "USB Architecture").
Microsoft's USB Technologies page for developers has links to various Windows-related documentation, including a couple of FAQs.
Setup Classes Versus Interface Classes. All about GUIDS.
Windows Logo Program for Hardware. This is different from the Implementers Forum's Certified USB Logo.
How to turn off selective Suspend. Can fix a problem where a USB port stops responding after quickly and repeatedly inserting and removing a USB device. MS Article ID 817900.
Microsoft OS Descriptor
A request for a string descriptor with index EEh is requesting the Microsoft OS descriptor.
INF files
Every USB device on a Windows system must have an INF file that tells the Device Manager what driver to assign to the device.
The WDK documentation has more about INF files. See "Creating an INF File" and "Supplying an INF File."
How Windows Determines the Most Suitable Device Driver to Install During Setup (Knowledge Base article 279112). Explains how Windows searches INF files for vendor and product IDs and uses its findings to decide which drivers to load.
Non-Windows hosts
The libusb project aims to create a library to enable applications to access USB devices regardless of OS. Includes Linux, FreeBSD, NetBSD, OpenBSD, Darwin, MacOS X.
Also see Embedded hosts and OTG.
Mac
USB on the Macintosh.
Linux
The Linux USB Project.
How to get USB devices working under Linux. From Brad Hards.
Linux Remote NDIS USB device function driver. From Belcarra Technologies.
Jungo's WinDriver USB includes support for Linux.
DOS
DosUSB allows DOS applications and drivers to communicate with USB devices. From Georg Potthast.