2021-08-11 12:38:30

by Muni Sekhar

[permalink] [raw]
Subject: USB-Audio: Device or resource busy (strace log)

Hi All,

$ cat /proc/asound/cards
0 [USB ]: USB-Audio - Plantronics .Audio 628 USB
Plantronics Plantronics .Audio 628 USB at
usb-0000:00:14.0-2, full speed

I am using a Plantronics USB Audio headset.

$ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
arecord: main:722: audio open error: Device or resource busy


'arecord' command always fails the first time after system boot in my
system. But subsequent execution of the 'arecord' command runs fine.


I've attached the strace log for the "audio open error: Device or
resource busy" failure. Is there any fix available for this issue?

--
Thanks,
Sekhar


Attachments:
arecord_strace_log_1.txt (45.22 kB)

2021-08-11 12:48:41

by Jaroslav Kysela

[permalink] [raw]
Subject: Re: USB-Audio: Device or resource busy (strace log)

On 11. 08. 21 14:36, Muni Sekhar wrote:
> Hi All,
>
> $ cat /proc/asound/cards
> 0 [USB ]: USB-Audio - Plantronics .Audio 628 USB
> Plantronics Plantronics .Audio 628 USB at
> usb-0000:00:14.0-2, full speed
>
> I am using a Plantronics USB Audio headset.
>
> $ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
> arecord: main:722: audio open error: Device or resource busy
>
>
> 'arecord' command always fails the first time after system boot in my
> system. But subsequent execution of the 'arecord' command runs fine.
>
>
> I've attached the strace log for the "audio open error: Device or
> resource busy" failure. Is there any fix available for this issue?

You may check which other task blocks the PCM device:

lsof /dev/snd/pcmC0D0c

I guess that it will be pulseaudio (device enumeration).

Jaroslav

--
Jaroslav Kysela <[email protected]>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.

2021-08-11 13:21:14

by Muni Sekhar

[permalink] [raw]
Subject: Re: USB-Audio: Device or resource busy (strace log)

On Wed, Aug 11, 2021 at 6:19 PM vishnu <[email protected]> wrote:
>
> can you paste output of
> arecord -l (list of capture devices).
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: USB [Plantronics .Audio 628 USB], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0


> Which device you are using and os.
> Does this instance is already open by default? like any video playing or something like that?
lsof does not catch it.

>
> Yes you can stop pulse audio and try..
>
> On Wed, Aug 11, 2021 at 6:17 PM Jaroslav Kysela <[email protected]> wrote:
>>
>> On 11. 08. 21 14:36, Muni Sekhar wrote:
>> > Hi All,
>> >
>> > $ cat /proc/asound/cards
>> > 0 [USB ]: USB-Audio - Plantronics .Audio 628 USB
>> > Plantronics Plantronics .Audio 628 USB at
>> > usb-0000:00:14.0-2, full speed
>> >
>> > I am using a Plantronics USB Audio headset.
>> >
>> > $ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
>> > arecord: main:722: audio open error: Device or resource busy
>> >
>> >
>> > 'arecord' command always fails the first time after system boot in my
>> > system. But subsequent execution of the 'arecord' command runs fine.
>> >
>> >
>> > I've attached the strace log for the "audio open error: Device or
>> > resource busy" failure. Is there any fix available for this issue?
>>
>> You may check which other task blocks the PCM device:
>>
>> lsof /dev/snd/pcmC0D0c
It does not output any process.
$ lsof /dev/snd/pcmC0D0c

1st run:
----------
$ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
arecord: main:722: audio open error: Device or resource busy

2nd run:
----------
$ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
Recording WAVE 'x.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
^CAborted by signal Interrupt...


>>
>> I guess that it will be pulseaudio (device enumeration).
>>
>> Jaroslav
>>
>> --
>> Jaroslav Kysela <[email protected]>
>> Linux Sound Maintainer; ALSA Project; Red Hat, Inc.



--
Thanks,
Sekhar

2021-08-13 16:32:44

by Muni Sekhar

[permalink] [raw]
Subject: Re: USB-Audio: Device or resource busy (strace log)

