24.4 Troubleshooting USB
In an obvious Freudian slip, we
accidentally named our first working draft of this entire chapter
Troubleshooting USB. It's
ridiculous, to be sure, but the simple fact is that working with USB
often means spending lots of time troubleshooting it. In our
experience and that of many of our readers, USB is the most
trouble-prone technology you'll find in a PC.
The goal of USB is transparent, Plug-N-Play connectivity to diverse
external peripherals. Alas, that goal is often unrealized other than
by pure luck. USB is indeed wonderful when it works as it is supposed
to. You simply plug in a device and it works. Unfortunately, the
reality of living with USB is that you sometimes plug in a device and
it doesn't work. Worse yet, not
only does the new device not work, but your other USB peripherals may
stop working. Arrrrghh.
In response to a reader query on our message board about
troubleshooting USB, we said in part:
The problem with USB troubleshooting is that there are way too many
degrees of freedom. Each device is a law unto itself.
It's as though when troubleshooting an automobile,
one possible answer to the problem was that you'd
installed Shell gasoline and Mobil oil, which in combination with
your Bosch ignition and Fram fuel filter had caused your right front
headlight to work intermittently, but only if you were running four
Michelin tires and had a Goodyear spare.
Which pretty much sums up the frustrations of trying to troubleshoot
USB using traditional methods. If you run only one or two USB
peripherals, you may wonder what we're talking
about. Millions of PCs happily use a couple USB peripherals with no
problem at all. Until the day that you plug in a new USB peripheral
or experience a minor communication problem with one of your
peripherals, when suddenly the whole thing collapses like a house of
cards.
Several factors determine the likelihood that any particular USB
configuration will function properly. All other things being equal,
you are less likely to have USB problems—and the ones you have
are likely to be less severe—if your motherboard is recent and
has a current BIOS, if you use recent, name-brand USB peripherals, if
you use the latest release of your operating system, if you connect
only a few USB peripherals (and leave them connected), and if you
connect the peripherals to (preferably) root hub ports or to a
powered USB hub. Conversely, if your motherboard is old or has an
outdated BIOS, if you use old, off-brand USB peripherals, if you use
an outdated version of your operating system, if you have many USB
peripherals connected (and plug/unplug them frequently), and if you
connect those peripherals to unpowered hubs, you are quite likely to
have many USB problems, some of which may be quite severe.
24.4.1 Proactive USB Troubleshooting
At this point, most books and web sites that offer USB
troubleshooting suggestions present a list of things to do when a USB
problem occurs—connect the USB device to a different port,
reboot the PC, and so on. All good advice, and sometimes it even
works. But the truth is that in order to avoid USB problems in the
first place and to solve those problems that do occur,
it's important to start with a solid foundation.
Otherwise, you can troubleshoot until you're blue in
the face and still have problems—either the same boring old
problems or exciting new problems.
The real secret to troubleshooting USB is to do everything possible
to prevent problems. Doing that requires
optimizing the system for USB—configuring a new system properly
from the start, or reconfiguring an existing system to eliminate
things likely to cause USB problems. In order to build a stable,
robust, reliable USB system, do the following:
- Verify your USB host controller
-
The first step in building a stable USB system is determining which
USB host controller your system uses, as described in the previous
section. If it has a recent AMD, Intel, or NEC host controller, you
may be in luck. If it has an older AMD, Intel, or NEC host
controller, or if it has any host controller made by ALi, SiS, VIA,
or another company, you may need to install a PCI/USB card with a
more recent USB HCI.
- Check compatibility of each USB peripheral
-
Before you proceed, take the time to visit the web site for each of
your USB peripherals. Check the support section to determine if there
are any known conflicts, incompatibilities, HCI issues, and so on.
Many USB devices list conflicts with specific other USB devices, or
with certain HCIs. Some USB devices work reliably with only one
specific HCI—often the Intel 82371AB/EB—and have problems
with older or newer USB HCIs. If any of your
current devices conflict, you may need to run them on separate USBs.
Also search the Microsoft web site for details about your specific
USB configuration. For example, if you have an ALi chipset, a search
for "ali usb" turns up several
interesting articles about problems and solutions that apply
specifically to running USB with an ALi chipset under Windows.
- Make sure device firmware and drivers are current
-
Outdated device firmware or drivers can cause many USB problems, some
subtle and some glaringly apparent. The most common symptom of
outdated firmware or drivers is that a device does not
"sign in" or "sign
out" properly. That is, when you disconnect a USB
peripheral, it should simply become unavailable, and when you
reconnect it, it should simply become available again. If the device
firmware or drivers are outdated, you may experience various
problems, from having to reboot the system for the device to be
recognized, to Windows loading a second instance of the driver, to
Device Manager showing a second
"ghost" instance of the same
device, which is marked with a yellow exclamation point and cannot be
removed short of removing the underlying device. This problem is most
common with bulk-mode devices like printers and scanners, although we
have seen it occur with many different types of USB peripheral. To
avoid this problem, ensure that the firmware and drivers for all of
your USB devices are current.
- Ensure that all USB hubs and cables are standards compliant
-
USB 1.1 hubs are relatively simple devices, and so seldom cause
problems. What problems we have experienced with USB 1.1 hubs, almost
without exception, have been caused by hubs that do not supply the
full 500 mA to their ports. Cables are a different story. Many cables
supplied with USB 1.1 peripherals are not standards compliant, and
may cause problems ranging from sporadic communications glitches to
outright failure of the entire USB. If your cables are of unknown
provenance, replace them with certified USB cables. We are not aware
of any issues with USB 2.0 hubs or the cables supplied with USB 2.0
devices.
- Update your system BIOS to the most recent version
-
Many USB problems are caused by an outdated system BIOS. Before you
connect USB peripherals to your system, update your system BIOS to
the latest available version. If the latest BIOS update for your
motherboard predates the release of Windows 98 in mid-1998, the
likelihood that USB will function well on that motherboard is small.
|
Be careful when updating the
BIOS. A power failure during the update
can render your motherboard unusable. For details about how to update
your BIOS safely, see Chapter 3.
|
|
- Configure your system BIOS to support USB properly
-
Strangely enough, default BIOS settings are not always appropriate
for USB. For detailed information about configuring your BIOS to
support USB properly, visit the manufacturer's web
site and examine the support page for your specific motherboard
model. In general, however, you should configure a motherboard to use
the following settings:
- Enable/Disable USB
-
Set to Enable. Note that many motherboards, particularly those from
1998 and prior, are set by default to disable USB. Also note that you
may have to enable USB on the motherboard even if you have installed
a PCI/USB card and are not using the motherboard USB ports.
- Plug-and-Play OS?
-
For most USB chipsets, set to Yes for any version of Windows that
supports USB, including Windows 9X or Windows 2000/XP. Note, however,
that for some chipsets, particularly older models, the proper choice
for this setting may depend on which processor is installed. For
example, some ALi chipsets require setting this option to Yes if you
have a Celeron or Pentium II, III, or 4 installed, but to No if you
have a K6-2, K6-III, Pentium, or Pentium Pro installed.
- IRQ Assignment
-
Set to Automatic or System for any version of Windows that supports
USB, including Windows 9X or Windows 2000/XP.
- Assign IRQ to USB?
-
The proper setting for this varies from motherboard to motherboard.
In the absence of any specific recommendation from the motherboard
manufacturer, we suggest disabling this setting for Windows 9X and
enabling it for Windows 2000/XP. If you experience USB problems with
one setting, try the other.
- Overclocking and memory timings
-
Overclocking a system almost guarantees USB problems. For stable USB
operation, set your BIOS to use nominal FSB speed. Boosting the PCI
bus above its default 33.3 MHz is one of the most common causes of
USB problems. Also note that motherboards vary in how aggressively
they set memory timings. Intel motherboards and other motherboards
intended for OEM systems typically use relatively relaxed memory
timings, which are consonant with reliable operation. Motherboards
targeted at the "enthusiast" market
often have very aggressive default memory timings, which may
contribute to USB problems as well as to overall system instability.
- BIOS power management
-
Disable this setting in BIOS. You want the operating system to
control power management, if indeed you want to enable power
management at all. We recommend against using power management in any
form. Enabling ACPI (Advanced Configuration and Power Interface) in
BIOS can cause a host of problems with USB. The fault lies not so
much with ACPI itself as with poor ACPI implementations. Our rule of
thumb is to disable ACPI on any motherboard that uses a chipset other
than a very recent Intel model, such as the 845 series.
Unfortunately, simply disabling ACPI in BIOS on an existing system
doesn't solve the problems. The only practical way
we know to eliminate ACPI conflicts is to disable ACPI in BIOS and
then strip your hard drive down to bare metal and reinstall the
operating system.
- MPS level (multiprocessor systems only)
-
If you have a dual-processor system, it is probably set by default to
use MPS 1.4. If you experience USB conflicts with this setting,
reverting to MPS 1.1 may eliminate the problems.
- Enable IRQ Steering in Windows 9X
-
Configuring IRQ Steering is described fully in Chapter 1. Under Windows 9X, having IRQ Steering enabled
and properly configured is important to proper USB functioning. If
IRQ Steering is disabled, it's nearly always because
the BIOS settings are incorrect. Reboot the system, run BIOS Setup,
and make sure that Plug-and-Play OS? is set to
true and that IRQ Assignment is set to Automatic or System. When the
system restarts, check IRQ Steering status as described in Chapter 1. Briefly, on the Settings page of the PCI Bus
Properties dialog, make sure Device Enumeration is set to Use
Hardware. On the IRQ Steering page of the PCI Bus Properties dialog,
make sure the Use IRQ Steering checkbox is marked. The IRQ Routing
Status pane on the IRQ Steering page should include the following
four lines: IRQ Steering Enabled; IRQ Table read from <source>;
IRQ Miniport Data processed successfully; and IRQ Miniport loaded
successfully.
- Make sure USB has a dedicated IRQ
-
Despite what Microsoft and USB manufacturers claim, USB does not
gracefully share an IRQ with other devices, especially under Windows
9X. Check Device Manager to determine which IRQ is assigned to the
USB HCI and whether that IRQ is shared with other devices. Under
Windows 9X it is acceptable for an IRQ Holder for PCI Steering to
share the HCI IRQ, because that is simply a placeholder rather than a
real device. But if Device Manager shows that the IRQ assigned to the
HCI is also being shared with a sound card, video adapter, network
adapter, SCSI adapter, modem, or other device, the likelihood of USB
problems occurring increases dramatically. For example, Figure 24-13
showed a USB disaster waiting to happen—an elderly Intel
SE440BX-2V motherboard with ACPI enabled, using an old Intel
82371AB/EB HCI that shares IRQ 9 with a SCSI host adapter, a video
adapter, a network adapter, and a sound adapter. When we tried
plugging a USB printer into this system, it just whimpered.
The first step toward getting USB on a dedicated IRQ is to free up as
many IRQs as possible. Begin by running BIOS Setup and disabling all
unused devices. In many systems, COM1 and COM2 can safely be
disabled, as can any printer port that uses an IRQ. If you use a USB
mouse and/or keyboard, you may also be able to free up the interrupts
assigned to the PS/2 mouse and keyboard ports. After
you've freed up as many IRQs as possible, restart
the system in Safe Mode, fire up Device Manager, and delete all the
corresponding devices. Note that you must do this in Safe Mode. If
you attempt to remove devices while operating in Normal Mode, the
next time you restart the system Windows will restore the device and
assign an IRQ to it.
At this point, you may have sufficient free IRQs that the USB HCI has
been assigned a dedicated IRQ. If not, you may be able to force
conflicting devices to other IRQs by juggling the arrangement of PCI
cards in the system. Simply moving a card to a different PCI slot may
remove the conflict. If none of these steps results in USB being
assigned an unshared IRQ, the next step is to assign IRQs manually.
To do so, start Windows in Safe Mode and follow the instructions
given in Chapter 1.
- Clean up Device Manager in Safe Mode
-
A system with severe USB conflicts may display them in Device Manager
operating in normal mode. However, just because Device Manager
appears clean in normal mode does not mean that no USB problems
exist. To view the true situation, restart your system in Safe Mode
and run Device Manager. Delete all instances of USB devices. Then
delete the USB root hubs. Finally, delete the USB HCI. Restart your
system and allow Windows to reinstall all devices and updated
drivers.
Once you have done all these things, you have established a firm
foundation for USB. If you fail to do some or all of these things,
you may be able to get USB running successfully,
but don't be surprised if you encounter USB
problems. Actually, you can do all of these things and still have
problems, but at least having taken these steps
you've done all you can to ensure reliable USB
operation.
24.4.2 Reactive USB Troubleshooting
If you have a reasonably recent motherboard and have taken the steps
described in the preceding section, your USB experience may well be
trouble-free. Despite all efforts, however, you may one day be bitten
by a USB conflict. If that happens, we suggest as a first step that
you review the suggestions in the preceding section. For example, in
the interval since you prepared the system, the motherboard maker may
have released an updated BIOS, or later firmware versions may now be
available for some or all of your USB peripherals. If so, download
and install them.
|
Before you begin fiddling with your system, take a moment to visit
the web sites for your computer or motherboard and your USB
peripherals. You may find information there that will save a lot of
useless mucking about. Most computer, motherboard, and USB peripheral
vendors have detailed USB troubleshooting pages on their sites. You
may find updated drivers, workarounds for specific problems, warnings
about conflicts with specific devices, and so on.
Microsoft also
provides some very useful information on their site about
version-specific USB issues. We won't attempt to
list specific pages because Microsoft frequently changes their site,
but if you visit http://www.microsoft.com, choose the Search
function, and search for the string "USB
troubleshooting" you will find numerous useful
pages.
|
|
If, having verified each of the above items, you are
still having problems with USB, there are several possible courses of
action. Recognize, however, that not all USB problems can be resolved
merely by tweaking and configuring your current hardware. Some USB
problems are resolvable only by replacing hardware—either
installing a PCI/USB card, by replacing USB peripherals, or both.
Before attempting the following steps, check Device
Manager in Safe Mode. If anything odd appears there—such as two
instances of the same peripheral or a peripheral flagged with a
warning icon—delete all HID peripherals, USB peripherals, USB
root hubs, and USB host controllers, in that order. Restart the
system normally and allow it to reinstall all devices found. When a
USB peripheral misbehaves, take the following steps:
If the USB peripheral is self-powered
(uses a power brick), make sure the power brick is connected to an AC
receptacle and that that receptacle has power. Self-powered USB
peripherals may be recognized by the system even when they are not
connected to AC power, but will be nonfunctional and may also cause
other USB peripherals to malfunction.
Hot-plug the peripheral, which is to say disconnect the USB
cable from the peripheral while the system and peripheral remain on,
and then reconnect the cable. Many USB problems caused by momentary
communications glitches are solved by this simple step.
|
If this is the first time you have connected the problem USB
peripheral and it is not self-powered (i.e., it depends on the USB
for power), always use USB Properties in Device Manager to verify
that the total current draw does not exceed 500 mA, particularly if
you are using an unpowered hub. If a device or a group of devices
attempt to draw more than 500 mA, USB disables the port until the
system is turned off and then on again. Note that inactive devices
may draw less current than active devices, so it is possible for a
group of devices on one USB to work properly until too many are
activated at the same time, at which point the current draw exceeds
the maximum allowable and the port shuts down.
|
|
Shut down the computer and turn it off.
Note that neither warm rebooting (Ctrl-Alt-Del) nor even cold
rebooting by pressing the reset switch are sufficient. You must
actually remove power to the system using the main power switch to
reset the USB controller registers. Although we have not encountered
the problem ourselves, we have reports that some motherboards that
remain powered even when the system is shut off (to support
Wake-on-LAN and similar functions) must be physically disconnected
from the AC power at the wall receptacle to clear the system
entirely. After you have powered down completely, wait a minute or so
before turning on the system. Verify that the problem peripheral is
now functioning properly. If it is, also verify that your other USB
peripherals are recognized and accessible.
If the problem persists, shut off power
to the system, disconnect the USB peripheral, and then reconnect it
to a different USB port. In order of preference, connect the
peripheral to (a) a root hub port on a different USB controller, if
your system has multiple USBs, (b) a powered hub port on a different
USB controller, (c) a root hub port on the same USB controller, (d) a
powered hub port on a different hub on the same USB controller, or
(e) a different powered hub port on the same hub.
Try a different cable. Like any type of
cable, USB cables vary from well-made to execrable. Those supplied
with peripherals may or may not be good quality. Those you find for a
couple bucks in computer stores are nearly always terrible. Also
consider cable length. Although the USB specification allows cables
as long as 5 meters, some peripherals function reliably only if you
use a shorter cable. For example, some HP devices come with a 2-meter
cable and a recommendation that longer cables not be used. We keep a
short USB 2.0 certified cable available as a spare for
troubleshooting purposes. Surprisingly often, replacing the cable
solves the problem.
Connect the
problem peripheral to another computer, ideally as the only connected
USB device. If it does not function on the second computer, the
device itself may be defective. Contact the manufacturer for
assistance. If the problem peripheral functions on the second
computer, the likely cause of the problem on the first computer is
either a conflict between the problem peripheral and other
peripherals, or an incompatibility between the problem peripheral and
the host controller, which may be undocumented.
To eliminate conflict between peripherals
as the cause, disconnect all USB peripherals from the first computer.
Restart the computer in Safe Mode and from Device Manager delete all
USB devices, then all USB root hubs, and finally all USB host
controllers. Shut down the system and turn the power off. Connect
only the problem USB device and restart the system. If the problem
was caused by a conflict between USB peripherals, the problem
peripheral should now be recognized and accessible. You can try
adding back the other USB devices until you find the one that
conflicts with the device in question. Of course, it is possible to
have compound-complex situations such as three- or four-way
conflicts, but attempting to resolve those may land you in a mental
institution. If you do find that the USB peripheral in question
conflicts with another particular USB device, you may be able to use
both on your system by installing them on (ideally) different USBs or
at least on different root hub ports.
If, despite following these steps, the problem peripheral
continues to misbehave, the only workable solution may be to replace
the peripheral with a comparable competing model or to install a
PCI/USB card in your system.
We don't want to give you the impression that
USB problems are inevitable, or to discourage you from using USB. If
you use only one or a few USB devices, chances are
you'll have no problems, particularly if your
motherboard and devices are recent and you connect devices to root
hub ports or powered hubs. Millions of people use USB
successfully—yes, even on old VIA chipsets—but millions
more have been discouraged by problems that can sometimes be resolved
inexpensively and easily. USB problems can be among the most
difficult and frustrating PC problems to fix, simply because there
are so many possible causes and combinations of causes. However, if
you build a solid foundation for USB and take our advice, chances are
excellent that your experience with USB will be pleasant.
|