At 01:51 PM 10/4/2005 -0400, Alan Stern wrote:

On Tue, 4 Oct 2005, Jon Nettleton wrote:

> >  Unloading the
>> > ehci_hcd with this cable and just using uhci_hcd produced a functioning > >> device. Using a USB 2.0 cable with the ehci_hcd driver also produced a
> > functioning device. > > > > It is my understanding that the 1.1 cable should cause the driver to
> > fallback to the 1.1 protocol.
> > No. Using a bad cable should cause the connection to fail, as you saw.

Why is a low speed cable considered bad, when it is just not high speed?

There are physical differences between the two types of cable, most notably in the amount of shielding that protects the data lines from noise. High-speed signals really need that extra shielding; being so quick, they are easily perturbed by even small amounts of noise and distortion.


In terms of cables there is only one USB cable. (ignoring mini connectors and OTG issues for now). There is a USB.org legal cable spec for low speed, but one end must be "captured" in a low speed device. This means that a low speed cable can only be used with that one low speed device. Think USB mouse or keyboard for instance where they have a usb cable coming out of their device. The low speed cable allows very low cost devices.

However, there are low quality cables, just as there are low quality operating systems :) Cables and hardware can and do fail.

Is there a functionality reason not to try to force the hub port down to
usb 1.1 and try to connect that way?  This is honest question I am not
trying to start a flame war on the subject. :-)

In principle this is possible.  Linux doesn't do it, though.  And in any
case, full speed and high speed both require the same kind of shielded
cable -- it's only low speed that can get away with less shielding. Forcing the connection to low speed is not possible.

If enough people clamor for a fall-back-to-full-speed feature, maybe
someone will implement it.  However I suspect that it won't really be
popular.  People expect their high-speed devices to run at high speed and
won't be happy if they don't.

If you have a low quality cable, it is possible the high speed chirping will not work, so it will fall back to full speed anyway. Flakiness in a communications connection is always a problem. The big problem with downshifting to full speed is trying to determine when is the appropriate time. And the speed is determined during the device reset, so to downshift would require resetting the device. And then somehow convincing the EHCI controller to ignore the chirp, and use a companion for a full speed device. This could be a major source of unintended consequences.

From the USB 2.0 spec:

6.4 Cable Assembly
This specification describes three USB cable assemblies: standard detachable cable, high-/full-speed
captive cable, and low-speed captive cable.
A standard detachable cable is a high-/full-speed cable that is terminated on one end with a Series “A” plug and terminated on the opposite end with a series “B” plug. A high-/full-speed captive cable is terminated on one end with a Series “A” plug and has a vendor-specific connect means (hardwired or custom detachable) on the opposite end for the high-/full-speed peripheral. The low-speed captive cable is terminated on one end with a Series “A” plug and has a vendor-specific connect means (hardwired or custom detachable) on the opposite end for the low-speed peripheral. Any other cable assemblies are
prohibited.


The spec also forbids extension cables, and I have two devices that came with them. Protocols are rules. People violate rules. Expecting an OS to get around violations can be a never ending game.

Regards ~Steve




-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to