How to Write a Linux USB Device Driver  Greg shares his USB
driver skeleton and shows how it can be customized for your
specific device.  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