steam-runtime
steam-runtime copied to clipboard
[Rocksmith 2014 (221680)] - jack2 (daemon) connection and SteamRuntime-Solider (beta) Issue
Your system information
- Steam Runtime Version: steam-runtime_0.20201104.0
- Distribution (e.g. Ubuntu 18.04): Gentoo profile: default/linux/amd64/17.1/desktop
- Link to your full system information (Help -> System Information) in a Gist: https://gist.github.com/sifiro/399c3b15cddfddabea80405f0b0a4ba6
- Have you checked for system updates?: [Yes/No] Yes
- Are you using the Steam Linux Runtime compatibility tool?: [Yes/No] Yes
Please describe your issue in as much detail as possible:
Hi, maybe I have a issue related with jackd2 connection and SteamRuntime-Solider (beta), I'm using Wineasio + Proton 5.13-2 with Rocksmith 2014 (with a dll hooking which force use ASIO called rs_asio), when I run Rocksmith 2014 by Steam, jackd log show errors like "ERROR: CheckSize error size = 81 Size() = 85" or "ERROR: Unknown request 0" or "Cannot read socket fd = 17 err = Success" but when I run it outside with "WINEDLLOVERRIDES="wineasio=n,b; WINEPREFIX=$HOME/.steam/steam/steamapps/compatdata/221680/pfx $HOME/.steam/steam/steamapps/common/Proton\ 5.13/dist/bin/wine Rocksmith2014.exe" Runs without any issue, So, I think there are some issue with SteamRuntime-Solider (beta). (It's not critical because I can use before said workaround but maybe there is an issue related with chroot/sandbox)
Steam logs show stuff like: "Cannot connect to server socket err = No such file or directory Cannot connect to server request channel exec of JACK server (command = "/usr/bin/jackd") failed: No such file or directory Unable to open a JACK client as: Rocksmith2014"
I can understand if this situation is "I won't fix it" because it's a special condition because It's needed add manually some dll.so and registering it for make wineasio recognizable, If It's that case, probably I will make a script install for lutris or something like that.
Pressure Vessel log: https://gist.github.com/sifiro/e28d56525cd66e0cdfa744e1f223b0d9 (Lines: 3305 to 3346)
jackd Pressure Vessel log: https://gist.github.com/sifiro/21cd68e38b7d13756e7ea0ea7f79e878 jackd no-Pressure Vessel log: https://gist.github.com/sifiro/678a854aa31a1431a5fd6306878231c3
Steps for reproducing this issue:
- Check If It is running Steam Beta, check if Rocksmith 2014 is running Steam Compatiblity to Proton 5.13-2, check if Steam Linux Runtime Soldier Beta is enabled
- Technically It's a variation of this guide: but with some changes (because I use gentoo and not ubuntu):
- I didn't installed threadirqs or modified grub.cfg (It's not required imo), I didn't installed KXStudio repos (because these are apt repos) but I downloaded source code of Wineasio and compiled by myself, and The libs are copied to "$HOME/.steam/root/steamapps/common/Proton 5.13/dist/lib" and $HOME/.steam/root/steamapps/common/Proton 5.13/dist/lib64". and registered with "WINEPREFIX=$HOME/.steam/steam/steamapps/compatdata/221680/pfx $HOME/.steam/steam/steamapps/common/Proton\ 5.13/dist/bin/wine regsvr32 wineasio.dll"
- Copy these file configuration to Rocksmith 2014 Directory (already placed rs_asio):
- RS_ASIO.ini
- Rocksmith.ini If you want run Rocksmith 2014 in Windowed mode you can check this guide
- Apply Jack Recommendation about security/limits: https://jackaudio.org/faq/linux_rt_config.html
- Run QJackCTL and start jack2 daemon by gui Expected Behavior:
- Running outside from Pressure Vessel with:
WINEDLLOVERRIDES="wineasio=n,b;" WINEPREFIX=~/.steam/steam/steamapps/compatdata/221680/pfx ~/.steam/steam/steamapps/common/Proton\ 5.13/dist/bin/wine Rocksmith2014.exewineasio connected sucessfully with jackd - Running with steam (aka Pressure Vessel) with
WINEDLLOVERRIDES="wineasio=n,b;" %command%wineasio has issues connecting with jackd.
I can understand if this situation is "I won't fix it" because it's a special condition
The thing that's closest to something we can fix here is support for the Jack audio API, but I don't think we are going to be able to do that any time soon. PulseAudio and ALSA (and perhaps OSS via osspd) are the audio APIs that are expected to work, with PulseAudio as the one that actually gets tested in practice.
Having the jack audio API available in the pressure-vessel container would be similar to what had to be done to make it available in Flatpak, but according to https://github.com/flatpak/flatpak/issues/3622 the protocol isn't really container-friendly. When Pipewire gets further along, having Jack clients in the sandbox talk to a Pipewire server on the host might be feasible, but Pipewire isn't really mature yet, so this would be more likely to happen in Steam Runtime v3 or v4 than in soldier (which is Steam Runtime v2).
Modifying Proton is also not something that we can support: there are just too many possible things that can go wrong.
You mean it's not flatpak friendly. Jack has no problem running in a container.
When Pipewire gets further along, having Jack clients in the sandbox talk to a Pipewire server on the host might be feasible,
Please no. Don't think you understand what jack is nor why people use it.
The reason why the protocol is not Flatpak-friendly makes it equally non-pressure-vessel-friendly. The Flatpak issue I mentioned links to https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/issues/1001 where a Jack maintainer writes:
A specific libjack version needs to match what is running system-wide, as protocols, data size and other things change. For example, JACK2 v1.9.13 added meta-data support and next release of JACK2 will increase the default number of ports and clients allowed at runtime. An old libjack.so that tries to talk with an mismatched JACK server will certainly lead to crashes.
This means there is no version of libjack.so that we could put in the container that would be correct for both older and newer host systems.
Understood, I'm saying it's not a problem with jack not running in sandboxes it's a distribution / packaging problem.
i am affected by the same problem... thanks for the workaround!!
cd $HOME/.steam/steam/steamapps/common/Rocksmith2014 WINEDLLOVERRIDES="wineasio=n,b"; WINEPREFIX=$HOME/.steam/steam/steamapps/compatdata/221680/pfx "$HOME/.steam/steam/steamapps/common/Proton - Experimental/dist/bin/wine" Rocksmith2014.exe