Man-wai Chang said:
I removed one USB device and the error went away.
1. Could I conclude that it's just that device not the motherboard?
2. How could I check whether that USB device short-circuited?
I don't know all of the workings of the USB interface. For example,
each USB device has a current rating stored in its configuration
information. I don't know if that is used to determine whether
a port is overloaded.
In terms of hardware protection, the Southbridge has a number
of OC# signals. These are active low signals. Grounding one of
those signals, should cause a USB overcurrent dialog to appear.
On a laptop, a "power bug" chip is used. That is an 8 pin DIP
chip. It has a precision current sense inside. If the current
exceeds 500mA, some FET transistors inside turn off the power
feeding the USB port. At the same time, a logic signal from the
power bug, is sent to one of the OC# pins on the Southbridge.
As a result, the laptop doesn't need a fuse.
On a desktop, instead of spending money on a power bug, they
use a Polyfuse. (Cooling is better inside a desktop computer,
so high operating temperatures aren't an issue.) Typically,
one fuse is shared by two USB ports. The Polyfuses on my motherboards
here, have "1.1" printed on them, implying they will allow
about 1 ampere to flow, to a total of two ports. If only one
USB port has a device plugged in, it could draw up to 1 ampere
before the fuse opens. Polyfuses automatically recover when
they cool off, so the fuse does not need to be replaced. It
has a conductive polymer inside.
For an example of how it works, download BXDPDG10.PDF (if
it's still available).
http://www.intel.com/design/chipsets/designex/BXDPDG10.PDF
Go to PDF page 26. In the upper left hand corner, you can see
fuse F1. On a modern motherboard, that would be a Polyfuse,
with a lower current rating. The Polyfuse is automatically
resetting, so doesn't need to be replaced.
Notice on page 26, how the OC#0 signal works. If the fuse
is intact and working, both sides of the fuse are lifted to +5V.
The resistor network is lifted to +5V and a logic 1 is sent to
OC#0. That tells the overcurrent sensor that everything is
OK.
Now, pretend to overload the circuit. The left hand side of the
fuse is +5V. The right hand side (due to the short circuit), is
now at zero volts. The fuse goes open circuit. Now, the resulting
voltage value at OC#0 is zero volts as well. That is the
active condition for the OverCurrent signal, and now there is
a dialog on the computer screen, indicating an overcurrent has
occurred.
Therefore, to test a desktop motherboard, check the voltage on
either side of the Polyfuse. If it's 5V on both sides, the
fuse is intact. If it's 5V on one side, and 0V on the other,
you've got an overload.
Many of my motherboards, use green Polyfuses like this one.
A "dimple" on the end, helps differentiate the Polyfuse from
other component types. The Polyfuse should be near the USB stack
or USB 2x5 header. A motherboard with ten USB ports, should have
five Polyfuses total, protecting the ports. Make sure you're probing
the appropriate one when testing. A Polyfuse may also protect
the Parallel I/O port, and the keyboard and mouse PS/2 ports.
http://i01.i.aliimg.com/photo/v0/215265281/Poly_Fuse.jpg
Best guess,
Paul