Jump to content

[Guide] Rocksmith 2014 on Linux setup


the_Nizo

Recommended Posts

TL/DR: there you go.

This is by far the hardest game to set up on Linux that I've encountered.

In the past, many people set this game up using ALSA, which resulted in distorted sound coming from the input and high delay. Some people figured out how to route it from JACK all the way to RS_ASIO, which produced much better results. I've used this information, created a guide and have been updating it regularly. It's pretty long, so it's published like this now:

gh-page: https://thenizo.github.io/linux_rocksmith/

base repo: https://github.com/theNizo/linux_rocksmith

My guide covers Arch- and Debian-based distros.

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

i'm using pipewire instead of pulseaudio and i could not get the jack method to work even though pipewire has native compatibility with jack. tweaking pipewire for low latency and using the alsa method does work but for me there is still a noticeable delay. it's playable and rocksmith will detect notes in time but not ideal. for some reason launching the game using the environment variable PIPEWIRE_LATENCY=128/4800 did not show a change in clock quantum for rocksmith.  might be a thing with wine or rocksmith itself. if anyone here is experienced in pipewire and knows how to somehow force the quantum to <256 samples please tell me. right now rocksmith launches with a rate of 480/4800 and i believe this to be the main problem for playing the game using pipewire.

Link to comment
Share on other sites

On 3/4/2022 at 11:42 AM, cheezhead said:

i'm using pipewire instead of pulseaudio and i could not get the jack method to work

This is a known issue. I'll put a warning there. Preflex is currently trying to get it to work with pipewire.

Since this is a Github repo, I'll open an issue too.

On 3/4/2022 at 11:42 AM, cheezhead said:

using the alsa method does work but for me there is still a noticeable delay.

This is because of the method chosen. It's also mentioned and the reason this way is called "quick and dirty".

On 3/4/2022 at 11:42 AM, cheezhead said:

PIPEWIRE_LATENCY=128/4800 did not show a change in clock quantum for rocksmith.

This variable seems to be jack-specific, source. If you used the ALSA method, this info would make sense.

Link to comment
Share on other sites

  • 2 weeks later...

I just want to say thanks for the time in working to get this done, i was on windows for a long time but recently switched to manjaro so the Arch based instructions should work for me. I only wish this could be turned into a small patch or something instead of manually configuring everything, im not entirely linux savvy yet but i have learned a lot.

Link to comment
Share on other sites

Well i tried but im getting something wrong here. I will display the log, but i get no sound at all from rocksmith now, the only instructions i had trouble with was with
 

yay -S wineasio
cp /usr/lib/wine/wineasio.dll.so $PROTON/lib64/wine
cp /usr/lib32/wine/wineasio.dll.so $PROTON/lib/wine

I didn't have yay installed, i did install it which pretty much wanted me to upgrade the os, so i did but these instructions were not very detailed cause running yay -S wineasio sent me to a text in which i had no idea what to do, and the cp commands couldn't find file or something and so i just skipped this and installed wineasio through AUR and it seemed to worked for me.
 

0.000 [INFO]   - Wrapper DLL loaded (v0.5.7)
0.000 [INFO]  PatchOriginalCode
0.558 [INFO]  Patching CoCreateInstance
0.558 [INFO]  Patch_CallAbsoluteAddress - num locations: 5
0.558 [INFO]  Patching call at 01C5AA85
0.558 [INFO]  Patching call at 01F03B6E
0.558 [INFO]  Patching call at 01F5C681
0.558 [INFO]  Patching call at 01FAEF75
0.558 [INFO]  Patching call at 01FAF40D
0.558 [INFO]  Patching PortAudio MarshalStreamComPointers
0.558 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.558 [INFO]  Patching call at 01F03059
0.558 [INFO]  Patching PortAudio UnmarshalStreamComPointers
0.558 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.558 [INFO]  Patching call at 01F0310E
0.558 [INFO]  Patched_CoCreateInstance called: IID_IMMDeviceEnumerator
0.559 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia
0.559 [INFO]  RSAggregatorDeviceEnum::UpdateAvailableDevices
0.559 [INFO]  AsioHelpers::FindDrivers
0.560 [INFO]    WineASIO
0.560 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: WineASIO
0.560 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
0.561 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
0.561 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.561 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: WineASIO
0.561 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
0.561 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
0.562 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.562 [INFO]  DebugDeviceEnum::UpdateAvailableDevices - 0 render devices, 0 capture devices
0.562 [INFO]    hr: 80070490
0.562 [INFO]    *ppEndpoint: 00000000
0.562 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia
0.562 [INFO]    hr: 80070490
0.562 [INFO]    *ppEndpoint: 00000000
0.562 [INFO]  DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1
0.562 [INFO]    hr: S_OK
0.562 [INFO]    *ppDevices: 12C592F0
3.600 [INFO]  Patched_CoCreateInstance called: IID_IMMDeviceEnumerator
3.600 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia
3.600 [INFO]  RSAggregatorDeviceEnum::UpdateAvailableDevices
3.600 [INFO]  AsioHelpers::FindDrivers
3.600 [INFO]    WineASIO
3.600 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: WineASIO
3.600 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
3.601 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
3.601 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
3.601 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: WineASIO
3.601 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
3.601 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
3.601 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
3.601 [INFO]  DebugDeviceEnum::UpdateAvailableDevices - 0 render devices, 0 capture devices
3.601 [INFO]    hr: 80070490
3.601 [INFO]    *ppEndpoint: 00000000
3.601 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia
3.601 [INFO]    hr: 80070490
3.601 [INFO]    *ppEndpoint: 00000000
3.601 [INFO]  DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1
3.601 [INFO]    hr: S_OK
3.601 [INFO]    *ppDevices: 12C5E8B0
3.602 [INFO]  DebugDeviceEnum::RegisterEndpointNotificationCallback
35.276 [INFO]  DebugDeviceEnum::UnregisterEndpointNotificationCallback
35.455 [INFO]   - Wrapper DLL unloaded


