On 05/13/2012 09:28 PM, Monty Montgomery wrote:
The idea is to
use the uhci_hcd (USB1) driver instead of ehci_hcd
(USB2). -- Maybe the module is not loaded?
You do not have a UHCI controller. You only have EHCI controllers.
On your machine, all USB 1.1 is handled by transaction translators in
your EHCI controller's root hub.
The UHCI driver is not a USB 1.1 driver-- it's a
driver for UHCI
hardware which happens to be for USB 1.1, and which you do not have at
all. Older machines paired a UHCI and EHCI controller to handle USB
1.1 and 2.0; newer machines use EHCI for both.
The linux EHCI TT scheduler is not very good. I wrote a new one from
scratch a few years ago, but the kernel people considered it low
priority and I got sick of maintaining it against updates, as they
dropped it from testing kernels whenever any other incoming patch
conflicted. OTOH, the EHCI hardware itself is much more reliable than
the UHCI hardware, which apparently suffers from isochronous dropouts
even when the driver functions perfectly.
Monty
Hi Monty,
Thanks for that explanation.
Any hints on how to address this issue, then? If I understand correctly,
new USB2-class-compliant devices are not an issue, but on modern
machines with only EHCI, USB1-class-compliant devices may or may not
work... right?
Would forward porting your schedulers be an option? Has anything of this
been merged into recent kernels?
Sorry Peter,
my hint won't help you then since you only have an EHCI controller :(
Unbinding EHCI worked for Luis and me because we both have older
hardware -- in my case a Thinkpad X60s:
#lspci
...
00:1d.3 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI
Controller #4 (rev 02)
00:1d.7 USB controller: Intel Corporation N10/ICH 7 Family USB2 EHCI
Controller (rev 02)
...
Maybe you can do play some tricks on the EHCI controller/scheduler: add
an old USB1.1 hub in between the soundcard and the PC... but that's just
a shot in the dark.
ciao,
robin