Driver Host Controller

Host controller interface (USB, Firewire) driver host controller

This topic contains information on the following registry settings: HCD module; USB host controller driver; Registry keys control how USB device drivers are loaded.

Via pci to usb enhanced host controller free download - VIA USB 2.0 Host Controller Driver, Standard Enhanced PCI to USB Host Controller, VIA USB 2.0 Enhanced Host.

USB host-side drivers in Windows

USB 3.0 Driver: Intel USB 3.0 eXtensible Host Controller Driver for Intel 7 Series/C216 Chipset Family.

driver host controller driver host controller driver host controller

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.

Contents

1 FireWire

1.1 Open Host Controller Interface

2 USB

2.1 Open Host Controller Interface

2.2 Universal Host Controller Interface

2.3 Enhanced Host Controller Interface

2.4 Extensible Host Controller Interface

3 See also

4 References

5 External links

FireWire edit

Open Host Controller Interface edit

Open Host Controller Interface OHCI , is an open standard.

When applied to a FireWire IEEE 1394 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.

USB edit

The OHCI standard for USB is similar to the OHCI standard for FireWire, 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 from a USB controller that is not part of an Intel or a VIA chipset, it probably uses OHCI e.g. OHCI is common on add-in PCI Cards based on an NEC chipset. It has many fewer intellectual property restrictions than UHCI. 1 It only supports 32-bit memory addressing, 2 so it requires an IOMMU or a computationally expensive bounce buffer to work with a 64-bit operating system. OHCI interfaces to the rest of the computer only with memory-mapped I/O. 2

Universal Host Controller Interface edit

Universal Host Controller Interface UHCI is a proprietary interface created by Intel for USB 1.x full and low speeds. It requires a license from Intel. A USB controller using UHCI does little in hardware and requires a software UHCI driver to do much of the work of managing the USB bus. 1 It only supports 32-bit memory addressing, 3 so it requires an IOMMU or a computationally expensive bounce buffer to work with a 64-bit operating system. UHCI is configured with port-mapped I/O and memory-mapped I/O, and also requires memory-mapped I/O for status updates and for data buffers needed to hold data that needs to be sent or data that was received. 3

Enhanced Host Controller Interface edit

Enhanced Host Controller Interface EHCI is a high-speed controller standard applicable to USB 2.0. The existence of UHCI and OHCI 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 EHCI and either OHCI or UHCI drivers. The UHCI driver provided low- and full-speed functions using an Intel or VIA chipset s USB host controllers on the motherboard. The OHCI driver provided low and full speed functions for USB ports of a PCI expansion card with any other chipset vendor s integrated USB host controllers or discrete controller chipsets attached to the computer s expansion bus, if present. The EHCI driver provided high-speed functions for USB ports on the motherboard or on the discrete USB controller. 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.

EHCI was designed to work with 32-bit or 64-bit operating systems, so it does not need a bounce buffer or IOMMU to work with a 64-bit operating system as long as a rate-matching hub is implemented to provide full-speed and low-speed connectivity instead of companion controllers.

Extensible Host Controller Interface edit

Main article: 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.1 SuperSpeed, USB 3.0 SuperSpeed, USB 2.0 Low-, Full-, and High-speed, USB 1.1 Low- and Full-speed.

See also edit

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

LPCIO

EHCI

References edit

a b gowdy August 27, 2007. Linux USB FAQ. Retrieved April 13, 2014. 

a b ftp://ftp.compaq.com/pub/supportinformation/papers/hcir1_0a.pdf

a b ftp://ftp.netbsd.org/pub/NetBSD/misc/blymn/uhci11d.pdf

External links edit

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

Retrieved from https://en.wikipedia.org/w/index.php.title Host_controller_interface_ USB,_Firewire oldid 688706222

Categories: Computer hardware standardsUSB.

driver host controller

This package provides Dell USB 3.0 Host Controller Driver and is supported on Inspiron N4110/N4120/N7110 and Vostro 3750/3450 that are running the following Windows.

This topic provides an overview of the Universal Serial Bus USB driver stack architecture. The xHCI driver is the USB 3.0 host controller driver.

Search downloads. Any Download Type 3 Any Intel USB 3.0 eXtensible Host Controller Driver on Intel 8 Series/C220 Series Chipset Family/4th Generation Intel.

USB 3.0 Host Controller Driver for Windows 7 32-bit and 64-bit, Vista 32-bit and 64-bit, XP - ThinkCentre M Series, Edge Series / ThinkStation.

This topic provides an overview of the Universal Serial Bus USB driver stack architecture.