This is from the RS_Asio.txt file, based on this, you have any idea what i am doing wrong?

 

  • Like 1
Link to comment
Share on other sites

(Note: I don't read here that often. You can reach me more easily by opening an issue in the repo.)

 

On 3/14/2022 at 10:51 PM, Replicators said:

but i get no sound at all from rocksmith now

This is most likely that it couldn't find/connect to wineasio, therefore it doesn't have anything to output to. This means that you configured something wrong.

 

On 3/14/2022 at 10:51 PM, Replicators said:
yay -S wineasio
cp /usr/lib/wine/wineasio.dll.so $PROTON/lib64/wine
cp /usr/lib32/wine/wineasio.dll.so $PROTON/lib/wine

Are you using Proton 6.5 or earlier? Because that's what these instructions are for. The instructions for later Proton versions are different. Later Proton versions work perfectly fine btw.

 

On 3/14/2022 at 10:51 PM, Replicators said:

i just skipped this and installed wineasio through AUR and it seemed to worked for me.

 

yay is an AUR helper, it would have done the same. I should probably add a note.

The copy commands are important though.
You have wineasio installed in your native wine, but not in the Proton version you use.
With the cp commands, you do exactly this, install wineasio in the Proton runner.

 

On 3/14/2022 at 10:51 PM, Replicators said:

you have any idea what i am doing wrong?

My best guess is that you chose the wrong cp commands, or skipped them entirely.

One other idea that I would have: could you verify that the .dll and .dll.so files are in the specified locations?

 

On 3/14/2022 at 9:02 PM, Replicators said:

I only wish this could be turned into a small patch or something

I've uploaded two scripts. (I did not completely test it.)

 

Link to comment
Share on other sites

On 3/14/2022 at 10:51 PM, Replicators said:
yay -S wineasio
cp /usr/lib/wine/wineasio.dll.so $PROTON/lib64/wine
cp /usr/lib32/wine/wineasio.dll.so $PROTON/lib/wine

Wait a second, the AUR package got updated.  Those cp commands will not work anymore, because the location of the files to copy have changed. I will adjust this. EDIT: Done

Link to comment
Share on other sites

I got it to work perfectly now, thank you for this guide and your help on this.

I was able to make a script to start it using the shortcut, which other people might be able to use.

I made a file named Rocksmith.sh in the root directory and put in this code.
 

#! /bin/sh
STEAMLIBRARY="/home/<username>/.steam/steam"
cd $STEAMLIBRARY/steamapps/common/Rocksmith2014
WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx "/home/<username>/.steam/steam/steamapps/common/Proton - Experimental/files/bin/wine" $STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe

I then made the Rocksmith.sh file executable using "chmod -x /path/to/Rocksmith.sh"
You then just need to edit the Rocksmith 2014 desktop shortcut steam made and in the Application tab put in

Command: "/home/<username>/.steam/steam/steamapps/common/Rocksmith2014/Rocksmith.sh"
Workpath: /home/<username>/.steam/steam/steamapps/common/Rocksmith2014/

Then go into Advanced Options and tick "Run in Terminal".

This is how to do it in manjaro though, i don't know if it will be the same in other's or not.

Link to comment
Share on other sites

  • 2 weeks later...
47 minutes ago, PurpleHeart said:

Do you per-chance have any advice or luck with getting rocksmith2014 to run through OBS? Turning off audio-exclusivity just doesn't allow any audio to play from the game and routing through Catia just crashes it.

Almost all advice I find is Windows specific.

Before I test anything, I want to give my thoughts on it, which might contain some pointers.

  • You can use the "Quick and dirty" method, which will route the sound through ALSA. If I had to guess, this should be fairly easy to set up in OBS.
  • If you want the JACK way, you'd have to find a way to make OBS accept JACK as input. Start the game, open Catia and tie Rocksmith's output to the OBS sink too. (See here and imagine there's an input sink for OBS)
  • Otherwise, you can still grab it from your physical audio jack, but that's just not elegant and not ideal for streaming - Or via capture card, if you have one.

I'll have a look into it. This might be a good topic for another page in the guide.

Link to comment
Share on other sites

26 minutes ago, the_Nizo said:

Before I test anything, I want to give my thoughts on it, which might contain some pointers.

  • You can use the "Quick and dirty" method, which will route the sound through ALSA. If I had to guess, this should be fairly easy to set up in OBS.
  • If you want the JACK way, you'd have to find a way to make OBS accept JACK as input. Start the game, open Catia and tie Rocksmith's output to the OBS sink too. (See here and imagine there's an input sink for OBS)
  • Otherwise, you can still grab it from your physical audio jack, but that's just not elegant and not ideal for streaming - Or via capture card, if you have one.

I'll have a look into it. This might be a good topic for another page in the guide.

Okay, I got it.

  1. Start JACK
  2. Open OBS
  3. In the sources menu, click plus -> JACK Input Client -> Choose name, use 2 channels.
  4. Start the game
  5. Open Catia. System are the input and output devices. PulseAudio sinks come from pulseaudio-jack. Rocksmith2014 is obvious. "JACK Input Client" is the OBS one we just created.
  6. Tie the output from Rocksmith to the input to OBS (click and hold to draw a line)
  7. OBS -> Settings -> Audio -> disable any "Desktop Audio" device you can find, because they generate white noise.

Have fun recording or streaming!

Link to comment
Share on other sites

21 hours ago, PurpleHeart said:

routing through Catia just crashes it.

I'm sorry, I just realized that this bit was in your comment.

I can remember the game crashing at some point, which happens if you change certain stuff in the JACK configuration. But it didn't care when the only thing I did was to draw two lines.

I don't know which steps you took and in which order. If the problem persists, I would recommend you open an issue in the repo, because I find it easier to talk there.

  • Like 1
Link to comment
Share on other sites

1 hour ago, Replicators said:

Can you try to figure out how to get this to work in garuda which is arch based, it uses pipewire though and I tried switching to default audio server but even after getting rid of pipewire cadence couldn't see audio devices so I have up and went back to manjaro.

Sorry, but I'm not even sure if wineasio support pipewire-jack currently, or if it works at all or how well. If it doesn't, you could try and figure out what they did here, or try something mentioned here, but other than working on wineasio's code (which I probably won't do), I don't see much of a point.

I also don't have a spare drive to install another distro on.

Link to comment
Share on other sites

On 4/3/2022 at 6:23 AM, the_Nizo said:

I'm sorry, I just realized that this bit was in your comment.

I can remember the game crashing at some point, which happens if you change certain stuff in the JACK configuration. But it didn't care when the only thing I did was to draw two lines.

I don't know which steps you took and in which order. If the problem persists, I would recommend you open an issue in the repo, because I find it easier to talk there.

Took your advice and now I'm pissed at how easy and simple this SOB was this entire time!!! Appreciate the help!

It still does crash when you set it up sometimes. The only thing i can think of is you need the game to be the active window for it not to crash, but that doesn't always apply. Closing catia crashes the game too.

 

I'll definitely make a post in the repo. This seems to be a finicky problem

Link to comment
Share on other sites

  • 3 weeks later...
On 4/8/2022 at 2:33 PM, Replicators said:

Can you try to figure out how to get this to work in garuda which is arch based, it uses pipewire though and I tried switching to default audio server but even after getting rid of pipewire cadence couldn't see audio devices so I have up and went back to manjaro.

It's working! https://github.com/theNizo/linux_rocksmith/issues/1#issuecomment-1113026141

I'll make a pretty version during the weekend.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. - Privacy Policy