Writing USB Drivers

Writing USB Drivers

by Greg Kroah-Hartman
4.0 1

NOOK Book(eBook)

Available on Compatible NOOK Devices and the free NOOK Apps.
Want a NOOK ? Explore Now


Writing USB Drivers by Greg Kroah-Hartman

The Linux USB subsystem has grown from supporting only two different types of devices in the 2.2.7 kernel (mice and keyboards), to over 20 different types of devices in the 2.4 kernel. Linux currently supports almost all USB class devices (standard types of devices like keyboards, mice, modems, printers and speakers) and an ever-growing number of vendor-specific devices (such as USB to serial converters, digital cameras, Ethernet devices and MP3 players). For a full list of the different USB devices currently supported, see Resources.

The remaining kinds of USB devices that do not have support on Linux are almost all vendor-specific devices. Each vendor decides to implement a custom protocol to talk to their device, so a custom driver usually needs to be created. Some vendors are open with their USB protocols and help with the creation
of Linux drivers, while others do not publish them, and developers are forced to reverse-engineer. See Resources for some links to handy reverse-engineering tools.
Because each different protocol causes a new driver to be created, I have written a generic USB driver skeleton, modeled after the pci-skeleton.c file in the kernel source tree upon which many PCI network drivers have been based. This USB skeleton can be found at drivers/usb/usb-skeleton.c in the kernel
source tree. In this article I will walk through the basics of the skeleton driver, explaining the different pieces and what needs to be done to customize it to your specific device.

Product Details

BN ID: 2940013332232
Publisher: ReadCycle
Publication date: 09/10/2011
Sold by: Barnes & Noble
Format: NOOK Book
File size: 35 KB

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews

Writing USB Drivers 4 out of 5 based on 0 ratings. 1 reviews.
Anonymous More than 1 year ago
A little bit over my head, but if i don't challenge myself, I'll never learn, right??? AND. A bit out dated, as its talking about USB 1.0 ....