The following figure shows the architectural block diagram of the USB driver stack for Windows 8. The diagram shows separate USB driver stacks for USB 2.0 and USB 3.0. Windows loads the USB 3.0 driver stack when a device is attached to an xHCI controller. The USB 3.0 stack is new in Windows 8.

Windows loads the USB 2.0 driver stack for devices that are attached to eHCI, oHCI, or uHCI controllers. The USB 2.0 driver stack ships in Windows XP with Service Pack 1 SP1 and later versions of the Windows operating system.

USB 3.0 driver stack

The USB 3.0 stack is new in Windows 8. Microsoft created the new drivers by using Kernel Mode Driver Framework KMDF interfaces. The KMDF driver model reduces complexity and improves stability.

USB 3.0 host controller driver Usbxhci.sys

The xHCI driver is the USB 3.0 host controller driver. The responsibilities of the xHCI driver include initializing MMIO registers and host memory-based data structures for xHCI controller hardware, mapping transfer requests from upper layer drivers to Transfer Request Blocks, and submitting the requests to the hardware. After completing a transfer, the driver handles transfer completion events from the hardware and propagates the events up the driver stack. It also controls the xHCI controller device slots and endpoint contexts.

The xHCI driver is new in Windows 8 and is not an extension of the eHCI miniport driver that was available in earlier versions of the operating system. The new driver was written by using Kernel Mode Driver Framework KMDF interfaces and uses KMDF for all controller power management and PnP events. Windows loads the xHCI driver as the function device object FDO in the device stack for the host controller.

USB host controller extension Ucx01000.sys

The USB host controller extension driver an extension to KMDF is the new extension to the underlying class-specific host controller driver, such as the xHCI driver. The new driver is extensible and is designed to support other types of host controller drivers that are expected to be developed in the future. The USB host controller extension serves as a common abstracted interface to the hub driver, provides a generic mechanism for queuing requests to the host controller driver, and overrides certain selected functions. All I/O requests initiated by upper drivers reach the host controller extension driver before the xHCI driver. Upon receiving an I/O request, the host controller extension validates the request and then forwards the request to the proper KMDF queue associated with the target endpoint. The xHCI driver, when ready for processing, retrieves the request from the queue.

The responsibilities of the USB host controller extension driver are:

Provides USB-specific objects to the xHCI driver.

Provides KMDF event callback routines to the xHCI driver.

Manages and control the operations of the root hub associated with the host controller.

Implements features that are configurable by the client driver, like chained MDLs, streams, and so on.

USB hub driver Usbhub3.sys

The new hub driver, in the USB driver stack for 3.0 devices, uses the KMDF driver model. The hub driver primarily performs these tasks:

Manages USB hubs and their ports.

Enumerates devices and other hubs attached to their downstream ports.

Creates physical device objects PDOs for the enumerated devices and hubs.

Windows loads the hub driver as the FDO in the hub device stack. Device enumeration and hub management in the new driver are implemented through a set of state machines. The hub driver relies on KMDF for power management and PnP functions.

In addition to hub management, the hub driver also performs preliminary checks and processing of certain requests sent by the USB client driver layer. For instance, the hub driver parses a select-configuration request to determine which endpoints will be configured by the request. After parsing the information, the hub driver submits the request to the USB host controller extension or further processing.

USB 2.0 driver stack

Windows loads the USB 2.0 driver stack for devices that are attached to eHCI, oHCI, or uHCI controllers. The drivers in the USB 2.0 driver stack ship in Windows XP with SP1 and later versions of the Windows operating system. The USB 2.0 driver stack is designed to facilitate high-speed USB devices as defined in the USB 2.0 specification.

At the bottom of the USB driver stack is the host controller driver. It consists of the port driver, Usbport.sys, and one or more of three miniport drivers that run concurrently. When the system detects host controller hardware, it loads one of these miniport drivers. The miniport driver, after it is loaded, loads the port driver, Usbport.sys. The port driver handles those aspects of the host controller driver s duties that are independent of the specific protocol.

The Usbuhci.sys universal host controller interface miniport driver replaces the Uhcd.sys miniclass driver that shipped with Windows 2000. The Usbohci.sys open host controller interface miniport driver replaces Openhci.sys. The Usbehci.sys miniport driver supports high-speed USB devices and was introduced in Windows XP with SP1 and later and Windows Server 2003 and later operating systems.

In all versions of Windows that support USB 2.0, the operating system is capable of managing USB 1.1 and USB 2.0 host controllers simultaneously. Whenever the operating system detects that both types of controller are present, it creates two separate device nodes, one for each host controller. Windows subsequently loads the Usbehci.sys miniport driver for the USB 2.0-compliant host controller hardware and either Usbohci.sys or Openhci.sys for the USB 1.1-compliant hardware, depending on the system configuration.

