Re: EHCI fails to schedule large full-speed isochronous transfers

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

 



yOn Sat, 4 Jun 2016, Greg KH wrote:

> On Sat, Jun 04, 2016 at 08:32:43PM +0200, Michał Pecio wrote:
> > Hi,
> > 
> > Why high-bandwidth USB 1.1 isochronous devices don't work on 2.0 hosts?

You mean, on EHCI hosts -- they do work on other USB-2 host 
controllers, as far as I know.

Basically, the answer is that the protocol is too complicated and
nobody has done all the work needed to implement it fully.  Demand has
been relatively small, and USB-2 is in the process of being replaced by
USB-3 anyway.

IMO the USB-IF used bad judgement when they settled on the design for
Transaction Translators (those are the hardware components that connect
high-speed USB bus segments (USB-2) to full- and low-speed segments
(USB-1.1)).  They decided to put most of the burden on the software
instead of the hardware, where it would have been much simpler.  As a
result, EHCI drivers for low- and full-speed devices have to be
incredibly complicated, and nobody wants to put in the work required to 
make one that is fully functional for Linux.

> > I have an ADSL modem of this kind which I would like to use on a
> > companion-less 2.0 host in my router, but I can't because it fails with
> > ENOSPC errors. Same thing happens on my PC when connected through a 2.0
> > hub, but it works perfectly on 1.1 and 3.0 hosts, with or without hubs.
> > 
> > This seems to be an old and widely known issue, but the only "solution"
> > I found so far is "well, just don't use hubs and let the companion take
> > it over", which obviously doesn't solve the case of pure-EHCI SoCs.
> > 
> > (Well, another solutions applicable to those particular modems is to
> > switch them to bulk mode, but it's slower.)
> > 
> > Is this some limitation of the USB 2.0 spec or just a Linux issue?

Just a Linux issue.  But it is the result of a bad choice in the spec 
(again, in my opinion).

> > Any possible fixes or hackarounds?
> 
> Don't use a 2.0 hub, or connect it directly as you have, or use a 3.0
> controller :)
> 
> Seriously, handling 1.1 transactions through a 2.0 hub is hard, and
> messy.  It's been a known issue for decades, and given that 3.0 pretty
> much resolved most of these issues, no one is working to resolve them
> anymore, it's just so much simpler to change hardware.

As Greg says, changing hardware would be much less effort and cost a 
lot less than trying to fix up the software.  Of course, if you want to 
work on the driver software, you are free to do so -- I'll be willing 
to help.

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