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
peripheralssuch as digital cameras, CD writers, tape drives,
and other external storage deviceswould 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:
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.
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.
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.
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.
|
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 portsusually
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 portsfour 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.