Chapter 24. USB Communications

The first PCs shipped in 1981 used serial ports and parallel ports to connect external peripherals. Although the RS-232 serial and Centronics parallel technologies had improved gradually over the years, by the mid-'90s those technologies had reached their limits. In terms of connectivity to external devices, the PC of 1995 differed very little from the PC of 1981; the ports were a bit faster, perhaps, but they were fundamentally similar.

In the interim, the bandwidth needs of external peripherals had increased greatly. Character-mode dot-matrix and daisy-wheel printers had given way to graphic-mode page printers. Modems were pushing the throughput limitations of RS-232. Also, it was obvious that emerging categories of external peripherals?such as digital cameras, CD writers, tape drives, and other external storage devices?would require much more bandwidth than standard serial or parallel connections could provide. Neither was bandwidth the only limitation. Serial and parallel ports have the following drawbacks for connecting external peripherals:

Low bandwidth

Standard serial ports top out at 115 Kb/s, and parallel ports at 500 Kb/s to 2 Mb/s. Although these speeds are adequate for low-speed peripherals, they are unacceptably slow for hi-speed peripherals.

Point-to-point connections

Standard serial and parallel ports dedicate a port to each device. Because there is a practical limit to the number of serial ports and parallel ports that can be installed in a PC, the number and type of external devices that can be connected are limited.

Resource demands

Each serial or parallel port occupies scarce system resources, in particular an IRQ. A PC has only 16 IRQ lines, most of which are already occupied. It is often impossible to install the required number of serial or parallel ports because insufficient interrupts are available.

Ease-of-use issues

Connecting devices to serial or parallel ports may be complex and trouble-prone because cable pinouts and port configurations are not well-standardized. Serial ports in particular accept a wide variety of different cables, none of which is likely to be interchangeable with any other. Parallel ports use more standardized cable pinouts, but various parallel devices may require different port configurations. In particular, attempting to daisy-chain parallel devices via pass-through ports often introduces incompatibilities. Also, serial and parallel ports are always located on the rear of the computer, which makes connecting and disconnecting them inconvenient.

What PCs really needed was a fast bus-based scheme that allowed multiple devices to be daisy-chained together from a single port on the PC. SCSI had the potential to fulfill this need, but its high cost and complexity made it a nonstarter for that purpose. IEEE-1394, also called FireWire, might have been suitable, but FireWire is a proprietary Apple technology with, at the time, high licensing costs that motherboard and peripheral makers refused to pay. The PC industry had long been aware of the need for better external peripheral connectivity, but it was not until 1996 that vendors finally began to address it. Their solution is called Universal Serial Bus (USB).

USB is aptly named. It is universal because every modern PC or motherboard includes USB and because USB allows you to connect almost any type of peripheral, including modems, printers, speakers, keyboards, scanners, mice, joysticks, external drives, and digital cameras. It is serial in that it uses serial communication protocols on a single data pair. It is a logical bus (although the physical topology is a tiered star) that allows up to 127 devices to be daisy-chained on a single pair of conductors.

One convenient way to think about USB is as an outside-the-box Plug-and-Play bus. All connected USB devices are managed by the USB Host Controller Interface (HCI) in the PC, and all devices share the IRQ assigned to that HCI. Devices can (in theory, at least) be plugged or unplugged without rebooting the computer.

Although nearly all PCs and motherboards made since 1997 have USB ports, for a long time those ports were nearly useless, for three reasons:

  • USB requires native operating system support to provide full functionality. Until Windows 98 and Windows 2000 began to proliferate, that support was lacking. Windows NT 4 and early Windows 95 releases have no USB support, although a few peripheral makers provided custom drivers to allow their devices to work under these operating systems. Windows 95 OSR 2.1 introduced limited support for a few USB devices, but using USB under Windows 95 is an exercise in frustration. Windows 98/98SE/Me/2000/XP support USB 1.1. Windows XP supports USB 2.0 natively if SP1 or later is applied, although you may need to download the latest release of the USB 2.0 driver from the Windows Update site. Even with the latest service pack installed, Windows 2000 does not support USB 2.0 directly, although you can download native Windows 2000 USB 2.0 drivers from the Windows Update site. For more information about USB 2.0 support under Windows 2000 and Windows XP, see Knowledge Base articles 319973 and 312370, respectively. The Linux kernel has included USB support since 2.2.18. The Linux 2.4.20 or later kernel supports USB 2.0 directly.

    Only Windows 2000 and XP officially support USB 2.0, but many PCI USB 2.0 interface cards are available that include Windows 9X USB 2.0 drivers supplied by the hardware vendor. The only PCI USB 2.0 interface card we have used is the Adaptec USB2connect, which operates properly with the supplied drivers. But our readers report that many other brands of PCI USB 2.0 adapter cards provide fast, reliable USB 2.0 support under Windows 9X.

  • USB peripherals were hard to find prior to 1999, and were often more expensive than versions that used legacy interfaces. By 2000, that situation had reversed itself, with USB peripherals readily available and often cheaper than peripherals with legacy interfaces. As of July 2003, nearly all mainstream external peripherals use the USB interface, and old-style serial and parallel peripherals are becoming hard to find.

  • Early USB ports and peripherals often exhibited incompatibilities and other strange behavior. Removing a connected peripheral might crash your system, or a newly connected device might require a reboot to be recognized. Some peripherals demanded that their drivers be reinstalled every time they were disconnected and then reconnected. Some peripherals drew so much power that other devices on that USB port would cease operating or the system would refuse to boot until the offending device was disconnected. And so on. In fact, these conflicts and incompatibilities remain a problem with more recent USB interfaces and devices, although the problems are less severe. As of July 2003, it appears that the teething pains USB experienced during its early days have largely been overcome, although even some very recent motherboards and chipsets continue to cause problems.

Despite these problems, by mid-2000 USB had achieved critical mass. With Windows 98/SE/Me and Windows 2000 available and USB peripherals shipping in volume, USB transitioned from a developing standard with great potential into a real-world solution, albeit a flawed one. USB has now largely replaced the legacy connectors that clutter the back of recent PCs.

Legacy-reduced motherboards that began shipping in 2000 replaced or supplemented serial and parallel ports with additional USB ports?usually four rather than the previously standard two. Legacy-free motherboards provide nothing but USB ports for connecting external peripherals (other than perhaps video), and are usually equipped with six USB ports?four at the rear and two on the front panel. A few legacy-free motherboards also include IEEE-1394 (FireWire) ports. Most external peripherals now have only a USB interface, as serial and parallel peripherals now teeter on the edge between obsolescent and obsolete.

Despite its slow start and the nagging problems that still sometimes plague it, USB has moved from being the wave of the future to being the current standard. This chapter tells you what you need to know about USB.