alsa-project / alsa-lib

The Advanced Linux Sound Architecture (ALSA) - library
GNU Lesser General Public License v2.1
358 stars 177 forks source link

Tascam US122L, JACK, PulseAudio and OBS #269

Open stephematician opened 2 years ago

stephematician commented 2 years ago

Apologies if this is the wrong place - however I'm getting an error most of the time in a very specific situation.

My setup is a TASCAM US122L USB interface, which ALSA is capable of recognising and setting up as a usb_stream device. I then run jackd for this device, load the pulseaudio module for a JACK source (at this point I can record via parecord), and then attempt to add a PulseAudio input to OBS. At this point, I'll get an input for less than a second, then it'll cut out and I'll get an error in JACK.

I've attached the output of alsa-info; showing that the device is recognised. The contents of my .asoundrc are somewhat widely used:

# The usb_stream plugin configuration

pcm.!usb_stream {
        @args [ CARD ]
        @args.CARD {
                type string
                default "1"
        }

        type usb_stream

        card $CARD
}

ctl.!usb_stream {
        @args [ CARD ]
        @args.CARD {
                type string
                default "1"
        }

        type hw

        card $CARD
}

I run jackd with a command like:

/usr/bin/jackd -v -p128 -dalsa -dusb_stream:CARD=US122L -r44100 -p256 -n2 -C

I then set up a source in PulseAudio using pacmd load-module module-jack-source. Typically at this point, parecord --device=jack_in test.wav records no problems.

Then I'll run OBS and try to add a PulseAudio input, at which point I usually get a very short period of input (less than 1 second?) and then the input will cut out and I'll see the following error in jackd output:

Couldn't configure usb_stream
: Input/output error
ALSA: prepare error for capture on "usb_stream:CARD=US122L" (Input/output error)

Upon tracking this down, it seems that some call to snd_pcm_prepare by JACK is receiving an error code; but I'm not an expert in this library (or alsa) so it's hard for me to even guess what the problem could be. alsa-info.txt

I have also raised this issue on JACK in case it's a problem with that library (link here - but details are the same https://github.com/jackaudio/jack1/issues/118#issue-1353053534)

stephematician commented 2 years ago

May be related to this bug: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1960703

stephematician commented 1 year ago

Update:

It seems that the custom ~/.asoundrc is no longer required - I found that in alsactl dump-cfg the module is set up in pcm.usbstream.

I experience the same behaviour as the bug report in the preceding comment. All I need to do is increase the load on the CPU enough, and I'll get this output when I attempt to record:

arecord --period-size=640 -c2 -fS24_3LE -r44100 -MDusbstream:CARD=US122L > test.wav
Recording WAVE 'stdin' : Signed 24 bit Little Endian in 3bytes, Rate 44100 Hz, Stereo
arecord: pcm_read:2221: read error: Input/output error