protonscr

ALSA: Couldn't open audio device: Device or resource busy

protonclosed
ValveSoftware/Proton#5183 · opened 2021-09-25 by cdgriffith · updated 2022-06-22 · 9 comments · github
Ccdgriffith 2021-09-25 github

Using Proton Experimental or 6.3-6
Seen with Satisfactory and Super Motherload (and probably any other game with sound)
Ubuntu 20.04.3 LTS

If I am watching a movie or listening to music on my second monitor, I cannot launch games and receive the error:

ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave
INFO: OpenAudioDevice failed: ALSA: Couldn't open audio device: Device or resource busy

Audio devices (more show up in audio manager, but using the first intel one as primary)

lspci -knn|grep -iA4 audio
00:1f.3 Audio device [0403]: Intel Corporation Cannon Lake PCH cAVS [8086:a348] (rev 10)
        DeviceName: Onboard - Sound
        Subsystem: Micro-Star International Co., Ltd. [MSI] Cannon Lake PCH cAVS [1462:cb12]
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel, snd_sof_pci
--
03:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:ab28]
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:ab28]
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel

I am new to using proton on Linux and used to playing causl games while watching movies, and was curious if there was a workaround or fix for this? Thank you!

VV1del 2021-10-02 github

How exactly are you watching movies or listening to music? If you are actually using plain ALSA as your main audio playback you need to make sure that these tools play to the default rather than a specific device. However if this is a "normal" ubuntu install and you are actually using pulseaudio, you probably just lack libpulse:i386

Maybe post the output of sudo fuser -v /dev/snd/* during movie playback/music listening

Ccdgriffith 2021-10-03 github

This is standard Ubuntu (Kubuntu) no audio customizations, using default audio manager. Playing videos / movies with plex client. I do have libpulse0:i386 installed.

Satisfactory won't even start up if watching something, just error out before starting. Super Motherload looks to add another device, however if something in playing in plex, the game won't make any sound. If plex is paused, Super Motherload will make sound, but then can't un-pause Plex.

                     USER        PID ACCESS COMMAND
/dev/snd/controlC0:  james      1860 F.... pulseaudio
/dev/snd/controlC1:  james      1860 F.... pulseaudio
/dev/snd/controlC3:  james      1860 F.... pulseaudio
/dev/snd/pcmC0D0p:   james      1860 F...m pulseaudio
/dev/snd/pcmC0D1p:   james     28479 F...m supermotherload

All my other notifications seem to "build up" as well while playing either game. For example as soon as I stop playing I will hear the discord sound for any messages received during gameplay.

Aaeikum 2021-10-07 github

Can you try setting your game's launch options to WINEDEBUG=+pulse,+alsa %command%, run the game long enough to demonstrate the problem, and then quit the game. This should create a file in your Home directory called "steam-269110.log" (the numbers may be different depending on the game you ran). Upload that log here and I'll try to see what's going on.

Ccdgriffith 2021-10-07 github

Hi @aeikum thank you for taking a glance at it! I am attaching both when it does work and when it doesn't, just in case it helps make things easier to sort through.

steam-526870-crashes-due-to-movie-playing.log
steam-526870-working-no-moive-playing.log

Aaeikum 2021-10-08 github

For some reason your PulseAudio server is rejecting the connection:

03c8:trace:pulse:pulse_test_connect Name: FactoryGame-Win64-Shipping.exe
03c8:trace:pulse:pulse_test_connect libpulse protocol version: 32. API Version 12
03c8:trace:pulse:pulse_contextcallback State change to 1
03c8:warn:pulse:pulse_contextcallback Context failed: Connection refused

You could try seeing if there are any error messages printed by pulseaudio with journalctl -b -t pulseaudio which may explain the rejection.

Ccdgriffith 2021-10-10 github

After a lot more experimentation I have narrowed it down a bit more. It seems this only happens when I launch steam itself using su like this:

sudo su - <USERNAME> -c "DISPLAY=:0 steam"

Which does seem a weird way to launch steam, but it's the only way to get Satisfactory working with multiplayer right now.

The pulseaudio logs don't show anything, but the service is running:

$ sudo journalctl -b -t pulseaudio
-- Logs begin at Thu 2021-08-12 05:32:11 CDT, end at Sun 2021-10-10 09:41:14 CDT. --
-- No entries --
$ systemctl --user status pulseaudio
● pulseaudio.service - Sound Service
     Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-10-10 09:24:13 CDT; 20min ago
TriggeredBy: ● pulseaudio.socket
   Main PID: 2198 (pulseaudio)
     CGroup: /user.slice/user-1000.slice/[email protected]/pulseaudio.service
             └─2198 /usr/bin/pulseaudio --daemonize=no --log-target=journal

Oct 10 09:24:12 YouOnlyLiveTwice systemd[2189]: Starting Sound Service...
Oct 10 09:24:13 YouOnlyLiveTwice systemd[2189]: Started Sound Service.

I did a quick google and it looks like others had issues if using sudo to run pulseaudio, but I don't have any issue as long as nothing else is playing. It only seems to run into issues when multiple streams are trying to connect.

Aaeikum 2021-10-11 github

What's probably happening is your PA setup is broken in this configuration, so applications are falling back to using ALSA directly, which means only one can play audio at a time. At least, that's what's happening to Wine. Not certain but I guess there's some permissions error happening when an application tries to connect to the Pulse socket. Probably the right thing to do is fix Satisfactory so you can stop running it through such a weird method.

Ccdgriffith 2021-10-13 github

I haven't tried it yet, but others suggest a solution of running pulse audio as a system wide daemon instead of just user level. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Either way I will mark this closed as this is not a Proton issue as first expected, but seems to be from the unusual launch. Thank you both for the suggestions and help!

Ccomk88 2022-06-22 github

ubuntu 21.04=====>
ps aux | grep pulseaudio
user 23619 4.7 0.1 4698992 21900 ? S<sl 6月20 148:48 /usr/bin/pulseaudio --daemonize=no --log-target=journal

I just kill the pid 23619 and ,it restart by itself, and everything goes ok

Proton versions

Launch options

Upstream links