ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.27k stars 174 forks source link

Steam games audio fails when JACK Server is being used #3400

Closed thndgonz closed 6 years ago

thndgonz commented 10 years ago

There's this ongoing problem with Steam current environment that for some reason steam (Linux) games fail to open audio. I thought it was just a misconfiguration on my part, perhaps. Sadly, I think this is an issue with Steam. I'll bring an example, (I can bring two more if needed)

Super Hexagon, which is the fastest game to launch.

Launching it on Steam: http://pastebin.com/NzzpDr5h

This is a version I got from GOG. http://pastebin.com/yediRif8 (despite the failure to find pulse, audio works, you can see it by the call it did to jack_client_new which has been renamed to jack_client_open)

Image on qjackctl, I renamed the client for the sake of clarity: https://dl.dropboxusercontent.com/u/37705/2014-07-11-11%3A23%3A12-screenshot.png

This is my asoundrc which Steam somehow fails to work with:

pcm.!default { type plug slave { pcm "jack" } }

pcm.jack { type jack playback_ports { 0 system:playback_1 1 system:playback_2 } capture_ports { 0 system:capture_1 1 system:capture_2 }

hint {
  show on
  description "JACK Audio Connection Kit Server"
}

}

ctl.mixer0 { type hw card 1 }

I've also tested Guacamelee, Monaco and Edge and they work fine outside the Steam environment.

Tele42 commented 10 years ago

From what I'm reading here, /home/david/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6 gets loaded, which is too old / not compiled for your system, and is not providing symbols the system library /usr/lib/libffado.so.2 needs to work.

The simple assertion would be that the steam runtime is breaking more than it fixes on your system, and you may want to partially dissect it so that more system libraries are used (for testing purposes).

As a side note, I need to try to get my jack setup closer to yours, as I have JACK + alsa loopback device and an experimental openal to jack branch.

edward81 commented 10 years ago

I am just ran into the same issue. I had to create some symlinks to replace the steam libraries with those of my system. ln -s /usr/lib32/libgcc_s.so.1 ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu/libgcc_s.so.1 ln -s /usr/lib32/libstdc++.so ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libstdc++.so

ln -s /usr/lib32/libjack.so ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libjack.so.0 ln -s /usr/lib32/libasound.so.2 ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libasound.so.2 ln -s /usr/lib32/alsa-lib ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/alsa-lib

Remember to ensure you have all the libraries, and create a backup of libraries to replace.

Brottweiler commented 9 years ago

Just found this issue, and I want to add my input.

I recently installed Binding of Isaac: Rebirth and Don't Starve. When I installed Binding of Isaac, I had no sound. I did what was described here to get it to work. (The Binding of Isaac section didn't exist, I added it).

Later, I installed Don't Starve, and the same thing there. I had no sound. I did what was described on the archlinux wiki again but this time that didn't work. I did what else was described in that section, such as installing lib32-alsa-plugins, but still nothing.

I can't for the life of me get sound in Don't Starve. Here's some errors:

When starting Steam in a console, then starting Don't Starve, I get these errors:

Cannot read socket fd = 46 err = Success
Could not read result type = 22
Client name = rjack conflits with another running client
Cannot connect to the server
FMOD Error: Error initializing output device. 
SoundSystem::Initialize failed
cDontStarveGame::DoGameSpecificInitialize()
FMOD Error: An invalid object handle was used.

Then I get this error everytime I hover over a button, which should give a sound FMOD Error: Can't play event dontstarve/HUD/click_mouseover: An invalid object handle was used..

Related threads (I made these, no reply):

Note: Everytime I go into Don't Starve, I go to settings, I raise the volume, save, go back to settings, sound is reset to zero.

ghost commented 8 years ago

Hello I know that this is an old thread but I think I've found the solution. I couldn't start Darkest Dungeon after installing jack so i started it via terminal.

Turns out that it loaded the default device configured for pulseaudio. So what I did was change the Input Devices to Jack source (PulseAudio JACK Source) and Output Devices to Jack sink (PulseAudio JACK Sink) via pavucontrol.

Darkest Dungeon loaded fine after that. I've tested out Binding of Isaac and it works too.

prikhi commented 7 years ago

As someone that doesn't want to run pulseaudio, I had resorted to killing/starting JACK & swapping .asoundrc files before/after playing games.

I was finally able to get all my games working with JACK by switching away from the alsa-jack plugin, and using a loopback device instead: http://alsa.opensrc.org/Jack_and_Loopback_device_as_Alsa-to-Jack_bridge

If you're running JACK via Cadence, you can just switch the ALSA Bridge to ALSA -> Loop -> JACK.

kisak-valve commented 6 years ago

Hello @thndgonz, @edward81, are either of you still experiencing the original issue in this issue report?

The current steam client should be preferring system libraries over the steam runtime if the system libraries are newer than the steam runtime variants.

thndgonz commented 6 years ago

@kisak-valve Can't confirm. I'm no longer using linux, hopefully edward still is.

kisak-valve commented 6 years ago

Thanks, closing pending feedback from @edward81.