- Note: USB may also mean upper sideband in radio.
Universal Serial Bus (USB) provides a serial bus standard for connecting devices, usually to a computer, but it also is in use on other devices such as set-top boxes, game consoles and PDAs.
A USB system has an asymmetric design, consisting of a host controller and multiple devices connected in a tree-like fashion using special hub devices. There is a limit of 5 levels of branching hubs per controller. Up to 127 devices may be connected to a single host controller, but the count must include the hub devices as well. A modern computer likely has several host controllers so the total useful number of connected devices is beyond what could reasonably be connected to a single computer. There is no need for a terminator on any USB bus, as there is for SCSI and some others.
The design of USB aimed to remove the need for adding separate expansion cards into the computer's ISA or PCI bus, and improve plug-and-play capabilities by allowing devices to be hot swapped or added to the system without rebooting the computer. When the new device first plugs in, the host enumerates it and loads the device driver necessary to run it.
USB can connect peripherals such as mice, keyboards, scanners, digital cameras, printers, hard disks, and networking components. For multimedia devices such as scanners and digital cameras, USB has become the standard connection method. For printers, USB has also grown in popularity and started displacing parallel ports because USB makes it simple to add more than one printer to a computer. As of 2004 there were about 1 billion USB devices in the world.
The design of USB is standardized by the USB Implementers Forum (USBIF), an industry standards body incorporating leading companies from the computer and electronics industries. Notable members included Apple Computer, Hewlett-Packard, NEC, Microsoft, Intel, and Agere.
The USB specification is at version 2.0 as of January 2005. This version was standardized by the USBIF at the end of 2001. Previous notable releases of the specification were 0.9, 1.0, and 1.1. Each iteration of the standard is completely backward compatible with previous versions.
USB connects several devices to a host controller through a chain of hubs. In USB lingo devices are referred to as functions, because in theory what we know as a device may actually host several functions, such as a router that is a Secure Digital Card reader at the same time. The hubs are special purpose devices that are not officially considered functions. There always exists one hub known as the root hub, which is attached directly to the host controller.
These devices/functions (and hubs) have associated pipes (logical channels) which are connections from the host controller to a logical entity on the device named an endpoint. The pipes are synonymous to byte streams such as in the pipelines of Unix, however in USB lingo the term endpoint is (sloppily) used as a synonym for the entire pipe, even in the standard documentation.
These endpoints (and their respective pipes) are numbered 0-15 in each direction, so a device/function can have up to 32 active pipes, 16 inward and 16 outward. (The OUT direction shall be interpreted out of the host controller and the IN direction is into the host controller.) Endpoint 0 is however reserved for the bus management in both directions and thus takes up two of the 32 endpoints. In these pipes, data is transferred in packets of varying length. Each pipe has a maximum packet length, typically 2n bytes, so a USB packet will often contain something on the order of 8, 16, 32, 64, 128, 256, 512 or 1024 bytes.
Each endpoint can transfer data in one direction only, either into or out of the device/function, so each pipe is uni-directional. All USB devices have at least two such pipes/endpoints: namely endpoint 0 which is used to control the device on the bus. There is always an inward and an outward pipe numbered 0 on each device. The pipes are also divided into four different categories by way of their transfer type:
- control transfers - typically used for short, simple commands to the device, and a status response, used e.g. by the bus control pipe number 0
- isochronous transfers - at some guaranteed speed (often but not necessarily as fast as possible) but with possible data loss, e.g. realtime audio or video
- interrupt transfers - devices that need guaranteed quick responses (bounded latency), e.g. pointing devices and keyboards
- bulk transfers - large sporadic transfers using all remaining available bandwidth (but with no guarantees on bandwidth or latency), e.g. file transfers
When a device (function) or hub is attached to the host controller through any hub on the bus, it is given a unique 7 bit address on the bus by the host controller. The host controller then polls the bus for traffic, usually in a round-robin fashion, so no device can transfer any data on the bus without explicit request from the host controller.
To access an endpoint, a hierarchical configuration must be obtained. The device connected to the bus has one (and only one) device descriptor which in turn has one or more configuration descriptors. These configurations often correspond to states, e.g. active vs. low power mode. Each configuration descriptor in turn has one or more interface descriptors, which describe certain aspects of the device, so that it may be used for different purposes: for example, a camera may have both audio and video interfaces. These interface descriptors in turn have one default interface setting and possibly more alternate interface settings which in turn have endpoint descriptors, as outlined above. An endpoint may however be reused among several interfaces and alternate interface settings.
The hardware that contains the host controller and the root hub has an interface toward the programmer which is called Host Controller Device (HCD) and is defined by the hardware implementer. In practice, these are hardware registers (ports) in the computer.
At version 1.0 and 1.1 there were two competing HCD implementations. Compaq's Open Host Controller Interface (OHCI) was adopted as the standard by the USB-IF. However, Intel subsequently created a specification they called the Universal Host Controller Interface (UHCI) and insisted other implementers pay to license and implement UHCI. VIA Technologies licensed the UHCI standard from Intel; all other chipset implementers use OHCI. The dueling implementations forced operating system vendors and hardware vendors to develop and test on both implementations which increased cost. During the design phase of USB 2.0 the USB-IF insisted on only one implementation. The USB 2.0 HCD implementation is called the Extended Host Controller Interface (EHCI). Only EHCI can support high-speed transfers. Each EHCI controller contains four virtual HCD implementations to support Full Speed and Low Speed devices. The virtual HCD on Intel and Via EHCI controllers are UHCI. All other vendors use virtual OHCI controllers.
On Microsoft platforms, one can tell whether a USB port is version 2.0 by opening the Device Manager and checking for the word "Enhanced" in its description; only USB 2.0 drivers will contain the word "Enhanced."
Devices that attach to the bus can be full-custom devices requiring a full-custom device driver to be used, or may belong to a device class. These classes define an expected behaviour in terms of device and interface descriptors so that the same device driver may be used for any device that claims to be a member of a certain class. An operating system is supposed to implement all device classes so as to provide generic drivers for any USB device. The most used device classes are:
- USB human interface device class, keyboards, mice etc.
- USB mass storage device class used for keydrives, portable hard drives, Multi Media Card readers, digital cameras, digital audio players etc. This device class presents the device as a file system.
- USB communications device class ("CDC") used for modems (and winmodems), network cards (and cross-over cables), ISDN connections, Fax
- USB printer device class, printer-like devices
- USB audio device class, sound card-like devices
- USB video device class, motion image capture devices
USB signals are transmitted on a twisted pair of data cables, labelled D+ and D-. These collectively use half-duplex differential signaling to combat the effects of electromagnetic noise on longer lines. Contrary to popular belief, D+ and D- operate together; they are not separate simplex connections.
USB supports three data rates. A Low Speed rate of 1.5 Mbit per second that is mostly used for Human Input Devices (HID) such as keyboards, mice, joysticks and often the buttons on higher speed devices such as printers or scanners.
USB has a Full Speed rate of 12 Mbit per second. Full Speed was the fastest rate before the USB 2.0 specification and many devices fall back to Full Speed. Full Speed devices divide the USB bandwidth between them in a first-come first-serve basis and it is not uncommon to run out of bandwidth with several isochronous devices. All USB Hubs support Full Speed.
USB 2.0 added a Hi-Speed rate of 480 Mbit per second. Not all USB 2.0 devices are Hi-Speed. A USB device should specify the speed it will use by correct labeling on the box it came in or sometimes on the device itself. The USBIF certifies devices and provides special marketing logos for each speed.
Hi-Speed devices should fall back to the slower data rate of Full Speed when plugged into a Full Speed hub. Hi-Speed hubs have a special function called the Transaction Translator that segregates Full Speed and Low Speed bus traffic from Hi-Speed traffic. The Transaction Translator in a Hi-Speed hub (or possibly each port depending on the electrical design) will function as a completely separate Full Speed bus to Full Speed and Low Speed devices attached to it. This segregation is for bandwidth only; bus rules about power and hub depth still apply.
The connectors which the USB committee specified were designed to support a number of USB's underlying goals, and to reflect lessons learned from the varied menagerie of connectors then in service. In particular:
- The connectors are designed to be robust. Many previous connector designs were fragile, with pins or other delicate components prone to bending or breaking, even with the application of only very modest force. The electrical contacts in a USB connector are protected by an adjacent plastic tongue, and the entire connecting assembly is further protected by an enclosing metal sheath. As a result USB connectors can safely be handled, inserted, and removed, even by a small child. The encasing sheath and the tough moulded plug body mean that a connector can be dropped, stepped upon, even crushed or struck, all without damage; a considerable degree of force is needed to significantly damage a USB connector.
- It is impossible to incorrectly attach a USB connector. Connectors cannot be plugged-in upside down, and it is clear from the appearance and kinesthetic sensation of making a connection when the plug and socket are correctly mated.
- The connectors are particularly cheap to manufacture.
- The connectors enforce the directed topology of a USB network. USB does not support cyclical networks, so the connectors from incompatible USB devices are themselves incompatible. Unlike other communications systems (e.g. RJ-45 cabling) gender-changers are never used, making it difficult to create a cyclic USB network.
- A moderate insertion/removal force is specified. USB cables and small USB devices are held in place by the gripping force from the receptacle (without the need for the screws, clips, or thumbturns other connectors require). The force needed to make or break a connection is modest, allowing connections to be made in awkward circumstances or by those with motor disabilities.
- The connector construction always ensures that the external sheath on the plug contacts with its counterpart in the receptacle before the four connectors within are connected. This sheath is typically connected to the system ground, allowing otherwise damaging static charges to be safely discharged by this route (rather than via delicate electronic components). This means of enclosure also means that there is a (moderate) degree of protection from electromagnetic interference afforded to the USB signal while it travels through the mated connector pair (this is the only location when the otherwise twisted data pair must travel a distance in parallel).
- The USB standard specifies relatively low tolerances for compliant USB connectors, intending to minimize incompatibilities in connectors produced by different vendors (a goal that has been very successfully achieved). Unlike most other connector standards, the USB spec also defines limits to the size of a connecting device in the area around its plug. This was done to avoid circumstances where a device complied with the connector specification but its large size blocked adjacent ports. Compliant devices must either fit within the size restrictions or support a compliant extension cable which does.
The USB 1.0, 1.1 and 2.0 specifications define two types of connectors for the attachment of devices to the bus: A, and B. However, the mechanical layer has changed in some examples. For example, the IBM UltraPort is a proprietary USB connector located on the top of IBM's notebook LCDs. It uses a different mechanical connector while preserving the USB signaling and protocol. Other manufacturers of small items also developed their own small form factor connector, and a wide variety of these have appeared. For specification purposes, these devices were treated as having a captive cable.
An extension to USB called USB-On-The-Go allows a single port to act as either a host or a device - chosen by which end of the cable plugs into the socket on the unit. Even after the cable is hooked up and the units are talking, the two units may "swap" ends under program control. This facility targets units such as PDAs where the USB link might connect to a PC's host port as a device in one instance, yet connect as a host itself to a keyboard and mouse device in another instance. USB-On-The-Go has therefore defined two small form factor connectors, the mini-A and mini-B, and a hermaphroditic socket (mini-AB), which should stop the proliferation of proprietary designs.
Wireless USB is a promising future standard being developed to extend the USB standard while maintaining backwards compatiblity with USB 1.1 and USB 2.0 on the protocol level.
The USB connector provides a single 5 volt wire from which connected USB devices may power themselves. A given segment of the bus is specified to deliver up to 500 mA. This is often enough to power several devices, although this budget must be shared among all devices downstream of an unpowered hub. A bus-powered device may use as much of that power as allowed by the port it is plugged into. Bus-powered hubs can continue to distribute the bus provided power to connected devices but the USB specification only allows for a single level of bus-powered devices from a bus-powered hub. This disallows connection of a bus-powered hub to another bus-powered hub. Many hubs include external power supplies which will power devices connected through them without taking power from the bus. Devices that need more than 500 mA or higher than 5 volts must provide their own power.
When USB devices (including hubs) are first connected they are interrogated by the host controller, which enquires of each their maximum power requirements. The host operating system typically keeps track of the power requirements of the USB network and may warn the computer's operator when a given segment requires more power than is available (and will generally shut down devices or hubs in order to keep power consumption within the available resource).
A number of devices use this power supply without participating in a proper USB network. The typical example is a USB-powered reading light, but fans, battery chargers (particularly for mobile telephones) and even miniature vacuum cleaners are available. In most cases, these items contain no electronic circuitry, and thus are not proper USB devices at all. This can cause problems with some computers - the USB specification requires that devices connect in a low-power mode (100 mA maximum) and state how much current they need, before switching, with the host's permission, into high-power mode. USB-powered devices attempting to draw large currents without requesting the power will not work with certain USB controllers, and will either disrupt other devices on the bus or fail to work themselves (or both).
USB compared to other standards
, a typical USB mass storage device
USB implements connections to storage device using a set of standards called the USB mass storage device class. This was initially intended for traditional magnetic and optical drives, but has been extended to support a wide variety of devices. USB is not intended to be a primary bus for a computers internal storage. Buses such as ATA (IDE) and SCSI fulfill that role.
However, USB has one important advantage in making it possible to install and remove devices without opening the computer case, making it useful for external drives. Today, a number of manufacturers offer portable USB hard drives that offer performance comparable to conventional ATA (IDE) drives. These external drives, called enclosures, are often composed of translating devices that connect to USB on one side and to conventional IDE, ATA, ATAPI, or SCSI drives on the other. You install a drive into the enclosure and then plug the enclosure into the computer; thus functioning as a regular USB mass-storage device.
Firewire technology is also commonly used with portable hard drives and some include both types of ports. Firewire tends to perform better in speed benchmark tests. However, USB ports are more common on consumer-level computers, which enhances the portability of a USB drive.
Human-interface devices (HIDs)
USB has not completely replaced AT keyboard connections and PS/2 keyboard and mouse connections, but virtually all PC motherboards manufactured today have one or more USB ports. As of 2004, most new motherboards have multiple USB 2.0 high-speed ports, though some are internal, and require a "header" connection to be accessible from the front or rear of the computer case. Similarly support for joysticks, keypads, tablets and other human-interface devices is progressively migrating over from MIDI, "game", and PS/2 connectors. It is now quite common for a mouse or keyboard to be a USB device, which is shipped with a small USB-to-PS/2 adaptor connected to the end of its cable, so it can be used with either USB or PS/2 ports.
If one has the choice of connecting a keyboard to either a USB or a PS/2 port, it is important to determine whether the BIOS supports the USB keyboard when the operating system cannot enter its normal state, because on some older computers an operating system driver is needed to use a USB keyboard. Thus on some computers a USB keyboard cannot be used for troubleshooting when the OS will not start.
Apple computers have used USB mice and keyboards exclusively since the late 1990s.
Extensions to USB
The PictBridge standard allows for interconnecting consumer imaging devices. It typically uses USB as the underlying communication layer.
Microsoft's Xbox console uses standard USB 2.0 signalling, but features a proprietary connector rather than the standard USB connector. Similarly IBM UltraPort uses standard USB signalling but provides more power to devices, and uses a proprietary connection format.
The USB Implementers Forum is working on a wireless networking standard based on the USB protocol. Wireless USB is intended as a cable-replacement technology, but will also compete against Bluetooth, Ultra wideband (and to a lesser extent against WiFi).
- USB home, including documentation (http://www.usb.org/)
- USB for DOS (http://www.bootdisk.com/usb.htm)
- Linux USB Project (http://www.linux-usb.org/), containing much technical information and documentation.
- Linux usbmount (http://www.zero-based.org/debian/usbmount.html).
- USB 2.0 vs Firewire (http://www.barefeats.com/usb2.html) - benchmark using external drives on Macs
- USB in a NutShell (http://www.beyondlogic.org/usbnutshell/usb-in-a-nutshell.pdf) - a primer for developers
- Universal Host Controller Interface (UHCI) (http://developer.intel.com/technology/usb/uhci11d.htm)