I don't have a debian-based machine to test this. Everything up to starting the game was tested in a VM.
- Install necessary stuff
- wineasio
- Setting up the game's prefix/compatdata
- Installing RS_ASIO
- Set up JACK with Cadence
- Starting the game
When asked about realtime privileges, select yes with the arrow keys and confirm with enter.
sudo apt-get install apt-transport-https gpgv
wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb
sudo dpkg -i kxstudio-repos_10.0.3_all.deb
sudo apt update
sudo apt install cadence carla wineasio jackd2
# the groups should already exist, but just in case
sudo groupadd audio
suod groupadd realtime
sudo usermod -aG audio $USER`
sudo usermod -aG realtime $USER`
Log out and back in.
How to check if this worked correctly
For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime".Note: despite what is said in the wineasio repo, the files for wineasio are in the following locations:
- /usr/lib/i386-linux-gnu/wine/wineasio.dll.so
- /usr/lib/i386-linux-gnu/wine/wineasio.dll
- /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so
- /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so
To make Proton use wineasio, we need to copy these files into the appropriate locations. Watch out for variables:
# Recent Proton versions
cp /usr/lib/i386-linux-gnu/wine/wineasio.dll "$PROTON/lib/wine/i386-windows/wineasio.dll"
cp /usr/lib/i386-linux-gnu/wine/wineasio.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so"
cp /usr/lib/x86_64-linux-gnu/wine/wineasio.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll"
cp /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so"
# for Proton versions 6.5 and below
cp /usr/lib/i386-linux-gnu/wine/wineasio.dll.so "$PROTON/lib/wine/wineasio.dll.so"
cp /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so "$PROTON/lib64/wine/wineasio.dll.so"
In theory, this should also work with Lutris runners (located in $HOME/.local/share/lutris/runners/wine/)
Troubleshooting
find /usr/lib/ -name "wineasio.dll"
find /usr/lib/ -name "wineasio.dll.so"
This should output 4 paths (ignore the errors).
- Delete or rename
$STEAMLIBRARY/steamapps/compatdata/221680, then start Rocksmith and stop the game once it's running. WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx regsrv32 /usr/lib/i386-linux-gnu/wine/wineasio.dll(Errors are normal, should end with "regsvr32: Successfully registered DLL [...]")
I don't know a way to check if this is set up correctly. This is one of the first steps I'd redo when I have issues.
Download the newest release, unpack everything to the root of your Rocksmith installation ($STEAMLIBRARY/steamapps/common/Rocksmith2014/)
Edit RS_ASIO.ini: fill in WineASIO where it says Driver=. Do this for [Asio.Output] and [Asio.Input.0]. If you don't play multiplayer, you can comment out Input1 and Input2 by putting a ; in front of the lines.
(If you use pipewire, skip this.)
- Open Cadence. If it says on the bottom left that you should log out and back in, and you already did that, restart your machine.
- Go to
Configure -> Engine. Make sure that "Realtime" is ticked. - Go to "Driver", select ALSA.
- If you use the same device for input and output, untick "Duplex Mode" and select the device you want to use in the first line. If you use different devices for in- and output, tick "Duplex Mode" and select the devices in the 2nd and 3rd line. Please note that the names are not that intuitive to begin with.
- Input Channels: <no. of players>; Output Channels: 2
- Sample Rate: 48000
- Buffer Size and Buffer Periods: Bigger Buffer Size equals more stability and higher latency. AFAIK you can reduce the Buffer Size, if you add more Periods, but I'm not sure about that. 256/4 (~5ms) works fine for me.
- Press okay and go to `Tweaks -> WineASIO
- Tick everything
- Match No. of in- and -outputs
- Match Buffer size
- Press apply
- You're set up. To start JACK, you can press "Start" under "System"
Delete the Rocksmith.ini inside your Rocksmith installation. It will auto-generate with the correct values. The only important part is the LatencyBuffer=, which has to match the Buffer Periods.
Steam and JACK need to be running.
If we start the game from Steam, the game cant connect to wineasio (you won't have sound and will get an error message). So there's two ways around that:
# cd is necessary for the Rocksmith.ini and the DLC folder
cd $STEAMLIBRARY/steamapps/common/Rocksmith2014
PIPEWIRE_LATENCY=256/48000 WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine $STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe
(PIPEWIRE_LATENCY is only needed, if you use pipewire. For non-pipewire users, it doesn't do any harm. I just wanted to have ONE command)
Using Proton outside of it's wrapper is discouraged, but if we use normal wine, the game can't find Steam, which is needed for Steam's DRM.
Open Lutris and add a game:
- General:
- Name: Rocksmith® 2014 Edition - Remastered
- Runner: Wine
- Release year: 2014
- Game Options
- Executable: $STEAMLIBRARY/steamapps/common/Rocksmith 2014/Rocksmith2014.exe
- Working directory: $STEAMLIBRARY/steamapps/common/Rocksmith 2014/
- Wine prefix: $STEAMLIBRARY/steamapps/compatdata/221680/pfx
- Runner options
- Wine version: Custom
- (Toggle Advanced options to see this) Custom Wine executable: enter path to
dist/bin/wineorfiles/bin/wineof your desired Proton version
- System options (only needed for pipewire)
- Environment Variables: PIPEWIRE_LATENCY=256/48000
(People who don't use the Steam version can just choose whatever runner they like.)
Save this and hit "Play."