Linux USB hits the prime time

Author: JT Smith

Brad Hards writes: “With the release of the 2.4 kernel, Linux users gained serious USB
support for a wide range of devices. The Linux USB subsystem,
integrated in the kernel and already supported by most Linux
distributions, supports all necessary features like plug-and-play,
USB bandwith allocation and more than 100 ports per bus. This USB
support is key to the emerging Linux desktop market.

Linux supports both the Universal Host Controller Interface (UHCI,
used by Intel and Via motherboard chipsets) and the Open Host
Controller Interface (OHCI, used by Compaq, Apple, SiS, OPTi, Lucent
and ALi chipsets), making USB support available to anyone with a
modern motherboard, or with a spare PCI or PcCard slot available to
add in a cheap USB host controller board. Linux also supports USB
hubs, which provide expansion for additional devices.

Linux 2.4 provides USB support for devices conforming to the USB Human
Interface Device class, which includes USB keyboards, USB mice and
touchpads, USB joysticks and USB graphics tablets. These devices are
supported such that they can appear as normal keyboards, mice and
joysticks. This means that applications do not need to be changed to
use the new kernel capabilities. In addition, the devices can also
appear on a new “event” interface, which allows customised
applications to take advantage of the additional capabilites offered
by USB devices.

Another popular USB peripheral is a USB printer. These devices usually
conform to the Printer class defined by the USB Implementers Forum,
and Linux USB supports the Printer class. Some manufacturers have
produced printers that require special “escape” codes to enable the
USB port, however this is normally fairly easy to configure in Linux
using the normal printer tools (such as lpd and CUPS).

Althought there is no official USB parallel port class, Linux USB
supports a wide range of parallel adapters because many of them
conform to the USB printer class driver. Linux USB natively
supports the Lucent USS720 parallel port adapter which can appear as
either a printer or as a parallel part. Linux USB also supports a
large range of serial devices, including ConnectTech Whiteheat, the
Handsprind Visor, the range of Keyspan devices, Belkin and Peracom
single port converters, some of the Digi Accelport converters, and the
Empeg car MP3 player. Some serial devices are not yet supported
because of a lack of technical information from the manufacturers.

Linux also supports the USB Mass Storage class, used by a wide range
of conventional storage devices (such as floppy disks and the Iomega
Zip disks), and also used for emerging standards such as Compact
Flash, Smartmedia and the Sony Memory Stick. Some manufacturers have
used the Mass Storage device class to make digital cameras appear as
normal disks, allowing the full range of Linux file utilties to be
used for image manipulation.

Linux has provided scanner support through the SANE package for some
time, and Linux provides support for a small range of USB scanners
with a set of kernel space drivers and the SANE tools provided with
most distributions. Further support is possible, but depends on
availability of documentation from scanner manufacturers.

Linux provides experimental support for a range of USB networking
devices, with the 10/100Mbps USB to Ethernet devices (using the ADMtek
chipset) providing the most mature support so far. Support for other
devices, including the various USB-to-USB devices and USB to Ethernet
devices using KLSI and CATC chipsets, are under active development.

About the Linux USB project

The Linux USB project is developing USB support for the Linux 2.2 and
Linux 2.4 kernels. The Linux USB homepage is
Supporters of Linux USB development include: 3Com,APC, CATC, Compaq,
Datalux, Iomega, Keyspan, Kodak, Netchip Technology, Sandisk, SuSE and
Y-E Data.

Contact information

For further details, contact Brad Hards (


  • Linux