On Wed, Aug 11, 2021 at 6:48 PM Muni Sekhar <[email protected]> wrote:
>
> On Wed, Aug 11, 2021 at 6:19 PM vishnu <[email protected]> wrote:
> >
> > can you paste output of
> > arecord -l (list of capture devices).
> $ arecord -l
> **** List of CAPTURE Hardware Devices ****
> card 0: USB [Plantronics .Audio 628 USB], device 0: USB Audio [USB Audio]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
>
>
> > Which device you are using and os.
> > Does this instance is already open by default? like any video playing or something like that?
> lsof does not catch it.
>
> >
> > Yes you can stop pulse audio and try..
> >
> > On Wed, Aug 11, 2021 at 6:17 PM Jaroslav Kysela <[email protected]> wrote:
> >>
> >> On 11. 08. 21 14:36, Muni Sekhar wrote:
> >> > Hi All,
> >> >
> >> > $ cat /proc/asound/cards
> >> > 0 [USB ]: USB-Audio - Plantronics .Audio 628 USB
> >> > Plantronics Plantronics .Audio 628 USB at
> >> > usb-0000:00:14.0-2, full speed
> >> >
> >> > I am using a Plantronics USB Audio headset.
> >> >
> >> > $ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
> >> > arecord: main:722: audio open error: Device or resource busy
> >> >
> >> >
> >> > 'arecord' command always fails the first time after system boot in my
> >> > system. But subsequent execution of the 'arecord' command runs fine.
> >> >
> >> >
> >> > I've attached the strace log for the "audio open error: Device or
> >> > resource busy" failure. Is there any fix available for this issue?
> >>
> >> You may check which other task blocks the PCM device:
> >>
> >> lsof /dev/snd/pcmC0D0c
> It does not output any process.
> $ lsof /dev/snd/pcmC0D0c
>
> 1st run:
> ----------
> $ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
> arecord: main:722: audio open error: Device or resource busy
>
> 2nd run:
> ----------
> $ arecord --device hw:0,0 --channels 2 --format S16_LE --rate 44100Hz x.wav
> Recording WAVE 'x.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
> ^CAborted by signal Interrupt...
>
>
> >>
> >> I guess that it will be pulseaudio (device enumeration).
I see that pulseaudio is getting loaded on invoking the 1st run of
'arecord' command. Here is the log:

After system boot I verified that pulseaudio is not in the memory.

test@test594:~$ uptime
21:39:27 up 0 min, 1 user, load average: 0.70, 0.25, 0.09
test@test594:~$ ls -ltr /dev/snd/controlC1
crw-rw---- 1 root audio 116, 2 Aug 13 21:38 /dev/snd/controlC1
test@test594:~$ ls -ltr /dev/snd/
total 0
crw-rw---- 1 root audio 116, 33 Aug 13 21:38 timer
crw-rw---- 1 root audio 116, 1 Aug 13 21:38 seq
crw-rw---- 1 root audio 116, 3 Aug 13 21:38 pcmC1D0p
crw-rw---- 1 root audio 116, 4 Aug 13 21:38 pcmC1D0c
crw-rw---- 1 root audio 116, 2 Aug 13 21:38 controlC1
drwxr-xr-x 2 root root 60 Aug 13 21:38 by-path
drwxr-xr-x 2 root root 60 Aug 13 21:38 by-id
test@test594:~$ lsof /dev/snd/controlC1
test@test594:~$ lsof /dev/snd/pcmC1D0c
test@test594:~$


1st run of 'arecord':
-------------------------
I triggered 'arecord' after 2 mins of the system boot. In the 1st run,
it failed with "Device or resource busy" and I see that pulseaudio
loaded in the memory.
Why does pulseaudio get triggered on running the alsa-utils command?
How is the failure message "Device or resource busy" from the kernel code?


test@test594:~$ arecord --device hw:1,0 --channels 2 --format S16_LE
--rate 44100Hz x.wav
arecord: main:722: audio open error: Device or resource busy
test@test594:~$
test@test594:~$ lsof /dev/snd/pcmC1D0c
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
pulseaudi 1550 test mem CHR 116,4 463 /dev/snd/pcmC1D0c
pulseaudi 1550 test 27u CHR 116,4 0t0 463 /dev/snd/pcmC1D0c
test@test594:~$ lsof /dev/snd/controlC1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
pulseaudi 1550 test 20u CHR 116,2 0t0 461 /dev/snd/controlC1
pulseaudi 1550 test 26u CHR 116,2 0t0 461 /dev/snd/controlC1
test@test594:~$ lsof /dev/snd/pcmC1D0p
test@test594:~$
test@test594:~$ uptime
21:41:06 up 2 min, 1 user, load average: 0.20, 0.19, 0.08


2nd run of 'arecord':
-------------------------
The subsequent run of arecord runs fine without any issues even though
pulseaudio is still in memory.

test@test594:~$ arecord --device hw:1,0 --channels 2 --format S16_LE
--rate 44100Hz x.wav
Recording WAVE 'x.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
^CAborted by signal Interrupt...
test@test594:~$ uptime
21:41:22 up 2 min, 1 user, load average: 0.14, 0.18, 0.08
test@test594:~$

What is the role of pulseaudio? Is there a way to disable it from running it?
Disabling pulseaudio causes any issues while testing audio drivers?


> >>
> >> Jaroslav
> >>
> >> --
> >> Jaroslav Kysela <[email protected]>
> >> Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
>
>
>
> --
> Thanks,
> Sekhar



--
Thanks,
Sekhar