Rocksmith on Linux

This was way to hard to figure out

Rocksmith is a game / guitar teacher for Windows and game consoles that allows you to use a real guitar to play minigames, learn actual songs and overall improve your guitar skills. I've been playing this off and on since the original game out in late 2012 with 1 big frustration aside from the playing guitar is hard part. It never had support for linux and when I got it to work I had problems with stability and a terribly complex setup.

I have no latency issues because I don't try to use my PC as a software amp like guitarix and have the audio output in the game turned off. This doesn't change the gameplay at all, I play with my headphone on one ear so I can hear my guitar with the other.

So let's fix it!

To replicate my setup you need:

  • Electric guitar
  • Real tone cable or any dedicated USB guitar line in device
  • Linux desktop setup, (Arch / Fedora / Ubuntu)

Install Steam and Rocksmith

I used flatpak and it is super stable for me if you dont have flatpak installed follow your distro's install guide here

flatpak install flathub com.valvesoftware.Steam

After the installation is complete go in to the setting and enable Steam Play for all titles. (I tested with proton 3.16-9 but newer versions will probably work fine)

Now go ahead and install Rocksmith and see if your guitar works instantly, if so have fun.

Fix audio input

Darn it no luck, but don't worry we'll get there.

I created a /usr/local/bin/steam with a disable pulse for wine, better home mapping and auto update on startup. You will get this to work with only the export and the flatpak run but this is just how I like to start my steam client.

export WINENOPULSE=1
sudo flatpak update com.valvesoftware.Steam -y
sudo flatpak override com.valvesoftware.Steam --filesystem=$HOME
flatpak run com.valvesoftware.Steam

Find your steam library path mine is in /home/svanbroekhoven/steam_lib/ so replace that with your path in the examples below.

To edit the wine config / registry files I used protontricks and this can also be installed using a flatpak

[svanbroekhoven@alan ~]$ flatpak install flathub com.valvesoftware.Steam.Utility.protontricks
Looking for matches…


        ID                                             Branch    Op    Remote     Download
 1. [✓] com.valvesoftware.Steam.Utility.protontricks   stable    i     flathub    2.7 MB / 3.2 MB

Installation complete.

Now check if your protontricks can find the installed games:

[svanbroekhoven@alan ~]$ alias protontricks-flat='flatpak run --command=protontricks com.valvesoftware.Steam --no-runtime'
[svanbroekhoven@alan ~]$ protontricks-flat -s rocksmith
Found the following games:
Rocksmith® 2014 Edition - Remastered (221680)

To run protontricks for the chosen game, run:
$ protontricks APPID COMMAND

NOTE: A game must be launched at least once before protontricks can find the game.
[svanbroekhoven@alan ~]$

Now let's change the sound system to alsa for this game:

[svanbroekhoven@alan ~]$ protontricks-flat 221680 sound=alsa
------------------------------------------------------
Your version of wine 3.16 is no longer supported upstream. You should upgrade to 4.x
------------------------------------------------------
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Using winetricks 20191224 - sha256sum: afe039a7d72553cb761f0367f9f2085b92af8caf86e025c34bbc1fdd89a1f9ee with wine-3.16 and WINEARCH=win64
Executing w_do_call sound=alsa
------------------------------------------------------
You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Executing load_sound alsa
Setting sound driver to alsa
Executing /home/svanbroekhoven/steam_lib/steamapps/common/Proton 3.16/dist/bin/wine regedit C:\windows\Temp\set-sound.reg
wine: cannot find L"C:\\windows\\system32\\winemenubuilder.exe"
000b:err:wineboot:ProcessRunKeys Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (2)
0021:err:module:load_builtin_dll failed to load .so lib for builtin L"winebus.sys": libudev.so.0: cannot open shared object file: No such file or directory
0021:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\WineBus": c0000142
000f:fixme:service:scmdatabase_autostart_services Auto-start service L"WineBus" failed to start: 1114
0014:err:service:process_send_command service protocol error - failed to write pipe!
Executing /home/svanbroekhoven/steam_lib/steamapps/common/Proton 3.16/dist/bin/wine64 regedit C:\windows\Temp\set-sound.reg
wine: cannot find L"C:\\windows\\system32\\winemenubuilder.exe"
000b:err:wineboot:ProcessRunKeys Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (2)
0021:err:module:load_builtin_dll failed to load .so lib for builtin L"winebus.sys": libudev.so.0: cannot open shared object file: No such file or directory
0021:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\WineBus": c0000142
0014:err:service:process_send_command service protocol error - failed to write pipe!
000f:fixme:service:scmdatabase_autostart_services Auto-start service L"WineBus" failed to start: 1114
[svanbroekhoven@alan ~]$