Above the port driver is the USB bus driver, Usbhub.sys, also known as the hub driver. This is the device driver for each hub on the system.

USB common class generic parent driver Usbccgp.sys

The USB common class generic parent driver is the Microsoft-provided parent driver for composite devices. The hub driver enumerates and loads the parent composite driver if deviceClass is 0 or 0xef and numInterfaces is greater than 1 in the device descriptor. The hub driver generates the compatible ID for the parent composite driver as USB COMPOSITE. Usbccgp.sys uses Windows Driver Model WDM routines.

The parent composite driver enumerates all functions in a composite device and creates a PDO for each one. This causes the appropriate class or client driver to be loaded for each function in the device. Each function driver child PDO sends requests to the parent driver, which submits them to the USB hub driver.

Usbccgp.sys is included with Windows XP with SP1 and later versions of the Windows operating system. In Windows 8, the driver has been updated to implement function suspend and remote wake-up features as defined in the USB 3.0 specification.

For more information, see USB Generic Parent Driver Usbccgp.sys.

WinUSB Winusb.sys

Windows USB WinUSB is a Microsoft-provided generic driver for USB devices. WinUSB architecture consists of a kernel-mode driver Winusb.sys and a user-mode dynamic link library Winusb.dll. For devices that don t require a custom function driver, Winusb.sys can be installed in the device s kernel-mode stack as the function driver. User-mode processes can then communicate with Winusb.sys by using a set of device I/O control requests or by calling WinUsb_Xxx functions.

For more information, see WinUSB.

In Windows 8, the Microsoft-provided information INF file for WinUSB, Winusb.inf, contains USB MS_COMP_WINUSB as a device identifier string. This allows Winusb.sys to get automatically loaded as the function driver for those devices that have a matching WinUSB compatible ID in the MS OS descriptor. Such devices are called WinUSB devices. Hardware manufacturers are not required to distribute an INF file for their WinUSB device, making the driver installation process simpler for the end user. For more information, see WinUSB Device.

USB client driver

Each USB device, composite or non-composite, is managed by a client driver. A USB client driver is a class or device driver that is a client of the USB driver stack. Such drivers include class and device-specific drivers from Microsoft or a third-party vendor. To see a list of class drivers provided by Microsoft, see Drivers for the Supported USB Device Classes. A client driver creates requests to communicate with the device by calling public interfaces exposed by the USB driver stack.

A client driver for a composite device is no different from a client driver for a non-composite device, except for its location in the driver stack.

A client driver for a non-composite device is layered directly above the hub driver.

For a composite USB device that exposes multiple functions and does not have a parent class driver, Windows loads the USB generic parent driver Usbccgp.sys between the hub driver and the client driver layer. The parent driver creates a separate PDO for each function of a composite device. Client drivers FDOs for functions are loaded above the generic parent driver. Vendors might choose to provide a separate client driver for each function.

A USB client driver can run in either user mode or kernel mode, depending on the requirements of the driver. USB client drivers can be written by using KMDF, UMDF, or WDM routines.

Helper libraries for client drivers

Microsoft provides the following helper libraries to help kernel-mode drivers and applications to communicate with the USB driver stack:

Usbd.sys

Microsoft provides the Usbd.sys library that exports routines for USB client drivers. The helper routines simplify the operational tasks of a client driver. For instance, by using the helper routines, a USB client driver can build USB Request Blocks URBs for certain specific operations, such as selecting a configuration, and submit those URBs to the USB driver stack.

Usbdex.lib

This helper library is new for Windows 8. The library exports routines primarily for allocating and building URBs. Those routines replace some of the legacy routines exported by Usbd.sys. The new routines require the client driver to register with the USB driver stack, which maintains the handle for registration. That handle is used for calls to other Usbdex.lib routines. Certain URBs allocated by the new routines have an URB context that the USB driver uses for better tracking and processing. For more information, see Allocating and Building URBs.

Winusb.dll

Winusb.dll is a user-mode DLL that exposes WinUSB functions for communicating with Winusb.sys, which is loaded as a device s function driver in kernel mode. Applications use these functions to configure the device, retrieve information about the device, and perform I/O operations. For information about using these functions, see How to Access a USB Device by Using WinUSB Functions.

Related topics

Universal Serial Bus USB Drivers

USB Driver Development Guide

Send comments about this topic to Microsoft.

Generic USB xHCI Host Controller Driver Downloads. To find the latest driver for your computer we recommend running our Free Driver Scan. Find out how to make your.