USB classes, host drivers (class, generic, and vendor-specific), Windows tips, Linux, Mac, and other host OSes.
Also see:
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
COM Port
Device Firmware Upgrade. STMicroelectronics has a Device Firmware Upgrade (DFU) implementation for ST7 USB applications.
Human Interface Devices (HID)
Mass Storage
Video example: capture video from a USB camera in Java. From David Fischer.
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 new cyusb driver included in the CY4604 USB Developer's uStudio.
RapidDriver generic driver for parallel-port, USB, and other devices. From EnTech Taiwan.
JCommUSB API is a Java USB API for Windows. From icaste LLC.
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 general-purpose USB driver.
Tetradyne's DriverX USB enables accessing devices using all transfer types. No DDK required. Includes support for C/C++, Delphi, and Visual Basic.
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. Jungo's USB-Software Index has some write-ups and links.
If you need to support Windows NT, see Jungo's WinDriver USB for Windows NT and Digi's EdgeUSB. These products enable using the same code to compile a driver for NT4 as well as Win98. Woodhead also has an NT driver available for download.
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.
USB Support on Windows 98 explains the differences between the USB support in Windows 95 and 98.
Setup Classes Versus Interface Classes. All about GUIDS.
Windows Logo Program for Hardware. This is different from the Implementers Forum's Certified USB Logo.
Suplog.exe is a utility that simplifies capturing and displaying of SetupAPI logs. During device installation or removal, Windows' Device Manager calls SetupXxx and SetupDiXxx functions. With appropriate options set in the registry, the functions generate a log, which can provide information about the execution of INF file directives and the execution of co-installers. Freeware from SourceQuest.
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. Microsoft has some information in the Intermediate USB FAQ. Also see Microsoft OS Descriptors from SourceQuest.
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.
Creating Windows INF Files.
INF Files for Bears of Little Brain. From Brian Catlin.
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.
USB MIDI driver for Linux. From Studio Breeze.
Jungo's WinDriver USB includes support for Linux.
Java USB for Linux.
DOS
DosUSB allows DOS applications and drivers to communicate with USB devices. From Georg Potthast.
No comments:
Post a Comment