The intent of USB was to provide a standardized Plug-and-Play interface that would permit USB-compliant devices from any manufacturer to coexist peacefully with those from any other maker. The ball got rolling in September 1995, when 25 major PC companies announced the formation of a consortium to develop a nonproprietary, open Host Controller Interface (HCI) standard. This was necessary because the HCI was not defined in the USB specification itself. Although it would have been possible for each motherboard or chipset manufacturer to develop a proprietary USB HCI, that would have introduced serious compatibility issues between the multiple HCIs and USB peripherals. So, for the good of the industry and in the interests of interoperability, nearly all of the major players in the PC industry signed on to this initiative.
The HCI is the heart of USB, just as the chipset is the heart of a motherboard. In fact, the USB HCI is often referred to as the USB chipset. Just as the system chipset defines the functionality and capabilities of the motherboard, coordinates the working of other motherboard components, and arbitrates conflicting demands, a USB HCI chipset defines the USB and performs analogous services for connected USB peripherals.
The HCI may reside in any or all of the following three places:
All modern chipsets contain at least a USB 1.1 HCI embedded in the Southbridge. Most chipsets introduced after mid-2002 include a USB 2.0 HCI. The quality and compatibility of the embedded HCI depend on the maker of the chipset and its age, but even the best and most recent embedded USB 1.1 HCIs may have issues with some peripherals, particularly older models. If you use USB heavily, and especially if you use many peripherals, it's often a good idea to disable the embedded HCI in BIOS and substitute an add-on PCI USB controller of more recent vintage.
A few motherboards implement the HCI as a discrete chip, separate from the main chipset Southbridge. This method is common in USB 2.0 transition motherboards. For example, early versions of Intel 845-family chipsets supported only USB 1.1. Some transition Intel motherboards, such as the D845BGSE, used a separate NEC mPD720100 USB 2.0 host controller as a stopgap to add USB 2.0 functionality until Intel chipsets with integrated USB 2.0 functionality became available. As with embedded USB HCIs, a discrete HCI can be disabled from BIOS Setup, should that become necessary.
Add-on PCI USB adapters are available from numerous makers in both USB 1.1 and USB 2.0 variants. USB 2.0 adapters cost little more than USB 1.1 adapters, so we recommend only USB 2.0 models. All USB 2.0 adapters we are familiar with use the NEC mPD720100 host controller, which fortunately seems to be a good one.
It is becoming increasingly common for motherboards to include more than one HCI. Because each HCI defines a USB, motherboards with multiple HCIs actually have two or more USBs defined, each of which has its own root hub ports and operates independently from the others. The benefits to having multiple USBs are that you can segregate devices that conflict with each other by connecting them to separate USBs, that you can dedicate separate USBs to USB 1.1 versus USB 2.0 devices, and that multiple HCIs allow the system to have several USB ports available at both the front and rear of the case.
There are three types of USB host controller:
The Open Host Controller Interface (OHCI) is a USB 1.X interface that was developed by a consortium of PC makers led by Compaq, Microsoft, and National Semiconductor. OHCI places more of the burden for managing USB functions on hardware, and less on software. OHCI is most common in systems that use non-Intel chipsets, including those from ALi, SiS, and VIA. Windows 98/SE/Me and Windows 2000/XP include native OHCI drivers. You can download the full Open Host Controller Interface Specification from http://h18000.www1.hp.com/productinfo/development/openhci.html.
The Universal Host Controller Interface (UHCI) is a USB 1.X interface that was developed by Intel. UHCI places more of the burden for managing USB functions on software, and less on hardware. UHCI is most common in systems with Intel chipsets, although many non-Intel chipsets also use UHCI. USB devices designed to use UHCI (e.g., the Intel USB camera) may not work properly with OHCI. Windows 98/SE/Me and Windows 2000/XP include native UHCI drivers. You can download the full Universal Host Controller Interface Design Guide from http://developer.intel.com/design/USB/UHCI11D.htm.
The Enhanced Host Controller Interface (EHCI) is the single USB 2.0 interface, used by all USB 2.0 devices. The simple fact that a single integrated HCI specification exists for USB 2.0 eliminates many of the problems that occurred with USB 1.1 because of competing HCI standards. Of Microsoft operating systems, only Windows XP and Windows 2000 have native EHCI drivers available. Microsoft has no plans to release EHCI drivers for any variant of Windows 9X. You can download the full Enhanced Host Controller Interface Specification from http://www.intel.com/technology/usb/ehcispec.htm.
In addition to the standard they support?OHCI, UHCI, or EHCI?USB host controllers vary in how well they are implemented. Early host controllers from all manufacturers, including Intel, have numerous bugs and incompatibilities, which may manifest in various ways, from minor performance glitches to a complete failure of the USB to recognize devices.
It is important to be aware of the particular host controller your system uses. That information can save you trouble when you are attempting to connect various devices to your system, and may even help you avoid buying a new USB device that has known incompatibilities with your existing configuration. In general, HCI issues are independent of operating system. That is, an HCI that has problems under Windows 9X is likely to have the same or similar problems under Windows 2000/XP and Linux.
Here are details about some of the USB host controllers you are likely to encounter:
Although we do not have extensive experience with ALi chipsets, there have been enough reported problems that we consider USB support to be suspect. When configuring an ALi-based system to use USB, we recommend updating the main system BIOS to the most recent available, installing the latest chipset drivers, disabling ACPI and power management in BIOS, and setting the BIOS PnP OS? option to No. In Windows, replace the ALi USB Host Controller with the Windows Standard OpenHCI USB Host Controller, and disable USB error detection (for Win98 SE or later only). If your motherboard has an old ALi chipset and you encounter USB problems, often the most practical solution is to install a PCI/USB card.
The AMD-750 "Irongate" chipset has reasonably robust USB support for an older chipset. Microsoft Knowledge Base article Q241134 describes one known problem that occurs under Windows 98 and 98SE with low-speed devices such as mice and keyboards, and provides a patch for that problem. The AMD-760 and AMD-760MP provide generally reliable USB support, although we recommend running motherboards based on those chipsets with ACPI disabled. Although the first stepping of the AMD-760MPX chipset had a widely reported USB bug, we expect later steppings of that chipset to resolve the problem.
The PIIX3, used in the Intel 430HX Pentium chipset, is USB 1.0-compliant and does not function properly with many USB 1.1 devices. The PIIX3 supports one USB 1.0 UHCI and two root hub ports. This chipset (and the motherboards that use it) is so ancient that you should not even consider attempting to connect modern USB devices to it. If upgrading the motherboard is not an option, install an add-on USB card such as those sold by Adaptec. If for some reason you must use the 82371SB, you may be able to resolve some problems by substituting the 82317AB or 82371AB/EB driver.
The PIIX4, used in the Intel 430TX chipset, is USB 1.1-compliant, despite the fact that its datasheet claims only USB 1.0 compliance. The PIIX4 supports one USB 1.1 UHCI and two root hub ports. Although this chipset should in theory support modern USB 1.1 devices, it is quite buggy and we therefore recommend not attempting to use it. Again, replace the motherboard or install a modern add-on USB adapter. If for some reason you must use the 82371AB, you may be able to resolve some problems by substituting the updated 82371AB/EB driver.
The PIIX4E is used in the Intel 440BX, 400EX, 440LX, 440ZX, 440ZX66, 440GX, and 450NX chipsets, and is the oldest USB host controller that you should consider using in a production system. The PIIX4E supports one USB 1.1 UHCI and two root hub ports, and has many fewer compatibility problems than do earlier Intel USB controllers. The most common problem with the PIIX4E is a device not being recognized when you connect it. The PIIX4E also may become confused and lose connectivity if the screensaver kicks in or if the system enters standby, suspend, or hibernate mode. If that occurs, hot-plugging the device (disconnecting and then reconnecting the USB cable while the PC and device remain on) may resolve the problem. In our experience, the 82371EB seems reasonably well behaved with low-speed USB devices such as mice and keyboards, particularly under Windows 2000. It is more likely to have problems with hi-speed and bulk-mode USB devices, particularly scanners, printers, and digital cameras, and particularly under Windows 9X.
The 82801AA I/O Controller Hub (ICH) and 82801AB I/O Controller Hub (ICH0) are used in the Intel 810, 810E, 815, 815G, 815P, 820, and 840 chipsets. The 82801AA and 82801AB differ primarily in physical packaging, although different drivers have been released for them. The 82801AA and 82801AB support one USB 1.1 UHCI and two root hub ports. Although the 82801AA and 82801AB have significantly fewer incompatibilities than earlier Intel USB controllers, you may still experience intermittent connection problems. If you have problems with the 82801AA, try installing the 82801AB driver, which is fully compatible with the 82801AA but has fewer issues.
The 82801BA/BAM I/O Controller Hub 2 (ICH2) is used in the Intel 810E2, 815E, 815EG, 815EP, 820E, 845, 850, and 860 chipsets. The 82801BAM is the mobile version of the 82801BA. The 82801BA/BAM supports two USB 1.1 UHCIs and four root hub ports. We have experienced no USB problems attributable to this chipset, and reported problems are relatively rare. If you do experience problems, try substituting the 82801AB driver.
The 82801CA I/O Controller Hub 3-S (ICH3-S) is used in the Intel E7500 and E7501 chipsets. The 82801CA supports three USB 1.1 UHCIs, which provide six USB 1.1 root hub ports. We have insufficient experience with this chipset to judge its reliability with USB, although it is quite similar to the 82801BA/BAM chipset. We would expect its features and compatibility to be similar to that of the 82801BA/BAM.
The 82801DB I/O Controller Hub 4 (ICH4) is used in the Intel 845E, 845G, 845GE, 845GL, 845GV, 845PE, E7205, and E7505 chipsets. The 82801DB supports three USB 1.1 UHCIs, which provide six USB 1.1 root hub ports, as well as one EHCI that provides six USB 2.0 root hub ports. We have experienced no USB problems attributable to this chipset.
The I/O Controller Hub 5 (ICH5) and I/O Controller Hub 5R (ICH5R) are used in the Intel 865- and 875-series chipsets. These two versions are functionally identical, except that the ICH5R version supports hardware Serial ATA RAID. The ICH5/ICH5R supports one ECHI that supports eight USB 2.0 root hub ports. We have experienced no USB problems attributable to this chipset.
Both of these chipsets are available in multiple versions, but USB features and compatibility are similar for each of the chipsets. The first-generation nForce chipset supports three USB 1.1 OHCIs, which provide up to six USB 1.1 root hub ports. The second-generation nForce2 supports two USB 1.1 OHCIs, which provide four USB 1.1 root hub ports, and one EHCI that provides up to six USB 2.0 root hub ports. Our experience with nVIDIA chipsets is limited, but we have never encountered a USB 1.1 or USB 2.0 problem attributable to the chipset.
In the past, we avoided SiS chipsets, as we have had numerous bad experiences with them, including what appeared to be irresolvable USB conflicts. We still avoid early SiS chipsets, but, as the old saying goes, even a blind pig finds an acorn occasionally. The SiS735 chipset for AMD processors is a solid chipset. It is inexpensive and fast, and appears to be robust in all respects, including USB support. We expect that the follow-on SiS745 chipset is just as good, although we haven't tested it. When configuring older SiS chipsets to use USB, we recommend updating the main system BIOS to the most recent available, installing the latest chipset drivers, disabling ACPI and power management in BIOS, and setting the BIOS PnP OS? option to No. In Windows, replace the SiS PCI to USB Open Host Controller with the Windows Standard OpenHCI USB Host Controller, and disable USB error detection (for Win98 SE or later only). If your motherboard has an old SiS chipset and you encounter USB problems, often the only real solution is to install a PCI/USB card.
We consider USB support in older VIA chipsets to be fundamentally flawed. Even recent VIA chipsets for both Intel and AMD processors have USB issues, although problems are most severe with VIA chipsets from 1999 and earlier. In our experience, system hangs, stop errors, and dropped connections are common with VIA chipsets, particularly if you use hi-speed bulk-mode USB peripherals. Unfortunately, the VIA web site is not forthcoming about USB issues, attributing problems primarily to operating system and power issues rather than to incompatibilities within the chipsets themselves. We recommend you avoid running USB on any VIA-based motherboard older than a year or two if at all possible, and also that you avoid VIA-based PCI/USB cards. If you run USB on any VIA chipset and experience USB problems, download and install the latest USB Filter Patch from http://www.via.com.tw. Better still, install a PCI/USB card and stop using the motherboard USB ports.