Re: [Bugme-new] [Bug 14841] New: unable to enumerate USB device on port X after suspend/resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 27 Dec 2009, Clemens Fruhwirth wrote:

> Hello Alan, hello Andrew,
> 
> After some more probing, I found that my initial conclusion that this
> is related to suspend/resuming has been totally wrong. First, the
> device works only under a USB 1.1 root despite the USB description
> telling me that this is a USB 2.0 device.

In theory there's nothing wrong with that.  It's perfectly valid for a
USB-2.0 device to run only at full speed, not at high speed.  Of
course, in your case it's more likely that this indicates the device is
somehow broken.

Have you posted the "lsusb -v" output for the device?  It should 
indicate (if you're using a recent version of lsusb) at what speeds the 
device is meant to run.

>  The symptoms observed come
> merely from the fact that connecting/reconnecting after boot tries to
> attach the device under a USB 2.0 root. I have not yet found out, why
> after a cold boot the device runs at fullspeed and not highspeed, (USB
> handoff?). The suspend/resume cycle triggers a "connect" (or
> reconnect) and therefore I get the same symptoms when doing a
> reconnect by hand without sleeping inbetween.

There's the question of why it works during boot but not afterward.  
This could be caused by the timing of events.  During boot lots of
other stuff is going on, and it could cause the USB initialization
sequence to be delayed.  That in turn could easily affect the outcome
if the device is broken.

> In contrast to that, the device works with Windows (7). The strategy
> for Windows is to fallback to lower speed.

Linux does the same thing.  But it can't when the device disconnects
and then reconnects, which is what happened in your logs.  Each
reconnect is handled independently, starting fresh at high speed.

> I can force the device to USB 1.1 by using "companion" of the EHCI
> driver, where I can force handoff to the companion controller (thanks
> Alan for this feature) so I can live without any changes. However, I'm
> wondering whether an automatic fallback is a good idea for devices
> that fail to enumerate?

We already do it, subject to the limitation described above.

> I attached a log where I did the following:
> 
> Boot with device detached until the bootloader (so that I don't the
> BIOS initialization can't screw things up)
> Attach device
> Boot into the kernel
> Start usbmon (device works) - here the trace starts
> Disconnect/Reconnect device
> Devices doesn't connect properly after timestamp 20588...

The usbmon trace doesn't contain any information about the reconnect.  
Can you do the same thing again, but using the 0u file instead of 2u?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux