[alsa-devel] [EXT] Re: Simultaneous play/record on implicit feedback device causes 'endpoint in use' error

Alexander Tsoy alexander at tsoy.me
Wed Jan 15 16:33:40 CET 2020


В Пт, 02/11/2018 в 16:57 +0100, Takashi Iwai пишет:
> On Wed, 31 Oct 2018 20:45:07 +0100,
> Robert Giaraffa wrote:
> > Thank you very much for your prompt response.
> > 
> > I tested the CP2615 and Fast Track Ultra by running aplay and
> > arecord
> > sequentially on my RPi2 v4.14.72 (with patched snd-usb-audio.ko
> > that includes
> > implicit feedback quirk for CP2615).  Although there were minor
> > differences in
> > the system logs for the two devices (e.g. ‘cannot submit urb’), but
> > otherwise
> > both devices behaved the same: whichever operation is started last
> > resulted in
> > the 'Endpoint already in use' error, regardless of
> > sequence.  Detailed info
> > below:
> 
> OK, so we obviously don't support the full duplex in this mode.
> 
> As a first step, could you try the simple patch below, and test in a
> sequence record -> playback?  At least it should skip the check, and
> proceed further.
> 
> 
> thanks,
> 
> Takashi
> 
> --- a/sound/usb/pcm.c
> +++ b/sound/usb/pcm.c
> @@ -639,6 +639,10 @@ static int configure_sync_endpoint(struct
> snd_usb_substream *subs)
>  						   subs->cur_audiofmt,
>  						   NULL);
>  
> +	if (subs->sync_endpoint->type == SND_USB_ENDPOINT_TYPE_DATA &&
> +	    subs->sync_endpoint->use_count)
> +		return 0;
> +
>  	/* Try to find the best matching audioformat. */
>  	list_for_each_entry(fp, &sync_subs->fmt_list, list) {
>  		int score = match_endpoint_audioformats(subs,

Well, this works... sort of:

[  107.368218] usb 5-1: setting usb interface 2:1
[  107.368225] usb 5-1: Creating new capture data endpoint #81
[  107.834139] usb 5-1: Setting params for ep #81 (type 0, 12 urbs),
ret=0
[  107.834272] usb 5-1: Starting data EP @00000000a802b8ef
[  110.296773] usb 5-1: setting usb interface 1:1
[  110.296779] usb 5-1: Creating new playback data endpoint #1
[  110.296811] usb 5-1: Re-using EP 81 in iface 2,1 @00000000a802b8ef
[  110.298381] usb 5-1: Setting params for ep #1 (type 0, 12 urbs),
ret=0
[  110.298385] usb 5-1: Starting data EP @00000000b2e4f53f
[  110.300585] usb 5-1: Starting sync EP @00000000a802b8ef


but aplay aborts after several seconds:

$ LANG=C aplay -c 4 -r 48000 -f S32_LE -D hw:M4,0 test48000.wav 
Playing WAVE 'test48000.wav' : Signed 32 bit Little Endian, Rate 48000
Hz, Channels 4
aplay: pcm_write:2053: write error: Input/output error



And an interesting note: jack is the only app that can use the card
with implicit feedback in full duplex mode even without that patch.


> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



More information about the Alsa-devel mailing list