On Tue, Sep 14, 2010 at 8:29 AM, Jeremy Jongepier
<jeremy(a)autostatic.com> 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
Hello Monty,
I've tried with all the ports on the machine but alas, forgot to run
lsusb so I don't know how many USB buses there are available. I use a
real-time kernel with rtirq though and will prioritize USB to see if
that helps.
Best,
Jeremy