24.2 USB Host Controller Interfaces
The intent of USB was to provide a standardized Plug-N-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 non-proprietary, 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 three places:
- Embedded in the motherboard chipset
-
All modern chipsets contain a USB 1.1 HCI embedded in the
Southbridge. The quality and compatibility of the embedded HCI
depends 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. Although Intel
shipped some motherboards with native USB 2.0 support beginning in
early 2002, those used a supplementary NEC chip to provide USB 2.0
support. The first production chipset with embedded USB 2.0 support
was the Intel 845G-series, which began shipping in May 2002. As of
June 2002, no other production chipsets include USB 2.0 support,
although most chipsets introduced from mid-2002 onward will include
USB 2.0.
- As a separate chip on the motherboard
-
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, the Intel 845 chipset used in
the D845BGSE motherboard supports only USB 1.1 natively, so Intel
uses a separate NEC mPD720100 USB 2.0 host controller as a stopgap to
add USB 2.0 functionality to this motherboard until Intel chipsets
with integrated USB 2.0 functionality are available. As with embedded
USB HCIs, a discrete HCI can be disabled from BIOS Setup should that
become necessary.
- On an add-on peripheral card
-
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 only a few
dollars more than USB 1.1 adapters, so if you need to add a USB
adapter, we recommend buying only a USB 2.0 model. As of June 2002,
all USB 2.0 adapters that we know of use the NEC mPD720100 host
controller, which fortunately seems to be a good one.
|
If you buy a USB 2.0 adapter, make sure your operating system
supports it as a USB 2.0 device. In particular,
Windows 2000 support is problematic.
Microsoft plans to ship native Windows 2000 USB 2.0 drivers by
mid-2002, but unless and until that happens, a USB 2.0 adapter
functions only as a USB 1.1 adapter under Windows 2000. The sole
exceptions that we know of are the Adaptec and Belkin USB 2.0
adapters, which have their own Windows 2000 drivers. Most USB 2.0
adapter makers claim Windows 2000 compatibility, but note in the fine
print that they require the (nonexistent) Windows 2000 USB 2.0 driver
to do so. Although we expect that Microsoft will in fact release
Windows 2000 USB 2.0 drivers, they have changed their minds before.
|
|
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.
24.2.1 USB Host Controller Interface Types
There are three types of USB host controller:
- Open Host Controller Interface (OHCI)
-
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. OCHI 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://www.compaq.com/productinfo/development/openhci.html.
|
If you run Windows 98SE on a system with an OCHI, visit the Microsoft
web site and read Knowledge Base article Q253697. This combination of
OS and HCI can cause some very odd behavior, such as unplugging a
bulk-mode device from one root hub port causing a hub connected to a
different root hub port to disconnect. One possible symptom, believe
it or not, is your computer making a high-pitched whining noise, like
a phaser about to self-destruct.
|
|
- Universal Host Controller Interface (UHCI)
-
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. UCHI 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.
- Enhanced Host Controller Interface (EHCI)
-
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 should eliminate many of the
problems that occurred with USB 1.1 because of competing HCI
standards. Of Microsoft operating systems, only Windows XP has native
EHCI drivers available. Windows 2000 EHCI drivers are to be released
by mid-2002. 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.
24.2.2 USB Host Controller Interface Issues
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 well 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.
Here are details about some of the USB host controllers you are
likely to encounter:
- ALi chipsets
-
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 Win98SE 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.
- AMD chipsets
-
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.
- Intel PIIX3 (82371SB)
-
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.
|
Technically, any USB 1.1-compliant peripheral should be compatible
with any USB 1.0-compliant controller. The updates from the USB 1.0
Specification to USB 1.1 tightened up ambiguities on the peripheral
side to eliminate conflicts, but made only minor changes to the
host-side specification. Conflicts between USB 1.0 controllers and
USB 1.1 peripherals are due less to the difference in USB
specification level than to bugs in USB 1.0 controllers.
|
|
- Intel PIIX4 (82371AB)
-
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.
- Intel PIIX4E (82371EB)
-
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
like mice and keyboards, particularly under Windows 2000. It is more
likely to have problems with high-speed and bulk-mode USB devices,
particularly scanners, printers, and digital cameras, and
particularly under Windows 9X.
- Intel I/O Controller Hub (ICH) (82801AA) and I/O Controller Hub (ICH0) (82801AB)
-
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.
- Intel I/O Controller Hub 2 (ICH2) (82801BA/BAM)
-
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.
|
If you are experiencing USB problems, the fix may be as simple as
upgrading the main system BIOS, particularly if your USB controller
is a recent model. Even if it is not, however, a BIOS upgrade may
solve or minimize USB conflicts. For example, we have an elderly
Intel SE440BX-2V motherboard with an 82371EB USB host
controller.Attempting to use an Epson inkjet printer and a Umax
scanner on that system was an exercise in frustration, with
apparently random problems plaguing us. For no apparent reason, one
or the other device would stop working. When both were working,
powering off or disconnecting one device sometimes caused the other
to fail to be recognized.
Attempting to use the scanner while the
printer was printing would sometimes lock up one or both devices.
When we rebooted the system, sometimes only the printer would appear
in Device Manager; other times, only the scanner would appear.
Sometimes there would be two copies of one or both devices in Device
Manager. And so on. In other words, a not-untypical USB 1.1
experience.
The camel-back-breaking straw happened one day when we
connected a USB mouse. That worked fine, with one exception. Every
time we moved the mouse, the printer ejected a sheet of paper.
Arrghhh. Enough was enough. We finally installed a BIOS upgrade on
the SE440BX-2V, and many of the problems became less severe. Then we
stripped the hard drive down to bare metal and reinstalled the
operating system. That pretty much cured the problem, although we
still keep our fingers crossed.
|
|
- SiS chipsets
-
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,
fast, and appears to be robust in all respects, including USB
support. We expect that the follow-on SiS745 chipset will be just as
good, although we haven't yet 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 Win98SE 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.
- VIA chipsets
-
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 high-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.
|
There is a severe USB bug in Windows 98SE (Windows 98, Me, and
2000/XP are not affected) running on systems with a VIA chipset and
an AMD processor running faster than 350 MHz. See the Microsoft
Knowledge Base article Q240075 for details and a patch file.
|
|
|
Windows 2000 and XP do not support VIA chipsets REV_04 or earlier.
Windows 2000 explicitly does not support VIA chipsets with the
VT83C572 or VT82C586 chips. Microsoft warns that these chipsets are
irreparably flawed, that they cannot be fixed in software, and that
using them may cause system instability or data loss.
|
|
|