Re: [LAU] USB audio interface and a buggy USB controller

From: Monty Montgomery <xiphmont@email-addr-hidden>
Date: Tue Sep 14 2010 - 19:26:14 EEST

On Tue, Sep 14, 2010 at 8:29 AM, Jeremy Jongepier <jeremy@email-addr-hidden> wrote:
> On 09/14/2010 02:23 PM, Clemens Ladisch wrote:
>> Jeremy Jongepier wrote:
>>> cannot submit datapipe for urb 0, error -28: not enough bandwidth
>>
>> Is CONFIG_USB_EHCI_TT_NEWSCHED enabled in your kernel's configuration?
>>
>> Can you try with or without a hub?
>>
>
> I can't try with a hub, I don't have any.

The bandwidth has been fragmented by other devices. USB-1 audio
devices require large _contiguous_ blocks of bandwidth schedule, and a
mouse or whatever that has carved its tiny little block out of the
middle of the bandwidth schedule makes all the bandwidth on either
side useless to an isochronous device. Simply unplugging it (or
whatever caused the scheduling problem) is not enough; the schedule
remains fragmented, as the linux EHCI driver does not know how to
reconsolidate fragmented bandwidth chunks. You have to rmmod EHCI or
reboot to get a fresh start.

It's possible you're on a hub and don't know it. Most machines with
multiple USB ports are actually using a single controller and a built
in hub. Hubs make things *far* worse, as the hub is a dumb puppet
controlled entirely by the host controller, and Linux's hub scheduling
algorithm (even the 'new improved' one mentioned above) is rather
poor. I wrote a new one years ago that approached theoretical maximum
efficiency and could rebalance/reconsolidate the schedule, but I
couldn't keep up with repatching it during the complete free-for-all
that has been kernel 2.6 (I'd literally spent months of full-time work
*just* keeping up with the churn) and it was dropped from -mm.

Monty
_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-user
Received on Tue Sep 14 20:15:01 2010

This archive was generated by hypermail 2.1.8 : Tue Sep 14 2010 - 20:15:01 EEST