Host controller interface (USB, Firewire)
A host controller interface (HCI) is a register-level interface that enables a host controller for USB or FireWire hardware to communicate with a host controller driver in software. The driver software is typically provided with an operating system of a personal computer, but may also be implemented by application-specific devices such as a microcontroller.
On the expansion card or motherboard controller, this involves much custom logic, with digital logic engines in the motherboard's controller chip, plus analog circuitry managing the high-speed differential signals. On the software side, it requires a device driver (called a Host Controller Driver, or HCD).
Open Host Controller Interface
Open Host Controller Interface, or OHCI, is an open standard.
When applied to a FireWire card, OHCI means that the card supports a standard interface to the PC and can be used by the OHCI FireWire drivers that come with all modern operating systems. Because the card has a standard OHCI interface, the OS does not need to know in advance exactly who makes the card or how it works; it can safely assume that the card understands the set of well-defined commands that are defined in the standard protocol.
Open Host Controller Interface
The OHCI standard for USB is similar, but supports USB 1.1 (full and low speeds) only; so as a result its register interface looks completely different. Compared with UHCI, it moves more intelligence into the controller, and thus is accordingly much more efficient; this was part of the motivation for defining it. If a computer provides non-x86 USB 1.1, or x86 USB 1.1 without an Intel or VIA chipset, it probably uses OHCI (e.g. OHCI is common on add-in PCI Cards based on an NEC chipset).
Universal Host Controller Interface
Most standard PCs use Intel or Via based chip sets making UHCI far more prevalent than other implementations. Subsequently, some vendors are dropping the OHCI support in favor of UHCI.
Enhanced Host Controller Interface
Enhanced Host Controller Interface (EHCI) is a high-speed controller standard applicable to USB 2.0. Distinct standards for interfaces in x86 and non-x86 based systems, as existed previously, entailed greater complexity and costs than necessary. Consequently the USB-IF insisted on a public specification for EHCI. Intel hosted EHCI conformance testing and this helped to prevent incursion of proprietary features.
Originally a PC providing high-speed ports had two controllers, one handling low- and full-speed devices and the second handling high-speed devices. Typically such a system had UHCI, OHCI and EHCI drivers. The UHCI driver provided low- and full-speed functions using an Intel controller chipset on the motherboard. The OHCI driver provided low and full speed functions for USB ports of a PCI expansion card with a NEC controller chipset, if present. The EHCI driver provided high-speed functions for USB ports on the motherboard or on the NEC based card. In more recent hardware, all ports are routed through an internal "rate-matching" hub (RMH) and the EHCI controller indirectly provides full and low speed USB functions.
Extensible Host Controller Interface
Extensible Host Controller Interface (XHCI) is the newest host controller standard that improves speed, power efficiency and virtualization over its predecessors The goal was also to define a USB host controller to replace UHCI/OHCI/EHCI. It supports all USB device speeds (USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed).
- Universal Serial Bus (USB)
- Advanced Host Controller Interface (AHCI)
- EHCI (xHCI 0.9 SuperSpeed USB Architecture - USB 3.0)
- Extensible Host Controller Interface (XHCI)
- WHCI 1.0 (Wireless USB 1.0)
- RAID Controller
- Host adapter
- An OHCI for USB standard document from Compaq, Microsoft and National Semiconductor (PDF)
- Linux kernel source: OHCI and EHCI documentation
- Intel EHCI Specification
- Intel xHCI Specification
- xHCI draft specification is finally available