├── .github └── ISSUE_TEMPLATE │ ├── help-needed.md │ └── something-in-the-guide-is-wrong.md ├── LICENSE ├── README.md ├── RS_ASIO.ini ├── guides ├── 6.5-differences.md ├── Makefile.mk ├── obs.md ├── quick.md ├── setup-rs-asio.md ├── setup │ ├── arch-native.md │ ├── arch-pipewire.md │ ├── deb-native.md │ ├── deb-pipewire.md │ ├── deck-native.md │ ├── deck-pipewire.md │ ├── fed-native.md │ ├── fed-pipewire.md │ └── nixos │ │ ├── 1.md │ │ ├── 2-manual.md │ │ ├── 2-script.md │ │ ├── 3.md │ │ └── nixos-pipewire.md ├── start-script │ ├── proton-8.md │ └── proton-9.md ├── theory.md ├── tonelibgfx.md ├── troubleshoot-no-sound.md ├── troubleshooting.md ├── unused.md └── which-guide-should-i-choose.md ├── img ├── 0-obs.webp ├── 1-catia.webp ├── 2-obs.webp ├── 3-start-button.webp ├── grid-file.webp ├── rs-asio.webp ├── storage.webp └── yo-dawg.webp ├── old ├── arch.md ├── debian.md └── pipewire.md ├── scripts ├── native-steam.sh ├── other.sh └── patch-nixos.sh └── src ├── README.md ├── base.md ├── connect-sound ├── native └── pipewire ├── deck-note ├── generate.sh ├── install-necessary-post ├── base └── deck-native ├── install-necessary ├── arch-native ├── arch-pipewire ├── deb-native ├── deb-pipewire ├── deck-native ├── deck-pipewire ├── fed-native └── fed-pipewire ├── ldpreload-command ├── native └── pipewire ├── list-inst ├── arch ├── deb ├── deck └── fed ├── lutris-env ├── native └── pipewire ├── replace-inline.sh ├── set-up-jack ├── native └── pipewire ├── start-script-pipewire-note ├── native └── pipewire ├── start-via-script ├── native └── pipewire ├── steam-running ├── native └── pipewire ├── title ├── arch-native ├── arch-pipewire ├── deb-native ├── deb-pipewire ├── deck-native ├── deck-pipewire ├── fed-native └── fed-pipewire ├── wineasio-install ├── base ├── base-devel │ ├── arch-native │ ├── arch-pipewire │ ├── deck-native │ ├── deck-pipewire │ ├── fed-native │ └── fed-pipewire ├── deck-pipewire-reinstall └── fedora-makefile └── wineasio-register ├── base └── deb /.github/ISSUE_TEMPLATE/help-needed.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Help needed 3 | about: If you're not able to figure out what you did wrong 4 | title: '' 5 | labels: help wanted 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | 1. Which distro do you use? 12 | 1. Which Proton or wine version do you use? 13 | 1. Do you use pipewire? 14 | 1. did you choose the native JACK or pipewire-jack guide? 15 | 1. What appears to be the problem? (Describe it as best as you can) 16 | 1. Did you notice any other unexpected behavior? 17 | 1. What did you try already? 18 | 1. Did you do any of the steps differently or leave them out? 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/something-in-the-guide-is-wrong.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Something in the guide is wrong 3 | about: If you're certain that it's not an issue on your end 4 | title: '' 5 | labels: documentation 6 | assignees: '' 7 | 8 | --- 9 | 10 | * **Where can the part be found?** 11 | * **What is wrong with it?** 12 | * **What should it be instead?** 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rocksmith 2014 on Linux 2 | 3 | These are a few Guides to get [Rocksmith 2014](https://store.steampowered.com/app/221680/Rocksmith_2014_Edition__Remastered/) running on Linux. In case you haven't tried gaming on Linux yet, other than not working, it won't get harder than this by far for other games. 4 | 5 | ## Disclaimer 6 | 7 | This is the bare minimum to get it to work. I don't know if certain changes recommended by other people have a performance impact. 8 | 9 | Last Distro + version tested on is litsed under the title of the guide. 10 | 11 | I have only tested the Steam version. 12 | 13 | **I take no responsibility and will not guarantee for this working.** 14 | 15 | ## Prerequisites 16 | 17 | Don't install or copy Rocksmith from/to an NTFS drive. It will not start. (I think that's because of permissions, but I'm not sure.) There's probably a way, but it's easier not having to bother with it. 18 | 19 | If you use Proton-GE, install scripts sometimes don't run. In that case, use Valve's Proton for the first start, then switch to Proton-GE. 20 | 21 | We will need wine, which is installed in the first step. 22 | 23 | ### Common paths 24 | 25 | Some paths that we need differ from system to system. I use environment variables in this guide so you don't have to edit every second command you run. Here's what we need: 26 | 27 | * **`$HOME`:** Already set, don't worry about it. (redirects to `/home/`) 28 | * **`$STEAMLIBRARY`:** The Steam Library where Rocksmith is installed in. This is important if you installed the game on a different drive. You can check where it's installed by opening Steam, then going to `Steam ➞ Settings ➞ Storage`. Search for the disk where Rocksmith is installed on. The path you need will be Above the disk usage indicator, [picture for visual explanation](/img/storage.webp). Most of the time this will be in `$HOME/.steam/steam/` 29 | * **`$PROTON`:** A specific location inside your Proton installation. 30 | * Valve Release: (Example with Proton 7) `/path/to/steamapps/common/Proton\ 7.0/dist` 31 | * Valve Beta/Experimental: (Example with Experimental) `/path/to/steamapps/common/Proton\ -\ Experimental/files` 32 | * Custom Proton: (Example with GE-Proton 9.11) `$HOME/.steam/steam/compatibilitytools.d/GE-Proton9-11/files` 33 | * Lutris Runners: (Example with lutris-7.2-2) No specific location, just `$HOME/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64` 34 | 35 | Example for default paths and Proton 7: 36 | 37 | ``` 38 | # With quotes, without backslashes, to ensure compatibility with the commands listed in the guides. 39 | STEAMLIBRARY="$HOME/.steam/steam/" 40 | PROTON="$HOME/.steam/steam/steamapps/common/Proton 7.0/dist/" 41 | ``` 42 | 43 |
How to set environment variables 44 | 45 | > You can check the environment variables by running `echo $NAME`. 46 | > 47 | > I recommend putting double quotes around the paths, just to be sure. 48 | > 49 | > #### Temporary: 50 | > 51 | > Totally fine for our usecase. Insert your paths and run these lines like commands. Keep in mind that these are only temporary. It only applies to the terminal instance you set it in. If you were to open a new terminal window, you'd have to enter them again to be able to use them. 52 | > 53 | > ``` 54 | > STEAMLIBRARY="" 55 | > PROTON="" 56 | > ``` 57 | > 58 | > #### Permanent: 59 | > 60 | > Add these lines to `~/.profile`. You will need to log out and back in after adding them. 61 | > 62 | > ``` 63 | > export STEAMLIBRARY="" 64 | > export PROTON="" 65 | > ``` 66 |
67 | 68 | 69 | ## Guides 70 | 71 | There are two ways to do this. The one most people on [ProtonDB](https://www.protondb.com/app/221680) use is quicker, but results in high delay and distorted sound. It routes the sound through ALSA. This can be found in "Other Guides". 72 | 73 | Then there's the way of routing the audio through JACK 🡲 wineASIO 🡲 RS_ASIO 🡲 Rocksmith 2014, which has less delay and sounds better, but also takes longer to set up. These can be found in the table below. 74 | 75 | **Recent Proton versions:** 76 | 77 | * If you don't use pipewire, choose the native JACK guide. 78 | * If you use pipewire, you can choose either one. 79 | 80 | [Need help deciding? You can read this.](/guides/which-guide-should-i-choose.md) 81 | 82 | **These guides currently have a problem with wine versions 10.2 or higher. For details see https://github.com/theNizo/linux_rocksmith/issues/76. As a workaround, downgrade wine before starting the guide and upgrade again after you're done. Last working version is 10.1** 83 | || pipewire-jack | native JACK | 84 | |---|---|---| 85 | | Arch | [Guide](guides/setup/arch-pipewire.md) | [Guide](guides/setup/arch-native.md) | 86 | | Debian | [Guide](guides/setup/deb-pipewire.md) | [Guide](guides/setup/deb-native.md) | 87 | | Fedora | [Guide](guides/setup/fed-pipewire.md) | [Guide](guides/setup/fed-native.md) | 88 | | SteamOS | [Guide](guides/setup/deck-pipewire.md) | [Guide](guides/setup/deck-native.md) | 89 | | NixOS | [Guide](guides/setup/nixos/1.md) | missing | 90 | 91 | **[Troubleshooting](/guides/troubleshooting.md)** 92 | 93 | **Other Guides:** 94 | 95 | * [OBS guide for these setups](guides/obs.md) 96 | * [Differences: Proton versions 6.5 and below](guides/6.5-differences.md) 97 | * [ALSA - Quick and dirty](guides/quick.md) 98 | * [Different sound processing with Tonelib-GFX](guides/tonelibgfx.md) 99 | 100 | **Other information:** 101 | * [Steps I cut out](guides/unused.md) 102 | * [Why all of this works](guides/theory.md) 103 | 104 | ### Scripts 105 | 106 | These are outated. I'll leave the content here just in case. 107 | 108 |
109 | 110 | > Because someone asked, I have written scripts that do everything for you. 111 | > 112 | > For native Steam: `wget https://raw.githubusercontent.com/theNizo/linux_rocksmith/main/scripts/native-steam.sh && ./native-steam.sh && rm native-steam.sh` 113 | > 114 | > For other Rocksmith installations: `wget https://raw.githubusercontent.com/theNizo/linux_rocksmith/main/scripts/other.sh && ./other.sh && rm other.sh` 115 | 116 |
117 | 118 | ## Credits 119 | 120 | * [preflex](https://gitlab.com/preflex) for showing me how to do it on Arch-based distros. 121 | * [u/JacKeTUs](https://www.reddit.com/user/JacKeTUs) for publishing a [Debian-based Guide](https://old.reddit.com/r/linux_gaming/comments/jmediu/guide_for_setup_rocksmith_2014_steam_no_rs_cable/) on [r/linux_gaming](https://old.reddit.com/r/linux_gaming/) 122 | * [the_Nizo](https://github.com/theNizo), for using that information and updating it regularly in the past. My original Guide was posted [here](https://old.reddit.com/r/linux_gaming/comments/jmediu/guide_for_setup_rocksmith_2014_steam_no_rs_cable/gdhg4zx/). 123 | * [BWagener](https://github.com/BWagener) for writing the Steam Deck Guide. 124 | * [Siarkowy](https://github.com/Siarkowy) for replacing the "JustInCaseWeNeedIt" workaround and the shortcut in Steam. 125 | * [TimP4w](https://github.com/TimP4w) for the NixOS guide. 126 | 127 | A big thank you to the people working on [wineASIO](https://github.com/wineasio/wineasio) and [RS_ASIO](https://github.com/mdias/rs_asio) 128 | 129 | Also thanks to all the people who helped me figure out solutions. 130 | 131 | Issues help me see what people misunderstand and I often learn a little bit more by approaching the setup in different ways, so thank you too. 132 | 133 | -------------------------------------------------------------------------------- /RS_ASIO.ini: -------------------------------------------------------------------------------- 1 | # for "EnableWasapiOutputs" you can use -1 to have a message prompting 2 | # to use either WASAPI or ASIO for output every time you boot the game 3 | [Config] 4 | EnableWasapiOutputs=0 5 | EnableWasapiInputs=0 6 | EnableAsio=1 7 | 8 | [Asio] 9 | ; available buffer size modes: 10 | ; driver - respect buffer size setting set in the driver 11 | ; host - use a buffer size as close as possible as that requested by the host application 12 | ; custom - use the buffer size specified in CustomBufferSize field 13 | BufferSizeMode=driver 14 | CustomBufferSize= 15 | 16 | # if your game hangs or crashes on exit, try setting "EnableRefCountHack" to true. 17 | # when blank or invalid, the value of "EnableRefCountHack" will be interpreted as 18 | # true if RS ASIO detects the usage of Asio4All. 19 | # the same applies for all inputs. 20 | [Asio.Output] 21 | Driver=wineasio-rsasio 22 | BaseChannel=0 23 | AltBaseChannel= 24 | EnableSoftwareEndpointVolumeControl=1 25 | EnableSoftwareMasterVolumeControl=1 26 | SoftwareMasterVolumePercent=100 27 | EnableRefCountHack= 28 | 29 | [Asio.Input.0] 30 | Driver=wineasio-rsasio 31 | Channel=0 32 | EnableSoftwareEndpointVolumeControl=1 33 | EnableSoftwareMasterVolumeControl=1 34 | SoftwareMasterVolumePercent=100 35 | EnableRefCountHack= 36 | 37 | [Asio.Input.1] 38 | Driver=wineasio-rsasio 39 | Channel=1 40 | EnableSoftwareEndpointVolumeControl=1 41 | EnableSoftwareMasterVolumeControl=1 42 | SoftwareMasterVolumePercent=100 43 | EnableRefCountHack= 44 | 45 | [Asio.Input.Mic] 46 | Driver=wineasio-rsasio 47 | Channel=2 48 | EnableSoftwareEndpointVolumeControl=1 49 | EnableSoftwareMasterVolumeControl=1 50 | SoftwareMasterVolumePercent=100 51 | EnableRefCountHack= 52 | -------------------------------------------------------------------------------- /guides/6.5-differences.md: -------------------------------------------------------------------------------- 1 | # Differences of Proton versions 6.5 and below 2 | 3 | As older Proton versions are used less, it does not make sense for me to create guides for those versions specifically. So I will list the difference between older Proton versions and recent ones. 4 | 5 | ## installing wineasio 6 | 7 | Older Proton only used `wineasio.dll.so` and didn't have `wineasio.dll` (".so" being the difference between the two). 8 | The location also differs slightly. Currently it is (example) `/usr/lib/wine/i386-unix/wineasio.dll.so`, whereas it was `/usr/lib/wine/wineasio.dll.so` before. 9 | 10 | So the installation commands are as follows: 11 | 12 |
Arch-based, including Steam Deck 13 | 14 | ``` 15 | # build 16 | rm -rf build32 17 | rm -rf build64 18 | make 32 19 | make 64 20 | 21 | # Install on normal wine 22 | sudo cp build32/wineasio.dll /usr/lib32/wine/i386-windows/wineasio.dll 23 | sudo cp build32/wineasio.dll.so /usr/lib32/wine/i386-unix/wineasio.dll.so 24 | sudo cp build64/wineasio.dll /usr/lib/wine/x86_64-windows/wineasio.dll 25 | sudo cp build64/wineasio.dll.so /usr/lib/wine/x86_64-unix/wineasio.dll.so 26 | 27 | # Install to Proton 28 | # !!! WATCH OUT FOR VARIABLES !!! 29 | cp /usr/lib32/wine/i386-unix/wineasio.dll.so "$PROTON/lib/wine/wineasio.dll.so" 30 | cp /usr/lib/wine/x86_64-unix/wineasio.dll.so "$PROTON/lib64/wine/wineasio.dll.so" 31 | ``` 32 | 33 |
34 | 35 |
Debian-based 36 | 37 | ``` 38 | # build 39 | rm -rf build32 40 | rm -rf build64 41 | make 32 42 | make 64 43 | 44 | # Install on normal wine 45 | # 46 | # 47 | 48 | # Install to Proton 49 | # !!! WATCH OUT FOR VARIABLES !!! 50 | cp /usr/lib/i386-linux-gnu/wine/wineasio.dll.so "$PROTON/lib/wine/wineasio.dll.so" 51 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so "$PROTON/lib64/wine/wineasio.dll.so" 52 | ``` 53 | 54 |
55 | 56 |
Fedora 57 | 58 | ``` 59 | # build 60 | rm -rf build32 61 | rm -rf build64 62 | make 32 63 | make 64 64 | 65 | # Install on normal wine 66 | sudo cp build32/wineasio.dll /usr/lib/wine/i386-windows/wineasio.dll 67 | sudo cp build32/wineasio.dll.so /usr/lib/wine/i386-unix/wineasio.dll.so 68 | sudo cp build64/wineasio.dll /usr/lib64/wine/x86_64-windows/wineasio.dll 69 | sudo cp build64/wineasio.dll.so /usr/lib64/wine/x86_64-unix/wineasio.dll.so 70 | 71 | # Install to Proton 72 | # !!! WATCH OUT FOR VARIABLES !!! 73 | cp /usr/lib/wine/i386-unix/wineasio.dll.so "$PROTON/lib/wine/wineasio.dll.so" 74 | cp /usr/lib64/wine/x86_64-unix/wineasio.dll.so "$PROTON/lib64/wine/wineasio.dll.so" 75 | ``` 76 | 77 |
78 | 79 | ## Starting the game 80 | 81 | ``` 82 | # cd is necessary for the Rocksmith.ini and the DLC folder 83 | cd $STEAMLIBRARY/steamapps/common/Rocksmith2014 84 | PIPEWIRE_LATENCY=256/48000 WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine $STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe 85 | ``` 86 | -------------------------------------------------------------------------------- /guides/Makefile.mk: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # Makefile for WineASIO # 3 | # --------------------- # 4 | # Created by falkTX 5 | # Initially generated by winemaker 6 | # 7 | # Makefile from WineASIO 1.2.0 8 | # Modified by theNizo on 2024-11-04 9 | 10 | ifeq ($(ARCH),) 11 | $(error incorrect use of Makefile, ARCH var is missing) 12 | endif 13 | ifeq ($(M),) 14 | $(error incorrect use of Makefile, M var is missing) 15 | endif 16 | 17 | wineasio_dll_MODULE = wineasio$(M).dll 18 | 19 | PREFIX = /usr 20 | SRCDIR = . 21 | DLLS = $(wineasio_dll_MODULE) $(wineasio_dll_MODULE).so 22 | 23 | ### Tools 24 | 25 | CC = gcc 26 | WINEBUILD = winebuild 27 | WINECC = winegcc 28 | 29 | ### Common settings 30 | 31 | CEXTRA = -m$(M) -D_REENTRANT -fPIC -Wall -pipe 32 | CEXTRA += -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith 33 | CEXTRA += -Werror=implicit-function-declaration 34 | CEXTRA += $(shell pkg-config --cflags jack) 35 | RCEXTRA = 36 | INCLUDE_PATH = -I. -Irtaudio/include 37 | INCLUDE_PATH += -I$(PREFIX)/include/wine 38 | INCLUDE_PATH += -I$(PREFIX)/include/wine/windows 39 | INCLUDE_PATH += -I$(PREFIX)/include/wine-development 40 | INCLUDE_PATH += -I$(PREFIX)/include/wine-development/wine/windows 41 | INCLUDE_PATH += -I/opt/wine-stable/include 42 | INCLUDE_PATH += -I/opt/wine-stable/include/wine/windows 43 | INCLUDE_PATH += -I/opt/wine-staging/include 44 | INCLUDE_PATH += -I/opt/wine-staging/include/wine/windows 45 | #LIBRARIES = $(shell pkg-config --libs jack) 46 | LIBRARIES = -ljack 47 | 48 | # 64bit build needs an extra flag 49 | ifeq ($(M),64) 50 | CEXTRA += -DNATIVE_INT64 51 | endif 52 | 53 | # Debug or Release 54 | ifeq ($(DEBUG),true) 55 | CEXTRA += -O0 -DDEBUG -g -D__WINESRC__ 56 | else 57 | CEXTRA += -O2 -DNDEBUG -fvisibility=hidden 58 | endif 59 | 60 | ### wineasio.dll settings 61 | 62 | wineasio_dll_C_SRCS = asio.c \ 63 | main.c \ 64 | regsvr.c 65 | wineasio_dll_LDFLAGS = -shared \ 66 | -m$(M) \ 67 | -mnocygwin \ 68 | wineasio.dll.spec \ 69 | -L/usr/lib$(M) \ 70 | -L/usr/lib \ 71 | -L/usr/lib$(M)/wine \ 72 | -L/usr/lib/wine \ 73 | -L/usr/lib/$(ARCH)-linux-gnu/wine \ 74 | -L/usr/lib/$(ARCH)-linux-gnu/wine-development \ 75 | -L/usr/lib$(M)/pipewire-0.3/jack \ 76 | -L/usr/lib/pipewire-0.3/jack \ 77 | -L/opt/wine-stable/lib \ 78 | -L/opt/wine-stable/lib/wine \ 79 | -L/opt/wine-stable/lib$(M) \ 80 | -L/opt/wine-stable/lib$(M)/wine \ 81 | -L/opt/wine-staging/lib \ 82 | -L/opt/wine-staging/lib/wine \ 83 | -L/opt/wine-staging/lib$(M) \ 84 | -L/opt/wine-staging/lib$(M)/wine 85 | wineasio_dll_DLLS = odbc32 \ 86 | ole32 \ 87 | winmm 88 | wineasio_dll_LIBRARIES = uuid 89 | 90 | wineasio_dll_OBJS = $(wineasio_dll_C_SRCS:%.c=build$(M)/%.c.o) 91 | 92 | ### Global source lists 93 | 94 | C_SRCS = $(wineasio_dll_C_SRCS) 95 | 96 | ### Generic targets 97 | 98 | all: 99 | build: rtaudio/include/asio.h $(DLLS:%=build$(M)/%) 100 | 101 | ### Build rules 102 | 103 | .PHONY: all 104 | 105 | # Implicit rules 106 | 107 | build$(M)/%.c.o: %.c 108 | @$(shell mkdir -p build$(M)) 109 | $(CC) -c $(INCLUDE_PATH) $(CFLAGS) $(CEXTRA) -o $@ $< 110 | 111 | ### Target specific build rules 112 | 113 | build$(M)/$(wineasio_dll_MODULE): $(wineasio_dll_OBJS) 114 | $(WINEBUILD) -m$(M) --dll --fake-module -E wineasio.dll.spec $^ -o $@ 115 | 116 | build$(M)/$(wineasio_dll_MODULE).so: $(wineasio_dll_OBJS) 117 | $(WINECC) $^ $(wineasio_dll_LDFLAGS) $(LIBRARIES) \ 118 | $(wineasio_dll_DLLS:%=-l%) $(wineasio_dll_LIBRARIES:%=-l%) -o $@ 119 | -------------------------------------------------------------------------------- /guides/obs.md: -------------------------------------------------------------------------------- 1 | # Recording with OBS 2 | 3 | ## Quick and dirty 4 | 5 | Works just fine. 6 | 7 | ## with pipewire 8 | 9 | Works just fine. 10 | 11 | ## JACK 12 | 13 | Start JACK first, just in case. 14 | 15 | Open OBS. In sources, click `+` -> JACK Input Client -> Choose name. Select 2 input channels, if asked. 16 | 17 | ![](/img/0-obs.webp) 18 | 19 | I recommend to disable any other system audio in OBS: Settings -> Audio -> Global Audio devices -> disable any "Desktop Audio". They created white noise on my system. 20 | 21 | ![](/img/2-obs.webp) 22 | 23 | Start the game and open a patchbay once it's running. It will look something like this: 24 | 25 | ![](/img/1-catia.webp) 26 | 27 | * `Pulse Audio JACK [...]` is from `pulseaudio-jack` (which is pretty nice to have, but not needed to get the game running) 28 | * `system` are the input and output devices 29 | * `JACK Input Client` is the sink from OBS we just created 30 | * `Rocksmith2014` is the game 31 | 32 | Now tie Rocksmith's outputs to OBS's inputs. OBS should get sound from Rocksmith now. 33 | 34 | Have fun recording and/or streaming. 35 | -------------------------------------------------------------------------------- /guides/quick.md: -------------------------------------------------------------------------------- 1 | # ALSA (quick and dirty) 2 | 3 | ## Create a clean wine prefix/compatdata 4 | 5 | Go to `$STEAMLIBRARY/steamapps/compatdata` and delete or move `221680`. 6 | 7 | Start Rocksmith and stop it again once it's running. 8 | 9 | ## Modify the prefix 10 | 11 | You can either use `protontricks`, or `winetricks` 12 | 13 |
14 | protontricks 15 | 16 | ``` 17 | protontricks 221680 sound=alsa 18 | protontricks 221680 winecfg 19 | ``` 20 | 21 |
22 | 23 |
24 | winetricks 25 | 26 | ``` 27 | WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx winetricks sound=alsa 28 | WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx winecfg 29 | ``` 30 | 31 |
32 | 33 | Once in winecfg, go to the Audio Tab. 34 | 35 | * Leave both output devices on default. 36 | * Select the desired input device for both inputs. 37 | 38 | Hit "Apply" and "Ok". 39 | 40 | ## Disable Input device for Pulse 41 | 42 | Open `pavucontrol` ("PulseAudio Volume Control"), go to the configuration tab. Set the input device to "off". 43 | 44 | ## Disable exclusivity 45 | 46 | Go to the root of your Rocksmith installation and open `Rocksmith.ini` with a text editor. Change the following lines: 47 | 48 | * `ExclusiveMode=0` 49 | * `Win32UltraLowLatencyMode=0` 50 | 51 | ## Run the game 52 | 53 | Press "Play" in Steam. Have fun. 54 | -------------------------------------------------------------------------------- /guides/setup-rs-asio.md: -------------------------------------------------------------------------------- 1 | # Configuring RS_ASIO 2 | 3 | (Please note that there is much more detail (including reports for certain audio interfaces) on the [RS_ASIO repo](https://github.com/mdias/rs_asio)) 4 | 5 | ![](/img/rs-asio.webp) 6 | 7 | You can bind up to 3 inputs (mono) to Rocksmith. 8 | 9 | The available audio devices in Rocksmith will always be in this order with this description, regardless of what's actually plugged in. Rocksmith will do an amp sim for the RealToneCables (of which you can turn the volume down), but not for the mic input. 10 | 11 | ## RS_ASIO.ini 12 | 13 | Set every driver to `wineasio-rsasio` and you did most of the work. 14 | 15 | The configuration is fine as is. But if you want to disable the other inputs, you can by putting `;` in front of every line of the other inputs. 16 | 17 | Only mono inputs are accepted by RS_ASIO. The `Channel` sets which in_# of Rocksmith picks up the input for that device. Keep in mind that jack shows the first input as in_1, but this ini lists the first input as 0, so you need to calculate -1 for those. 18 | 19 | (Computers start counting at 0. This is a very common practice. so channel=0 is in_1, channel=1 is in_2, and the last one is channel=15, which is in_16) 20 | -------------------------------------------------------------------------------- /guides/setup/arch-native.md: -------------------------------------------------------------------------------- 1 | # Native JACK on Arch-based distros 2 | 3 | Tested on Arch Linux 4 | 5 | ## Table of contents 6 | 7 | 1. [Install necessary stuff](#install-necessary-stuff) 8 | 1. [Create a clean prefix](#create-a-clean-prefix) 9 | 1. [wineasio](#wineasio) 10 | 1. [Installing RS_ASIO](#installing-rs_asio) 11 | 1. [Set up JACK](#set-up-jack) 12 | 1. [Starting the game](#starting-the-game) 13 | 1. [Troubleshooting](/guides/troubleshooting.md) 14 | 15 | # Install necessary stuff 16 | 17 | (I recommend `wine-staging` if your distro has it, but usual `wine` works as well.) 18 | 19 | If asked, replace `jack`. 20 | 21 | ``` 22 | # If you use pipewire, I also recommend to install: pipewire-jack-client 23 | # If you use pulseaudio, I also recommend to install: pulseaudio-jack 24 | sudo pacman -S jack2 lib32-jack2 realtime-privileges qjackctl 25 | 26 | # the groups should already exist, but just in case 27 | sudo groupadd audio 28 | sudo groupadd realtime 29 | sudo usermod -aG audio $USER 30 | sudo usermod -aG realtime $USER 31 | ``` 32 | 33 | Log out and back in. Or reboot, if that doesn't work. 34 | 35 |
How to check if this worked correctly 36 | 37 | > For the packages, do `pacman -Q ` (You can do multiple packages at once). Should output the names and versions without errors. 38 | > 39 | > For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 40 |
41 | 42 | # Create a clean prefix 43 | 44 | Set the Proton version you want to use. There's two ways to do this. In Steam 45 | 46 | * go to `Settings` ➞ `Compatibility` ➞ `Enable Steam play for all other titles`, then restart Steam. 47 | * open your library, right click Rocksmith and go to`Properties` ➞ `Compatibility` and force one. 48 | 49 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 50 | 51 | The rest will be set up later. 52 | 53 | # wineasio 54 | 55 | ## Install 56 | 57 | Installing `base-devel` is very useful for using the AUR and compiling in general. 58 | 59 |
Know already what's going on? Here are all commands in one piece without an explanation 60 | 61 | > **If the commands in this collapsible section don't work for you, try the "longer" variant first before asking for help.** 62 | > 63 | > YOU NEED TO HAVE THE $PROTON AND $STEAMLIBRARY VARIABLE SET!! (or replaced with the correct path first) 64 | > 65 | > cd into the unpacked directory, then run this. 66 | > 67 | > ``` 68 | > rm -rf build32 69 | > rm -rf build64 70 | > make 32 71 | > make 64 72 | > sudo cp build32/wineasio32.dll /usr/lib32/wine/i386-windows/wineasio32.dll 73 | > sudo cp build32/wineasio32.dll.so /usr/lib32/wine/i386-unix/wineasio32.dll.so 74 | > sudo cp build64/wineasio64.dll /usr/lib/wine/x86_64-windows/wineasio64.dll 75 | > sudo cp build64/wineasio64.dll.so /usr/lib/wine/x86_64-unix/wineasio64.dll.so 76 | > cp build32/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 77 | > cp build32/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 78 | > cp build64/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 79 | > cp build64/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 80 | > env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 81 | > ``` 82 | > 83 | > And you're done, continue with [Installing RS_ASIO](#installing-rs_asio). 84 | > 85 |
86 | 87 | [Download](https://github.com/wineasio/wineasio/releases) the newest .tar.gz and unpack it. Open a terminal inside the newly created folder. 88 | 89 | 90 | 91 | ``` 92 | # build 93 | rm -rf build32 94 | rm -rf build64 95 | make 32 96 | make 64 97 | 98 | # Install on normal wine 99 | sudo cp build32/wineasio32.dll /usr/lib32/wine/i386-windows/wineasio32.dll 100 | sudo cp build32/wineasio32.dll.so /usr/lib32/wine/i386-unix/wineasio32.dll.so 101 | sudo cp build64/wineasio64.dll /usr/lib/wine/x86_64-windows/wineasio64.dll 102 | sudo cp build64/wineasio64.dll.so /usr/lib/wine/x86_64-unix/wineasio64.dll.so 103 | ``` 104 | 105 | 106 | 107 | `wineasio` is now installed on your system. 108 | 109 |
How to check if it's installed correctly 110 | 111 | > ``` 112 | > find /usr/lib32/ -name "wineasio*" 113 | > find /usr/lib/ -name "wineasio*" 114 | > ``` 115 | > 116 | > This should output 4 paths (ignore the errors). 117 | > 118 |
119 | 120 | ## Make use of 121 | 122 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 123 | 124 | **STOP!** If you haven't set the environment variables yet, please follow [this part](/README.md#common-paths) of the prerequisites, then continue. 125 | 126 | ``` 127 | cp /usr/lib32/wine/i386-unix/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 128 | cp /usr/lib32/wine/i386-windows/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio32.dll" 129 | cp /usr/lib/wine/x86_64-unix/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio64.dll.so" 130 | cp /usr/lib/wine/x86_64-windows/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio64.dll" 131 | ``` 132 | 133 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 134 | 135 | To register wineasio (so that it can be used in the prefix), run the `wineasio-register` script that comes in the wineasio zip and set the `WINEPREFIX` to Rocksmiths. 136 | 137 | ``` 138 | env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 139 | ``` 140 | 141 | Errors outputted by this command are expected. The important one is the message at the end saying "regsvr32: Successfully registered DLL ..." or "regsvr32: Failed to register ...". 142 | 143 |
How to check if this worked correctly 144 | 145 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 146 | > 147 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 148 | > 149 | > ``` 150 | > WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine /path/to/VBASIOTest32.exe 151 | > ``` 152 | > !! The command above currently might not work. You can try instead: `LD_PRELOAD=/usr/lib32/libjack.so wine /path/to/VBASIOTest32.exe` !! 153 | > 154 |
155 | 156 | ## Installing RS_ASIO 157 | 158 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 159 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. You could also fill in `WineASIO` instead. 160 | 161 | And you're done with RS_ASIO. But in case you want to configure the inputs further (relevant for multiplayer), see [this](/guides/setup-rs-asio.md). 162 | 163 | ## Set up JACK 164 | 165 | Open QjackCtl and go to "Setup". Select 166 | 167 | 1. Driver: alsa 168 | 1. Tick "Realtime" 169 | 1. Sample Rate: 48000 170 | 1. Frames/Period: 256 (my recommendation) 171 | 1. Periods/Buffer: 4 (my recommendation) 172 | 1. Select audio device as described below. 173 | 174 | If you use the same device for input and output, you can set it in the "Parameters" 🡲 "Interface". 175 | 176 | If you use one device for input and one for output (say, RealToneCable and internal soundcard for example), select them in the "Advanced" Tab, as "Output Device" and "Input Device". The number of channels below are usually selected automatically 177 | 178 | Quick note on Frames and Buffer size: More frames equals better quality audio. More Buffer equals more stability. Higher numbers equal higher latency. 256/4 is decent audio with decent delay and works for most people. 179 | 180 | Press apply, close setup and try to start JACK. 181 | 182 | # Starting the game 183 | 184 | ![](/img/3-start-button.webp) 185 | 186 | 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. 187 | 188 | Steam and JACK need to be running. 189 | 190 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). This is an issue with Steam and pipewire-jack. There are two ways to go about this. You can apply both at the same time, they don't break each other. 191 | 192 | 193 | 194 |
1. LD_PRELOAD 195 | 196 | * Advantages: Run from Steam directly 197 | * Disadvantages: higher possibility of crashes, steps you might need to do every game-boot. 198 | 199 | Add these launch options to Rocksmith: 200 | ``` 201 | LD_PRELOAD=/usr/lib32/libjack.so %command% 202 | ``` 203 | 204 | You can launch the game from Steam now. For the first few boot-ups, you have to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. If it doesn't crash, continue with instructions. 205 | 206 | If there is NO message saying "No output device found, RS_ASIO is working fine. If you can hear sound, everything works fine. 207 | 208 | If you cannot hear sound, open QjackCtl and go to "Graph". We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay. I recommend connecting everything before entering a profile. 209 | 210 | --- 211 | 212 |
213 | 214 |
2. Start script, shortcut in Steam 215 | 216 | * Advantage: Reliable one time setup 217 | * Disadvantages: Another Steam game entry, or having to launch from terminal entirely 218 | 219 | ### Get the start script 220 | 221 | Please select the Proton Version you use (Rocksmith has been working fine since at least Proton 4 btw): 222 | 223 | * [Proton 9 or higher](/guides/start-script/proton-9.md) (newer versions) 224 | * [Proton 8 or lower](/guides/start-script/proton-8.md) (slightly easier) 225 | 226 | We can start the game via this script now: `path/to/rocksmith-launcher.sh` 227 | 228 | 229 | 230 | If you want the Steam overlay to work, you need to launch the script via Steam, see the next step. 231 | 232 | ### Making it nice via Steam entry (optional, but recommended) 233 | 234 | With Proton's runtime, we can't start Rocksmith directly from the Steam Library just like that (excluding LD_PRELOAD). But we can use the Steam Library to start the script that starts the game in a way that Steam recognizes. 235 | 236 |
Fitting meme format 237 | 238 | ![](https://i.kym-cdn.com/photos/images/original/002/546/187/fb1.jpg) 239 | 240 |
241 | 242 | Go into your Steam Library and select "Add a game" ➞ "Add a Non-Steam Game" on the bottom left. 243 | 244 | Make sure you can see all files. Select the script we generated just now and add it. This will create a shortcut to the script, which I will refer to as "shortcut" from here on. For Proton versions 8 or lower, right click on the shortcut and select "Properties". Add these launch Options: `PIPEWIRE_LATENCY="256/48000" %command%` 245 | 246 | You can now start the game from Steam. Use the shortcut, it will launch the actual game. 247 | 248 |
If launching the script from Steam doesn't work 249 | 250 | You can try and add it to Lutris, then add a Lutris shortcut by right-clicking and selecting "Create Steam shortcut". 251 | 252 | This works because of how Lutris behaves when games are launched from Steam. All the Steam shortcut does is to notify Lutris to start a game. This is finished when Lutris received the message (= Steam sees it as "stopped"). Lutris then launches the game. 253 | 254 | Important Settings: 255 | 256 | * Runner: Linux 257 | * Working Directory: The folder where your script is. 258 | * Disable Lutris Runtime: true 259 | 260 |
261 | 262 | ### Beautification (even more optional, but recommended) 263 | 264 | Leaving the shortcut just like that is not pretty, so we're going to change that. 265 | 266 | You can give the games in your Steam Library a custom look. A good Website for resources is the [SteamGridDB](https://www.steamgriddb.com/). 267 | 268 | You can take artwork from [Rocksmith](https://www.steamgriddb.com/game/1841), [Rocksmith 2014](https://www.steamgriddb.com/game/2295), [Rocksmith+](https://www.steamgriddb.com/game/5359161) or anything else you want. I would recommend something that makes the shortcut look different than the game. 269 | 270 | **Name and icon:** Go into the shortcut's Properties. Right under the text "Shortcut" you can change the game's icon and name (both show up in the list on the left in desktop mode). I recommend something like "Rocksmith 2014 - Launcher". 271 | 272 | **"Hero (banner/background)":** Located above the "Play" button in Steam. Right-click on it and choose "set custom background". You can theoretically set a logo too by right-clicking on the text, but I personally chose not to do that to clearly see which item is which. 273 | 274 | **Grid (cover art):** For this it gets a bit harder. Go to `$HOME/.steam/steam/userdata//config/grid`. Since we added a hero, there should be a file that resembles it, so find it with an image viewer. It's called `_hero.` we need the ID. 275 | copy the cover art into this folder and name it `p.`. 276 | 277 | This is how the files look on my system: 278 | 279 | ![](/img/grid-file.webp) 280 | 281 | Launch Big Picture Mode now and find the entry in your Library. It should now have artwork. 282 | 283 | --- 284 | 285 |
286 | 287 | # Troubleshooting 288 | 289 | [Go to Troubleshooting](/guides/troubleshooting.md) 290 | -------------------------------------------------------------------------------- /guides/setup/arch-pipewire.md: -------------------------------------------------------------------------------- 1 | # pipewire-jack on Arch-based distros 2 | 3 | Tested on Arch Linux 4 | 5 | ## Table of contents 6 | 7 | 1. [Install necessary stuff](#install-necessary-stuff) 8 | 1. [Create a clean prefix](#create-a-clean-prefix) 9 | 1. [wineasio](#wineasio) 10 | 1. [Installing RS_ASIO](#installing-rs_asio) 11 | 1. [Set up JACK](#set-up-jack) 12 | 1. [Starting the game](#starting-the-game) 13 | 1. [Troubleshooting](/guides/troubleshooting.md) 14 | 15 | # Install necessary stuff 16 | 17 | (I recommend `wine-staging` if your distro has it, but usual `wine` works as well.) 18 | 19 | I assume that `pipewire` and a session manager (eg. `wireplumber`, or `pipewire-media-session`) is already installed. 20 | 21 | ``` 22 | sudo pacman -S wine-staging pipewire-alsa pipewire-pulse pipewire-jack lib32-pipewire-jack qpwgraph realtime-privileges pavucontrol 23 | # the groups should already exist, but just in case 24 | sudo groupadd audio 25 | sudo groupadd realtime 26 | sudo usermod -aG audio $USER 27 | sudo usermod -aG realtime $USER 28 | ``` 29 | 30 | Log out and back in. Or reboot, if that doesn't work. 31 | 32 |
How to check if this worked correctly 33 | 34 | > For the packages, do `pacman -Q ` (You can do multiple packages at once). Should output the names and versions without errors. 35 | > 36 | > For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 37 |
38 | 39 | # Create a clean prefix 40 | 41 | Set the Proton version you want to use. There's two ways to do this. In Steam 42 | 43 | * go to `Settings` ➞ `Compatibility` ➞ `Enable Steam play for all other titles`, then restart Steam. 44 | * open your library, right click Rocksmith and go to`Properties` ➞ `Compatibility` and force one. 45 | 46 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 47 | 48 | The rest will be set up later. 49 | 50 | # wineasio 51 | 52 | ## Install 53 | 54 | Installing `base-devel` is very useful for using the AUR and compiling in general. 55 | 56 |
Know already what's going on? Here are all commands in one piece without an explanation 57 | 58 | > **If the commands in this collapsible section don't work for you, try the "longer" variant first before asking for help.** 59 | > 60 | > YOU NEED TO HAVE THE $PROTON AND $STEAMLIBRARY VARIABLE SET!! (or replaced with the correct path first) 61 | > 62 | > cd into the unpacked directory, then run this. 63 | > 64 | > ``` 65 | > rm -rf build32 66 | > rm -rf build64 67 | > make 32 68 | > make 64 69 | > sudo cp build32/wineasio32.dll /usr/lib32/wine/i386-windows/wineasio32.dll 70 | > sudo cp build32/wineasio32.dll.so /usr/lib32/wine/i386-unix/wineasio32.dll.so 71 | > sudo cp build64/wineasio64.dll /usr/lib/wine/x86_64-windows/wineasio64.dll 72 | > sudo cp build64/wineasio64.dll.so /usr/lib/wine/x86_64-unix/wineasio64.dll.so 73 | > cp build32/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 74 | > cp build32/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 75 | > cp build64/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 76 | > cp build64/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 77 | > env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 78 | > ``` 79 | > 80 | > And you're done, continue with [Installing RS_ASIO](#installing-rs_asio). 81 | > 82 |
83 | 84 | [Download](https://github.com/wineasio/wineasio/releases) the newest .tar.gz and unpack it. Open a terminal inside the newly created folder. 85 | 86 | 87 | 88 | ``` 89 | # build 90 | rm -rf build32 91 | rm -rf build64 92 | make 32 93 | make 64 94 | 95 | # Install on normal wine 96 | sudo cp build32/wineasio32.dll /usr/lib32/wine/i386-windows/wineasio32.dll 97 | sudo cp build32/wineasio32.dll.so /usr/lib32/wine/i386-unix/wineasio32.dll.so 98 | sudo cp build64/wineasio64.dll /usr/lib/wine/x86_64-windows/wineasio64.dll 99 | sudo cp build64/wineasio64.dll.so /usr/lib/wine/x86_64-unix/wineasio64.dll.so 100 | ``` 101 | 102 | 103 | 104 | `wineasio` is now installed on your system. 105 | 106 |
How to check if it's installed correctly 107 | 108 | > ``` 109 | > find /usr/lib32/ -name "wineasio*" 110 | > find /usr/lib/ -name "wineasio*" 111 | > ``` 112 | > 113 | > This should output 4 paths (ignore the errors). 114 | > 115 |
116 | 117 | ## Make use of 118 | 119 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 120 | 121 | **STOP!** If you haven't set the environment variables yet, please follow [this part](/README.md#common-paths) of the prerequisites, then continue. 122 | 123 | ``` 124 | cp /usr/lib32/wine/i386-unix/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 125 | cp /usr/lib32/wine/i386-windows/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio32.dll" 126 | cp /usr/lib/wine/x86_64-unix/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio64.dll.so" 127 | cp /usr/lib/wine/x86_64-windows/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio64.dll" 128 | ``` 129 | 130 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 131 | 132 | To register wineasio (so that it can be used in the prefix), run the `wineasio-register` script that comes in the wineasio zip and set the `WINEPREFIX` to Rocksmiths. 133 | 134 | ``` 135 | env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 136 | ``` 137 | 138 | Errors outputted by this command are expected. The important one is the message at the end saying "regsvr32: Successfully registered DLL ..." or "regsvr32: Failed to register ...". 139 | 140 |
How to check if this worked correctly 141 | 142 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 143 | > 144 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 145 | > 146 | > ``` 147 | > WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine /path/to/VBASIOTest32.exe 148 | > ``` 149 | > !! The command above currently might not work. You can try instead: `LD_PRELOAD=/usr/lib32/libjack.so wine /path/to/VBASIOTest32.exe` !! 150 | > 151 |
152 | 153 | ## Installing RS_ASIO 154 | 155 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 156 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. You could also fill in `WineASIO` instead. 157 | 158 | And you're done with RS_ASIO. But in case you want to configure the inputs further (relevant for multiplayer), see [this](/guides/setup-rs-asio.md). 159 | 160 | ## Set up JACK 161 | 162 | I prefer to set up my audio devices with pavucontrol ("PulseAudio Volume Control"), which works if `pipewire-pulse` is installed. 163 | 164 | It's most reliable to NOT set your devices to Pro-Audio (under "Configuration") and leave pavucontrol open when starting the game. 165 | 166 | All available devices will automatically be tied to Rocksmith, and the game doesn't like you messing around in the patchbay (= it's possible, but would crash often). You default audio device will be taken first, then the others will be assigned. The order can most likely not be predicted. 167 | 168 | If you want to make sure it does what you want, select only one output and just as much inputs as you need (1 input (eg. singleplayer) = 1 device; 2 inputs (eg. 2 Players) = 2 devices, etc.). I like to do this via `pavucontrol`, which works if `pipewire-pulse` is installed. 169 | 170 | # Starting the game 171 | 172 | ![](/img/3-start-button.webp) 173 | 174 | 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. 175 | 176 | Steam needs to be running. 177 | 178 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). This is an issue with Steam and pipewire-jack. There are two ways to go about this. You can apply both at the same time, they don't break each other. 179 | 180 | 181 | 182 |
1. LD_PRELOAD 183 | 184 | * Advantages: Run from Steam directly 185 | * Disadvantages: higher possibility of crashes, steps you might need to do every game-boot. 186 | 187 | Add these launch options to Rocksmith: 188 | ``` 189 | LD_PRELOAD=/usr/lib32/libjack.so PIPEWIRE_LATENCY=256/48000 %command% 190 | ``` 191 | 192 | You can launch the game from Steam now. For the first few boot-ups, you have to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. If it doesn't crash, continue with instructions. 193 | 194 | If there is NO message saying "No output device found, RS_ASIO is working fine. If you can hear sound, everything works fine. 195 | 196 | If you cannot hear sound, open qpwgraph or a different JACK patchbay software of your choice. We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay, so this is how you want to go about it: 197 | 198 | 1. Ideally do it while the game starts up (logo screens appear). The Rocksmit logo is still safe, anything after that is not recommended. 199 | 1. Connect one device to Rocksmith 200 | 1. Window focus to Rocksmith 201 | 1. Go to step one, until you have connected everything 202 | 203 | --- 204 | 205 |
206 | 207 |
2. Start script, shortcut in Steam 208 | 209 | * Advantage: Reliable one time setup 210 | * Disadvantages: Another Steam game entry, or having to launch from terminal entirely 211 | 212 | ### Get the start script 213 | 214 | Please select the Proton Version you use (Rocksmith has been working fine since at least Proton 4 btw): 215 | 216 | * [Proton 9 or higher](/guides/start-script/proton-9.md) (newer versions) 217 | * [Proton 8 or lower](/guides/start-script/proton-8.md) (slightly easier) 218 | 219 | We can start the game via this script now: `PIPEWIRE_LATENCY="256/48000" path/to/rocksmith-launcher.sh` 220 | 221 | If you want to do a little more automation, read [this](/guides/which-guide-should-i-choose.md#i-just-want-to-click-one-button-and-expect-the-thing-to-work-pretty-much-all-the-time) 222 | 223 | If you want the Steam overlay to work, you need to launch the script via Steam, see the next step. 224 | 225 | ### Making it nice via Steam entry (optional, but recommended) 226 | 227 | With Proton's runtime, we can't start Rocksmith directly from the Steam Library just like that (excluding LD_PRELOAD). But we can use the Steam Library to start the script that starts the game in a way that Steam recognizes. 228 | 229 |
Fitting meme format 230 | 231 | ![](https://i.kym-cdn.com/photos/images/original/002/546/187/fb1.jpg) 232 | 233 |
234 | 235 | Go into your Steam Library and select "Add a game" ➞ "Add a Non-Steam Game" on the bottom left. 236 | 237 | Make sure you can see all files. Select the script we generated just now and add it. This will create a shortcut to the script, which I will refer to as "shortcut" from here on. For Proton versions 8 or lower, right click on the shortcut and select "Properties". Add these launch Options: `PIPEWIRE_LATENCY="256/48000" %command%` 238 | 239 | You can now start the game from Steam. Use the shortcut, it will launch the actual game. 240 | 241 |
If launching the script from Steam doesn't work 242 | 243 | You can try and add it to Lutris, then add a Lutris shortcut by right-clicking and selecting "Create Steam shortcut". 244 | 245 | This works because of how Lutris behaves when games are launched from Steam. All the Steam shortcut does is to notify Lutris to start a game. This is finished when Lutris received the message (= Steam sees it as "stopped"). Lutris then launches the game. 246 | 247 | Important Settings: 248 | 249 | * Runner: Linux 250 | * Working Directory: The folder where your script is. 251 | * Disable Lutris Runtime: true 252 | * Environment Variables: 253 | * Name: PIPEWIRE_LATENCY 254 | * Value: 256/48000 255 |
256 | 257 | ### Beautification (even more optional, but recommended) 258 | 259 | Leaving the shortcut just like that is not pretty, so we're going to change that. 260 | 261 | You can give the games in your Steam Library a custom look. A good Website for resources is the [SteamGridDB](https://www.steamgriddb.com/). 262 | 263 | You can take artwork from [Rocksmith](https://www.steamgriddb.com/game/1841), [Rocksmith 2014](https://www.steamgriddb.com/game/2295), [Rocksmith+](https://www.steamgriddb.com/game/5359161) or anything else you want. I would recommend something that makes the shortcut look different than the game. 264 | 265 | **Name and icon:** Go into the shortcut's Properties. Right under the text "Shortcut" you can change the game's icon and name (both show up in the list on the left in desktop mode). I recommend something like "Rocksmith 2014 - Launcher". 266 | 267 | **"Hero (banner/background)":** Located above the "Play" button in Steam. Right-click on it and choose "set custom background". You can theoretically set a logo too by right-clicking on the text, but I personally chose not to do that to clearly see which item is which. 268 | 269 | **Grid (cover art):** For this it gets a bit harder. Go to `$HOME/.steam/steam/userdata//config/grid`. Since we added a hero, there should be a file that resembles it, so find it with an image viewer. It's called `_hero.` we need the ID. 270 | copy the cover art into this folder and name it `p.`. 271 | 272 | This is how the files look on my system: 273 | 274 | ![](/img/grid-file.webp) 275 | 276 | Launch Big Picture Mode now and find the entry in your Library. It should now have artwork. 277 | 278 | --- 279 | 280 |
281 | 282 | # Troubleshooting 283 | 284 | [Go to Troubleshooting](/guides/troubleshooting.md) 285 | -------------------------------------------------------------------------------- /guides/setup/deb-native.md: -------------------------------------------------------------------------------- 1 | # Native JACK on Debian-based distros 2 | 3 | Last tested on Linux Mint 22. 4 | 5 | ## Table of contents 6 | 7 | 1. [Install necessary stuff](#install-necessary-stuff) 8 | 1. [Create a clean prefix](#create-a-clean-prefix) 9 | 1. [wineasio](#wineasio) 10 | 1. [Installing RS_ASIO](#installing-rs_asio) 11 | 1. [Set up JACK](#set-up-jack) 12 | 1. [Starting the game](#starting-the-game) 13 | 1. [Troubleshooting](/guides/troubleshooting.md) 14 | 15 | # Install necessary stuff 16 | 17 | (I recommend `wine-staging` if your distro has it, but usual `wine` works as well.) 18 | 19 | Install the kxstudio repo according to these instructions: https://kx.studio/Repositories 20 | 21 | When asked about realtime privileges, select yes with the arrow keys and confirm with enter. 22 | 23 | ``` 24 | # If you use pulseaudio, I also recommend to install: pulseaudio-module-jack pulseaudio-module-jack:i386 25 | sudo apt update 26 | sudo apt install wineasio jackd2 qjackctl libjack-dev libjack-dev:i386 27 | # the groups should already exist, but just in case 28 | sudo groupadd audio 29 | sudo groupadd realtime 30 | sudo usermod -aG audio $USER 31 | sudo usermod -aG realtime $USER 32 | ``` 33 | 34 | Log out and back in. Or reboot, if that doesn't work. 35 | 36 |
How to check if this worked correctly 37 | 38 | > For the packages, do `apt list --installed ` (You can do multiple packages at once). Should output the names and versions without errors. 39 | > 40 | > For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 41 |
42 | 43 | # Create a clean prefix 44 | 45 | Set the Proton version you want to use. There's two ways to do this. In Steam 46 | 47 | * go to `Settings` ➞ `Compatibility` ➞ `Enable Steam play for all other titles`, then restart Steam. 48 | * open your library, right click Rocksmith and go to`Properties` ➞ `Compatibility` and force one. 49 | 50 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 51 | 52 | The rest will be set up later. 53 | 54 | # wineasio 55 | 56 | 57 | 58 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 59 | 60 | **STOP!** If you haven't set the environment variables yet, please follow [this part](/README.md#common-paths) of the prerequisites, then continue. 61 | 62 | ``` 63 | cp /usr/lib/i386-linux-gnu/wine/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 64 | cp /usr/lib/i386-linux-gnu/wine/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio32.dll" 65 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio64.dll.so" 66 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio64.dll" 67 | ``` 68 | 69 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 70 | 71 | To register wineasio (so that it can be used in the prefix), run the `wineasio-register` script that comes in the wineasio zip and set the `WINEPREFIX` to Rocksmiths. 72 | 73 | ``` 74 | env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx wineasio-register 75 | ``` 76 | 77 | Errors outputted by this command are expected. The important one is the message at the end saying "regsvr32: Successfully registered DLL ..." or "regsvr32: Failed to register ...". 78 | 79 |
How to check if this worked correctly 80 | 81 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 82 | > 83 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 84 | > 85 | > ``` 86 | > WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine /path/to/VBASIOTest32.exe 87 | > ``` 88 | > !! The command above currently might not work. You can try instead: `LD_PRELOAD=/usr/lib/i386-linux-gnu/pipewire-0.3/jack/libjack.so wine /path/to/VBASIOTest32.exe` !! 89 | > 90 |
91 | 92 | ## Installing RS_ASIO 93 | 94 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 95 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. You could also fill in `WineASIO` instead. 96 | 97 | And you're done with RS_ASIO. But in case you want to configure the inputs further (relevant for multiplayer), see [this](/guides/setup-rs-asio.md). 98 | 99 | ## Set up JACK 100 | 101 | Open QjackCtl and go to "Setup". Select 102 | 103 | 1. Driver: alsa 104 | 1. Tick "Realtime" 105 | 1. Sample Rate: 48000 106 | 1. Frames/Period: 256 (my recommendation) 107 | 1. Periods/Buffer: 4 (my recommendation) 108 | 1. Select audio device as described below. 109 | 110 | If you use the same device for input and output, you can set it in the "Parameters" 🡲 "Interface". 111 | 112 | If you use one device for input and one for output (say, RealToneCable and internal soundcard for example), select them in the "Advanced" Tab, as "Output Device" and "Input Device". The number of channels below are usually selected automatically 113 | 114 | Quick note on Frames and Buffer size: More frames equals better quality audio. More Buffer equals more stability. Higher numbers equal higher latency. 256/4 is decent audio with decent delay and works for most people. 115 | 116 | Press apply, close setup and try to start JACK. 117 | 118 | # Starting the game 119 | 120 | ![](/img/3-start-button.webp) 121 | 122 | 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. 123 | 124 | Steam and JACK need to be running. 125 | 126 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). This is an issue with Steam and pipewire-jack. There are two ways to go about this. You can apply both at the same time, they don't break each other. 127 | 128 | 129 | 130 |
1. LD_PRELOAD 131 | 132 | * Advantages: Run from Steam directly 133 | * Disadvantages: higher possibility of crashes, steps you might need to do every game-boot. 134 | 135 | Add these launch options to Rocksmith: 136 | ``` 137 | LD_PRELOAD=/usr/lib/i386-linux-gnu/pipewire-0.3/jack/libjack.so %command% 138 | ``` 139 | 140 | You can launch the game from Steam now. For the first few boot-ups, you have to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. If it doesn't crash, continue with instructions. 141 | 142 | If there is NO message saying "No output device found, RS_ASIO is working fine. If you can hear sound, everything works fine. 143 | 144 | If you cannot hear sound, open QjackCtl and go to "Graph". We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay. I recommend connecting everything before entering a profile. 145 | 146 | --- 147 | 148 |
149 | 150 |
2. Start script, shortcut in Steam 151 | 152 | * Advantage: Reliable one time setup 153 | * Disadvantages: Another Steam game entry, or having to launch from terminal entirely 154 | 155 | ### Get the start script 156 | 157 | Please select the Proton Version you use (Rocksmith has been working fine since at least Proton 4 btw): 158 | 159 | * [Proton 9 or higher](/guides/start-script/proton-9.md) (newer versions) 160 | * [Proton 8 or lower](/guides/start-script/proton-8.md) (slightly easier) 161 | 162 | We can start the game via this script now: `path/to/rocksmith-launcher.sh` 163 | 164 | 165 | 166 | If you want the Steam overlay to work, you need to launch the script via Steam, see the next step. 167 | 168 | ### Making it nice via Steam entry (optional, but recommended) 169 | 170 | With Proton's runtime, we can't start Rocksmith directly from the Steam Library just like that (excluding LD_PRELOAD). But we can use the Steam Library to start the script that starts the game in a way that Steam recognizes. 171 | 172 |
Fitting meme format 173 | 174 | ![](https://i.kym-cdn.com/photos/images/original/002/546/187/fb1.jpg) 175 | 176 |
177 | 178 | Go into your Steam Library and select "Add a game" ➞ "Add a Non-Steam Game" on the bottom left. 179 | 180 | Make sure you can see all files. Select the script we generated just now and add it. This will create a shortcut to the script, which I will refer to as "shortcut" from here on. For Proton versions 8 or lower, right click on the shortcut and select "Properties". Add these launch Options: `PIPEWIRE_LATENCY="256/48000" %command%` 181 | 182 | You can now start the game from Steam. Use the shortcut, it will launch the actual game. 183 | 184 |
If launching the script from Steam doesn't work 185 | 186 | You can try and add it to Lutris, then add a Lutris shortcut by right-clicking and selecting "Create Steam shortcut". 187 | 188 | This works because of how Lutris behaves when games are launched from Steam. All the Steam shortcut does is to notify Lutris to start a game. This is finished when Lutris received the message (= Steam sees it as "stopped"). Lutris then launches the game. 189 | 190 | Important Settings: 191 | 192 | * Runner: Linux 193 | * Working Directory: The folder where your script is. 194 | * Disable Lutris Runtime: true 195 | 196 |
197 | 198 | ### Beautification (even more optional, but recommended) 199 | 200 | Leaving the shortcut just like that is not pretty, so we're going to change that. 201 | 202 | You can give the games in your Steam Library a custom look. A good Website for resources is the [SteamGridDB](https://www.steamgriddb.com/). 203 | 204 | You can take artwork from [Rocksmith](https://www.steamgriddb.com/game/1841), [Rocksmith 2014](https://www.steamgriddb.com/game/2295), [Rocksmith+](https://www.steamgriddb.com/game/5359161) or anything else you want. I would recommend something that makes the shortcut look different than the game. 205 | 206 | **Name and icon:** Go into the shortcut's Properties. Right under the text "Shortcut" you can change the game's icon and name (both show up in the list on the left in desktop mode). I recommend something like "Rocksmith 2014 - Launcher". 207 | 208 | **"Hero (banner/background)":** Located above the "Play" button in Steam. Right-click on it and choose "set custom background". You can theoretically set a logo too by right-clicking on the text, but I personally chose not to do that to clearly see which item is which. 209 | 210 | **Grid (cover art):** For this it gets a bit harder. Go to `$HOME/.steam/steam/userdata//config/grid`. Since we added a hero, there should be a file that resembles it, so find it with an image viewer. It's called `_hero.` we need the ID. 211 | copy the cover art into this folder and name it `p.`. 212 | 213 | This is how the files look on my system: 214 | 215 | ![](/img/grid-file.webp) 216 | 217 | Launch Big Picture Mode now and find the entry in your Library. It should now have artwork. 218 | 219 | --- 220 | 221 |
222 | 223 | # Troubleshooting 224 | 225 | [Go to Troubleshooting](/guides/troubleshooting.md) 226 | -------------------------------------------------------------------------------- /guides/setup/deb-pipewire.md: -------------------------------------------------------------------------------- 1 | # pipewire-jack on Debian-based distros 2 | 3 | Last tested on Linux Mint 22. 4 | 5 | ## Table of contents 6 | 7 | 1. [Install necessary stuff](#install-necessary-stuff) 8 | 1. [Create a clean prefix](#create-a-clean-prefix) 9 | 1. [wineasio](#wineasio) 10 | 1. [Installing RS_ASIO](#installing-rs_asio) 11 | 1. [Set up JACK](#set-up-jack) 12 | 1. [Starting the game](#starting-the-game) 13 | 1. [Troubleshooting](/guides/troubleshooting.md) 14 | 15 | # Install necessary stuff 16 | 17 | (I recommend `wine-staging` if your distro has it, but usual `wine` works as well.) 18 | 19 | Install the kxstudio repo according to these instructions: https://kx.studio/Repositories 20 | 21 | ``` 22 | sudo dpkg --add-architecture i386 23 | sudo apt update 24 | sudo apt install wine pipewire-alsa pipewire-pulse pipewire-jack pipewire-jack:i386 qpwgraph pavucontrol wineasio 25 | # the groups should already exist, but just in case 26 | sudo groupadd audio 27 | sudo groupadd realtime 28 | sudo usermod -aG audio $USER 29 | sudo usermod -aG realtime $USER 30 | ``` 31 | 32 | Log out and back in. Or reboot, if that doesn't work. 33 | 34 |
How to check if this worked correctly 35 | 36 | > For the packages, do `apt list --installed ` (You can do multiple packages at once). Should output the names and versions without errors. 37 | > 38 | > For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 39 |
40 | 41 | # Create a clean prefix 42 | 43 | Set the Proton version you want to use. There's two ways to do this. In Steam 44 | 45 | * go to `Settings` ➞ `Compatibility` ➞ `Enable Steam play for all other titles`, then restart Steam. 46 | * open your library, right click Rocksmith and go to`Properties` ➞ `Compatibility` and force one. 47 | 48 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 49 | 50 | The rest will be set up later. 51 | 52 | # wineasio 53 | 54 | 55 | 56 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 57 | 58 | **STOP!** If you haven't set the environment variables yet, please follow [this part](/README.md#common-paths) of the prerequisites, then continue. 59 | 60 | ``` 61 | cp /usr/lib/i386-linux-gnu/wine/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 62 | cp /usr/lib/i386-linux-gnu/wine/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio32.dll" 63 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio64.dll.so" 64 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio64.dll" 65 | ``` 66 | 67 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 68 | 69 | To register wineasio (so that it can be used in the prefix), run the `wineasio-register` script that comes in the wineasio zip and set the `WINEPREFIX` to Rocksmiths. 70 | 71 | ``` 72 | env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx wineasio-register 73 | ``` 74 | 75 | Errors outputted by this command are expected. The important one is the message at the end saying "regsvr32: Successfully registered DLL ..." or "regsvr32: Failed to register ...". 76 | 77 |
How to check if this worked correctly 78 | 79 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 80 | > 81 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 82 | > 83 | > ``` 84 | > WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine /path/to/VBASIOTest32.exe 85 | > ``` 86 | > !! The command above currently might not work. You can try instead: `LD_PRELOAD=/usr/lib/i386-linux-gnu/pipewire-0.3/jack/libjack.so wine /path/to/VBASIOTest32.exe` !! 87 | > 88 |
89 | 90 | ## Installing RS_ASIO 91 | 92 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 93 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. You could also fill in `WineASIO` instead. 94 | 95 | And you're done with RS_ASIO. But in case you want to configure the inputs further (relevant for multiplayer), see [this](/guides/setup-rs-asio.md). 96 | 97 | ## Set up JACK 98 | 99 | I prefer to set up my audio devices with pavucontrol ("PulseAudio Volume Control"), which works if `pipewire-pulse` is installed. 100 | 101 | It's most reliable to NOT set your devices to Pro-Audio (under "Configuration") and leave pavucontrol open when starting the game. 102 | 103 | All available devices will automatically be tied to Rocksmith, and the game doesn't like you messing around in the patchbay (= it's possible, but would crash often). You default audio device will be taken first, then the others will be assigned. The order can most likely not be predicted. 104 | 105 | If you want to make sure it does what you want, select only one output and just as much inputs as you need (1 input (eg. singleplayer) = 1 device; 2 inputs (eg. 2 Players) = 2 devices, etc.). I like to do this via `pavucontrol`, which works if `pipewire-pulse` is installed. 106 | 107 | # Starting the game 108 | 109 | ![](/img/3-start-button.webp) 110 | 111 | 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. 112 | 113 | Steam needs to be running. 114 | 115 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). This is an issue with Steam and pipewire-jack. There are two ways to go about this. You can apply both at the same time, they don't break each other. 116 | 117 | 118 | 119 |
1. LD_PRELOAD 120 | 121 | * Advantages: Run from Steam directly 122 | * Disadvantages: higher possibility of crashes, steps you might need to do every game-boot. 123 | 124 | Add these launch options to Rocksmith: 125 | ``` 126 | LD_PRELOAD=/usr/lib/i386-linux-gnu/pipewire-0.3/jack/libjack.so PIPEWIRE_LATENCY=256/48000 %command% 127 | ``` 128 | 129 | You can launch the game from Steam now. For the first few boot-ups, you have to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. If it doesn't crash, continue with instructions. 130 | 131 | If there is NO message saying "No output device found, RS_ASIO is working fine. If you can hear sound, everything works fine. 132 | 133 | If you cannot hear sound, open qpwgraph or a different JACK patchbay software of your choice. We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay, so this is how you want to go about it: 134 | 135 | 1. Ideally do it while the game starts up (logo screens appear). The Rocksmit logo is still safe, anything after that is not recommended. 136 | 1. Connect one device to Rocksmith 137 | 1. Window focus to Rocksmith 138 | 1. Go to step one, until you have connected everything 139 | 140 | --- 141 | 142 |
143 | 144 |
2. Start script, shortcut in Steam 145 | 146 | * Advantage: Reliable one time setup 147 | * Disadvantages: Another Steam game entry, or having to launch from terminal entirely 148 | 149 | ### Get the start script 150 | 151 | Please select the Proton Version you use (Rocksmith has been working fine since at least Proton 4 btw): 152 | 153 | * [Proton 9 or higher](/guides/start-script/proton-9.md) (newer versions) 154 | * [Proton 8 or lower](/guides/start-script/proton-8.md) (slightly easier) 155 | 156 | We can start the game via this script now: `PIPEWIRE_LATENCY="256/48000" path/to/rocksmith-launcher.sh` 157 | 158 | If you want to do a little more automation, read [this](/guides/which-guide-should-i-choose.md#i-just-want-to-click-one-button-and-expect-the-thing-to-work-pretty-much-all-the-time) 159 | 160 | If you want the Steam overlay to work, you need to launch the script via Steam, see the next step. 161 | 162 | ### Making it nice via Steam entry (optional, but recommended) 163 | 164 | With Proton's runtime, we can't start Rocksmith directly from the Steam Library just like that (excluding LD_PRELOAD). But we can use the Steam Library to start the script that starts the game in a way that Steam recognizes. 165 | 166 |
Fitting meme format 167 | 168 | ![](https://i.kym-cdn.com/photos/images/original/002/546/187/fb1.jpg) 169 | 170 |
171 | 172 | Go into your Steam Library and select "Add a game" ➞ "Add a Non-Steam Game" on the bottom left. 173 | 174 | Make sure you can see all files. Select the script we generated just now and add it. This will create a shortcut to the script, which I will refer to as "shortcut" from here on. For Proton versions 8 or lower, right click on the shortcut and select "Properties". Add these launch Options: `PIPEWIRE_LATENCY="256/48000" %command%` 175 | 176 | You can now start the game from Steam. Use the shortcut, it will launch the actual game. 177 | 178 |
If launching the script from Steam doesn't work 179 | 180 | You can try and add it to Lutris, then add a Lutris shortcut by right-clicking and selecting "Create Steam shortcut". 181 | 182 | This works because of how Lutris behaves when games are launched from Steam. All the Steam shortcut does is to notify Lutris to start a game. This is finished when Lutris received the message (= Steam sees it as "stopped"). Lutris then launches the game. 183 | 184 | Important Settings: 185 | 186 | * Runner: Linux 187 | * Working Directory: The folder where your script is. 188 | * Disable Lutris Runtime: true 189 | * Environment Variables: 190 | * Name: PIPEWIRE_LATENCY 191 | * Value: 256/48000 192 |
193 | 194 | ### Beautification (even more optional, but recommended) 195 | 196 | Leaving the shortcut just like that is not pretty, so we're going to change that. 197 | 198 | You can give the games in your Steam Library a custom look. A good Website for resources is the [SteamGridDB](https://www.steamgriddb.com/). 199 | 200 | You can take artwork from [Rocksmith](https://www.steamgriddb.com/game/1841), [Rocksmith 2014](https://www.steamgriddb.com/game/2295), [Rocksmith+](https://www.steamgriddb.com/game/5359161) or anything else you want. I would recommend something that makes the shortcut look different than the game. 201 | 202 | **Name and icon:** Go into the shortcut's Properties. Right under the text "Shortcut" you can change the game's icon and name (both show up in the list on the left in desktop mode). I recommend something like "Rocksmith 2014 - Launcher". 203 | 204 | **"Hero (banner/background)":** Located above the "Play" button in Steam. Right-click on it and choose "set custom background". You can theoretically set a logo too by right-clicking on the text, but I personally chose not to do that to clearly see which item is which. 205 | 206 | **Grid (cover art):** For this it gets a bit harder. Go to `$HOME/.steam/steam/userdata//config/grid`. Since we added a hero, there should be a file that resembles it, so find it with an image viewer. It's called `_hero.` we need the ID. 207 | copy the cover art into this folder and name it `p.`. 208 | 209 | This is how the files look on my system: 210 | 211 | ![](/img/grid-file.webp) 212 | 213 | Launch Big Picture Mode now and find the entry in your Library. It should now have artwork. 214 | 215 | --- 216 | 217 |
218 | 219 | # Troubleshooting 220 | 221 | [Go to Troubleshooting](/guides/troubleshooting.md) 222 | -------------------------------------------------------------------------------- /guides/setup/deck-native.md: -------------------------------------------------------------------------------- 1 | # Native JACK on SteamOS 2 | 3 | (Based on [BWagener](https://github.com/BWagener)'s original version) 4 | 5 | Last tested on a Steam Deck on 2025-02-22. 6 | 7 | ## Table of contents 8 | 9 | 1. [Install necessary stuff](#install-necessary-stuff) 10 | 1. [Create a clean prefix](#create-a-clean-prefix) 11 | 1. [wineasio](#wineasio) 12 | 1. [Installing RS_ASIO](#installing-rs_asio) 13 | 1. [Set up JACK](#set-up-jack) 14 | 1. [Starting the game](#starting-the-game) 15 | 1. [Troubleshooting](/guides/troubleshooting.md) 16 | 17 | # Install necessary stuff 18 | 19 | (I recommend `wine-staging` if your distro has it, but usual `wine` works as well.) 20 | 21 | ``` 22 | # disable readonly mode 23 | sudo steamos-readonly disable 24 | 25 | sudo pacman-key --init 26 | sudo pacman-key --populate archlinux 27 | sudo pacman-key --populate holo 28 | 29 | # I also recommend to install: pipewire-jack-client 30 | sudo pacman -S realtime-privileges wine-staging base-devel glibc linux-headers linux-api-headers libtool binutils lib32-glibc lib32-jack2 jack2 qjackctl 31 | # the groups should already exist, but just in case 32 | sudo groupadd audio 33 | sudo groupadd realtime 34 | sudo usermod -aG audio $USER 35 | sudo usermod -aG realtime $USER 36 | ``` 37 | 38 | Please reboot. 39 | 40 |
How to check if this worked correctly 41 | 42 | > For the packages, do `pacman -Q ` (You can do multiple packages at once). Should output the names and versions without errors. 43 | > 44 | > For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 45 |
46 | 47 | # Create a clean prefix 48 | 49 | Set the Proton version you want to use. There's two ways to do this. In Steam 50 | 51 | * go to `Settings` ➞ `Compatibility` ➞ `Enable Steam play for all other titles`, then restart Steam. 52 | * open your library, right click Rocksmith and go to`Properties` ➞ `Compatibility` and force one. 53 | 54 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 55 | 56 | The rest will be set up later. 57 | 58 | # wineasio 59 | 60 | ## Install 61 | 62 | Installing `base-devel` is very useful for using the AUR and compiling in general. We installed these and additional needed packages in the first step. 63 | 64 |
Know already what's going on? Here are all commands in one piece without an explanation 65 | 66 | > **If the commands in this collapsible section don't work for you, try the "longer" variant first before asking for help.** 67 | > 68 | > YOU NEED TO HAVE THE $PROTON AND $STEAMLIBRARY VARIABLE SET!! (or replaced with the correct path first) 69 | > 70 | > cd into the unpacked directory, then run this. 71 | > 72 | > ``` 73 | > rm -rf build32 74 | > rm -rf build64 75 | > make 32 76 | > make 64 77 | > sudo cp build32/wineasio32.dll /usr/lib32/wine/i386-windows/wineasio32.dll 78 | > sudo cp build32/wineasio32.dll.so /usr/lib32/wine/i386-unix/wineasio32.dll.so 79 | > sudo cp build64/wineasio64.dll /usr/lib/wine/x86_64-windows/wineasio64.dll 80 | > sudo cp build64/wineasio64.dll.so /usr/lib/wine/x86_64-unix/wineasio64.dll.so 81 | > cp build32/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 82 | > cp build32/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 83 | > cp build64/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 84 | > cp build64/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 85 | > env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 86 | > ``` 87 | > 88 | > And you're done, continue with [Installing RS_ASIO](#installing-rs_asio). 89 | > 90 |
91 | 92 | [Download](https://github.com/wineasio/wineasio/releases) the newest .tar.gz and unpack it. Open a terminal inside the newly created folder. 93 | 94 | 95 | 96 | ``` 97 | # build 98 | rm -rf build32 99 | rm -rf build64 100 | make 32 101 | make 64 102 | 103 | # Install on normal wine 104 | sudo cp build32/wineasio32.dll /usr/lib32/wine/i386-windows/wineasio32.dll 105 | sudo cp build32/wineasio32.dll.so /usr/lib32/wine/i386-unix/wineasio32.dll.so 106 | sudo cp build64/wineasio64.dll /usr/lib/wine/x86_64-windows/wineasio64.dll 107 | sudo cp build64/wineasio64.dll.so /usr/lib/wine/x86_64-unix/wineasio64.dll.so 108 | ``` 109 | 110 | 111 | 112 | `wineasio` is now installed on your system. 113 | 114 |
How to check if it's installed correctly 115 | 116 | > ``` 117 | > find /usr/lib32/ -name "wineasio*" 118 | > find /usr/lib/ -name "wineasio*" 119 | > ``` 120 | > 121 | > This should output 4 paths (ignore the errors). 122 | > 123 |
124 | 125 | ## Make use of 126 | 127 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 128 | 129 | **STOP!** If you haven't set the environment variables yet, please follow [this part](/README.md#common-paths) of the prerequisites, then continue. 130 | 131 | ``` 132 | cp /usr/lib32/wine/i386-unix/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 133 | cp /usr/lib32/wine/i386-windows/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio32.dll" 134 | cp /usr/lib/wine/x86_64-unix/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio64.dll.so" 135 | cp /usr/lib/wine/x86_64-windows/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio64.dll" 136 | ``` 137 | 138 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 139 | 140 | To register wineasio (so that it can be used in the prefix), run the `wineasio-register` script that comes in the wineasio zip and set the `WINEPREFIX` to Rocksmiths. 141 | 142 | ``` 143 | env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 144 | ``` 145 | 146 | Errors outputted by this command are expected. The important one is the message at the end saying "regsvr32: Successfully registered DLL ..." or "regsvr32: Failed to register ...". 147 | 148 |
How to check if this worked correctly 149 | 150 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 151 | > 152 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 153 | > 154 | > ``` 155 | > WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine /path/to/VBASIOTest32.exe 156 | > ``` 157 | > !! The command above currently might not work. You can try instead: `LD_PRELOAD=/usr/lib32/libjack.so wine /path/to/VBASIOTest32.exe` !! 158 | > 159 |
160 | 161 | ## Installing RS_ASIO 162 | 163 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 164 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. You could also fill in `WineASIO` instead. 165 | 166 | And you're done with RS_ASIO. But in case you want to configure the inputs further (relevant for multiplayer), see [this](/guides/setup-rs-asio.md). 167 | 168 | ## Set up JACK 169 | 170 | Open QjackCtl and go to "Setup". Select 171 | 172 | 1. Driver: alsa 173 | 1. Tick "Realtime" 174 | 1. Sample Rate: 48000 175 | 1. Frames/Period: 256 (my recommendation) 176 | 1. Periods/Buffer: 4 (my recommendation) 177 | 1. Select audio device as described below. 178 | 179 | If you use the same device for input and output, you can set it in the "Parameters" 🡲 "Interface". 180 | 181 | If you use one device for input and one for output (say, RealToneCable and internal soundcard for example), select them in the "Advanced" Tab, as "Output Device" and "Input Device". The number of channels below are usually selected automatically 182 | 183 | Quick note on Frames and Buffer size: More frames equals better quality audio. More Buffer equals more stability. Higher numbers equal higher latency. 256/4 is decent audio with decent delay and works for most people. 184 | 185 | Press apply, close setup and try to start JACK. 186 | 187 | # Starting the game 188 | 189 | ![](/img/3-start-button.webp) 190 | 191 | 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. 192 | 193 | Steam and JACK need to be running. 194 | 195 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). This is an issue with Steam and pipewire-jack. There are two ways to go about this. You can apply both at the same time, they don't break each other. 196 | 197 | [It has been reported](https://github.com/theNizo/linux_rocksmith/issues/63) that changing the volume crashes Rocksmith, due to a sound being played in KDE plasma. You can disable this by going to "System Settings" ➞ "Audio" ➞ "Configure Volume Controls" and untick "Play audio feedback for changes to". 198 | 199 |
1. LD_PRELOAD 200 | 201 | * Advantages: Run from Steam directly 202 | * Disadvantages: higher possibility of crashes, steps you might need to do every game-boot. 203 | 204 | Add these launch options to Rocksmith: 205 | ``` 206 | LD_PRELOAD=/usr/lib32/libjack.so %command% 207 | ``` 208 | 209 | You can launch the game from Steam now. For the first few boot-ups, you have to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. If it doesn't crash, continue with instructions. 210 | 211 | If there is NO message saying "No output device found, RS_ASIO is working fine. If you can hear sound, everything works fine. 212 | 213 | If you cannot hear sound, open QjackCtl and go to "Graph". We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay. I recommend connecting everything before entering a profile. 214 | 215 | --- 216 | 217 |
218 | 219 |
2. Start script, shortcut in Steam 220 | 221 | * Advantage: Reliable one time setup 222 | * Disadvantages: Another Steam game entry, or having to launch from terminal entirely 223 | 224 | ### Get the start script 225 | 226 | Please select the Proton Version you use (Rocksmith has been working fine since at least Proton 4 btw): 227 | 228 | * [Proton 9 or higher](/guides/start-script/proton-9.md) (newer versions) 229 | * [Proton 8 or lower](/guides/start-script/proton-8.md) (slightly easier) 230 | 231 | We can start the game via this script now: `path/to/rocksmith-launcher.sh` 232 | 233 | 234 | 235 | If you want the Steam overlay to work, you need to launch the script via Steam, see the next step. 236 | 237 | ### Making it nice via Steam entry (optional, but recommended) 238 | 239 | With Proton's runtime, we can't start Rocksmith directly from the Steam Library just like that (excluding LD_PRELOAD). But we can use the Steam Library to start the script that starts the game in a way that Steam recognizes. 240 | 241 |
Fitting meme format 242 | 243 | ![](https://i.kym-cdn.com/photos/images/original/002/546/187/fb1.jpg) 244 | 245 |
246 | 247 | Go into your Steam Library and select "Add a game" ➞ "Add a Non-Steam Game" on the bottom left. 248 | 249 | Make sure you can see all files. Select the script we generated just now and add it. This will create a shortcut to the script, which I will refer to as "shortcut" from here on. For Proton versions 8 or lower, right click on the shortcut and select "Properties". Add these launch Options: `PIPEWIRE_LATENCY="256/48000" %command%` 250 | 251 | You can now start the game from Steam. Use the shortcut, it will launch the actual game. 252 | 253 |
If launching the script from Steam doesn't work 254 | 255 | You can try and add it to Lutris, then add a Lutris shortcut by right-clicking and selecting "Create Steam shortcut". 256 | 257 | This works because of how Lutris behaves when games are launched from Steam. All the Steam shortcut does is to notify Lutris to start a game. This is finished when Lutris received the message (= Steam sees it as "stopped"). Lutris then launches the game. 258 | 259 | Important Settings: 260 | 261 | * Runner: Linux 262 | * Working Directory: The folder where your script is. 263 | * Disable Lutris Runtime: true 264 | 265 |
266 | 267 | ### Beautification (even more optional, but recommended) 268 | 269 | Leaving the shortcut just like that is not pretty, so we're going to change that. 270 | 271 | You can give the games in your Steam Library a custom look. A good Website for resources is the [SteamGridDB](https://www.steamgriddb.com/). 272 | 273 | You can take artwork from [Rocksmith](https://www.steamgriddb.com/game/1841), [Rocksmith 2014](https://www.steamgriddb.com/game/2295), [Rocksmith+](https://www.steamgriddb.com/game/5359161) or anything else you want. I would recommend something that makes the shortcut look different than the game. 274 | 275 | **Name and icon:** Go into the shortcut's Properties. Right under the text "Shortcut" you can change the game's icon and name (both show up in the list on the left in desktop mode). I recommend something like "Rocksmith 2014 - Launcher". 276 | 277 | **"Hero (banner/background)":** Located above the "Play" button in Steam. Right-click on it and choose "set custom background". You can theoretically set a logo too by right-clicking on the text, but I personally chose not to do that to clearly see which item is which. 278 | 279 | **Grid (cover art):** For this it gets a bit harder. Go to `$HOME/.steam/steam/userdata//config/grid`. Since we added a hero, there should be a file that resembles it, so find it with an image viewer. It's called `_hero.` we need the ID. 280 | copy the cover art into this folder and name it `p.`. 281 | 282 | This is how the files look on my system: 283 | 284 | ![](/img/grid-file.webp) 285 | 286 | Launch Big Picture Mode now and find the entry in your Library. It should now have artwork. 287 | 288 | --- 289 | 290 |
291 | 292 | # Troubleshooting 293 | 294 | [Go to Troubleshooting](/guides/troubleshooting.md) 295 | -------------------------------------------------------------------------------- /guides/setup/fed-native.md: -------------------------------------------------------------------------------- 1 | # Native JACK on Fedora Workstation 2 | 3 | And Nobara, probably 4 | 5 | Last tested on Fedora Workstation 41. 6 | 7 | ## Table of contents 8 | 9 | 1. [Install necessary stuff](#install-necessary-stuff) 10 | 1. [Create a clean prefix](#create-a-clean-prefix) 11 | 1. [wineasio](#wineasio) 12 | 1. [Installing RS_ASIO](#installing-rs_asio) 13 | 1. [Set up JACK](#set-up-jack) 14 | 1. [Starting the game](#starting-the-game) 15 | 1. [Troubleshooting](/guides/troubleshooting.md) 16 | 17 | # Install necessary stuff 18 | 19 | (I recommend `wine-staging` if your distro has it, but usual `wine` works as well.) 20 | 21 | **This guide will use the Steam package from "RPM Fusion nonfree". This is to avoid sandboxing being complicated for now.** 22 | 23 | An alternative way to do this via Flatpak is described [here](https://github.com/theNizo/linux_rocksmith/issues/31) Please note that the maintainer (theNizo) has no experience with Flatpak. 24 | 25 | ``` 26 | sudo dnf install -y gcc make glibc-devel.i686 wine wine-devel.i686 wine-devel.x86_64 jack-audio-connection-kit-devel.* realtime-setup pavucontrol qpwgraph qjackctl 27 | # the groups should already exist, but just in case 28 | sudo groupadd audio 29 | sudo groupadd realtime 30 | sudo usermod -aG audio $USER 31 | sudo usermod -aG realtime $USER 32 | ``` 33 | 34 | Log out and back in. Or reboot, if that doesn't work. 35 | 36 |
How to check if this worked correctly 37 | 38 | > For the packages, do `dnf list installed ` (You can do multiple packages at once). Should output the names and versions without errors. 39 | > 40 | > For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 41 |
42 | 43 | # Create a clean prefix 44 | 45 | Set the Proton version you want to use. There's two ways to do this. In Steam 46 | 47 | * go to `Settings` ➞ `Compatibility` ➞ `Enable Steam play for all other titles`, then restart Steam. 48 | * open your library, right click Rocksmith and go to`Properties` ➞ `Compatibility` and force one. 49 | 50 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 51 | 52 | The rest will be set up later. 53 | 54 | # wineasio 55 | 56 | ## Install 57 | 58 | 59 | 60 |
Know already what's going on? Here are all commands in one piece without an explanation 61 | 62 | > **If the commands in this collapsible section don't work for you, try the "longer" variant first before asking for help.** 63 | > 64 | > YOU NEED TO HAVE THE $PROTON AND $STEAMLIBRARY VARIABLE SET!! (or replaced with the correct path first) 65 | > 66 | > cd into the unpacked directory, then run this. 67 | > 68 | > ``` 69 | > rm -rf build32 70 | > rm -rf build64 71 | > make 32 72 | > make 64 73 | > sudo cp build32/wineasio32.dll /usr/lib/wine/i386-windows/wineasio32.dll 74 | > sudo cp build32/wineasio32.dll.so /usr/lib/wine/i386-unix/wineasio32.dll.so 75 | > sudo cp build64/wineasio64.dll /usr/lib64/wine/x86_64-windows/wineasio64.dll 76 | > sudo cp build64/wineasio64.dll.so /usr/lib64/wine/x86_64-unix/wineasio64.dll.so 77 | > cp build32/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 78 | > cp build32/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 79 | > cp build64/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 80 | > cp build64/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 81 | > env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 82 | > ``` 83 | > 84 | > And you're done, continue with [Installing RS_ASIO](#installing-rs_asio). 85 | > 86 |
87 | 88 | [Download](https://github.com/wineasio/wineasio/releases) the newest .tar.gz and unpack it. Open a terminal inside the newly created folder. 89 | 90 | 91 | 92 | ``` 93 | # build 94 | rm -rf build32 95 | rm -rf build64 96 | make 32 97 | make 64 98 | 99 | # Install on normal wine 100 | sudo cp build32/wineasio32.dll /usr/lib/wine/i386-windows/wineasio32.dll 101 | sudo cp build32/wineasio32.dll.so /usr/lib/wine/i386-unix/wineasio32.dll.so 102 | sudo cp build64/wineasio64.dll /usr/lib64/wine/x86_64-windows/wineasio64.dll 103 | sudo cp build64/wineasio64.dll.so /usr/lib64/wine/x86_64-unix/wineasio64.dll.so 104 | ``` 105 | 106 | 107 | 108 | `wineasio` is now installed on your system. 109 | 110 |
How to check if it's installed correctly 111 | 112 | > ``` 113 | > find /usr/lib/ -name "wineasio*" 114 | > find /usr/lib64/ -name "wineasio*" 115 | > ``` 116 | > 117 | > This should output 4 paths (ignore the errors). 118 | > 119 |
120 | 121 | ## Make use of 122 | 123 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 124 | 125 | **STOP!** If you haven't set the environment variables yet, please follow [this part](/README.md#common-paths) of the prerequisites, then continue. 126 | 127 | ``` 128 | cp /usr/lib/wine/i386-unix/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 129 | cp /usr/lib/wine/i386-windows/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio32.dll" 130 | cp /usr/lib64/wine/x86_64-unix/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio64.dll.so" 131 | cp /usr/lib64/wine/x86_64-windows/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio64.dll" 132 | ``` 133 | 134 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 135 | 136 | To register wineasio (so that it can be used in the prefix), run the `wineasio-register` script that comes in the wineasio zip and set the `WINEPREFIX` to Rocksmiths. 137 | 138 | ``` 139 | env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register 140 | ``` 141 | 142 | Errors outputted by this command are expected. The important one is the message at the end saying "regsvr32: Successfully registered DLL ..." or "regsvr32: Failed to register ...". 143 | 144 |
How to check if this worked correctly 145 | 146 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 147 | > 148 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 149 | > 150 | > ``` 151 | > WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine /path/to/VBASIOTest32.exe 152 | > ``` 153 | > !! The command above currently might not work. You can try instead: `LD_PRELOAD=/usr/lib/libjack.so wine /path/to/VBASIOTest32.exe` !! 154 | > 155 |
156 | 157 | ## Installing RS_ASIO 158 | 159 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 160 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. You could also fill in `WineASIO` instead. 161 | 162 | And you're done with RS_ASIO. But in case you want to configure the inputs further (relevant for multiplayer), see [this](/guides/setup-rs-asio.md). 163 | 164 | ## Set up JACK 165 | 166 | Open QjackCtl and go to "Setup". Select 167 | 168 | 1. Driver: alsa 169 | 1. Tick "Realtime" 170 | 1. Sample Rate: 48000 171 | 1. Frames/Period: 256 (my recommendation) 172 | 1. Periods/Buffer: 4 (my recommendation) 173 | 1. Select audio device as described below. 174 | 175 | If you use the same device for input and output, you can set it in the "Parameters" 🡲 "Interface". 176 | 177 | If you use one device for input and one for output (say, RealToneCable and internal soundcard for example), select them in the "Advanced" Tab, as "Output Device" and "Input Device". The number of channels below are usually selected automatically 178 | 179 | Quick note on Frames and Buffer size: More frames equals better quality audio. More Buffer equals more stability. Higher numbers equal higher latency. 256/4 is decent audio with decent delay and works for most people. 180 | 181 | Press apply, close setup and try to start JACK. 182 | 183 | # Starting the game 184 | 185 | ![](/img/3-start-button.webp) 186 | 187 | 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. 188 | 189 | Steam and JACK need to be running. 190 | 191 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). This is an issue with Steam and pipewire-jack. There are two ways to go about this. You can apply both at the same time, they don't break each other. 192 | 193 | 194 | 195 |
1. LD_PRELOAD 196 | 197 | * Advantages: Run from Steam directly 198 | * Disadvantages: higher possibility of crashes, steps you might need to do every game-boot. 199 | 200 | Add these launch options to Rocksmith: 201 | ``` 202 | LD_PRELOAD=/usr/lib/libjack.so %command% 203 | ``` 204 | 205 | You can launch the game from Steam now. For the first few boot-ups, you have to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. If it doesn't crash, continue with instructions. 206 | 207 | If there is NO message saying "No output device found, RS_ASIO is working fine. If you can hear sound, everything works fine. 208 | 209 | If you cannot hear sound, open QjackCtl and go to "Graph". We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay. I recommend connecting everything before entering a profile. 210 | 211 | --- 212 | 213 |
214 | 215 |
2. Start script, shortcut in Steam 216 | 217 | * Advantage: Reliable one time setup 218 | * Disadvantages: Another Steam game entry, or having to launch from terminal entirely 219 | 220 | ### Get the start script 221 | 222 | Please select the Proton Version you use (Rocksmith has been working fine since at least Proton 4 btw): 223 | 224 | * [Proton 9 or higher](/guides/start-script/proton-9.md) (newer versions) 225 | * [Proton 8 or lower](/guides/start-script/proton-8.md) (slightly easier) 226 | 227 | We can start the game via this script now: `path/to/rocksmith-launcher.sh` 228 | 229 | 230 | 231 | If you want the Steam overlay to work, you need to launch the script via Steam, see the next step. 232 | 233 | ### Making it nice via Steam entry (optional, but recommended) 234 | 235 | With Proton's runtime, we can't start Rocksmith directly from the Steam Library just like that (excluding LD_PRELOAD). But we can use the Steam Library to start the script that starts the game in a way that Steam recognizes. 236 | 237 |
Fitting meme format 238 | 239 | ![](https://i.kym-cdn.com/photos/images/original/002/546/187/fb1.jpg) 240 | 241 |
242 | 243 | Go into your Steam Library and select "Add a game" ➞ "Add a Non-Steam Game" on the bottom left. 244 | 245 | Make sure you can see all files. Select the script we generated just now and add it. This will create a shortcut to the script, which I will refer to as "shortcut" from here on. For Proton versions 8 or lower, right click on the shortcut and select "Properties". Add these launch Options: `PIPEWIRE_LATENCY="256/48000" %command%` 246 | 247 | You can now start the game from Steam. Use the shortcut, it will launch the actual game. 248 | 249 |
If launching the script from Steam doesn't work 250 | 251 | You can try and add it to Lutris, then add a Lutris shortcut by right-clicking and selecting "Create Steam shortcut". 252 | 253 | This works because of how Lutris behaves when games are launched from Steam. All the Steam shortcut does is to notify Lutris to start a game. This is finished when Lutris received the message (= Steam sees it as "stopped"). Lutris then launches the game. 254 | 255 | Important Settings: 256 | 257 | * Runner: Linux 258 | * Working Directory: The folder where your script is. 259 | * Disable Lutris Runtime: true 260 | 261 |
262 | 263 | ### Beautification (even more optional, but recommended) 264 | 265 | Leaving the shortcut just like that is not pretty, so we're going to change that. 266 | 267 | You can give the games in your Steam Library a custom look. A good Website for resources is the [SteamGridDB](https://www.steamgriddb.com/). 268 | 269 | You can take artwork from [Rocksmith](https://www.steamgriddb.com/game/1841), [Rocksmith 2014](https://www.steamgriddb.com/game/2295), [Rocksmith+](https://www.steamgriddb.com/game/5359161) or anything else you want. I would recommend something that makes the shortcut look different than the game. 270 | 271 | **Name and icon:** Go into the shortcut's Properties. Right under the text "Shortcut" you can change the game's icon and name (both show up in the list on the left in desktop mode). I recommend something like "Rocksmith 2014 - Launcher". 272 | 273 | **"Hero (banner/background)":** Located above the "Play" button in Steam. Right-click on it and choose "set custom background". You can theoretically set a logo too by right-clicking on the text, but I personally chose not to do that to clearly see which item is which. 274 | 275 | **Grid (cover art):** For this it gets a bit harder. Go to `$HOME/.steam/steam/userdata//config/grid`. Since we added a hero, there should be a file that resembles it, so find it with an image viewer. It's called `_hero.` we need the ID. 276 | copy the cover art into this folder and name it `p.`. 277 | 278 | This is how the files look on my system: 279 | 280 | ![](/img/grid-file.webp) 281 | 282 | Launch Big Picture Mode now and find the entry in your Library. It should now have artwork. 283 | 284 | --- 285 | 286 |
287 | 288 | # Troubleshooting 289 | 290 | [Go to Troubleshooting](/guides/troubleshooting.md) 291 | -------------------------------------------------------------------------------- /guides/setup/nixos/1.md: -------------------------------------------------------------------------------- 1 | # JACK to ASIO with pipewire on NixOS 2 | 3 | Thanks to [TimP4w](https://github.com/TimP4w) for writing this. 4 | 5 | This guide is unmaintained, because it's significantly different than the other ones and Nizo doesn't understand NixOs-specific stuff. If you want to help, go ahaed and create pull-requests, or issues with instructions on what to change. 6 | 7 | ## Table of contents 8 | 9 | 1. [NixOS Configuration](#nixos-configuration) 🡰 You are here 10 | 1. [Choose your method](#choose-your-method) 11 | 1. [Method 1 - Manual](/guides/setup/nixos/2-manual.md) 12 | 1. [Create a clean prefix](/guides/setup/nixos/2-manual.md#create-a-clean-prefix) 13 | 1. [wineasio](/guides/setup/nixos/2-manual.md#wineasio) 14 | 1. [Installing RS_ASIO](/guides/setup/nixos/2-manual.md#installing-rs_asio) 15 | 1. [Reboot](/guides/setup/nixos/2-manual.md#reboot-your-pc) 16 | 1. [Method 2 - script](/guides/setup/nixos/2-script.md) 17 | 1. [Set up JACK](/guides/setup/nixos/3.md#set-up-jack) 18 | 1. [Starting the game](/guides/setup/nixos/3.md#starting-the-game) 19 | 1. [Known Issues](/guides/setup/nixos/3.md#known-issues) 20 | 1. [Troubleshooting](/guides/setup/nixos/3.md#a-bit-of-troubleshooting) 21 | 22 | 23 | # Tested and working with 24 | ``` 25 | NixOS 24.05.20240524.d12251e (Uakari) [64-bit] 26 | Wineasio: wineasio-1.2.0 27 | Pipewire Jack: pipewire-1.0.6-jack 28 | RS_ASIO: 0.7.1 29 | Proton: Proton - Experimental, Proton 9.0 (Beta) and Proton 8.0 30 | ``` 31 | 32 | # NixOS Configuration 33 | 34 | ## Assumptions 35 | - You have steam (`programs.steam.enable = true;`) installed 36 | - This is very important, because we need steam that comes with its own `FHS` environment AND `steam-run` to be able to execute commands in this environment. 37 | - You use the pipewire service from nixpkgs (`services.pipewire.enable = true;`) 38 | 39 | After applying the configuration, reboot your PC. 40 | 41 | 42 | ## Minimal Configuration 43 | ```nix 44 | ### Audio 45 | sound.enable = true; 46 | 47 | services.pipewire = { 48 | enable = true; 49 | jack.enable = true; 50 | }; 51 | 52 | 53 | ### Audio Extra 54 | security.rtkit.enable = true; # Enables rtkit (https://directory.fsf.org/wiki/RealtimeKit) 55 | 56 | # 57 | # domain = "@audio": This specifies that the limits apply to users in the @audio group. 58 | # item = "memlock": Controls the amount of memory that can be locked into RAM. 59 | # value (`unlimited`) allows members of the @audio group to lock as much memory as needed. This is crucial for audio processing to avoid swapping and ensure low latency. 60 | # 61 | # item = "rtprio": Controls the real-time priority that can be assigned to processes. 62 | # value (`99`) is the highest real-time priority level. This setting allows audio applications to run with real-time scheduling, reducing latency and ensuring smoother performance. 63 | # 64 | security.pam.loginLimits = [ 65 | { domain = "@audio"; item = "memlock"; type = "-"; value = "unlimited"; } 66 | { domain = "@audio"; item = "rtprio"; type = "-"; value = "99"; } 67 | ]; 68 | 69 | # Add user to `audio` and `rtkit` groups. 70 | users.users..extraGroups = [ "audio" "rtkit" ]; 71 | 72 | environment.systemPackages = with pkgs; [ 73 | qjackctl 74 | rtaudio 75 | ]; 76 | 77 | ### Steam (https://nixos.wiki/wiki/Steam) 78 | programs.steam = { 79 | enable = true; 80 | package = pkgs.steam.override { 81 | extraLibraries = pkgs: [ pkgs.pkgsi686Linux.pipewire.jack ]; # Adds pipewire jack (32-bit) 82 | extraPkgs = pkgs: [ pkgs.wineasio ]; # Adds wineasio 83 | }; 84 | }; 85 | 86 | ``` 87 | 88 | ### Explanation 89 | 90 | We of course want mainly two things: audio and Steam. 91 | These are pretty much self-explanatory, but there are some more settings that we need: 92 | 93 | #### Audio 94 | 95 | We use pipewire (`services.pipewire`) and pipewire-jack. The goal is to connect jack to wine via wineasio. 96 | 97 | I noticed that for audio we need some extra things: 98 | - rtkit: without this the game just crashes 99 | - PAM loginLimits: we also need to set some limits here for the audio group to access real-time scheduling with a higher priority. 100 | - user groups: we add our user to the `audio` and `rtkit` groups to enable these limits for us 101 | - `qjackctl` to control our audio pipeline (there are also other alternatives here, such as `helvum` or `qpwgraph`) 102 | 103 | 104 | #### Steam 105 | Here we only want to add two things: 106 | - wineasio, to connect JACK with wine 107 | - The 32-bit libraries of pipewire JACK since Rocksmith is a 32-bit game. 108 | 109 | NixOS is not using the [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) convention however the official steam program is packaged with its own FHS environment. So what we are doing is to add an extra library (`pkgsi686Linux.pipewire.jack`) to the default environment that comes from nixpkgs. For `wineasio` we only need some `.dll` and `.so` files that we usually need to compile. However if we install it via nixpkgs, this is done automatically and we can later copy the generated files (see below). 110 | 111 | # Choose your method 112 | 113 | You must apply the configuration and rebuild your system _BEFORE_ continuing. 114 | 115 | ## Method 1 - Manual 116 | 117 | Everything is done by hand. 118 | 119 | [Continue here](/guides/setup/nixos/2-manual.md) 120 | 121 | ## Method 2 - Automated Script 122 | 123 | A script that does almost everything automatically is provided in this repo. 124 | 125 | [Continue here](/guides/setup/nixos/2-manual.md) 126 | -------------------------------------------------------------------------------- /guides/setup/nixos/2-manual.md: -------------------------------------------------------------------------------- 1 | # JACK to ASIO with pipewire on NixOS 2 | 3 | Manual 4 | 5 | ## Table of contents 6 | 7 | 1. [NixOS Configuration](/guides/setup/nixos/1.md#nixos-configuration) 8 | 1. [Choose your method](/guides/setup/nixos/1.md#choose-your-method) 9 | 1. [Method 1 - Manual](#table-of-contents) 🡰 You are here 10 | 1. [Create a clean prefix](#create-a-clean-prefix) 11 | 1. [wineasio](#wineasio) 12 | 1. [Installing RS_ASIO](#installing-rs_asio) 13 | 1. [Reboot](#reboot-your-pc) 14 | 1. [Method 2 - script](/guides/setup/nixos/2-script.md) 15 | 1. [Set up JACK](/guides/setup/nixos/3.md#set-up-jack) 16 | 1. [Starting the game](/guides/setup/nixos/3.md#starting-the-game) 17 | 1. [Known Issues](/guides/setup/nixos/3.md#known-issues) 18 | 1. [Troubleshooting](/guides/setup/nixos/3.md#a-bit-of-troubleshooting) 19 | 20 | ## Method 1: Manual 21 | 22 | ## Create a clean prefix 23 | 24 | Set the Proton version you want to use. There's two ways to do this. In steam 25 | 26 | * go to `Settings` 🡲 `Compatibility` 🡲 `Enable Steam play for all other titles`, then restart Steam. 27 | * open your library, right click Rocksmith and go to`Properties` 🡲 `Compatibility` and force one. 28 | 29 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 30 | 31 | The rest will be set up later. 32 | 33 | ## BEFORE PROCEDING FURTHER ENTER THE STEAM FHS ENVIRONMENT WITH `steam-run bash` 34 | 35 | All commands below assume that you are in this environment, they won't work otherwise. 36 | 37 | Please set the environment variables from [here](https://github.com/theNizo/linux_rocksmith/blob/main/README.md#common-paths) now. 38 | 39 | ## wineasio 40 | 41 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 42 | 43 | ``` 44 | # !!! WATCH OUT FOR VARIABLES !!! 45 | cp "/lib/wine/i386-unix/wineasio32.dll.so" "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 46 | cp "/lib/wine/x86_64-unix/wineasio64.dll.so" "$PROTON/lib/wine/x86_64-unix/wineasio64.dll.so" 47 | ``` 48 | 49 | In theory, this should also work with Lutris runners. 50 | 51 |
How to check if this worked correctly 52 | 53 | > First check that `/lib/wine/i386-unix/wineasio32.dll.so` and `/lib/wine/x86_64-unix/wineasio64.dll.so` exist. The copy should give you an error if something went wrong. 54 |
55 | 56 | Now add the dlls to Rocksmith's prefix 57 | 58 | ```sh 59 | cp "/lib/wine/i386-windows/wineasio32.dll" "$WINEPREFIX/drive_c/windows/syswow64/wineasio32.dll" 60 | cp "/lib/wine/x86_64-windows/wineasio64.dll" "$WINEPREFIX/drive_c/windows/system32/wineasio64.dll" 61 | ``` 62 | 63 | Finally register the dlls 64 | It's important that we use the wine binary that come with proton. 65 | 66 | ```sh 67 | cd "$PROTONPATH/bin" 68 | ./wine regsvr32 /lib/wine/i386-windows/wineasio32.dll 69 | ./wine64 regsvr32 /lib/wine/x86_64-windows/wineasio64.dll 70 | ``` 71 | 72 |
How to check if this worked correctly 73 | 74 | > After ever `regsvr32` command you should get an alert from wine stating that the dll was registered correctly. 75 |
76 | 77 | ## Installing RS_ASIO 78 | 79 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 80 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. 81 | 82 | ## Reboot your PC 83 | Simply reboot your PC. 84 | 85 | [Continue here](/guides/setup/nixos/3.md) 86 | -------------------------------------------------------------------------------- /guides/setup/nixos/2-script.md: -------------------------------------------------------------------------------- 1 | # JACK to ASIO with pipewire on NixOS 2 | 3 | Script 4 | 5 | ## Table of contents 6 | 7 | 1. [NixOS Configuration](/guides/setup/nixos/1.md#nixos-configuration) 8 | 1. [Choose your method](/guides/setup/nixos/1.md#choose-your-method) 9 | 1. [Method 1 - Manual](/guides/setup/nixos/2-manual.md) 10 | 1. [Create a clean prefix](/guides/setup/nixos/2-manual.md#create-a-clean-prefix) 11 | 1. [wineasio](/guides/setup/nixos/2-manual.md#wineasio) 12 | 1. [Installing RS_ASIO](/guides/setup/nixos/2-manual.md#installing-rs_asio) 13 | 1. [Reboot](/guides/setup/nixos/2-manual.md#reboot-your-pc) 14 | 1. [Method 2 - script](#table-of-contents) 🡰 You are here 15 | 1. [Set up JACK](/guides/setup/nixos/3.md#set-up-jack) 16 | 1. [Starting the game](/guides/setup/nixos/3.md#starting-the-game) 17 | 1. [Known Issues](/guides/setup/nixos/3.md#known-issues) 18 | 1. [Troubleshooting](/guides/setup/nixos/3.md#a-bit-of-troubleshooting) 19 | 20 | ## Method 2: Script 21 | 22 | Simply [download the script](/scripts/patch-nixos.sh) and execute it. 23 | 24 | ```sh 25 | chmod +x patch-nixos.sh 26 | steam-run ./patch-nixos.sh 27 | ``` 28 | First it will ask you if you want to override its default values, you can press enter to accept the default. 29 | 30 | - Proton Version: the proton version you have installed. By default it assumes `Proton - Experimental`. You can select another version by writing the corresponding number and pressing enter. 31 | 32 | - RS_ASIO: The RS_ASIO you want to install. Currently it downloads the version `0.7.1`. 33 | 34 | Reboot your PC after the script finishes. 35 | 36 | [Continue here](/guides/setup/nixos/3.md) 37 | -------------------------------------------------------------------------------- /guides/setup/nixos/3.md: -------------------------------------------------------------------------------- 1 | # JACK to ASIO with pipewire on NixOS 2 | 3 | Final Steps 4 | 5 | ## Table of contents 6 | 7 | 1. [NixOS Configuration](/guides/setup/nixos/1.md#nixos-configuration) 8 | 1. [Choose your method](/guides/setup/nixos/1.md#choose-your-method) 9 | 1. [Method 1 - Manual](/guides/setup/nixos/2-manual.md) 10 | 1. [Create a clean prefix](/guides/setup/nixos/2-manual.md#create-a-clean-prefix) 11 | 1. [wineasio](/guides/setup/nixos/2-manual.md#wineasio) 12 | 1. [Installing RS_ASIO](/guides/setup/nixos/2-manual.md#installing-rs_asio) 13 | 1. [Reboot](/guides/setup/nixos/2-manual.md#reboot-your-pc) 14 | 1. [Method 2 - script](/guides/setup/nixos/2-script.md) 15 | 1. [Set up JACK](#set-up-jack) 🡰 You are here 16 | 1. [Starting the game](#starting-the-game) 17 | 1. [Known Issues](#known-issues) 18 | 1. [Troubleshooting](#a-bit-of-troubleshooting) 19 | 20 | ## Final Steps 21 | 22 | ## Set up JACK 23 | 24 | What we basically need to do is to select only one output and just as much inputs as you need (1 input (eg. singleplayer) = 1 device; 2 inputs (eg. 2 Players) = 2 devices, etc.). I like to do this via `pavucontrol`, which works if `pipewire-pulse` is installed. 25 | 26 | Open pavucontrol ("PulseAudio Volume Control"), go to "Configuration" and make sure the amount of enabled input devices matches the amount of inputs you want for Rocksmith. 27 | 28 | All available devices will automatically be tied to Rocksmith, and the game doesn't like you messing around in the patchbay (= it's possible, but would crash often). 29 | 30 | ## Starting the game 31 | 32 | 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. 33 | 34 | Steam needs to be running. 35 | 36 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). So we use a workaround. 37 | 38 | Add these launch options to Rocksmith (`right click Rocksmith` 🡲 `Properties` 🡲 `Launch Options`): 39 | 40 | ``` 41 | LD_PRELOAD=/lib/libjack.so PIPEWIRE_LATENCY=256/48000 %command% 42 | ``` 43 | 44 | You can launch the game from Steam now. 45 | 46 | If it doesn't work right away, try to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. Try this a few times. If it doesn't crash, continue with instructions. 47 | 48 | Rocksmith might not have audio, however, if you don't get a message saying that there's no output device, RS_ASIO and JACK are working fine. 49 | 50 | In that case, open qpwgraph or a different JACK patchbay software of your choice. We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay, so this is how you want to go about it: 51 | 52 | 1. Connect one device to Rocksmith 53 | 1. Window focus to Rocksmith 54 | 1. Go to step one, until you have connected everything 55 | 56 | # Known Issues 57 | - Proton updates may require a re-patching (however system updates should work fine). 58 | - We (mostly) can't change the inputs of Rocksmith when it's running, otherwise it will crash. Therefore disabling the devices we don't want to automatically connect is often required. 59 | 60 | # A bit of troubleshooting 61 | 62 | If some commands don't work, make sure you've set the variables. 63 | 64 | ## Rocksmith freezes after starting and crashes 65 | This means that the patch either wasn't properly applied OR was resetted, try to re-apply the patch. 66 | 67 | ## Game crashes 68 | 69 | Can happen sometimes when you use a different application, then focus Rocksmith again. Other than that: 70 | 71 | * First off, if the game crashes at the start, try two more times. Sometimes it was just random. 72 | * Keep Pavucontrol (or whatever you used) open while starting/playing - I can't really tell why, but it helps a lot 73 | * **Use onboard audio:** I use a seperate sound card (Shows up as "CM106") that creates issues. I don't have to unplug it, but just use the audio built into the mainboard. RealTone Cable works fine btw. 74 | * **Focus away:** If you use pipewire and the game crashes right after the window shows up, you could try taking the focus to another window as quick as possible. It helps sometimes, but isn't reliable 75 | * **Patch bay:** (Meaning: Changes with something like qpwgraph or Catia.) The game doesn't like these changes too much. You might get away with 1-2, but this is a bit luck-based. 76 | * **Disable Big Picture:** I think this was an issue for me at one point. I would do it just to be sure. 77 | * **Start from terminal:** This gives you more info on what's going on. Launch the script from the terminal or 78 | * **Try the old approach:** This is not meant to be used for playing anymore, but it's a reliable way to get the game running: `PIPEWIRE_LATENCY=256/48000 WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine $STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe` 79 | 80 | ## WineASIO 81 | 82 | This is a handy debugging tool (that I've also [used in the past](https://github.com/theNizo/linux_rocksmith/issues/22#issuecomment-1276457128)): https://forum.vb-audio.com/viewtopic.php?t=1204 83 | 84 | ## CDLC 85 | 86 | * Make sure your game is patched for it. Since it's now an .exe, add that to your Steam Library and run it with Proton. 87 | * In the past, we had to set the working directory to the root of the game's folder. This would either be done in the script, in the properties of the shortcut, or in the terminal via `cd`. 88 | -------------------------------------------------------------------------------- /guides/setup/nixos/nixos-pipewire.md: -------------------------------------------------------------------------------- 1 | (This is the original version, with very minor tweaks.) 2 | 3 | # JACK to ASIO with pipewire on NixOS 4 | 5 | Thanks to [TimP4w](https://github.com/TimP4w) for writing this. 6 | 7 | ## Table of contents 8 | 9 | 1. [NixOS Configuration](#configuration) 10 | 1. [Method 1 - Manual](#method-1---manual) 11 | 1. [Enable Steam Play for Windows Games](#1-enable-steam-play-for-windows-games) 12 | 1. [Download Rocksmith 2014](#2-download-rocksmith-2014) 13 | 1. [Install Wineasio](#3-install-wineasio) 14 | 1. [Install RS_ASIO](#4-install-rs_asio) 15 | 1. [Reboot PC](#5-reboot-your-pc) 16 | 17 | 1. [Method 2 - Script](#method-2---automated-script) 18 | 1. [Final Steps](#final-steps-for-both-manual-and-script) 19 | 1. [Known Issues](#known-issues) 20 | 21 | # Tested and working with 22 | ``` 23 | NixOS 24.05.20240524.d12251e (Uakari) [64-bit] 24 | Wineasio: wineasio-1.2.0 25 | Pipewire Jack: pipewire-1.0.6-jack 26 | RS_ASIO: 0.7.1 27 | Proton: Proton - Experimental, Proton 9.0 (Beta) and Proton 8.0 28 | ``` 29 | 30 | # NixOS Configuration 31 | 32 | ## Assumptions 33 | - You have steam (`programs.steam.enable = true;`) installed 34 | - This is very important, because we need steam that comes with its own `FHS` environment AND `steam-run` to be able to execute commands in this environment. 35 | - You use the pipewire service from nixpkgs (`services.pipewire.enable = true;`) 36 | 37 | After applying the configuration, reboot your PC. 38 | 39 | 40 | ## Minimal Configuration 41 | ```nix 42 | ### Audio 43 | sound.enable = true; 44 | 45 | services.pipewire = { 46 | enable = true; 47 | jack.enable = true; 48 | }; 49 | 50 | 51 | ### Audio Extra 52 | security.rtkit.enable = true; # Enables rtkit (https://directory.fsf.org/wiki/RealtimeKit) 53 | 54 | # 55 | # domain = "@audio": This specifies that the limits apply to users in the @audio group. 56 | # item = "memlock": Controls the amount of memory that can be locked into RAM. 57 | # value (`unlimited`) allows members of the @audio group to lock as much memory as needed. This is crucial for audio processing to avoid swapping and ensure low latency. 58 | # 59 | # item = "rtprio": Controls the real-time priority that can be assigned to processes. 60 | # value (`99`) is the highest real-time priority level. This setting allows audio applications to run with real-time scheduling, reducing latency and ensuring smoother performance. 61 | # 62 | security.pam.loginLimits = [ 63 | { domain = "@audio"; item = "memlock"; type = "-"; value = "unlimited"; } 64 | { domain = "@audio"; item = "rtprio"; type = "-"; value = "99"; } 65 | ]; 66 | 67 | # Add user to `audio` and `rtkit` groups. 68 | users.users..extraGroups = [ "audio" "rtkit" ]; 69 | 70 | environment.systemPackages = with pkgs; [ 71 | qjackctl 72 | rtaudio 73 | ]; 74 | 75 | ### Steam (https://nixos.wiki/wiki/Steam) 76 | programs.steam = { 77 | enable = true; 78 | package = pkgs.steam.override { 79 | extraLibraries = pkgs: [ pkgs.pkgsi686Linux.pipewire.jack ]; # Adds pipewire jack (32-bit) 80 | extraPkgs = pkgs: [ pkgs.wineasio ]; # Adds wineasio 81 | }; 82 | }; 83 | 84 | ``` 85 | 86 | ### Explanation 87 | We of course want mainly two things: audio and steam. 88 | These are pretty much self-explanatory, but there are some more settings that we need: 89 | 90 | #### Audio 91 | We use pipewire (`services.pipewire`) and pipewire-jack. The goal is to connect jack to wine via wineasio. 92 | 93 | I noticed that for audio we need some extra things: 94 | - rtkit: without this the game just crashes 95 | - PAM loginLimits: we also need to set some limits here for the audio group to access real-time scheduling with a higher priority. 96 | - user groups: we add our user to the `audio` and `rtkit` groups to enable these limits for us 97 | - `qjackctl` to control our audio pipeline (there are also other alternatives here, such as `helvum` or `qpwgraph`) 98 | 99 | 100 | #### Steam 101 | Here we only want to add two things: 102 | - Wineasio, to connect JACK with wine 103 | - The 32-bit libraries of pipewire JACK since Rocksmith is a 32-bit game. 104 | 105 | NixOS is not using the [FHS](https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard) convention however the official steam program is packaged with its own FHS environment. So what we are doing is to add an extra library (`pkgsi686Linux.pipewire.jack`) to the default environment that comes from nixpkgs. For `wineasio` we only need some `.dll` and `.so` files that we usually need to compile. However if we install it via nixpkgs, this is done automatically and we can later copy the generated files (see below). 106 | 107 | 108 | 109 | 110 | 111 | # Method 1 - Manual 112 | You must apply the configuration and rebuild your system _BEFORE_ continuing. 113 | 114 | 115 | ## 1. Enable Steam Play for Windows Games 116 | 117 | Open Steam and activate Proton (`Settings` 🡲 `Compatibility` 🡲 `Enable Steam play for all other titles`). 118 | 119 | Restart steam. 120 | 121 | 122 | ## 2. Download Rocksmith 2014 123 | Simply install it from steam and **launch it once**, until you need to choose your user. Then close it. 124 | 125 |
How to check if this worked correctly 126 | 127 | > You can check if everything worked correctly if the directory `/home/$(whoami)/.steam/steam/steamapps/compatdata/221680/pfx` exists and has some files inside. 128 |
129 | 130 | 131 | 132 | ## BEFORE PROCEDING FURTHER ENTER THE STEAM FHS ENVIRONMENT WITH `steam-run bash` 133 | All commands below assume that you are in this environment, they won't work otherwise. 134 | 135 | ## 3. Install Wineasio 136 | We now need to copy the wineasio library to where it's needed. 137 | 138 | First thing, let's set some environment variables to make the next commands shorter 139 | ```sh 140 | PROTONVER="" # (e.g. "Proton - Experimental", "Proton 8.0". Needs to be the same as its directory name. You can check it under ~/.steam/steam/steamapps/common) 141 | 142 | # Attention! Only execute one of the following 143 | PROTONPATH="/home/$(whoami)/.steam/steam/steamapps/common/$PROTONVER/files" # For proton 9.0 and Experimental 144 | PROTONPATH="/home/$(whoami)/.steam/steam/steamapps/common/$PROTONVER/dist" # For proton 8.0 145 | 146 | WINEPREFIX="/home/.steam/steam/steamapps/compatdata/221680/pfx" 147 | ``` 148 | 149 | Then let's copy the unix files into Proton. 150 | 151 | 152 | ```sh 153 | cp "/lib/wine/i386-unix/wineasio32.dll.so" "$PROTONPATH/lib/wine/i386-unix/wineasio32.dll.so" 154 | cp "/lib/wine/x86_64-unix/wineasio64.dll.so" "$PROTONPATH/lib/wine/x86_64-unix/wineasio64.dll.so" 155 | ``` 156 | 157 |
How to check if this worked correctly 158 | 159 | > First check that `/lib/wine/i386-unix/wineasio32.dll.so` and `/lib/wine/x86_64-unix/wineasio64.dll.so` exist. The copy should give you an error if something went wrong. 160 |
161 | 162 | 163 |
164 |
165 |
166 | 167 | Now add the dlls to Rocksmith's prefix 168 | 169 | ```sh 170 | cp "/lib/wine/i386-windows/wineasio32.dll" "$WINEPREFIX/drive_c/windows/syswow64/wineasio32.dll" 171 | cp "/lib/wine/x86_64-windows/wineasio64.dll" "$WINEPREFIX/drive_c/windows/system32/wineasio64.dll" 172 | ``` 173 | 174 | Finally register the dlls 175 | It's important that we use the wine binary that come with proton. 176 | 177 | ```sh 178 | cd "$PROTONPATH/bin" 179 | ./wine regsvr32 /lib/wine/i386-windows/wineasio32.dll 180 | ./wine64 regsvr32 /lib/wine/x86_64-windows/wineasio64.dll 181 | ``` 182 | 183 |
How to check if this worked correctly 184 | 185 | > After ever `regsvr32` command you should get an alert from wine stating that the dll was registered correctly. 186 |
187 | 188 | 189 |
VBAsioTest 190 | 191 | > You can further test if wineasio is really correctly installed, if this program runs and produces a sound that you can hear. 192 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 193 | > 194 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 195 | > ``` 196 | > WINEPREFIX="/home/.steam/steam/steamapps/compatdata/221680/pfx" $PROTONPATH/bin/wine /path/to/VBASIOTest32.exe 197 | > ``` 198 | > 199 |
200 | 201 | ## 4. Install RS_ASIO 202 | Download the latest release from its Github repository https://github.com/mdias/rs_asio/releases, unzip the folder and copy the content in the Rocksmith installation (should be in `~/.steam/steam/steamapps/common/Rocksmith2014/`). 203 | 204 | Now open the `RS_ASIO.ini` file that you just copied and set `Driver=wineasio-rsasio` for all your inputs and outputs. 205 | 206 | ## 5. Reboot your PC 207 | Simply reboot your PC. 208 | 209 | 210 | ## Method 2 - Automated Script 211 | You must apply the configuration and rebuild your system _BEFORE_ continuing. 212 | 213 | A script that does almost everything automatically is provided in this repo. 214 | Simply download `scripts/patch-nixos.sh` and execute it. 215 | 216 | ```sh 217 | chmod +x patch-nixos.sh 218 | steam-run ./patch-nixos.sh 219 | ``` 220 | First it will ask you if you want to override its default values, you can press enter to accept the default. 221 | 222 | - Proton Version: the proton version you have installed. By default it assumes `Proton - Experimental`. You can select another version by writing the corresponding number and pressing enter. 223 | 224 | - RS_ASIO: The RS_ASIO you want to install. Currently it downloads the version `0.7.1`. 225 | 226 | Reboot your PC after the script finishes. 227 | 228 | 229 | ## Final Steps (for both manual and script) 230 | ## Add Launch Options to Rocksmith 231 | 232 | Copy the following command and paste it as Launch Options (Steam > Rocksmith 2014 > Right Click > Properties... > General > Launch Options) 233 | ``` 234 | LD_PRELOAD=/lib/libjack.so PIPEWIRE_LATENCY=256/48000 %command% 235 | ``` 236 | 237 | ### Test and Enjoy 238 | 239 | Open `qjackctl` to see if Rocksmith is showing up. 240 | 241 | You may need to disable some devices if Rocksmith connects to the wrong ones. 242 | 243 | 244 | 245 | # Known Issues 246 | - Proton updates may require a re-patching (however system updates should work fine). 247 | - We (mostly) can't change the inputs of Rocksmith when it's running, otherwise it will crash. Therefore disabling the devices we don't want to automatically connect is often required. 248 | 249 | ## Rocksmith freezes after starting and crashes 250 | This means that the patch either wasn't properly applied OR was resetted, try to re-apply the patch. 251 | -------------------------------------------------------------------------------- /guides/start-script/proton-8.md: -------------------------------------------------------------------------------- 1 | # Get the start script: Proton 8 or lower 2 | 3 | In Steam, right click on Rocksmith and choose "Properties". Set the following launch options: 4 | 5 | ``` 6 | PROTON_LOG=1 PROTON_DUMP_DEBUG_COMMANDS=1 %command% 7 | ``` 8 | 9 | then start the game from Steam again. You will now have a script at `/tmp/proton_$USER/run` that represents the command Steam runs when starting the game. If we run this script, Rocksmith can start via Steam and have sound. (`PIPEWIRE_LATENCY="256/48000" /tmp/proton_$USER/run`) 10 | 11 | Let's copy the script to somewhere else and give it a better name. This is an example that I will use in the rest of the guide. You can change the path or the name of the script, if you want to. 12 | 13 | ``` 14 | cp /tmp/proton_$USER/run $STEAMLIBRARY/steamapps/common/rocksmith-launcher.sh 15 | ``` 16 | 17 | Please continue with the guide. 18 | -------------------------------------------------------------------------------- /guides/start-script/proton-9.md: -------------------------------------------------------------------------------- 1 | # Get the start script: Proton 9 or higher 2 | 3 | (Using the launch script from previous Proton versions and just adjusting paths works as well.) 4 | 5 | (folder names and script name can be changed, if you want to.) 6 | 7 | In Steam, right click on Rocksmith and choose "Properties". Set the following launch options: 8 | 9 | ``` 10 | PRESSURE_VESSEL_SHELL=instead %command% 11 | ``` 12 | 13 | then start the game. You will get a terminal. Type in these commands: 14 | 15 | ``` 16 | mkdir start-script 17 | cd start-script 18 | echo $@ > launch 19 | echo $(env) > vars 20 | # you can exit now 21 | ``` 22 | 23 | You can now remove the launch options. 24 | 25 | You have now exported everything you need to build a launch script. Enter a terminal, cd into the directory where you placed `launch` and `vars` in the last step. Run these commands: 26 | 27 | ``` 28 | # again, make sure you've set $STEAMLIBRARY. You will need it here one last time. 29 | sed -i 's/ /\n/g' vars 30 | rm rocksmith-launcher.sh 31 | echo '#!/bin/bash' >> rocksmith-launcher.sh 32 | echo '' >> rocksmith-launcher.sh 33 | echo cd "$STEAMLIBRARY/steamapps/common/Rocksmith2014/" >> rocksmith-launcher.sh 34 | echo 'PIPEWIRE_LATENCY="256/48000" \' >> rocksmith-launcher.sh 35 | grep -iP "steamappid|SteamOverlayGameId|SteamGameId|SteamEnv|SteamClientLaunch|STEAM_COMPAT_APP_ID|STEAM_COMPAT_DATA_PATH|STEAM_COMPAT_MEDIA_PATH|STEAM_COMPAT_SHADER_PATH|STEAM_COMPAT_INSTALL_PATH|STEAM_COMPAT_CLIENT_INSTALL_PATH" vars | tr '\n' ' \\n' >> rocksmith-launcher.sh 36 | sed -e 's/container-runtime /container-runtime "/g' -e 's/ waitforexitandrun /" waitforexitandrun "/g' -e 's/ -uplay_steam/" -uplay_steam/g' launch >> rocksmith-launcher.sh 37 | chmod +x rocksmith-launcher.sh 38 | ``` 39 | 40 |
In case you want to strip the environment variables down 41 | 42 | If you really want to, you can change the regex to your liking. 43 | 44 | Minimum: `SteamAppId|STEAM_COMPAT_CLIENT_INSTALL_PATH|STEAM_COMPAT_DATA_PATH` 45 | Recommened: `steamenv|steamappid|steam_compat_client_install_path|compat_data_path|SteamOverlayGameId` 46 | 47 | Theoretically, you could even remove SteamAppId, but then the savegame location changes and you can't use the Steam cloud for your saves. Here's what some flags do: 48 | 49 | | Name | Function | 50 | | --- | --- | 51 | | SteamAppId | Gives Steam information, which game is running | 52 | | SteamOverlayGameId | Sets the Steam overlay to the correct game. | 53 | | SteamGameId | Steam integration | 54 | | SteamEnv | Steam integration | 55 | | SteamClientLaunch | Steam integration | 56 | | STEAM_COMPAT_SHADER_PATH | precompiled shaders, I guess. | 57 | 58 | For the others, I've collected what seemed reasonable. 59 | 60 |
61 | 62 | You've got a launch script now. Please continue with the guide 63 | 64 | Note: The Steam overlay relies on files that are only placed in RAM when a game is started from Steam. You will therefore not see the overlay when running from a terminal. 65 | -------------------------------------------------------------------------------- /guides/theory.md: -------------------------------------------------------------------------------- 1 | This document is most likely incomplete, because my knowledge is too. Some stuff is probably wrong too. 2 | 3 | I will not list what I consider to be general linux knowledge here, just stuff that applies to this exact use case. 4 | 5 | ## How does this work? 6 | 7 | > Audio Device -> JACK -> ASIO (wineASIO) -> RS_ASIO -> Rocksmith2014 8 | 9 | Rocksmith usually uses WASAPI for audio input and output. 10 | 11 | For pro-audio, which is used for music production, there's an audio system called ASIO on Windows. 12 | 13 | Linux has 4 sound servers/systems: ALSA, pulseaudio, pipewire and JACK. JACK is for pro-audio. Pipewire is quite new and aims to be the one standard for all, which is why it has implementations for all of the other ones. 14 | 15 | JACK and ASIO are equivalents. Since there's Wine and some people want to do music production on Linux, there's wineasio, which translates between these. 16 | 17 | Someone developed RS_ASIO, which you could say is a mod for Rocksmith to work with ASIO devices. 18 | 19 | Plugging everything together, we get the chain above. 20 | 21 | ## What am I actually doing on Linux? 22 | 23 | You install JACK and set it up in a certain way. You install wineasio into the standard wine, as well as your runner (Steam Proton, or something else you use). You patch the wine prefix to accept WineASIO and install RS_ASIO to Rocksmith. 24 | 25 | Steam Proton has a wrapper, which contains libraries and files that are used instead of system files, to ensure that the games work the same across every platform. Somehow, this destroys functionality with WineASIO. In the past, we tried to start Rocksmith without the wrapper. This isn't possible anymore because of an update to the game. 26 | 27 | I don't know why exactly the script works, but not the "Play" button in Steam, but it does. 28 | 29 | ## Can you set up a prefix to be able to do both? 30 | 31 | YES! 32 | 33 | The only reason that Rocksmith takes ASIO is because of RS_ASIO. Once you remove that mod (eg. append ".bak" at the end of all the files), you're back to WASAPI and can use the quick and dirty method. 34 | 35 | (Come to think of it, you have to select input and output device in winecfg, but I don't think it should make a difference.) 36 | -------------------------------------------------------------------------------- /guides/tonelibgfx.md: -------------------------------------------------------------------------------- 1 | # What is this? 2 | 3 | This is not an advertisement, it's just the tool I know of. 4 | 5 | I want to explain how you can use other JACK tools in your setup and. 6 | 7 | # Let Tonelib-GFX process via JACK 8 | 9 | Open the program and go to settings (hamburger menu in the upper left corner). Go to "Audio" and choose "JACK" under "Technology". 10 | 11 | # Different guitar/bass sound processing 12 | 13 | Turn the guitar/bass volume in Rocksmith down. Open Tonelib-GFX. You should now hear your audio being processed by Tonelib-GFX instead. 14 | 15 | # Pitch shifting, so you don't have to retune or switch guitars/basses 16 | 17 | This has significant delay, so you might not want to use it. But go ahaed and try. 18 | 19 | I had more luck starting Tonelib-GFX first, then Rocksmith. 20 | 21 | **Patchbay:** 22 | 23 | You want the output of Tonelib-GFX as the input for Rocksmith. The output of Rocksmith is the only one going to your audio output device. 24 | 25 | The best way to reroute this is to change one line, then window-focus Rocksmith. Change another one, window focus Rocksmith. Repeat. Be patient. 26 | -------------------------------------------------------------------------------- /guides/troubleshoot-no-sound.md: -------------------------------------------------------------------------------- 1 | # Find your sound problem. 2 | 3 | If you're writing an issue about this, please tell me which step fails. 4 | 5 | Below the list is an explanation what your problem most likely is. 6 | 7 | ## List 8 | 9 | TEST IN THE GIVEN ORDER. 10 | 11 | 1. Make sure you have read the "Starting the game" section in the guide. 12 | 2. Sound output on your system generally works? 13 | 3. Does a native Linux software requiring JACK work? (eg. Ardour, Reaper, Tonelib software, ...) 14 | 4. Please test the following: 15 | 16 | ``` 17 | ## replace paths as needed. 18 | rm ~/wineasio-test 19 | env WINEPREFIX=/home/$USER/wineasio-test /path/to/wineasio-register 20 | 21 | ## if the first one of the following commands doesn't work, try the second one. 22 | ## (Rocksmith is a 32 bit application and therefore only cares about 32 bit.) 23 | WINEPREFIX=/home/$USER/wineasio-test wine /path/to/VBASIOTest32.exe 24 | LD_PRELOAD=/your/path/to/libjack.so WINEPREFIX=home/$USER/wineasio-test wine /path/to/VBASIOTest32.exe 25 | ``` 26 | 27 | 5. Assuming you have set up the game, start it with the following command: `PIPEWIRE_LATENCY=256/48000 WINEPREFIX="$STEAMLIBRARY/steamapps/compatdata/221680/pfx" "$PROTON/bin/wine" "$STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe"` 28 | 6. Start the game according to the section "Starting the game" which can be found in the guide. - Sometimes, only one of the 2 ways suggested works. 29 | 30 | ## Explanation 31 | 32 | This just lists the answer to each of the points. It does not go into detail a lot. 33 | 34 | 1. Read the "Starting the game" section. 35 | 2. You have problems with your sound on your system in general, which is out of scope for this guide. 36 | 3. Something with JACK is broken. Maybe not set up correct, maybe (for native JACK) you forgot to start it? - This might be out of scope for this guide. 37 | 4. Something with wineasio isn't set up correctly. Make sure you installed it properly, make sure wineasio-register works successfully. If the VBASIOTest32 window doesn't show up at all, it doesn't mean this test failed, but we have less information to work with now, which is annoying. 38 | 5. You didn't run wineasio-register, or RS_ASIO is misconfigured. Delete your prefix and set it up again. Check if RS_ASIO is configured properly. 39 | 6. You have a problem. 40 | 41 | ## Doesn't help? 42 | 43 | You can [create an issue](https://github.com/theNizo/linux_rocksmith/issues/new?assignees=&labels=help+wanted&projects=&template=help-needed.md&title=). Please include at which step you fail. 44 | -------------------------------------------------------------------------------- /guides/troubleshooting.md: -------------------------------------------------------------------------------- 1 | # Troubleshooting 2 | 3 | If some commands don't work, make sure you've set the environment variables as described [here](/README.md#common-paths) 4 | 5 | ## "I see the following window when starting the game" 6 | 7 | ![](https://user-images.githubusercontent.com/46491912/161832608-b333a1ae-80f7-4f0b-82d0-d7e87b9f4e9f.png) 8 | 9 | Follow [this](/guides/troubleshoot-no-sound.md) to figure out what your problem is. 10 | 11 | ## Game crashes (on start) 12 | 13 | Can happen sometimes when you use a different application, then focus Rocksmith again. Other than that: 14 | 15 | ### Try first 16 | * If the game crashes at the start, try two more times. Sometimes it was just random. 17 | * **Focus away:** If you use pipewire and the game crashes right after the window shows up, you could try taking the focus to another window as quick as possible. It helps sometimes, but isn't reliable. 18 | * **Start from terminal:** This gives you more info on what's going on. Launch the script from the terminal or 19 | 20 | ### Audio devices misbehave 21 | * Keep Pavucontrol (or whatever you used) open while starting/playing. 22 | * Look at what happens in the patchbay. Does Rocksmith appear at all? Is something not connected? Do some entries jump around? 23 | * (Pipewire) **Plug in less audio devices:** RS_ASIO can't handle audio devices changing in the patchbay and will crash. You can disable them of course, but it's easier to just not have them plugged in in the first place. My RealTone Cable didn't cause any issues yet btw. 24 | * **Patch bay:** (Meaning: Changes with something like qpwgraph or Catia.) The game doesn't like these changes too much. You might get away with 1-2, but this is a bit luck-based. 25 | * (Pipewire) Sometimes it can help to add `WINEASIO_NUMBER_INPUTS=2` to the launch command. This would limit the number of inputs to the given amount. 26 | 27 | ### Other 28 | * **Disable Big Picture:** I think this was an issue for me at one point. I would do it just to be sure. 29 | * **Try the old approach:** This is not meant to be used for playing anymore, but it's a reliable way to get the game running: `PIPEWIRE_LATENCY=256/48000 WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine $STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe` 30 | 31 | ## WineASIO 32 | 33 | [VBASIO](https://forum.vb-audio.com/viewtopic.php?t=1204) is a handy debugging tool (that I've also [used in the past](https://github.com/theNizo/linux_rocksmith/issues/22#issuecomment-1276457128). 34 | 35 | You can get verbose output of wineasio by using `/usr/bin/pw-jack -v -s 48000 -p 256 %command%`. -v stands for "verbose" and will give you additional information in the terminal. 36 | 37 | ## DLC 38 | 39 | * In the past, we had to set the working directory to the root of the game's folder. This would be done in the script, in the properties of the shortcut, or in the terminal via `cd`. 40 | * About those DLCs Ubisoft doesn't want you to know about: Add the .dll-installer in Steam ("Add non-Steam game"), set it to use Proton (right click on entry 🡲 game Properties 🡲 Compatibility), and then launch it from there. 41 | 42 | ## Other 43 | 44 | * (Pipewire) If you use an audio interface, make sure the default sample rate is set to 48kHz. You can do this by running `pw-metadata -n settings 0 clock.rate 48000 && pw-metadata -n settings 0 clock.force-rate 48000` 45 | * (Multiplayer) Calibration once didn't work for me. But entering 2nd players profile, setting up the sound there, then going back to first player and start Multiplayer worked apparently... 46 | 47 | ## Still doesn't help? 48 | 49 | You can [create an issue](https://github.com/theNizo/linux_rocksmith/issues/new?assignees=&labels=help+wanted&projects=&template=help-needed.md&title=) and ask for help. 50 | -------------------------------------------------------------------------------- /guides/unused.md: -------------------------------------------------------------------------------- 1 | # Steps I deliberately left out 2 | 3 | I'm not the first one to use this setup. I took the information and maintained it. When originally trying to get it to work, I noticed that you can leave some steps out and it still works, without knowing whether they made any difference or not. Just in case you would need them, I have listed them here. 4 | 5 | # Add realtime manually 6 | 7 | On Arch-based distros, we install a package called `realtime-privileges`, which does this for us. While in my experience it also happens automatically on Debian-based distros, [someone else needed to do this manually](https://www.reddit.com/r/linux_gaming/comments/jmediu/guide_for_setup_rocksmith_2014_steam_no_rs_cable/). 8 | 9 | It's explained [here](https://jackaudio.org/faq/linux_rt_config.html) at "1. Editing the configuration file". 10 | 11 | # RS_ASIO.ini: BufferSizeMode=host 12 | 13 | set this variable to the value listed here. 14 | 15 | Worked regardless, didn't notice a difference. 16 | 17 | # winecfg: add wineasio 18 | 19 | `WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx winecfg` 20 | 21 | Go to Libraries. Type in `wineasio` and click add. Search for it in the list and select "Builtin, then native" 22 | 23 | An alternative way to do this is to write this in front of your launch command: `WINEDLLOVERRIDES=wineasio=b,n` 24 | 25 | ## "previous_version" beta 26 | 27 | This was removed because there's a known way now to make it work with the newer versions. 28 | 29 | There was an update and the developers aknowledged that it might/will break some mods. That's why they made a beta branch with the previous version. 30 | 31 | Since the update breaks our setup as well, we will need to use the beta branch until we come up with a better solution. 32 | 33 | 1. Steam -> Library -> Right click on game -> Properties -> Betas 34 | 2. Type in "JustInCaseWeNeedIt" 35 | 3. Activate. 36 | -------------------------------------------------------------------------------- /guides/which-guide-should-i-choose.md: -------------------------------------------------------------------------------- 1 | [Yo dawg.](https://raw.githubusercontent.com/theNizo/linux_rocksmith/refs/heads/main/img/yo-dawg.webp) 2 | 3 | # What are the differences between the approaches? 4 | 5 | ## Native JACK vs. pipewire-jack 6 | 7 | (You can have pipewire and native JACK installed at the same time) 8 | 9 | On Linux, there's multiple audio systems. alsa, pulseaudio, and JACK. JACK is meant for professional audio. With pipewire, we have another one that can act as all of the above, but internally, everything is on the same level. 10 | 11 | With native JACK, we would need to start JACK before launching the game. With pipewire-jack, we wouldn't have to do that, but it often acts strange and it can lead to the game crashing immediately. Finding the cause is usually harder. 12 | 13 | Bottom line what I think is: pipewire-jack integrates better, native JACK is more reliable. I'm probably going with native JACK. 14 | 15 | ## LD_PRELOAD vs start script 16 | 17 | Due to the Steam Runtime, JACK usually doesn't work with Steam games. These are ways to make them work with it. 18 | 19 | ### Native JACK 20 | 21 | LD_PRELOAD is going to be faster to set up, but you can do either one or both. 22 | 23 | ### pipewire-jack 24 | 25 | I've heard of cases where the audio devices don't connect reliably when using LD_PRELOAD. 26 | 27 | The start script takes a bit longer, but is in my opinion more reliable in this situation. 28 | 29 | In some cases, one of the approaches doesn't work on a specific distro. I've put warnings there. In this case, obviously use the one that works. 30 | 31 | # Which guide should I choose? 32 | 33 | ### "I do not use pipewire." 34 | 35 | Native JACK it is. LD_PRELOAD or start script is up to your preference. 36 | 37 | The rest of these statements will be for pipewire users. 38 | 39 | ### "What's the simplest one?" 40 | 41 | alsa. It's also the one with the worst audio and latency. You might want to look at the next question though. 42 | 43 | ### "I want the easiest way to set it up" 44 | 45 | Native JACK with LD_PRELOAD. 46 | 47 | ### "I want it to work reliably" 48 | 49 | Native JACK with either one of the launch methods. 50 | 51 | ### "I want to play multiplayer" 52 | 53 | There's a way to use multiple devices with native JACK, but I haven't looked into it too much. 54 | 55 | If you have an audio interface with multiple inputs, you can use either one. 56 | 57 | If you don't, I recommend pipewire-jack. 58 | 59 | ### "I don't want my device to be exclusive." 60 | 61 | * **pipewire-jack:** works just fine. 62 | * **pipewire + native JACK:** On Arch-based, install `pipewire-jack-client`. For Debian, [this](https://wiki.debian.org/PipeWire#JACK) should be something similar. I haven't found anything for Fedora yet. Start JACK, then run `systemctl --user restart pipewire-pulse.service`. For the neccesary connections to be there from the start, you'd probably have to start JACK on boot. 63 | 64 | ### "I just want to click one button and expect the thing to work pretty much all the time." 65 | 66 | Just saying, pressing 2 buttons makes this close to possible without giving you headaches. But if you want to... 67 | 68 | Not impossible, but additional effort (and ability to write shell scripts) needed. It would be something along the lines of 69 | 70 | * Native JACK 71 | * Start script 72 | * edit start script, check if JACK is running and start it if not (you can get the command from the "Messages" window from QjackCtl) 73 | * maybe stop JACK after playing 74 | 75 | If you want to do something similar with pipewire-jack, you can do one optimization by adding this line to the start script: 76 | 77 | ``` 78 | pavucontrol & sleep 2 79 | ``` 80 | 81 | ### Can I have all ways at once 82 | 83 | [Short Answer](https://i.kym-cdn.com/entries/icons/original/000/028/596/dsmGaKWMeHXe9QuJtq_ys30PNfTGnMsRuHuo_MUzGCg.jpg) 84 | 85 | Long answer: 86 | 87 | * LD_PRELOAD and start-script can exist side by side on the same machine and switched easily. 88 | * As far as I can tell, the wineasio files are identical, no matter if you built them having pipewire-jack or native JACK installed, so in theory, you should be able to change between these two and just start the game. 89 | -------------------------------------------------------------------------------- /img/0-obs.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/0-obs.webp -------------------------------------------------------------------------------- /img/1-catia.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/1-catia.webp -------------------------------------------------------------------------------- /img/2-obs.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/2-obs.webp -------------------------------------------------------------------------------- /img/3-start-button.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/3-start-button.webp -------------------------------------------------------------------------------- /img/grid-file.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/grid-file.webp -------------------------------------------------------------------------------- /img/rs-asio.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/rs-asio.webp -------------------------------------------------------------------------------- /img/storage.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/storage.webp -------------------------------------------------------------------------------- /img/yo-dawg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/img/yo-dawg.webp -------------------------------------------------------------------------------- /old/arch.md: -------------------------------------------------------------------------------- 1 | # JACK to ASIO on Arch-based distros 2 | 3 | ## Table of contents 4 | 5 | 1. [Install necessary stuff](#install-necessary-stuff) 6 | 1. [wineasio](#wineasio) 7 | 1. [Setting up the game's prefix/compatdata](#setting-up-the-games-prefixcompatdata) 8 | 1. [Installing RS_ASIO](#installing-rs_asio) 9 | 1. [Set up JACK with Cadence](#set-up-jack-with-cadence) 10 | 1. [Starting the game](#starting-the-game) 11 | 1. [Command (No Lutris)](#command-no-lutris) 12 | 1. [Yes Lutris](#yes-lutris) 13 | 14 | ## Install necessary stuff 15 | 16 | If asked, replace `jack`. 17 | 18 | ``` 19 | sudo pacman -S cadence carla jack2 lib32-jack2 realtime-privileges 20 | # the groups should already exist, but just in case 21 | sudo groupadd audio 22 | suod groupadd realtime 23 | sudo usermod -aG audio $USER` 24 | sudo usermod -aG realtime $USER` 25 | ``` 26 | 27 | Log out and back in. 28 | 29 |
30 | How to check if this worked correctly 31 | 32 | For the packages, do `pacman -Q `. Should output the names and versions without errors. 33 | 34 | For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 35 |
36 | 37 | ### wineasio 38 | 39 | Installing `base-devel` is very useful for using the AUR and compiling in general. 40 | 41 |
42 | Compile from source 43 | 44 | [Download](https://github.com/wineasio/wineasio) the newest zip and unpack it. Open a terminal inside the newly created folder and run the following commands (stolen from the [README](https://github.com/wineasio/wineasio#readme), adjusted for Arch folder structure): 45 | 46 | ``` 47 | # build 48 | rm -rf build32 49 | rm -rf build64 50 | make 32 51 | make 64 52 | 53 | sudo cp build32/wineasio.dll /usr/lib32/wine/i386-windows/wineasio.dll 54 | sudo cp build32/wineasio.dll.so /usr/lib32/wine/i386-unix/wineasio.dll.so 55 | sudo cp build64/wineasio.dll /usr/lib/wine/x86_64-windows/wineasio.dll 56 | sudo cp build64/wineasio.dll.so /usr/lib/wine/x86_64-unix/wineasio.dll.so 57 | ``` 58 | 59 |
60 | 61 |
62 | Use the AUR 63 | 64 | `yay` is an AUR helper, which I will use as an example. It will install the AUR package for you. You can do this other ways too, of course 65 | 66 | ``` 67 | yay -S wineasio --noconfirm 68 | ``` 69 | 70 | Notes: 71 | 72 | * If you use Manjaro, `yay` is in their repos. 73 | * If it exits with an error, try and remove `--noconfirm`. 74 | * [Tutorial on `yay`](https://youtube.com/watch?v=BbnSoY_yDr8) 75 |
76 | 77 | wineasio is now installed on your native wine version. 78 | 79 |
80 | How to check if it's installed correctly 81 | 82 | find /usr/lib/ -name "wineasio.dll" 83 | find /usr/lib/ -name "wineasio.dll.so" 84 | find /usr/lib32/ -name "wineasio.dll" 85 | find /usr/lib32/ -name "wineasio.dll.so" 86 | 87 | This should output 4 paths (ignore the errors). 88 |
89 | 90 | To install it for Proton, run these: 91 | 92 | ``` 93 | # add to Proton version !! watch out for variables !! 94 | cp /usr/lib32/wine/i386-windows/wineasio.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 95 | cp /usr/lib32/wine/i386-unix/wineasio.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 96 | cp /usr/lib/wine/x86_64-windows/wineasio.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 97 | cp /usr/lib/wine/x86_64-unix/wineasio.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 98 | 99 | # for Proton versions 6.5 and below 100 | cp /usr/lib32/wine/i386-windows/wineasio.dll "$PROTON/lib/wine/wineasio.dll.so" 101 | cp /usr/lib/wine/x86_64-unix/wineasio.dll.so "$PROTON/lib64/wine/wineasio.dll.so" 102 | ``` 103 | 104 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 105 | 106 | ## Setting up the game's prefix/compatdata 107 | 108 | 1. Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 109 | 1. `WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx regsvr32 /usr/lib32/wine/i386-windows/wineasio.dll` (Errors are normal, should end with "regsvr32: Successfully registered DLL [...]") 110 | 111 | 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. 112 | 113 | ## Installing RS_ASIO 114 | 115 | [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 116 | 117 | 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. 118 | 119 | ## Set up JACK with Cadence 120 | 121 | (If you use pipewire, skip this.) 122 | 123 | 1. 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. 124 | 1. Go to `Configure -> Engine`. Make sure that "Realtime" is ticked. 125 | 1. Go to "Driver", select ALSA. 126 | * 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. 127 | * Input Channels: ; Output Channels: 2 128 | * Sample Rate: 48000 129 | * 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. 130 | 1. Press okay and go to `Tweaks -> WineASIO 131 | * Tick everything 132 | * Match No. of in- and -outputs 133 | * Match Buffer size 134 | 1. Press apply 135 | 1. You're set up. To start JACK, you can press "Start" under "System" 136 | 137 | ## Starting the game 138 | 139 | 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. 140 | 141 | Steam and JACK need to be running. 142 | 143 | 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: 144 | 145 | ### Command (No Lutris) 146 | 147 | ``` 148 | # cd is necessary for the Rocksmith.ini and the DLC folder 149 | cd $STEAMLIBRARY/steamapps/common/Rocksmith2014 150 | PIPEWIRE_LATENCY=256/48000 WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine $STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe 151 | ``` 152 | 153 | (`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) 154 | 155 | ### Yes Lutris 156 | 157 | 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. 158 | 159 | Open Lutris and add a game: 160 | 161 | * General: 162 | * Name: Rocksmith® 2014 Edition - Remastered 163 | * Runner: Wine 164 | * Release year: 2014 165 | * Game Options 166 | * Executable: $STEAMLIBRARY/steamapps/common/Rocksmith 2014/Rocksmith2014.exe 167 | * Working directory: $STEAMLIBRARY/steamapps/common/Rocksmith 2014/ 168 | * Wine prefix: $STEAMLIBRARY/steamapps/compatdata/221680/pfx 169 | * Runner options 170 | * Wine version: Custom 171 | * (Toggle Advanced options to see this) Custom Wine executable: enter path to `dist/bin/wine` or `files/bin/wine` of your desired Proton version 172 | * System options (only needed for pipewire) 173 | * Environment Variables: PIPEWIRE_LATENCY=256/48000 174 | 175 | (People who don't use the Steam version can just choose whatever runner they like.) 176 | 177 | Save this and hit "Play." 178 | -------------------------------------------------------------------------------- /old/debian.md: -------------------------------------------------------------------------------- 1 | # JACK to ASIO on Debian-based distros 2 | 3 | I don't have a debian-based machine to test this. Everything up to starting the game was tested in a VM. 4 | 5 | ## Table of contents 6 | 7 | 1. [Install necessary stuff](#install-necessary-stuff) 8 | 1. [wineasio](#wineasio) 9 | 1. [Setting up the game's prefix/compatdata](#setting-up-the-games-prefixcompatdata) 10 | 1. [Installing RS_ASIO](#installing-rs_asio) 11 | 1. [Set up JACK with Cadence](#set-up-jack-with-cadence) 12 | 1. [Starting the game](#starting-the-game) 13 | 14 | ## Install necessary stuff 15 | 16 | When asked about realtime privileges, select yes with the arrow keys and confirm with enter. 17 | 18 | ``` 19 | sudo apt-get install apt-transport-https gpgv 20 | wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb 21 | sudo dpkg -i kxstudio-repos_10.0.3_all.deb 22 | sudo apt update 23 | sudo apt install cadence carla wineasio jackd2 24 | # the groups should already exist, but just in case 25 | sudo groupadd audio 26 | suod groupadd realtime 27 | sudo usermod -aG audio $USER` 28 | sudo usermod -aG realtime $USER` 29 | ``` 30 | 31 | Log out and back in. 32 | 33 |
34 | How to check if this worked correctly 35 | For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 36 |
37 | 38 | ### wineasio 39 | 40 | Note: despite what is said in the [wineasio repo](https://github.com/wineasio/wineasio), the files for wineasio are in the following locations: 41 | 42 | * /usr/lib/i386-linux-gnu/wine/wineasio.dll.so 43 | * /usr/lib/i386-linux-gnu/wine/wineasio.dll 44 | * /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so 45 | * /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so 46 | 47 | To make Proton use wineasio, we need to copy these files into the appropriate locations. Watch out for variables: 48 | 49 | ``` 50 | # Recent Proton versions 51 | cp /usr/lib/i386-linux-gnu/wine/wineasio.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 52 | cp /usr/lib/i386-linux-gnu/wine/wineasio.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 53 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 54 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 55 | 56 | # for Proton versions 6.5 and below 57 | cp /usr/lib/i386-linux-gnu/wine/wineasio.dll.so "$PROTON/lib/wine/wineasio.dll.so" 58 | cp /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so "$PROTON/lib64/wine/wineasio.dll.so" 59 | ``` 60 | 61 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 62 | 63 |
64 | Troubleshooting 65 | 66 | find /usr/lib/ -name "wineasio.dll" 67 | find /usr/lib/ -name "wineasio.dll.so" 68 | 69 | This should output 4 paths (ignore the errors). 70 |
71 | 72 | ## Setting up the game's prefix/compatdata 73 | 74 | 1. Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 75 | 1. `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 [...]") 76 | 77 | 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. 78 | 79 | ## Installing RS_ASIO 80 | 81 | [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 82 | 83 | 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. 84 | 85 | ## Set up JACK with Cadence 86 | 87 | (If you use pipewire, skip this.) 88 | 89 | 1. 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. 90 | 1. Go to `Configure -> Engine`. Make sure that "Realtime" is ticked. 91 | 1. Go to "Driver", select ALSA. 92 | * 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. 93 | * Input Channels: ; Output Channels: 2 94 | * Sample Rate: 48000 95 | * 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. 96 | 1. Press okay and go to `Tweaks -> WineASIO 97 | * Tick everything 98 | * Match No. of in- and -outputs 99 | * Match Buffer size 100 | 1. Press apply 101 | 1. You're set up. To start JACK, you can press "Start" under "System" 102 | 103 | ## Starting the game 104 | 105 | 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. 106 | 107 | Steam and JACK need to be running. 108 | 109 | 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: 110 | 111 | ### Command (No Lutris) 112 | 113 | ``` 114 | # cd is necessary for the Rocksmith.ini and the DLC folder 115 | cd $STEAMLIBRARY/steamapps/common/Rocksmith2014 116 | PIPEWIRE_LATENCY=256/48000 WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine $STEAMLIBRARY/steamapps/common/Rocksmith2014/Rocksmith2014.exe 117 | ``` 118 | 119 | (`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) 120 | 121 | ### Yes Lutris 122 | 123 | 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. 124 | 125 | Open Lutris and add a game: 126 | 127 | * General: 128 | * Name: Rocksmith® 2014 Edition - Remastered 129 | * Runner: Wine 130 | * Release year: 2014 131 | * Game Options 132 | * Executable: $STEAMLIBRARY/steamapps/common/Rocksmith 2014/Rocksmith2014.exe 133 | * Working directory: $STEAMLIBRARY/steamapps/common/Rocksmith 2014/ 134 | * Wine prefix: $STEAMLIBRARY/steamapps/compatdata/221680/pfx 135 | * Runner options 136 | * Wine version: Custom 137 | * (Toggle Advanced options to see this) Custom Wine executable: enter path to `dist/bin/wine` or `files/bin/wine` of your desired Proton version 138 | * System options (only needed for pipewire) 139 | * Environment Variables: PIPEWIRE_LATENCY=256/48000 140 | 141 | (People who don't use the Steam version can just choose whatever runner they like.) 142 | 143 | Save this and hit "Play." 144 | -------------------------------------------------------------------------------- /old/pipewire.md: -------------------------------------------------------------------------------- 1 | (Thanks to [vscsilva](https://github.com/vscsilva) for pointing out that it works now) 2 | 3 | # JACK to ASIO, but it's pipewire 4 | 5 | It's pretty much the same rundown, so I decided to just point out the differences. I will probably polish this in the future. 6 | 7 | ## Install necessary stuff 8 | 9 | Don't install `jack2`, don't install `cadence` (because it requires `jack2`). Here's what you need, assuming you have `pipewire` and a session manager (probably `wireplumber`) already installed: 10 | 11 | `wine-staging pipewire-alsa pipewire-pulse pipewire-jack lib32-pipewire-jack qpwgraph realtime-privileges pavucontrol` 12 | 13 | I've written this in a way that you can just put your package manager's install command in front of it. 14 | 15 | ## wineasio 16 | 17 | Compile from source. [Download](https://github.com/wineasio/wineasio) the newest zip and unpack it. Open a terminal inside the newly created folder and run the following commands: 18 | 19 | ``` 20 | # build 21 | rm -rf build32 22 | rm -rf build64 23 | make 32 24 | make 64 25 | 26 | # Install on normal wine 27 | # Arch-based 28 | sudo cp build32/wineasio.dll /usr/lib32/wine/i386-windows/wineasio.dll 29 | sudo cp build32/wineasio.dll.so /usr/lib32/wine/i386-unix/wineasio.dll.so 30 | sudo cp build64/wineasio.dll /usr/lib/wine/x86_64-windows/wineasio.dll 31 | sudo cp build64/wineasio.dll.so /usr/lib/wine/x86_64-unix/wineasio.dll.so 32 | # Debian-based 33 | sudo cp build32/wineasio.dll /usr/lib/i386-linux-gnu/wine/wineasio.dll.so 34 | sudo cp build32/wineasio.dll.so /usr/lib/i386-linux-gnu/wine/wineasio.dll 35 | sudo cp build64/wineasio.dll /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so 36 | sudo cp build64/wineasio.dll.so /usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so 37 | 38 | # add to Proton version !! watch out for variables !! 39 | cp /usr/lib32/wine/i386-windows/wineasio.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 40 | cp /usr/lib32/wine/i386-unix/wineasio.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 41 | cp /usr/lib/wine/x86_64-windows/wineasio.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 42 | cp /usr/lib/wine/x86_64-unix/wineasio.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 43 | 44 | # for Proton versions 6.5 and below 45 | cp /usr/lib32/wine/i386-windows/wineasio.dll "$PROTON/lib/wine/wineasio.dll.so" 46 | cp /usr/lib/wine/x86_64-unix/wineasio.dll.so "$PROTON/lib64/wine/wineasio.dll.so" 47 | ``` 48 | 49 | ## Set up JACK 50 | 51 | Don't do the step from the other guides with the almost same name. 52 | 53 | Open pavucontrol ("PulseAudio Volume Control"), go to "Configuration" and make sure there's exactly one input device and one output device enabled. 54 | 55 | All available devices will automatically be tied to Rocksmith, and the game doesn't like you messing around in the patchbay (= it would crash) 56 | 57 | ## COMMAND 58 | 59 | There is an environment variable in there called `PIPEWIRE_LATENCY`. 256 is the Buffer size, you can change it to something you like. I've had good experiences with 256. 48000 refers to the sample rate and is required to be 48000 by Rocksmith 60 | 61 | ## Starting the game 62 | 63 | (You don't always have to do this, but this give me the most reliable experience) 64 | 65 | As soon as you see the games window, take the focus away from it, eg. on a different window. Don't focus Rocksmith until the logos start to appear (it's usually the same amount of time). At this point, RS_ASIO is initialized and you can start playing. 66 | -------------------------------------------------------------------------------- /scripts/native-steam.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | trap "exit" INT 3 | 4 | # double-hashtag (## comment) means it is a TODO 5 | # Note: Someone once had issues with the realtime setup on debian-based. I don't check for this here. 6 | 7 | # because I like to write this. 8 | exit_msg() { 9 | echo "Exiting..." 10 | exit 1 11 | } 12 | 13 | # determines the distro, based on the package manager. This way, I don't need a list of child-distros. 14 | # sets a few distro-specific variables. I'm assuming they only differ by parent-distro. 15 | if [ -f "$(which apt)" ]; then 16 | dist=deb 17 | x32dll=/usr/lib/i386-linux-gnu/wine/wineasio.dll 18 | x32so=/usr/lib/i386-linux-gnu/wine/wineasio.dll.so 19 | x64dll=/usr/lib/x86_64-linux-gnu/wine/wineasio.dll 20 | x64so=/usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so 21 | elif [ -f "$(which pacman)" ]; then 22 | dist=arch 23 | x32dll=/usr/lib32/wine/i386-windows/wineasio.dll 24 | x32so=/usr/lib32/wine/i386-unix/wineasio.dll.so 25 | x64dll=/usr/lib/wine/x86_64-windows/wineasio.dll 26 | x64so=/usr/lib/wine/x86_64-unix/wineasio.dll.so 27 | else 28 | echo "Your distro does not seem to be compatible." 29 | exit_msg 30 | fi 31 | 32 | clear 33 | echo "!! The provider of this script takes no responsibility !!" 34 | echo "!! and will not guarantee for this to work. !!" 35 | echo "!! This script is not compatible with pipewire. !!" 36 | echo "!! !!" 37 | echo "!! The Script is experimental. I didn't really test it. !!" 38 | echo 39 | echo "============================================" 40 | echo "WARNING! You should set the Proton version" 41 | echo "you want to use with Rocksmith NOW in Steam!" 42 | echo "============================================" 43 | echo 44 | echo "SCRIPTS ARE OUTDATED CURRENTLY" 45 | echo 46 | 47 | # determine the game's install location 48 | # checks first, if the game is in the default Steam Library 49 | if [ -f $HOME/.steam/steam/steamapps/common/Rocksmith2014/Rocksmith2014.exe ]; then 50 | echo "Game installation found in the default Steam Library. Using this." 51 | echo 52 | game=$HOME/.steam/steam/steamapps/common/Rocksmith2014 53 | else 54 | echo "Please specify the root folder of the game's" 55 | echo "installation. Should contain 'Rocksmith.exe'" 56 | read -p "Rocksmith install path: " game 57 | while [ ! -f "$game/Rocksmith2014.exe" ]; do 58 | echo 59 | echo "Invalid Path, please try again." 60 | read -p "Rocksmith install path: " game 61 | done 62 | fi 63 | 64 | prefix="$game/../../compatdata/221680" 65 | 66 | echo "Please specify the root of your Proton installation" 67 | echo "that you want to use. It needs to be Proton," 68 | echo "otherwise the game can't find Steam" 69 | echo 70 | # read this 71 | read -p "Proton: " runner 72 | while ! [ -f "$runner/dist/bin/wine" -o -f "$runner/files/bin/wine" -o -f "$runner/bin/wine" ]; do 73 | echo 74 | echo "This doesn't seem to be a Proton installation path, please try again." 75 | read -p "Proton: " runner 76 | done 77 | 78 | # adjust path accordingly, if needed. 79 | if [ -f "$runner/dist/bin/wine" ]; then 80 | runner="$runner/dist" 81 | elif [ -f "$runner/files/bin/wine" ]; then 82 | runner="$runner/files" 83 | elif ! [ -f "$runner/bin/wine" ]; then # dead code, unless I messed up while writing this script 84 | echo "There's something wrong with the path recognition." 85 | echo "Please open an issue on the repo." 86 | exit_msg 87 | fi 88 | 89 | # install needed stuff 90 | # (assumes you have and use sudo) 91 | case $dist in 92 | "deb") 93 | echo "We will need to add an apt repo, to install necessary software" 94 | ## ask, or check, if this already exists 95 | sudo apt-get install apt-transport-https gpgv 96 | wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb 97 | sudo dpkg -i kxstudio-repos_10.0.3_all.deb 98 | sudo apt update 99 | sudo apt install cadence carla wineasio jackd2 100 | ;; 101 | "arch") 102 | echo "If you're asked to replace JACK, do so." 103 | sleep 1 104 | # We can't use noconfirm here, because you might have to replace jack 105 | if [ -f $(which yay) ]; then 106 | yay -S carla jack2 lib32-jack2 realtime-privileges wineasio 107 | elif [ -f $(which paru) ]; then # literally the same text, but in case other AUR helpers have a different syntax 108 | paru -S carla jack2 lib32-jack2 realtime-privileges wineasio 109 | else 110 | echo "This script currently only supports yay or paru, but could" 111 | echo "not detect either on your system. If you want to use" 112 | echo "another AUR helper, please open an issue on the GitHub repo." 113 | exit 1 114 | fi 115 | ;; 116 | *) 117 | # this should be dead code, but just in case 118 | echo "This isn't supposed to happen. Please open" 119 | echo "an issue and inform the dev that the script" 120 | echo "continued without a valid 'dist' value." 121 | ;; 122 | esac 123 | 124 | # add user to needed groups 125 | sudo groupadd audio 126 | sudo groupadd realtime 127 | sudo usermod -aG audio $USER 128 | sudo usermod -aG realtime $USER 129 | 130 | # installs wineasio in proton 131 | cp "$x32dll" "$runner/lib/wine/i386-windows/wineasio.dll" 132 | cp "$x32so" "$runner/lib/wine/i386-unix/wineasio.dll.so" 133 | cp "$x64dll" "$runner/lib64/wine/x86_64-windows/wineasio.dll" 134 | cp "$x64so" "$runner/lib64/wine/x86_64-unix/wineasio.dll" 135 | 136 | mv "$game/../../compatdata/221680" "$game/../../compatdata/221680.bak" # backs up an already existing prefix, makes place for a clean new one 137 | 138 | # tell user to close game once you see the loading screen 139 | echo 140 | echo "================================" 141 | echo "The game will now start." 142 | echo "When the game opens and starts" 143 | echo "loading, you can close it again." 144 | echo "================================" 145 | xdg-open steam://rungameid/221680 #run game 146 | 147 | echo 148 | read -p "Press enter to continue" 149 | 150 | WINEPREFIX="$prefix" regsvr32 /usr/lib32/wine/i386-windows/wineasio.dll # register wineasio in prefix 151 | 152 | # download RS_ASIO latest release, unpack to correct location, insert "WineASIO" 153 | wget https://github.com/mdias/rs_asio/releases/download/v0.5.7/release-0.5.7.zip -O RS_ASIO.zip 154 | unzip RS_ASIO.zip -d "$game" 155 | rm "$game/RS_ASIO.ini" 156 | wget https://raw.githubusercontent.com/theNizo/linux_rocksmith/main/RS_ASIO.ini -O "$game/RS_ASIO.ini" 157 | rm RS_ASIO.zip 158 | rm "$game/Rocksmith.ini" 159 | 160 | # create launch script 161 | ## optionally figure out a way with lutris 162 | # is there a more beautiful way? (Don't want to download yet another file though.) 163 | touch $HOME/rocksmith.sh 164 | echo "#!/bin/bash" >> $HOME/rocksmith.sh 165 | echo "cd \"$game\"" >> $HOME/rocksmith.sh 166 | echo "WINEPREFIX=\"$prefix\" \"$runner/bin/wine\" \"$game/Rocksmith2014.exe\"" >> $HOME/rocksmith.sh 167 | chmod u+x $HOME/rocksmith.sh 168 | 169 | echo 170 | echo "===============================================" 171 | echo "All done so far. Please Set up JACK, preferably" 172 | echo "in Cadence. You can use qjackctl too." 173 | echo "Instructions for that are in my guide." 174 | echo 175 | echo "To run the game, start JACK, have Steam" 176 | echo "opened, then run ~/rocksmith.sh" 177 | echo 178 | echo "Please log out and back in, so that your groups" 179 | echo "and permissions are reloaded." 180 | echo "===============================================" 181 | echo 182 | 183 | cadence 184 | 185 | exit 0 186 | -------------------------------------------------------------------------------- /scripts/other.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | trap "exit" INT 3 | 4 | # double-hashtag (## comment) means it is a TODO 5 | 6 | # determines the distro, based on the package manager. This way, I don't need a list of child-distros. 7 | # sets a few distro-specific variables 8 | if [ -f "$(which apt)" ]; then 9 | dist=deb 10 | x32dll=/usr/lib/i386-linux-gnu/wine/wineasio.dll 11 | x32so=/usr/lib/i386-linux-gnu/wine/wineasio.dll.so 12 | x64dll=/usr/lib/x86_64-linux-gnu/wine/wineasio.dll 13 | x64so=/usr/lib/x86_64-linux-gnu/wine/wineasio.dll.so 14 | elif [ -f "$(which pacman)" ]; then 15 | dist=arch 16 | x32dll=/usr/lib32/wine/i386-windows/wineasio.dll 17 | x32so=/usr/lib32/wine/i386-unix/wineasio.dll.so 18 | x64dll=/usr/lib/wine/x86_64-windows/wineasio.dll 19 | x64so=/usr/lib/wine/x86_64-unix/wineasio.dll.so 20 | else 21 | echo "Your distro does not seem to be compatible. Exiting..." 22 | exit 1 23 | fi 24 | 25 | clear 26 | echo "!! The provider of this script takes no responsibility !!" 27 | echo "!! and will not guarantee for this to work. !!" 28 | echo "!! This script is not compatible with pipewire. !!" 29 | echo "!! !!" 30 | echo "!! The Script is experimental. I didn't really test it. !!" 31 | echo 32 | echo "SCRIPTS ARE OUTDATED CURRENTLY" 33 | echo 34 | 35 | # determine the game's install location 36 | echo "Please specify the root folder of the game's" 37 | echo "installation. Should contain 'Rocksmith.exe'" 38 | read -p "Rocksmith install path: " game 39 | while [ ! -f "$game/Rocksmith2014.exe" ]; do 40 | echo 41 | echo "Invalid Path, please try again." 42 | read -p "Rocksmith install path: " game 43 | done 44 | 45 | # ask for prefix path 46 | echo "Please specify the location of the prefix you" 47 | echo "want to use. Contains 'dosdevices'" 48 | echo "and 'drive_c'" 49 | read -p "Prefix of the game: " prefix 50 | while ! [ -d "$prefix/drive_c" -o -d "$prefix/dosdevices" ]; do # loop for correct answer 51 | echo 52 | echo "This doesn't seem to be a prefix, please try again." 53 | read -p "Prefix of the game: " prefix 54 | done 55 | 56 | echo "Please specify the root of the runner" 57 | echo "installation that you want to use." 58 | # read this 59 | read -p "Runner: " runner 60 | while ! [ -f "$runner/bin/wine" ]; do 61 | echo 62 | echo "This doesn't seem to be a runner installation path, please try again." 63 | read -p "Runner: " runner 64 | done 65 | 66 | # install needed stuff 67 | # (assumes you have and use sudo) 68 | case $dist in 69 | "deb") 70 | echo "We will need to add an apt repo, to install necessary software" 71 | ## ask, or check, if this already exists 72 | sudo apt-get install apt-transport-https gpgv 73 | wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb 74 | sudo dpkg -i kxstudio-repos_10.0.3_all.deb 75 | sudo apt update 76 | sudo apt install cadence carla wineasio jackd2 77 | ;; 78 | "arch") 79 | sudo pacman -S carla jack2 lib32-jack2 realtime-privileges # this can't be with noconfirm, because you might have to replace jack 80 | ;; 81 | *) 82 | # this should be dead code, but just in case 83 | echo "This isn't supposed to happen. Please open" 84 | echo "an issue and inform the dev that the script" 85 | echo "continued without a valid 'dist' value." 86 | ;; 87 | esac 88 | 89 | sudo groupadd audio 90 | suod groupadd realtime 91 | sudo usermod -aG audio $USER 92 | sudo usermod -aG realtime $USER 93 | 94 | 95 | cp "$x32dll" "$runner/lib/wine/i386-windows/wineasio.dll" 96 | cp "$x32so" "$runner/lib/wine/i386-unix/wineasio.dll.so" 97 | cp "$x64dll" "$runner/lib64/wine/x86_64-windows/wineasio.dll" 98 | cp "$x64so" "$runner/lib64/wine/x86_64-unix/wineasio.dll" 99 | 100 | mv "$prefix" "$prefix.bak" # backup old prefix. Not Steam 101 | 102 | # tell user to close game once you see the loading screen 103 | echo 104 | echo "================================" 105 | echo "Please start the game now." 106 | echo "When the game opens and starts" 107 | echo "loading, you can close it again." 108 | echo "================================" 109 | echo 110 | read -p "Press enter to continue" 111 | 112 | WINEPREFIX="$prefix" regsvr32 /usr/lib32/wine/i386-windows/wineasio.dll # register wineasio to prefix 113 | 114 | # download RS_ASIO latest release, unpack to correct location, insert "WineASIO" 115 | wget https://github.com/mdias/rs_asio/releases/download/v0.5.7/release-0.5.7.zip -O RS_ASIO.zip 116 | unzip RS_ASIO.zip -d "$game" 117 | rm "$game/RS_ASIO.ini" 118 | wget https://raw.githubusercontent.com/theNizo/linux_rocksmith/main/RS_ASIO.ini -o "$game/RS_ASIO.ini" 119 | rm RS_ASIO.zip 120 | rm "$game/Rocksmith.ini" 121 | 122 | if [ $dist = "arch" ]; then 123 | # create launch script; optionally figure out a way with lutris 124 | touch $HOME/rocksmith.sh 125 | echo "#!/bin/bash" >> $HOME/rocksmith.sh 126 | echo "cd \"$game\"" >> $HOME/rocksmith.sh 127 | echo "WINEPREFIX=\"$prefix\" \"$runner/bin/wine\" \"$game/Rocksmith2014.exe\"" >> $HOME/rocksmith.sh 128 | chmod u+x $HOME/rocksmith.sh 129 | 130 | echo 131 | echo "===============================================" 132 | echo "All done so far. Please Set up JACK, preferably" 133 | echo "in Carla. You can use qjackctl too." 134 | 135 | if [ $dist = "arch" ]; then 136 | echo "To run the game, start JACK, have Steam" 137 | echo "opened, then run ~/rocksmith.sh" 138 | else 139 | echo "To run the game, start JACK, then start" 140 | echo "the game in Steam." 141 | fi 142 | 143 | echo "===============================================" 144 | echo 145 | 146 | cadence 147 | 148 | exit 0 149 | -------------------------------------------------------------------------------- /scripts/patch-nixos.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | ######################### VARS ############################### 6 | USER=$(whoami) 7 | 8 | # Constants (these shouldn't change!) 9 | WINEASIOPATH="/lib/wine" 10 | WINEASIODLLS=( 11 | "/i386-unix/wineasio32.dll.so" 12 | "/i386-windows/wineasio32.dll" 13 | "/x86_64-unix/wineasio64.dll.so" 14 | "/x86_64-windows/wineasio64.dll" 15 | ) 16 | STEAMPATH="/home/${USER}/.steam/steam" 17 | WINEPREFIX="${STEAMPATH}/steamapps/compatdata/221680/pfx/" 18 | LAUNCH_OPTIONS="LD_PRELOAD=/lib/libjack.so PIPEWIRE_LATENCY=256/48000 %command%" 19 | 20 | # Defaults 21 | RSASIOVER="0.7.1" 22 | PROTONVER="Proton - Experimental" 23 | FILES_OR_DIST="files" 24 | PROTONPATH="${STEAMPATH}/steamapps/common/${PROTONVER}" 25 | WINE="${PROTONPATH}/${FILES_OR_DIST}/bin/wine" 26 | WINE64="${PROTONPATH}/${FILES_OR_DIST}/bin/wine64" 27 | 28 | ############################################################# 29 | print_color() { 30 | local COLOR=$1 31 | local NC='\033[0m' 32 | echo -e "${COLOR}$2${NC}" 33 | } 34 | 35 | print_blue() { 36 | local BLUE='\033[0;34m' 37 | print_color $BLUE "$1" 38 | } 39 | 40 | print_green() { 41 | local GREEN='\033[0;32m' 42 | print_color $GREEN "$1" 43 | } 44 | 45 | print_red() { 46 | local RED='\033[0;31m' 47 | print_color $RED "$1" 48 | } 49 | 50 | print_orange() { 51 | local ORANGE='\033[38;5;214m' 52 | print_color $ORANGE "$1" 53 | } 54 | 55 | validate_proton_input() { 56 | if [[ -z $1 || $1 =~ ^[0-2]$ ]]; then 57 | return 0 58 | else 59 | return 1 60 | fi 61 | } 62 | 63 | choose_proton() { 64 | echo "Please choose your proton version that you use to run Rocksmith:" 65 | print_orange "0) Proton - Experimental [Default]" 66 | echo "1) Proton 9.0 (Beta)" 67 | echo "2) Proton 8.0" 68 | 69 | read -p "Choose your Proton Version (0-2): " USERPROTONVER 70 | 71 | if validate_proton_input "$USERPROTONVER"; then 72 | case $USERPROTONVER in 73 | 0) 74 | PROTONVER="Proton - Experimental" 75 | FILES_OR_DIST="files" 76 | ;; 77 | 1) 78 | PROTONVER="Proton 9.0 (Beta)" 79 | FILES_OR_DIST="files" 80 | ;; 81 | 2) 82 | PROTONVER="Proton 8.0" 83 | FILES_OR_DIST="dist" 84 | ;; 85 | esac 86 | 87 | PROTONPATH="${STEAMPATH}/steamapps/common/${PROTONVER}" 88 | WINE="${PROTONPATH}/${FILES_OR_DIST}/bin/wine" 89 | WINE64="${PROTONPATH}/${FILES_OR_DIST}/bin/wine64" 90 | 91 | print_blue "Using $PROTONVER" 92 | else 93 | print_red "You need to select a value between 0 and 2, please try again" 94 | choose_proton 95 | fi 96 | } 97 | 98 | validate_rsasio_input() { 99 | if [[ -z $1 || $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then 100 | return 0 101 | else 102 | return 1 103 | fi 104 | } 105 | 106 | choose_rsasio() { 107 | read -p "Override RS_ASIO Version [$(print_orange ${RSASIOVER})]: " USER_RSASIOVER 108 | if validate_rsasio_input "$USER_RSASIOVER"; then 109 | RSASIOVER=${USER_RSASIOVER:-$RSASIOVER} 110 | print_blue "Using $RSASIOVER" 111 | else 112 | print_red "The value is not in the correct format: x.y.z" 113 | choose_rsasio 114 | fi 115 | } 116 | 117 | greet() { 118 | print_blue "======== Rocksmith 2014 - Wineasio patcher for NixOS ========" 119 | 120 | choose_proton 121 | 122 | choose_rsasio 123 | } 124 | 125 | print_system_info() { 126 | print_blue "======== System Info "======== 127 | echo "NixOS $(nixos-version) [$(getconf LONG_BIT)-bit]" 128 | echo "Kernel $(uname -r)" 129 | echo "Wine $("${WINE}" --version)" 130 | echo "Wine64 $("${WINE64}" --version)" 131 | 132 | echo "RS_ASIO (Desired) ${RSASIOVER}" 133 | echo "Proton (Desired) ${PROTONVER}" 134 | } 135 | 136 | check_installed() { 137 | if which $1 >/dev/null 2>&1; then 138 | echo "$1 $(print_green present)" 139 | else 140 | print_red "Required $1 is not installed!" 141 | exit 1 142 | fi 143 | } 144 | 145 | 146 | check_and_prepare() { 147 | print_blue "======== Check and prepare "======== 148 | check_passed=true 149 | 150 | CHECKPATHS=( 151 | "$WINEPREFIX" 152 | "$WINEASIOPATH" 153 | "$STEAMPATH" 154 | "$PROTONPATH" 155 | "/lib/wine" 156 | "${STEAMPATH}/steamapps/compatdata/221680" 157 | "${STEAMPATH}/steamapps/compatdata/221680/pfx/" 158 | ) 159 | 160 | CHECKFILES=( 161 | "$WINE" 162 | "$WINE64" 163 | "/lib/libjack.so" 164 | ) 165 | 166 | CHECKPROGRAMS=( 167 | "steam" 168 | "steam-run" 169 | "pipewire" 170 | ) 171 | 172 | echo "=== Paths ===" 173 | 174 | 175 | for path in "${CHECKPATHS[@]}"; do 176 | if [ ! -d "${path}" ]; then 177 | echo "Directory ${path} ... $(print_red "NOT found!")" 178 | check_passed=false 179 | else 180 | echo "Directory ${path} ... $(print_green OK)" 181 | fi 182 | done 183 | 184 | echo "=== Files ===" 185 | 186 | 187 | for file in "${CHECKFILES[@]}"; do 188 | if [ ! -f "${file}" ]; then 189 | echo "File ${file} ... $(print_red "NOT found!")" 190 | check_passed=false 191 | else 192 | echo "File ${file} ... $(print_green OK)" 193 | fi 194 | done 195 | 196 | for dll in "${WINEASIODLLS[@]}"; do 197 | if [ ! -f "${WINEASIOPATH}${dll}" ]; then 198 | echo "File ${dll} ... $(print_red NOT found!)" 199 | check_passed=false 200 | 201 | else 202 | echo "File ${dll} ... $(print_green OK)" 203 | fi 204 | done 205 | 206 | for program in "${CHECKPROGRAMS[@]}"; do 207 | check_installed $program 208 | done 209 | 210 | if [ "$check_passed" = false ]; then 211 | print_red "A check failed. Exiting the program." 212 | exit 1 213 | fi 214 | 215 | read -p "This script will add wineasio to proton and Rocksmith, register it and install RS_ASIO. Do you want to continue? (Y/N): " user_input 216 | user_input=$(echo "$user_input" | tr '[:lower:]' '[:upper:]') 217 | if [ "$user_input" != "Y" ]; then 218 | print_red "Exiting..." 219 | exit 0 220 | fi 221 | } 222 | 223 | register_dll() { 224 | echo "[Wineasio] Registering ${1}" 225 | "${2}" regsvr32 "${1}" > /dev/null 2>&1 226 | } 227 | 228 | safe_copy() { 229 | echo "[COPY FILE] $1 -> $2" 230 | rm -rf "$2" 231 | cp "$1" "$2" 232 | } 233 | 234 | patch_wineasio_32bit() { 235 | echo "[Wineasio] Applying Patch for 32-bit" 236 | safe_copy "${WINEASIOPATH}${1}" "${PROTONPATH}/${FILES_OR_DIST}/lib/wine${1}" 237 | if [[ $1 == *.so ]]; then 238 | local wineasio_dll=$(echo ${WINEASIOPATH}${1} | sed -e 's|/i386-unix/wineasio32.dll.so|/i386-windows/wineasio32.dll|g') 239 | if [ -e "${WINEASIOPATH}${1}" ] && [ -e "${wineasio_dll}" ]; then 240 | echo "[Wineasio 32-bit] Copying ${wineasio_dll} in ${WINEPREFIX}/drive_c/windows/syswow64/wineasio32.dll" 241 | safe_copy "${wineasio_dll}" "${WINEPREFIX}/drive_c/windows/syswow64/wineasio32.dll" 242 | register_dll "$wineasio_dll" "$WINE" 243 | fi 244 | fi 245 | } 246 | 247 | patch_wineasio_64bit() { 248 | echo "[Wineasio] Applying Patch for 64-bit" 249 | 250 | safe_copy "${WINEASIOPATH}${1}" "${PROTONPATH}/${FILES_OR_DIST}/lib64/wine${1}" 251 | 252 | if [[ $1 == *.so ]]; then 253 | if [ ! -d "${WINEPREFIX}/drive_c/windows/syswow64" ]; then 254 | echo "[Wineasio] Skipping $1 because ${WINEPREFIX} is not a 64-bit system" 255 | continue 256 | fi 257 | local wineasio_dll=$(echo ${WINEASIOPATH}${1} | sed -e 's|/x86_64-unix/wineasio64.dll.so|/x86_64-windows/wineasio64.dll|g') 258 | if [ -e "${WINEASIOPATH}${1}" ] && [ -e "${wineasio_dll}" ]; then 259 | echo "[Wineasio 64-bit] Copying ${wineasio_dll} in ${WINEPREFIX}/drive_c/windows/system32/wineasio64.dll" 260 | safe_copy "${wineasio_dll}" "${WINEPREFIX}/drive_c/windows/system32/wineasio64.dll" 261 | register_dll "$wineasio_dll" "$WINE64" 262 | fi 263 | fi 264 | } 265 | 266 | patch_wineasio() { 267 | print_blue "======== Wineasio ========" 268 | echo "[Wineasio] Install Wineasio" 269 | 270 | for dll in "${WINEASIODLLS[@]}"; do 271 | if echo "$dll" | grep -q "32"; then 272 | patch_wineasio_32bit "$dll" 273 | elif echo "$dll" | grep -q "64"; then 274 | patch_wineasio_64bit "$dll" 275 | else 276 | echo "$dll doesn't contain 32 or 64 in its name. Can't choose if 32 or 64 bit." 277 | fi 278 | done 279 | } 280 | 281 | patch_rs_asio() { 282 | print_blue "======== RS_ASIO ========" 283 | 284 | echo "[RS_ASIO] Dowload RS_ASIO" 285 | if [ ! -f "release-${RSASIOVER}.zip" ]; then 286 | wget https://github.com/mdias/rs_asio/releases/download/v${RSASIOVER}/release-${RSASIOVER}.zip > /dev/null 2>&1 287 | fi 288 | 289 | echo "[RS_ASIO] Unzip" 290 | unzip release-${RSASIOVER}.zip -d RS_ASIO 291 | 292 | sed -i 's/Driver=[^ ]*/Driver=wineasio-rsasio/g' "RS_ASIO/RS_ASIO.ini" 293 | 294 | echo "[RS_ASIO] Copying RS_ASIO to Rocksmith installation" 295 | cp -a "RS_ASIO/"* "${STEAMPATH}/steamapps/common/Rocksmith2014/" 296 | } 297 | 298 | 299 | finalise() { 300 | print_blue "======== DONE ========" 301 | 302 | echo "Patch applied, you can now configure Rocksmith" 303 | 304 | echo "First, check that the RS_ASIO.ini file is correct" 305 | echo 306 | echo "Finally, add the following launch option to Rocksmith on steam" 307 | echo 308 | echo "================================================================" 309 | echo $LAUNCH_OPTIONS 310 | echo "================================================================" 311 | } 312 | 313 | 314 | ################### Execute ################### 315 | greet 316 | print_system_info 317 | check_and_prepare 318 | patch_wineasio 319 | patch_rs_asio 320 | finalise 321 | -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | # What is this? 2 | 3 | This is basically the factory for the guides. I make changes here so I don't have to edit every single file when I want to do a change. It also gives me consistency over files. 4 | 5 | This is a rewrite of the original (more complicated) src, which can be found [here](https://github.com/theNizo/linux_rocksmith/tree/11747003673d8f47fd46b355962b8bee2d65f58b/src). 6 | 7 | # How does this work? 8 | 9 | I have the base structure in base.md. I use variables which have the format of 000-name-000. For each variable, there is a folder containing files named after distros, sound system, or both. I choose the file that fits the current guide. 10 | 11 | [generate.sh](/src/generate.sh) creates the guides and puts them in inside [guides/setup/](../guides/setup). Full-line Variable replacements are handled inside [generate.sh](/src/generate.sh), inline changes are made with [replace-inline.sh](/src/replace-inline.sh). 12 | 13 | The only more complex part is the [section compiling wineasio](/src/wineasio-install/). 14 | 15 | # Why Tabs instead of Spaces? 16 | 17 | Because I'm lettung YOU use your preferred indentation width, instead of forcing one onto you (also less characters). 18 | -------------------------------------------------------------------------------- /src/base.md: -------------------------------------------------------------------------------- 1 | 000-title-000 2 | 3 | ## Table of contents 4 | 5 | 1. [Install necessary stuff](#install-necessary-stuff) 6 | 1. [Create a clean prefix](#create-a-clean-prefix) 7 | 1. [wineasio](#wineasio) 8 | 1. [Installing RS_ASIO](#installing-rs_asio) 9 | 1. [Set up JACK](#set-up-jack) 10 | 1. [Starting the game](#starting-the-game) 11 | 1. [Troubleshooting](/guides/troubleshooting.md) 12 | 13 | # Install necessary stuff 14 | 15 | (I recommend `wine-staging` if your distro has it, but usual `wine` works as well.) 16 | 17 | 000-install-necessary-000 18 | # the groups should already exist, but just in case 19 | sudo groupadd audio 20 | sudo groupadd realtime 21 | sudo usermod -aG audio $USER 22 | sudo usermod -aG realtime $USER 23 | ``` 24 | 25 | 000-install-necessary-post-000 26 | 27 |
How to check if this worked correctly 28 | 29 | > For the packages, do `000-list-inst-000 ` (You can do multiple packages at once). Should output the names and versions without errors. 30 | > 31 | > For the groups, run `groups`. This will give you a list, which should contain "audio" and "realtime". 32 |
33 | 34 | # Create a clean prefix 35 | 36 | Set the Proton version you want to use. There's two ways to do this. In Steam 37 | 38 | * go to `Settings` ➞ `Compatibility` ➞ `Enable Steam play for all other titles`, then restart Steam. 39 | * open your library, right click Rocksmith and go to`Properties` ➞ `Compatibility` and force one. 40 | 41 | Delete or rename `$STEAMLIBRARY/steamapps/compatdata/221680`, then start Rocksmith and stop the game once it's running. 42 | 43 | The rest will be set up later. 44 | 45 | # wineasio 46 | 47 | 000-wineasio-install-000 48 | 49 | To make Proton use wineasio, we need to copy these files into the appropriate locations. 50 | 51 | **STOP!** If you haven't set the environment variables yet, please follow [this part](/README.md#common-paths) of the prerequisites, then continue. 52 | 53 | ``` 54 | cp 000-lib32unix-000/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio32.dll.so" 55 | cp 000-lib32windows-000/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio32.dll" 56 | cp 000-lib64unix-000/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio64.dll.so" 57 | cp 000-lib64windows-000/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio64.dll" 58 | ``` 59 | 60 | In theory, this should also work with Lutris runners (located in `$HOME/.local/share/lutris/runners/wine/`) 61 | 62 | To register wineasio (so that it can be used in the prefix), run the `wineasio-register` script that comes in the wineasio zip and set the `WINEPREFIX` to Rocksmiths. 63 | 64 | ``` 65 | env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx 000-wineasio-register-000 66 | ``` 67 | 68 | Errors outputted by this command are expected. The important one is the message at the end saying "regsvr32: Successfully registered DLL ..." or "regsvr32: Failed to register ...". 69 | 70 |
How to check if this worked correctly 71 | 72 | > Download this: [VBAsioTest_1013.zip](https://download.vb-audio.com/Download_MT128/VBAsioTest_1013.zip) 73 | > 74 | > Extract it somewhere and run a command like this (replace the last path with the correct path that you chose): 75 | > 76 | > ``` 77 | > WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx $PROTON/bin/wine /path/to/VBASIOTest32.exe 78 | > ``` 79 | > !! The command above currently might not work. You can try instead: `LD_PRELOAD=000-libjack-path-000/libjack.so wine /path/to/VBASIOTest32.exe` !! 80 | > 81 |
82 | 83 | ## Installing RS_ASIO 84 | 85 | 1. [Download](https://github.com/mdias/rs_asio/releases) the newest release, unpack everything to the root of your Rocksmith installation (`$STEAMLIBRARY/steamapps/common/Rocksmith2014/`) 86 | 1. Edit RS_ASIO.ini: fill in `wineasio-rsasio` where it says `Driver=`. Do this for every Output and Input section. You could also fill in `WineASIO` instead. 87 | 88 | And you're done with RS_ASIO. But in case you want to configure the inputs further (relevant for multiplayer), see [this](/guides/setup-rs-asio.md). 89 | 90 | ## Set up JACK 91 | 92 | 000-set-up-jack-000 93 | 94 | # Starting the game 95 | 96 | ![](/img/3-start-button.webp) 97 | 98 | 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. 99 | 100 | 000-steam-running-000 101 | 102 | If we start the game from the button that says "Play" in Steam, the game can't connect to wineasio (you won't have sound and will get an error message). This is an issue with Steam and pipewire-jack. There are two ways to go about this. You can apply both at the same time, they don't break each other. 103 | 104 | 000-deck-note-000 105 | 106 |
1. LD_PRELOAD 107 | 108 | * Advantages: Run from Steam directly 109 | * Disadvantages: higher possibility of crashes, steps you might need to do every game-boot. 110 | 111 | Add these launch options to Rocksmith: 112 | ``` 113 | 000-ldpreload-command-000 114 | ``` 115 | 116 | You can launch the game from Steam now. For the first few boot-ups, you have to remove window focus from Rocksmith (typically done with Alt+Tab) as soon as the window shows up. If it doesn't crash, continue with instructions. 117 | 118 | If there is NO message saying "No output device found, RS_ASIO is working fine. If you can hear sound, everything works fine. 119 | 120 | 000-connect-sound-000 121 | 122 | --- 123 | 124 |
125 | 126 |
2. Start script, shortcut in Steam 127 | 128 | * Advantage: Reliable one time setup 129 | * Disadvantages: Another Steam game entry, or having to launch from terminal entirely 130 | 131 | ### Get the start script 132 | 133 | Please select the Proton Version you use (Rocksmith has been working fine since at least Proton 4 btw): 134 | 135 | * [Proton 9 or higher](/guides/start-script/proton-9.md) (newer versions) 136 | * [Proton 8 or lower](/guides/start-script/proton-8.md) (slightly easier) 137 | 138 | We can start the game via this script now: `000-start-via-script-000` 139 | 140 | 000-start-script-pipewire-note-000 141 | 142 | If you want the Steam overlay to work, you need to launch the script via Steam, see the next step. 143 | 144 | ### Making it nice via Steam entry (optional, but recommended) 145 | 146 | With Proton's runtime, we can't start Rocksmith directly from the Steam Library just like that (excluding LD_PRELOAD). But we can use the Steam Library to start the script that starts the game in a way that Steam recognizes. 147 | 148 |
Fitting meme format 149 | 150 | ![](https://i.kym-cdn.com/photos/images/original/002/546/187/fb1.jpg) 151 | 152 |
153 | 154 | Go into your Steam Library and select "Add a game" ➞ "Add a Non-Steam Game" on the bottom left. 155 | 156 | Make sure you can see all files. Select the script we generated just now and add it. This will create a shortcut to the script, which I will refer to as "shortcut" from here on. For Proton versions 8 or lower, right click on the shortcut and select "Properties". Add these launch Options: `PIPEWIRE_LATENCY="256/48000" %command%` 157 | 158 | You can now start the game from Steam. Use the shortcut, it will launch the actual game. 159 | 160 |
If launching the script from Steam doesn't work 161 | 162 | You can try and add it to Lutris, then add a Lutris shortcut by right-clicking and selecting "Create Steam shortcut". 163 | 164 | This works because of how Lutris behaves when games are launched from Steam. All the Steam shortcut does is to notify Lutris to start a game. This is finished when Lutris received the message (= Steam sees it as "stopped"). Lutris then launches the game. 165 | 166 | Important Settings: 167 | 168 | * Runner: Linux 169 | * Working Directory: The folder where your script is. 170 | * Disable Lutris Runtime: true 171 | 000-lutris-env-000 172 |
173 | 174 | ### Beautification (even more optional, but recommended) 175 | 176 | Leaving the shortcut just like that is not pretty, so we're going to change that. 177 | 178 | You can give the games in your Steam Library a custom look. A good Website for resources is the [SteamGridDB](https://www.steamgriddb.com/). 179 | 180 | You can take artwork from [Rocksmith](https://www.steamgriddb.com/game/1841), [Rocksmith 2014](https://www.steamgriddb.com/game/2295), [Rocksmith+](https://www.steamgriddb.com/game/5359161) or anything else you want. I would recommend something that makes the shortcut look different than the game. 181 | 182 | **Name and icon:** Go into the shortcut's Properties. Right under the text "Shortcut" you can change the game's icon and name (both show up in the list on the left in desktop mode). I recommend something like "Rocksmith 2014 - Launcher". 183 | 184 | **"Hero (banner/background)":** Located above the "Play" button in Steam. Right-click on it and choose "set custom background". You can theoretically set a logo too by right-clicking on the text, but I personally chose not to do that to clearly see which item is which. 185 | 186 | **Grid (cover art):** For this it gets a bit harder. Go to `$HOME/.steam/steam/userdata//config/grid`. Since we added a hero, there should be a file that resembles it, so find it with an image viewer. It's called `_hero.` we need the ID. 187 | copy the cover art into this folder and name it `p.`. 188 | 189 | This is how the files look on my system: 190 | 191 | ![](/img/grid-file.webp) 192 | 193 | Launch Big Picture Mode now and find the entry in your Library. It should now have artwork. 194 | 195 | --- 196 | 197 |
198 | 199 | # Troubleshooting 200 | 201 | [Go to Troubleshooting](/guides/troubleshooting.md) 202 | -------------------------------------------------------------------------------- /src/connect-sound/native: -------------------------------------------------------------------------------- 1 | If you cannot hear sound, open QjackCtl and go to "Graph". We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay. I recommend connecting everything before entering a profile. 2 | -------------------------------------------------------------------------------- /src/connect-sound/pipewire: -------------------------------------------------------------------------------- 1 | If you cannot hear sound, open qpwgraph or a different JACK patchbay software of your choice. We want to connect microphones to the inputs of Rocksmith and two outputs to our actual output device. Rocksmith will sometimes crash when messing with the patchbay, so this is how you want to go about it: 2 | 3 | 1. Ideally do it while the game starts up (logo screens appear). The Rocksmit logo is still safe, anything after that is not recommended. 4 | 1. Connect one device to Rocksmith 5 | 1. Window focus to Rocksmith 6 | 1. Go to step one, until you have connected everything 7 | -------------------------------------------------------------------------------- /src/deck-note: -------------------------------------------------------------------------------- 1 | [It has been reported](https://github.com/theNizo/linux_rocksmith/issues/63) that changing the volume crashes Rocksmith, due to a sound being played in KDE plasma. You can disable this by going to "System Settings" ➞ "Audio" ➞ "Configure Volume Controls" and untick "Play audio feedback for changes to". 2 | -------------------------------------------------------------------------------- /src/generate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | trap "exit" INT 4 | 5 | # number echos are meant for debugging purposes, to find the point where it doeesn't behave properly 6 | # basically, it's a bunch of replacements for parts with a specific name. the name in 000--000 and the folder names match. 7 | # list all used variables with: grep -oiP "000-.*-000" base.md 8 | # the only more complicated part is install wineasio, which has a couple variables more. 9 | 10 | echo "-1" 11 | path=../guides/setup 12 | 13 | for dist in arch deb deck fed; do 14 | for sound in native pipewire; do 15 | echo 0 16 | echo "$dist; $sound" # print out, which file is worked on, so it's easier to debug. 17 | filename=$path/$dist-$sound.md 18 | cp base.md $filename # BASE SHOULD NEVER BE CHANGED BY THIS SCRIPT 19 | echo 1 20 | sed -i "s/000-title-000/cat title\/${dist}-${sound}/e" $filename 21 | echo 2 22 | sed -i "s/000-install-necessary-000/cat install-necessary\/${dist}-${sound}/e" $filename #needs fixing 23 | 24 | echo 3 25 | if [ "$dist" = "deck" ] && [ "$sound" = "native" ]; then 26 | echo "deck native post install" 27 | sed -i "s/000-install-necessary-post-000/cat install-necessary-post\/deck-native/e" $filename #needs fixing 28 | else 29 | sed -i "s/000-install-necessary-post-000/cat install-necessary-post\/base/e" $filename #needs fixing 30 | fi 31 | 32 | echo 4 33 | # wineasio install - more complicated section, write later 34 | if ! [ "$dist" = "deb" ]; then # if appliccable 35 | echo 5 36 | sed -i "s/000-wineasio-install-000/cat wineasio-install\/base/e" $filename # set base 37 | sed -i "s/000-base-devel-000/cat wineasio-install\/base-devel\/${dist}-${sound}/e" $filename 38 | if [ "$dist" = "fed" ] && [ "$sound" = "pipewire" ]; then 39 | echo "fedora pipewire wineasio install" 40 | sed -i "s/000-fedora-makefile-000/cat wineasio-install\/fedora-makefile/e" $filename 41 | else 42 | echo 6 43 | sed -i "s/000-fedora-makefile-000//" $filename 44 | fi 45 | if [ "$dist" = "deck" ] && [ "$sound" = "pipewire" ]; then 46 | echo "deck pipewire reinstall" 47 | sed -i "s/000-deck-pipewire-reinstall-000/cat wineasio-install\/deck-pipewire-reinstall/e" $filename 48 | else 49 | echo 7 50 | sed -i "s/000-deck-pipewire-reinstall-000//" $filename 51 | fi 52 | else 53 | echo "debian wineasio install" 54 | sed -i "s/000-wineasio-install-000//" $filename #needs fixing 55 | fi 56 | 57 | echo 8 58 | sed -i "s/000-set-up-jack-000/cat set-up-jack\/${sound}/e" $filename 59 | echo 9 60 | sed -i "s/000-steam-running-000/cat steam-running\/${sound}/e" $filename 61 | echo 10 62 | sed -i "s/000-ldpreload-command-000/cat ldpreload-command\/${sound}/e" $filename 63 | echo 11 64 | sed -i "s/000-connect-sound-000/cat connect-sound\/${sound}/e" $filename 65 | echo 12 66 | if [ "$dist" = "deck" ]; then 67 | sed -i "s/000-deck-note-000/cat deck-note/e" $filename 68 | else 69 | sed -i "s/000-deck-note-000//" $filename 70 | fi 71 | echo 13 72 | sed -i "s/000-start-script-pipewire-note-000/cat start-script-pipewire-note\/${sound}/e" $filename 73 | echo 14 74 | sed -i "s/000-lutris-env-000/cat lutris-env\/${sound}/e" $filename 75 | 76 | echo "replace inline" 77 | ./replace-inline.sh $dist $sound $filename 78 | done 79 | done 80 | 81 | # This will list all the file names, regardless of missing something, or not. If there's a tag that's not replaced, it will appear below the according filename. 82 | echo 13 83 | echo "missing replacements, by file:" 84 | for file in $(ls $path); do 85 | echo $file 86 | cat $path/$file | grep -P "000-" 87 | done 88 | 89 | exit 0 90 | -------------------------------------------------------------------------------- /src/install-necessary-post/base: -------------------------------------------------------------------------------- 1 | Log out and back in. Or reboot, if that doesn't work. 2 | -------------------------------------------------------------------------------- /src/install-necessary-post/deck-native: -------------------------------------------------------------------------------- 1 | Please reboot. 2 | -------------------------------------------------------------------------------- /src/install-necessary/arch-native: -------------------------------------------------------------------------------- 1 | If asked, replace `jack`. 2 | 3 | ``` 4 | # If you use pipewire, I also recommend to install: pipewire-jack-client 5 | # If you use pulseaudio, I also recommend to install: pulseaudio-jack 6 | sudo pacman -S jack2 lib32-jack2 realtime-privileges qjackctl 7 | 8 | -------------------------------------------------------------------------------- /src/install-necessary/arch-pipewire: -------------------------------------------------------------------------------- 1 | I assume that `pipewire` and a session manager (eg. `wireplumber`, or `pipewire-media-session`) is already installed. 2 | 3 | ``` 4 | sudo pacman -S wine-staging pipewire-alsa pipewire-pulse pipewire-jack lib32-pipewire-jack qpwgraph realtime-privileges pavucontrol 5 | -------------------------------------------------------------------------------- /src/install-necessary/deb-native: -------------------------------------------------------------------------------- 1 | Install the kxstudio repo according to these instructions: https://kx.studio/Repositories 2 | 3 | When asked about realtime privileges, select yes with the arrow keys and confirm with enter. 4 | 5 | ``` 6 | # If you use pulseaudio, I also recommend to install: pulseaudio-module-jack pulseaudio-module-jack:i386 7 | sudo apt update 8 | sudo apt install wineasio jackd2 qjackctl libjack-dev libjack-dev:i386 9 | -------------------------------------------------------------------------------- /src/install-necessary/deb-pipewire: -------------------------------------------------------------------------------- 1 | Install the kxstudio repo according to these instructions: https://kx.studio/Repositories 2 | 3 | ``` 4 | sudo dpkg --add-architecture i386 5 | sudo apt update 6 | sudo apt install wine pipewire-alsa pipewire-pulse pipewire-jack pipewire-jack:i386 qpwgraph pavucontrol wineasio 7 | -------------------------------------------------------------------------------- /src/install-necessary/deck-native: -------------------------------------------------------------------------------- 1 | ``` 2 | # disable readonly mode 3 | sudo steamos-readonly disable 4 | 5 | sudo pacman-key --init 6 | sudo pacman-key --populate archlinux 7 | sudo pacman-key --populate holo 8 | 9 | # I also recommend to install: pipewire-jack-client 10 | sudo pacman -S realtime-privileges wine-staging base-devel glibc linux-headers linux-api-headers libtool binutils lib32-glibc lib32-jack2 jack2 qjackctl 11 | -------------------------------------------------------------------------------- /src/install-necessary/deck-pipewire: -------------------------------------------------------------------------------- 1 | Note: Install qpwgraph through Discover (Discover comes preinstalled on Steam Deck) 2 | 3 | ``` 4 | # disable readonly mode 5 | sudo steamos-readonly disable 6 | 7 | sudo pacman-key --init 8 | sudo pacman-key --populate archlinux 9 | sudo pacman-key --populate holo 10 | 11 | sudo pacman -S realtime-privileges wine-staging 12 | # These packages are already on SteamOS so I did not install them: 13 | # pipewire-alsa pipewire-pulse pipewire-jack lib32-pipewire-jack pavucontrol 14 | -------------------------------------------------------------------------------- /src/install-necessary/fed-native: -------------------------------------------------------------------------------- 1 | **This guide will use the Steam package from "RPM Fusion nonfree". This is to avoid sandboxing being complicated for now.** 2 | 3 | An alternative way to do this via Flatpak is described [here](https://github.com/theNizo/linux_rocksmith/issues/31) Please note that the maintainer (theNizo) has no experience with Flatpak. 4 | 5 | ``` 6 | sudo dnf install -y gcc make glibc-devel.i686 wine wine-devel.i686 wine-devel.x86_64 jack-audio-connection-kit-devel.* realtime-setup pavucontrol qpwgraph qjackctl 7 | -------------------------------------------------------------------------------- /src/install-necessary/fed-pipewire: -------------------------------------------------------------------------------- 1 | **This guide will use the Steam package from "RPM Fusion nonfree". This is to avoid sandboxing being complicated for now.** 2 | 3 | An alternative way to do this via Flatpak is described [here](https://github.com/theNizo/linux_rocksmith/issues/31) Please note that the maintainer (theNizo) has no experience with Flatpak. 4 | 5 | I assume that `pipewire` and a session manager (eg. `wireplumber`, or `pipewire-media-session`) is already installed. 6 | 7 | If native JACK is installed already, please remove it by running `sudo dnf remove jack-*` before continuing. 8 | 9 | ``` 10 | sudo dnf install -y gcc make glibc-devel.i686 wine wine-devel.* pipewire-jack*.* pipewire-alsa pipewire-pulseaudio realtime-setup pavucontrol qpwgraph 11 | -------------------------------------------------------------------------------- /src/ldpreload-command/native: -------------------------------------------------------------------------------- 1 | LD_PRELOAD=000-libjack-path-000/libjack.so %command% 2 | -------------------------------------------------------------------------------- /src/ldpreload-command/pipewire: -------------------------------------------------------------------------------- 1 | LD_PRELOAD=000-libjack-path-000/libjack.so PIPEWIRE_LATENCY=256/48000 %command% 2 | -------------------------------------------------------------------------------- /src/list-inst/arch: -------------------------------------------------------------------------------- 1 | pacman -Q 2 | -------------------------------------------------------------------------------- /src/list-inst/deb: -------------------------------------------------------------------------------- 1 | apt list --installed 2 | -------------------------------------------------------------------------------- /src/list-inst/deck: -------------------------------------------------------------------------------- 1 | arch -------------------------------------------------------------------------------- /src/list-inst/fed: -------------------------------------------------------------------------------- 1 | dnf list installed 2 | -------------------------------------------------------------------------------- /src/lutris-env/native: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/src/lutris-env/native -------------------------------------------------------------------------------- /src/lutris-env/pipewire: -------------------------------------------------------------------------------- 1 | * Environment Variables: 2 | * Name: PIPEWIRE_LATENCY 3 | * Value: 256/48000 4 | -------------------------------------------------------------------------------- /src/replace-inline.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ldpreload-command missing 4 | 5 | trap "exit" INT 6 | 7 | # $1: $dist 8 | # $2: sound 9 | # $3: $filename 10 | 11 | case $1 in 12 | arch|deck) 13 | echo "replace inline: arch" 14 | sed -i 's/000-lib64unix-000/\/usr\/lib\/wine\/x86_64-unix/' $3 15 | #echo p1 16 | sed -i "s/000-lib64windows-000/\/usr\/lib\/wine\/x86_64-windows/" $3 17 | #echo p2 18 | sed -i "s/000-lib32unix-000/\/usr\/lib32\/wine\/i386-unix/" $3 19 | #echo p3 20 | sed -i "s/000-lib32windows-000/\/usr\/lib32\/wine\/i386-windows/" $3 21 | sed -i "s/000-lib32-000/lib32/" $3 22 | sed -i "s/000-lib64-000/lib/" $3 23 | sed -i "s/000-libjack-path-000/\/usr\/lib32/" $3 24 | sed -i "s/000-list-inst-000/pacman -Q/" $3 25 | sed -i "s/000-wineasio-register-000/.\/wineasio-register/" $3 26 | ;; 27 | deb) 28 | echo "replace inline: debian" 29 | sed -i 's/000-lib64unix-000/\/usr\/lib\/x86_64-linux-gnu\/wine/' $3 30 | #echo p1 31 | sed -i "s/000-lib64windows-000/\/usr\/lib\/x86_64-linux-gnu\/wine/" $3 32 | #echo p2 33 | sed -i "s/000-lib32unix-000/\/usr\/lib\/i386-linux-gnu\/wine/" $3 34 | #echo p3 35 | sed -i "s/000-lib32windows-000/\/usr\/lib\/i386-linux-gnu\/wine/" $3 36 | sed -i "s/000-lib32-000/lib/" $3 37 | sed -i "s/000-lib64-000/lib64/" $3 38 | sed -i "s/000-libjack-path-000/\/usr\/lib\/i386-linux-gnu\/pipewire-0.3\/jack/" $3 39 | sed -i "s/000-list-inst-000/apt list --installed/" $3 40 | sed -i "s/000-wineasio-register-000/wineasio-register/" $3 41 | ;; 42 | fed) 43 | echo "replace inline: fedora" 44 | sed -i 's/000-lib64unix-000/\/usr\/lib64\/wine\/x86_64-unix/' $3 45 | #echo p1 46 | sed -i "s/000-lib64windows-000/\/usr\/lib64\/wine\/x86_64-windows/" $3 47 | #echo p2 48 | sed -i "s/000-lib32unix-000/\/usr\/lib\/wine\/i386-unix/" $3 49 | #echo p3 50 | sed -i "s/000-lib32windows-000/\/usr\/lib\/wine\/i386-windows/" $3 51 | sed -i "s/000-lib32-000/lib/" $3 52 | sed -i "s/000-lib64-000/lib64/" $3 53 | if [ "$2" = "pipewire" ]; then 54 | sed -i "s/000-libjack-path-000/\/usr\/lib\/pipewire-0.3\/jack/" $3 55 | else 56 | sed -i "s/000-libjack-path-000/\/usr\/lib/" $3 57 | fi 58 | sed -i "s/000-list-inst-000/dnf list installed/" $3 59 | sed -i "s/000-wineasio-register-000/.\/wineasio-register/" $3 60 | ;; 61 | *) 62 | echo "error: could not find out dist" 63 | exit 2 64 | ;; 65 | esac 66 | 67 | case $2 in 68 | native) 69 | echo "replace inline: native" 70 | sed -i "s/000-start-via-script-000/path\/to\/rocksmith-launcher.sh/" $3 71 | ;; 72 | pipewire) 73 | echo "replace inline: pipewire" 74 | sed -i "s/000-start-via-script-000/PIPEWIRE_LATENCY=\"256\/48000\" path\/to\/rocksmith-launcher.sh/" $3 75 | ;; 76 | *) 77 | echo "error: could not find sound" 78 | exit 2 79 | ;; 80 | esac 81 | 82 | exit 0 83 | -------------------------------------------------------------------------------- /src/set-up-jack/native: -------------------------------------------------------------------------------- 1 | Open QjackCtl and go to "Setup". Select 2 | 3 | 1. Driver: alsa 4 | 1. Tick "Realtime" 5 | 1. Sample Rate: 48000 6 | 1. Frames/Period: 256 (my recommendation) 7 | 1. Periods/Buffer: 4 (my recommendation) 8 | 1. Select audio device as described below. 9 | 10 | If you use the same device for input and output, you can set it in the "Parameters" 🡲 "Interface". 11 | 12 | If you use one device for input and one for output (say, RealToneCable and internal soundcard for example), select them in the "Advanced" Tab, as "Output Device" and "Input Device". The number of channels below are usually selected automatically 13 | 14 | Quick note on Frames and Buffer size: More frames equals better quality audio. More Buffer equals more stability. Higher numbers equal higher latency. 256/4 is decent audio with decent delay and works for most people. 15 | 16 | Press apply, close setup and try to start JACK. 17 | -------------------------------------------------------------------------------- /src/set-up-jack/pipewire: -------------------------------------------------------------------------------- 1 | I prefer to set up my audio devices with pavucontrol ("PulseAudio Volume Control"), which works if `pipewire-pulse` is installed. 2 | 3 | It's most reliable to NOT set your devices to Pro-Audio (under "Configuration") and leave pavucontrol open when starting the game. 4 | 5 | All available devices will automatically be tied to Rocksmith, and the game doesn't like you messing around in the patchbay (= it's possible, but would crash often). You default audio device will be taken first, then the others will be assigned. The order can most likely not be predicted. 6 | 7 | If you want to make sure it does what you want, select only one output and just as much inputs as you need (1 input (eg. singleplayer) = 1 device; 2 inputs (eg. 2 Players) = 2 devices, etc.). I like to do this via `pavucontrol`, which works if `pipewire-pulse` is installed. 8 | -------------------------------------------------------------------------------- /src/start-script-pipewire-note/native: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/src/start-script-pipewire-note/native -------------------------------------------------------------------------------- /src/start-script-pipewire-note/pipewire: -------------------------------------------------------------------------------- 1 | If you want to do a little more automation, read [this](/guides/which-guide-should-i-choose.md#i-just-want-to-click-one-button-and-expect-the-thing-to-work-pretty-much-all-the-time) 2 | -------------------------------------------------------------------------------- /src/start-via-script/native: -------------------------------------------------------------------------------- 1 | path/to/rocksmith-launcher.sh 2 | -------------------------------------------------------------------------------- /src/start-via-script/pipewire: -------------------------------------------------------------------------------- 1 | PIPEWIRE_LATENCY="256/48000" path/to/rocksmith-launcher.sh 2 | -------------------------------------------------------------------------------- /src/steam-running/native: -------------------------------------------------------------------------------- 1 | Steam and JACK need to be running. 2 | -------------------------------------------------------------------------------- /src/steam-running/pipewire: -------------------------------------------------------------------------------- 1 | Steam needs to be running. 2 | -------------------------------------------------------------------------------- /src/title/arch-native: -------------------------------------------------------------------------------- 1 | # Native JACK on Arch-based distros 2 | 3 | Tested on Arch Linux 4 | -------------------------------------------------------------------------------- /src/title/arch-pipewire: -------------------------------------------------------------------------------- 1 | # pipewire-jack on Arch-based distros 2 | 3 | Tested on Arch Linux 4 | -------------------------------------------------------------------------------- /src/title/deb-native: -------------------------------------------------------------------------------- 1 | # Native JACK on Debian-based distros 2 | 3 | Last tested on Linux Mint 22. 4 | -------------------------------------------------------------------------------- /src/title/deb-pipewire: -------------------------------------------------------------------------------- 1 | # pipewire-jack on Debian-based distros 2 | 3 | Last tested on Linux Mint 22. 4 | -------------------------------------------------------------------------------- /src/title/deck-native: -------------------------------------------------------------------------------- 1 | # Native JACK on SteamOS 2 | 3 | (Based on [BWagener](https://github.com/BWagener)'s original version) 4 | 5 | Last tested on a Steam Deck on 2025-02-22. 6 | -------------------------------------------------------------------------------- /src/title/deck-pipewire: -------------------------------------------------------------------------------- 1 | # pipewire-jack on SteamOS 2 | 3 | (Thanks to [BWagener](https://github.com/BWagener) for writing this.) 4 | 5 | (I (Nizo) don't own a SteamOS device, but am the only maintainer currently. I therefore rely on reports of other people and try to keep this up to date as best as possible.) 6 | -------------------------------------------------------------------------------- /src/title/fed-native: -------------------------------------------------------------------------------- 1 | # Native JACK on Fedora Workstation 2 | 3 | And Nobara, probably 4 | 5 | Last tested on Fedora Workstation 41. 6 | -------------------------------------------------------------------------------- /src/title/fed-pipewire: -------------------------------------------------------------------------------- 1 | # pipewire-jack on Fedora Workstation 2 | 3 | And Nobara, probably 4 | 5 | Last tested on Fedora Workstation 41. 6 | -------------------------------------------------------------------------------- /src/wineasio-install/base: -------------------------------------------------------------------------------- 1 | ## Install 2 | 3 | 000-base-devel-000 4 | 5 |
Know already what's going on? Here are all commands in one piece without an explanation 6 | 7 | > **If the commands in this collapsible section don't work for you, try the "longer" variant first before asking for help.** 8 | > 9 | > YOU NEED TO HAVE THE $PROTON AND $STEAMLIBRARY VARIABLE SET!! (or replaced with the correct path first) 10 | > 11 | > cd into the unpacked directory, then run this. 12 | > 13 | > ``` 14 | > rm -rf build32 15 | > rm -rf build64 16 | > make 32 17 | > make 64 18 | > sudo cp build32/wineasio32.dll 000-lib32windows-000/wineasio32.dll 19 | > sudo cp build32/wineasio32.dll.so 000-lib32unix-000/wineasio32.dll.so 20 | > sudo cp build64/wineasio64.dll 000-lib64windows-000/wineasio64.dll 21 | > sudo cp build64/wineasio64.dll.so 000-lib64unix-000/wineasio64.dll.so 22 | > cp build32/wineasio32.dll.so "$PROTON/lib/wine/i386-unix/wineasio.dll.so" 23 | > cp build32/wineasio32.dll "$PROTON/lib/wine/i386-windows/wineasio.dll" 24 | > cp build64/wineasio64.dll.so "$PROTON/lib64/wine/x86_64-unix/wineasio.dll.so" 25 | > cp build64/wineasio64.dll "$PROTON/lib64/wine/x86_64-windows/wineasio.dll" 26 | > env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx 000-wineasio-register-000 27 | > ``` 28 | > 29 | > And you're done, continue with [Installing RS_ASIO](#installing-rs_asio). 30 | > 31 |
32 | 33 | [Download](https://github.com/wineasio/wineasio/releases) the newest .tar.gz and unpack it. Open a terminal inside the newly created folder. 34 | 35 | 000-fedora-makefile-000 36 | 37 | ``` 38 | # build 39 | rm -rf build32 40 | rm -rf build64 41 | make 32 42 | make 64 43 | 44 | # Install on normal wine 45 | sudo cp build32/wineasio32.dll 000-lib32windows-000/wineasio32.dll 46 | sudo cp build32/wineasio32.dll.so 000-lib32unix-000/wineasio32.dll.so 47 | sudo cp build64/wineasio64.dll 000-lib64windows-000/wineasio64.dll 48 | sudo cp build64/wineasio64.dll.so 000-lib64unix-000/wineasio64.dll.so 49 | ``` 50 | 51 | 000-deck-pipewire-reinstall-000 52 | 53 | `wineasio` is now installed on your system. 54 | 55 |
How to check if it's installed correctly 56 | 57 | > ``` 58 | > find /usr/000-lib32-000/ -name "wineasio*" 59 | > find /usr/000-lib64-000/ -name "wineasio*" 60 | > ``` 61 | > 62 | > This should output 4 paths (ignore the errors). 63 | > 64 |
65 | 66 | ## Make use of 67 | -------------------------------------------------------------------------------- /src/wineasio-install/base-devel/arch-native: -------------------------------------------------------------------------------- 1 | Installing `base-devel` is very useful for using the AUR and compiling in general. 2 | -------------------------------------------------------------------------------- /src/wineasio-install/base-devel/arch-pipewire: -------------------------------------------------------------------------------- 1 | arch-native -------------------------------------------------------------------------------- /src/wineasio-install/base-devel/deck-native: -------------------------------------------------------------------------------- 1 | Installing `base-devel` is very useful for using the AUR and compiling in general. We installed these and additional needed packages in the first step. 2 | -------------------------------------------------------------------------------- /src/wineasio-install/base-devel/deck-pipewire: -------------------------------------------------------------------------------- 1 | Installing `base-devel` is very useful for using the AUR and compiling in general. 2 | 3 | On SteamOS the following additional packages were required to compile wineasio: 4 | 5 | ``` 6 | # We temporarlily install jack2 so that we can compile wineasio. We'll reinstall pipewire-jack afterwards. 7 | sudo pacman -S base-devel glibc linux-headers linux-api-headers libtool binutils lib32-glibc lib32-jack2 jack2 8 | ``` 9 | -------------------------------------------------------------------------------- /src/wineasio-install/base-devel/fed-native: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/src/wineasio-install/base-devel/fed-native -------------------------------------------------------------------------------- /src/wineasio-install/base-devel/fed-pipewire: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/theNizo/linux_rocksmith/b437090ebc08db8dd2db2905fcd964ef62d0a32a/src/wineasio-install/base-devel/fed-pipewire -------------------------------------------------------------------------------- /src/wineasio-install/deck-pipewire-reinstall: -------------------------------------------------------------------------------- 1 | Please reinstall `pipewire-jack lib32-pipewire-jack` again. 2 | -------------------------------------------------------------------------------- /src/wineasio-install/fedora-makefile: -------------------------------------------------------------------------------- 1 | For Fedora, you need a modified Makefile, which you can download from [here](/guides/Makefile.mk). If the file is outdated, please create an issue and I will update it. 2 | 3 |
Alternatively, you can modify it yourself. 4 | 5 | > The file is called `Makefile.mk` 6 | > 7 | > Replace the line that says `LIBRARIES` (should be line 43) with this: 8 | > 9 | > ``` 10 | > LIBRARIES = -ljack 11 | > ``` 12 | > 13 | > change `wineasio_dll_LDFLAGS` (should be line 62) according to this: 14 | > 15 | > and these below `-L/usr/lib/$(ARCH)-linux-gnu/wine-development \`: 16 | > 17 | > ``` 18 | > -L/usr/lib$(M)/pipewire-0.3/jack \ 19 | > -L/usr/lib/pipewire-0.3/jack \ 20 | > ``` 21 | > 22 |
23 | -------------------------------------------------------------------------------- /src/wineasio-register/base: -------------------------------------------------------------------------------- 1 | ./wineasio-register 2 | -------------------------------------------------------------------------------- /src/wineasio-register/deb: -------------------------------------------------------------------------------- 1 | wineasio-register 2 | --------------------------------------------------------------------------------