Re: Hercules Deejay Trim, "not enough bandwidth"

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

 



On Mon, 26 Jul 2010, Sam Gentle wrote:

> On Mon, Jul 26, 2010 at 2:14 AM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote:
> > On Sun, 25 Jul 2010, Sam Gentle wrote:
> >> When I attempt to record from it, I get "ALSA start: broken pipe" and
> >> this error in my dmesg: "cannot submit datapipe for urb 0, error -28:
> >> not enough bandwidth"
> >
> > You might try disconnecting the webcam.  (Or if it's hard-wired into
> > the machine and you can't disconnect it, unload its driver.)
> 
> No luck, I'm afraid. I modprobe -r'd the (internal) webcam away, and
> then tried disabling it in the bios, neither helped.

I was afraid it wouldn't.

> > Can you provide a usbmon trace?
> 
> While I was doing this I made a discovery - arecord actually works (I
> was doing testing using xwax). It looks like the problem might have
> something to do with opening the device in duplex mode, but that's all
> I've got.
> 
> I've attached a few traces:
>   arecord -D plughw:1 -d 1 (works)
>   arecord -D plughw:1 -d 1 | aplay -D plughw:1 (works)
>   xwax -a plughw:1 (doesn't work)
> 
>   start/stop jackd on hw:1 for capture (works)
>   start/stop jackd on hw:1 for playback (works)
>   starting jackd on hw:1 duplex (doesn't work)
> 
> I've also included traces from connecting and disconnecting the
> device, in case that's useful. Thanks for the thoughtful response. :)

The traces show that, as you discovered, the problem occurs only when 
the device is used for both input and output at the same time.  Even 
more than that, it occurs only when the output is started first (which 
is what happened with the xwax and jackd-duplex tests).  When the input 
is started first (as in the arecord-aplay test), it works okay.

Ultimately this comes down to weaknesses in ehci-hcd's scheduling of 
periodic transfers through Transaction Translators.  That whole part of 
the driver needs to be rewritten.

For now, your best bet may be to force the built-in hub to connect at 
full speed instead of high speed.  You can do this by writing the hub's 
port number to the "companion" file in the EHCI controller's sysfs 
directory.  For example, in your "connect" log the hub was attached to 
port 6 on bus 1, so you could do:

	echo 6 >/sys/bus/usb/devices/usb1/../companion

By the way, a close look at the "lsusb -v" output for this device shows 
that it violates the USB spec.  Interface 2 contains endpoint 1-out (in 
altsetting 1) and interface 3 contains endpoint 1-in.  But interface 4 
contains both of these endpoints as well!  That didn't cause any 
trouble in your case because interface 4 wasn't used, but it is a 
potential source of errors.

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