This output looks kinda broken but it works for me so….

The last command edited our .reg files in /home/svanbroekhoven/steam_lib/steamapps/compatdata/221680/pfx/ and the most notable change is this:

cat /home/svanbroekhoven/steam_lib/steamapps/compatdata/221680/pfx/system.reg | grep 'Pulse' -B 5 -A 5  
#time=1d5f7264ac701fc
"DeviceState"=dword:00000004

[Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Capture\\{25DA76D0-033C-4235-9002-19F48894AC6F}\\Properties] 1583876540
#time=1d5f724c70e68ec
"{026E516E-B814-414B-83CD-856D6FEF4822},2"="Pulseaudio"
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000004
"{233164C8-1B2C-4C7D-BC68-B671687A2567},1"="{25DA76D0-033C-4235-9002-19F48894AC6F}"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},14"="Pulseaudio"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},2"="Pulseaudio"
"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"=hex:fe,ff,01,00,44,ac,00,00,10,b1,\
  02,00,04,00,20,00,16,00,20,00,04,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
  aa,00,38,9b,71
"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0"=hex:fe,ff,01,00,44,ac,00,00,10,b1,\
  02,00,04,00,20,00,16,00,20,00,04,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
--
#time=1d5f7264ac7137c
"DeviceState"=dword:00000004

[Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Render\\{FD47D9CC-4218-4135-9CE2-0C195C87405B}\\Properties] 1583876540
#time=1d5f724c70e5848
"{026E516E-B814-414B-83CD-856D6FEF4822},2"="Pulseaudio"
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000001
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},3"=dword:00000003
"{233164C8-1B2C-4C7D-BC68-B671687A2567},1"="{FD47D9CC-4218-4135-9CE2-0C195C87405B}"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},14"="Pulseaudio"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},2"="Pulseaudio"
"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"=hex:fe,ff,02,00,44,ac,00,00,20,62,\
  05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
  aa,00,38,9b,71
"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0"=hex:fe,ff,02,00,44,ac,00,00,20,62,\
  05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\

Now for out final step use winecfg to manualy set the mic and line input to our sound input card. For that you first select the correct wineprefix.

You might need to install wine on your system yo be able to run winecfg.

sudo pacman -S wine

# deafult flatpak location
export WINEPREFIX="/home/svanbroekhoven/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/compatdata/221680/pfx"
# custom steam library location
export WINEPREFIX="/home/svanbroekhoven/steam_lib/steamapps/compatdata/221680/pfx"
winecfg
0029:err:setupapi:create_dest_file failed to create L"C:\\windows\\system32\\atl100.dll" (error=80)
0029:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
0029:fixme:dwmapi:DwmIsCompositionEnabled 000000006DFA0434
002e:fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0x69ed306d, context 0x421060, init_notify 0, handle 0x182fa00): stub
0029:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0040:err:setupapi:create_dest_file failed to create L"C:\\windows\\system32\\atl100.dll" (error=80)
0040:err:winediag:gnutls_initialize failed to load libgnutls, no support for encryption
0040:err:winediag:gnutls_initialize failed to load libgnutls, no support for pfx import/export
0040:err:module:load_so_dll failed to load .so lib "/usr/bin/../lib32/wine/mp3dmod.dll.so": libmpg123.so.0: cannot open shared object file: No such file or directory
0040:err:winediag:schan_imp_init Failed to load libgnutls, secure connections will not be available.
0040:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
0040:err:winediag:load_gssapi_krb5 Failed to load libgssapi_krb5, Kerberos SSP support will not be available.
0040:fixme:dwmapi:DwmIsCompositionEnabled 6D95DD14
0042:fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0x6a0df537, context 0x3af348, init_notify 0, handle 0x176fce8): stub
0040:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0040:err:module:load_so_dll failed to load .so lib "/usr/bin/../lib32/wine/winegstreamer.dll.so": libgstvideo-1.0.so.0: cannot open shared object file: No such file or directory
wine: configuration in L"/home/svanbroekhoven/steam_lib/steamapps/compatdata/221680/pfx" has been updated.

