[alsa-devel] Need expert's advice - Fast Track Ultra (8R) dropping samples

Clemens Ladisch clemens at ladisch.de
Fri Oct 15 09:23:15 CEST 2010

Daniel Mack wrote:
> > > I have an untested patch ready which should add support for implicit
> > > feedback, but I'm uncertain about the condition when to activate this
> > > mode.

For UAC2 devices, when the descriptors say so.
For UAC1 devices, never (because UAC1 does not have this mode).
It looks as if all UAC1-like devices that need this are actually marked
as vendor-specific, so we have quirks for them anyway.

> I attached a patch below, only compile-tested. Please also check the USB
> ID again, as I'm not sure whether you sent the right lsusb dump (the
> device name looks suspicious).

The actual device name is correct; the "DFU" was taken by lsusb from the
usb.ids file and is wrong.  (I've submitted the correct name.)

>  static int snd_usb_audio_next_packet_size(struct snd_usb_substream *subs)
>  {
> +		frames = min(capture->frame_count, subs->maxframesize);
> +		capture->frame_count -= frames;

This assumes that both streams are running continuously, and you have to
make sure to start them at the same time to prevent the frame_count from
overflowing or underflowing.  In my UA-101 driver, I ensure that the
buffer fill level is the same for both streams by submitting each
playback packet with the same frame count as the corresponding capture
packet; but I'm not sure which algorithm is more robust in practice.

> +		/* if this stream is in implicit feedback mode, start the
> +		 * capture stream now as the playback stream relies on the
> +		 * amount of data we see on the capture IN endpoint.
> +		 */
> +		if (subs->stream->implicit_feedback && !capture->running) {
> +			int ret;
> +			capture->ops.retire = retire_paused_capture_urb;


> +			ret = start_urbs(capture, runtime);
> +			if (ret)
> +				return ret;
> +		}
> +
>  		return start_urbs(subs, runtime);

I think you have to wait for the first capture packet to be received
before you can start submitting playback URBs.


More information about the Alsa-devel mailing list