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 in that of many of our
readers, USB can be the most trouble-prone technology
you'll find in a PC.The goal of USB is transparent, Plug-and-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. Also, 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."
This 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 of USB peripherals with
no problem at alluntil 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 problemsand the ones you have
are likely to be less severeif 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
occursconnect 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 problemseither 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 USBconfiguring 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:
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, NEC, or
n VIDIA 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.
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 HCIoften the Intel 82371AB/EBand 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.
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 such as printers and scanners, although
we have seen it occur with many different types of USB peripherals.
To avoid this problem, ensure that the firmware and drivers for all
of your USB devices are current.
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.
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.
|
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:
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.
This BIOS Setup option specifies whether interrupts and other system
resources are under the control of the chipset or the operating
system. For most USB chipsets, set to Yes for any version of Linux or
Windows that supports USB, including Windows 9X/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.
Set to Automatic or System for any version of Linux or Windows that
supports USB, including Windows 9X or Windows 2000/XP.
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. Under Linux, the "device
not accepting address" error message indicates that
the HCI is unable to obtain a hardware interrupt. If this message
occurs, use BIOS Setup to set "Assign IRQ to
USB?" off.
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.
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.
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.
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-N-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.
Despite what Microsoft and USB manufacturers claim, USB does not
gracefully share an IRQ with other devices, especially under Windows
9X. Check the 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 the 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
happenan 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 the 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.
A system with severe USB conflicts may display them in the Device
Manager operating in Normal Mode. However, just because the 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 the 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 of 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.
|
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
hardwareeither installing a PCI/USB card, replacing USB
peripherals, or both.Before attempting the following
steps, check the Device Manager in Safe Mode. If anything odd appears
theresuch as two instances of the same peripheral or a
peripheral flagged with a warning icondelete 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.
and turn off the computer and USB hub. Note that neither warm
rebooting (Ctrl-Alt-Del etc.) 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 of good
quality. Those you find for a couple of 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 the
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 successfullyyes, even on old VIA chipsetsbut
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, the chances
are excellent that your experience with USB will be
pleasant.