Accept all the install crap from wine

wait…

Go to the Audio tab, select Rocksmith cable for input and apply the changes.

winecfg.jpg

Close the winecfg app and start your game.

If it's still not perfect have a look at /home/svanbroekhoven/steam_lib/steamapps/common/Rocksmith2014/Rocksmith.ini

[Audio]
EnableMicrophone=1
ExclusiveMode=0
LatencyBuffer=4
ForceDefaultPlaybackDevice=
ForceWDM=0
ForceDirectXSink=0
DumpAudioLog=0
MaxOutputBufferSize=0
RealToneCableOnly=0
Win32UltraLowLatencyMode=0
[Renderer.Win32]
ShowGamepadUI=0
ScreenWidth=0
ScreenHeight=0
Fullscreen=1
VisualQuality=2
RenderingWidth=0
RenderingHeight=0
EnablePostEffects=1
EnableShadows=1
EnableHighResScope=1
EnableDepthOfField=1
EnablePerPixelLighting=1
MsaaSamples=4
DisableBrowser=0
[Net]
UseProxy=1

And just to be as complete as possible here are some snippets from the system.reg

[svanbroekhoven@alan ~]$ cat /home/svanbroekhoven/steam_lib/steamapps/compatdata/221680/pfx/system.reg | grep 'Pulse' -B 5 -A 5
#time=1d5f7264ac701fc
"DeviceState"=dword:00000004

[Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Capture\\{25DA76D0-033C-4235-9002-19F48894AC6F}\\Properties] 1583876540
#time=1d5f724c70e68ec
"{026E516E-B814-414B-83CD-856D6FEF4822},2"="Pulseaudio"
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000004
"{233164C8-1B2C-4C7D-BC68-B671687A2567},1"="{25DA76D0-033C-4235-9002-19F48894AC6F}"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},14"="Pulseaudio"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},2"="Pulseaudio"
"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"=hex:fe,ff,01,00,44,ac,00,00,10,b1,\
  02,00,04,00,20,00,16,00,20,00,04,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
  aa,00,38,9b,71
"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0"=hex:fe,ff,01,00,44,ac,00,00,10,b1,\
  02,00,04,00,20,00,16,00,20,00,04,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
--
#time=1d5f7264ac7137c
"DeviceState"=dword:00000004

[Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Render\\{FD47D9CC-4218-4135-9CE2-0C195C87405B}\\Properties] 1583876540
#time=1d5f724c70e5848
"{026E516E-B814-414B-83CD-856D6FEF4822},2"="Pulseaudio"
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000001
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},3"=dword:00000003
"{233164C8-1B2C-4C7D-BC68-B671687A2567},1"="{FD47D9CC-4218-4135-9CE2-0C195C87405B}"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},14"="Pulseaudio"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},2"="Pulseaudio"
"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"=hex:fe,ff,02,00,44,ac,00,00,20,62,\
  05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
  aa,00,38,9b,71
"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0"=hex:fe,ff,02,00,44,ac,00,00,20,62,\
  05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
[svanbroekhoven@alan ~]$ cat /home/svanbroekhoven/steam_lib/steamapps/compatdata/221680/pfx/system.reg | grep 'Pulse\|Rock' -B 5 -A 5
#time=1d5f7264ac701fc
"DeviceState"=dword:00000004

[Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Capture\\{25DA76D0-033C-4235-9002-19F48894AC6F}\\Properties] 1583876540
#time=1d5f724c70e68ec
"{026E516E-B814-414B-83CD-856D6FEF4822},2"="Pulseaudio"
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000004
"{233164C8-1B2C-4C7D-BC68-B671687A2567},1"="{25DA76D0-033C-4235-9002-19F48894AC6F}"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},14"="Pulseaudio"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},2"="Pulseaudio"
"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"=hex:fe,ff,01,00,44,ac,00,00,10,b1,\
  02,00,04,00,20,00,16,00,20,00,04,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
  aa,00,38,9b,71
"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0"=hex:fe,ff,01,00,44,ac,00,00,10,b1,\
  02,00,04,00,20,00,16,00,20,00,04,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
--
#time=1d5f73a4b70c2be
"DeviceState"=dword:00000001

[Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Capture\\{3DDB3262-1A9F-4279-A79D-7E1742D69ED2}\\Properties] 1583877781
#time=1d5f727aa5675de
"{026E516E-B814-414B-83CD-856D6FEF4822},2"="In: Rocksmith USB Guitar Adapter - USB Audio"
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000004
"{233164C8-1B2C-4C7D-BC68-B671687A2567},1"="{3DDB3262-1A9F-4279-A79D-7E1742D69ED2}"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},14"="In: Rocksmith USB Guitar Adapter - USB Audio"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},2"="In: Rocksmith USB Guitar Adapter - USB Audio"
"{B3F8FA53-0004-438E-9003-51A46E139BFC},2"="{1}.USB\\VID_12BA&PID_00FF\\0&42D69ED2"
"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"=hex:fe,ff,02,00,80,bb,00,00,00,dc,\
  05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
  aa,00,38,9b,71
"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0"=hex:fe,ff,02,00,80,bb,00,00,00,dc,\
--
#time=1d5f7264ac7137c
"DeviceState"=dword:00000004

[Software\\Microsoft\\Windows\\CurrentVersion\\MMDevices\\Audio\\Render\\{FD47D9CC-4218-4135-9CE2-0C195C87405B}\\Properties] 1583876540
#time=1d5f724c70e5848
"{026E516E-B814-414B-83CD-856D6FEF4822},2"="Pulseaudio"
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},0"=dword:00000001
"{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},3"=dword:00000003
"{233164C8-1B2C-4C7D-BC68-B671687A2567},1"="{FD47D9CC-4218-4135-9CE2-0C195C87405B}"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},14"="Pulseaudio"
"{A45C254E-DF1C-4EFD-8020-67D146A850E0},2"="Pulseaudio"
"{E4870E26-3CC5-4CD2-BA46-CA0A9A70ED04},3"=hex:fe,ff,02,00,44,ac,00,00,20,62,\
  05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
  aa,00,38,9b,71
"{F19F064D-082C-4E27-BC73-6882A1BB8E4C},0"=hex:fe,ff,02,00,44,ac,00,00,20,62,\
  05,00,08,00,20,00,16,00,20,00,03,00,00,00,03,00,00,00,00,00,10,00,80,00,00,\
--
"SymbolicLinkValue"=hex(6):5c,00,52,00,45,00,47,00,49,00,53,00,54,00,52,00,59,\
  00,5c,00,4d,00,41,00,43,00,48,00,49,00,4e,00,45,00,5c,00,53,00,6f,00,66,00,\
  74,00,77,00,61,00,72,00,65,00,5c,00,57,00,69,00,6e,00,65,00,5c,00,50,00,6f,\
  00,72,00,74,00,73,00

[Software\\Wow6432Node\\Wow6432Node\\Ubisoft\\Rocksmith2014] 1583876436
#time=1d5f72489298714
"ExecutableName"="Rocksmith2014.exe"
"installdir"="Z:\\home\\svanbroekhoven\\steam_lib\\steamapps\\common\\Rocksmith2014"

[System\\CurrentControlSet\\Control\\Class\\{4d36e967-e325-11ce-bfc1-08002be10318}] 1554732615
#time=1d4ee14ca089e24
@="Disk drives"
"Class"="DiskDrive"
Avatar
Stein van Broekhoven
Cloud & Open-Source magician 🧙‍♂️

I try to find the KISS in complex systems and share it with the world.

comments powered by Disqus