On Tue, 2008-09-02 at 13:26 -0600, Phil Meyer wrote:
All that, to say this: a single slow USB device on a controller will
cause the controller to drop to slow (USB 1.1) mode. Not just a single
port drops, the whole controller drops.
Slightly expanded:
(a) USB 1.1 vs. USB 2.0 isn't directly related to speed -- USB 1.1
supports low (1.5 Mbps) and full (12 Mbps) speeds; USB 2.0 adds support
for high (480 Mbps) speed. USB 2.0 devices don't *have* to operate at
full speed, though -- e.g., a true USB 2.0-certified keyboard is still
going to send your scancodes to the host at low speed.
(b) Using a low- or full-speed device doesn't force that controller
(actually pair of controllers - EHCI+UHCI) into a low- or full-speed
mode -- low-/full- and high-speed connections can be interleaved.
However, USB is a shared bus, and use of the bus is scheduled in time
slices, so as an example transferring 8 Mbps at full speed (plus control
overhead) will use the bus just over 2/3rd of the time, reducing the
time available for full speed transfers to less than 1/3 (<160 Mbps),
yielding a total throughput of under 168 Mbps. This can be alleviated by
using a hub with a transaction translator, which will buffer low- or
full-speed transfers and send them in bursts to the host at high speed
(and vice versa for data coming from the host) to mitigate the impact of
the low- and full-speed devices on the high-speed ones.
This problem used to be very problematic when most USB mice and
keyboards were USB 1.1
Now days, all USB devices should say 2.0 on them somewhere.
Even a Certified USB 2.0 mouse will operate at low speed (I haven't seen
any 480 Mbps mice!). For example, from /proc/bus/usb/devices on my
desktop:
T: Bus=01 Lev=02 Prnt=03 Port=02 Cnt=03 Dev#= 9 Spd=1.5 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=046d ProdID=c00e Rev=11.10
S: Manufacturer=Logitech
S: Product=USB-PS/2 Optical Mouse
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 98mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=10ms
Note the "Ver= 2.00" in the D: line (USB version 2.0), but "Spd=1.5"
in
the T: line (low speed, 1.5 Mbps).
-Chris