On Wednesday 19 December 2007, Russell Senior wrote:
> 
> I have an application on an embedded device.  It was all happily
> working with a usb-storage device, a pl2303-based gps device and a
> usb-audio device plugged into a usb2 hub.

By which you evidently mean "high speed hub".   Full speed hubs
are also specified by the USB 2.0 spec.  :)


> Now I've added a usb mouse 
> and when I open the associated /dev/event0, I start seeing the
> messages below when I try to play audio to the usb-audio device.
> 
>   cannot submit datapipe for urb 0, error -28: not enough bandwidth
>   output: ioctl(SNDCTL_DSP_SYNC): Broken pipe
>   cannot submit datapipe for urb 0, error -28: not enough bandwidth
>   cannot submit datapipe for urb 0, error -28: not enough bandwidth
>   output: ioctl(SNDCTL_DSP_SYNC): Broken pipe
>   cannot submit datapipe for urb 0, error -28: not enough bandwidth

There are issues with scheduling full speed periodic transfers,
used by your usb-audio and mouse devices, on high speed busses.

This *could* be a false failure, amenable to a patch[1]; or just
a limitation in the current scheduler (see later).

The very simplest solution is for you to hook one or both of those
two devices up to a full speeed root hub ... your "lspci" showed
you have OHCI available.

An alternate solution is to use hubs that are easier for the
software to cope with:  ones with a "transaction translator" on
each port, instead of one for the whole hub.  Your Genesys hub
is the "one for the whole hub" kind.

After that, it gets into software options and fixes, which are
less straightforward.  The "Improved Transaction Translator
Scheduling" Kconfig option (CONFIG_USB_EHCI_TT_NEWSCHED) is
supposed to help with this specific situation ... but maybe it
won't do the job for you.  (And there seem to be a few cases
where it's not as correct as the original scheduler...)  Toggle
that option and see if it helps.

Following that would be code fixes to remove some limitations
in how the TT scheduler now works.  Not for the faint of heart,
unfortunately, since the USB and EHCI specs have ensured that
periodic schedules will never again be straightforward.

- Dave

[1] http://marc.info/?l=linux-usb&m=119969573929340&w=2

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

Reply via email to