linux_rocksmith icon indicating copy to clipboard operation
linux_rocksmith copied to clipboard

Building/registering wineasio on wine >= 10.2

Open adrialdo opened this issue 9 months ago • 23 comments

  1. Which distro do you use? Arch 6.13.6-arch1-1
  2. Which Proton or wine version do you use? Proton Experimental wine 10.3-1
  3. Do you use pipewire? Yes I do.
  4. did you choose the native JACK or pipewire-jack guide? I chose pipewire-jack
  5. What appears to be the problem? (Describe it as best as you can)

I couldn't build 32 version of wineasio but I managed to install it and now all the files needed are in the right directories. Now I can't register wineasio I know the errors in console will appear but my output at the end is "regsvr32: failed to load DLL library wineasio32.dll" and nothing else.

  1. Did you notice any other unexpected behavior? I don't think so except the two errors I described above.

  2. What did you try already? I tried to change from wine to wine-staging and i tried to register other wineasio dlls and it failed too.

  3. Did you do any of the steps differently or leave them out? I ignored errores while trying to make 32 version and just copied the files to the right directories.

Sorry for not streamlining previous post this is my first time on Github and I rarely post on any forum. I'd like to inform that I'm not that experienced with linux since it's my second month using it but I managed to overcome most of the problems I encountered so far until now.

adrialdo avatar Mar 14 '25 16:03 adrialdo

(Thank you. Now I can see the last 3 points. And no worries ^^)

So you have compiled them successfully and they exist in the correct locations.

~~I'm currently having problems building them myself~~, so something has changed. I'll have to figure this out. But you can try the following 2 things in the meantime. EDIT: Can build now. I've replicated it. Trying to find a solution

1: Please run the following commands and make sure it doesn't say "not found" anywhere. (Running them one by one will be easier)

ldd /usr/lib/wine/x86_64-unix/wineasio64.dll.so
ldd /usr/lib32/wine/i386-unix/wineasio32.dll.so

2: I noticed that there's new directories inside /usr/lib/wine. This might be a change in wine. ~~You can try to add the files there too.~~ I have tried it and it doesn't make a difference.

# This would copy it from the place where we already placed them
sudo cp /usr/lib32/wine/i386-unix/wineasio32.dll.so /usr/lib/wine/i386-unix/wineasio32.dll.so
sudo cp /usr/lib32/wine/i386-windows/wineasio32.dll /usr/lib/wine/i386-windows/wineasio32.dll

This does not work for me, but I haven't yet figured out why exactly.

theNizo avatar Mar 14 '25 18:03 theNizo

Yes they exist in the correct locations, I was following your guide step by step and I didn't have wine folder in lib32 (still don't my linux installation has it in "lib" folder so I put it there) and on wineasio github page it says that locations may vary.

1: Here's the output

[adrian@archlinux ~]$ ldd /usr/lib/wine/x86_64-unix/wineasio64.dll.so
       linux-vdso.so.1 (0x0000709660094000)
       libjack.so.0 => /usr/lib/libjack.so.0 (0x0000709660002000)
       libm.so.6 => /usr/lib/libm.so.6 (0x000070965ff0a000)
       libc.so.6 => /usr/lib/libc.so.6 (0x000070965fd18000)
       libpipewire-0.3.so.0 => /usr/lib/libpipewire-0.3.so.0 (0x000070965fc5b000)
       /usr/lib64/ld-linux-x86-64.so.2 (0x0000709660096000)
       libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x000070965fc2d000)

And the second one

[adrian@archlinux ~]$ ldd /usr/lib/wine/i386-unix/wineasio32.dll.so
        linux-gate.so.1 (0xe803a000)
        libjack.so.0 => /usr/lib32/libjack.so.0 (0xe7fae000)
        libm.so.6 => /usr/lib32/libm.so.6 (0xe7eca000)
        libc.so.6 => /usr/lib32/libc.so.6 (0xe7c97000)
        libpipewire-0.3.so.0 => /usr/lib32/libpipewire-0.3.so.0 (0xe7be4000)
        /usr/lib/ld-linux.so.2 (0xe803c000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xe7baf000)

It doesn't says not found and as you can see I need to change directory my wine is not installed in /usr/lib32/ but in usr/lib/wine. Maybe this is the cause of my problems? I'm sure that I'm using multilib.

2: That's probably why I have it in usr/lib/wine/ rather than in usr/lib32/wine in first place. Maybe they changed something in wine.

adrialdo avatar Mar 14 '25 18:03 adrialdo

I have the same problems mentioned here. I installed wineasio using the aur, but that should not make a difference, right?

Do you need any help collecting more data/info for this problem?

themaxw avatar Mar 18 '25 20:03 themaxw

I have the same problems mentioned here.

I know. Everyone with the current package versions will.

theNizo avatar Mar 19 '25 07:03 theNizo

Small info, I haven't looked into it a lot and nothing I've tried worked. Maybe an issue in the wineasio repo is needed? (I have no dev knowledge about wine.)

As a workaround, you could probably downgrade wine-staging (see Arch Linux Archive and its Wiki page). 10.1 is the last version it works with.

theNizo avatar Mar 25 '25 12:03 theNizo

I can confirm i have been able to compile it by downgrading to wine-staging 8.9

mrbean56 avatar Mar 27 '25 05:03 mrbean56

What worked for me was creating a win32 wine prefix with ArchLinux packaged wine-staging

WINEPREFIX=/home/user/.wine32/ WINEARCH=win32 wine wineboot

Copying the wineasio32.dll and wineasio32.dll.so to /usr/lib/wine/{i386-unix|i386-windows} so it is properly detected by regsvr32 for the newer wine versions.

sudo cp /usr/lib32/wine/i386-unix/wineasio32.dll.so /usr/lib/wine/i386-unix
sudo cp /usr/lib32/wine/i386-windows/wineasio32.dll /usr/lib/wine/i386-windows

Then running the wineasio32.dll registration with:

WINEPREFIX=/home/user/.wine32/ regsvr32 wineasio32.dll

Finally, run the game with the created wine prefix:

PIPEWIRE_LATENCY="256/48000" WINEPREFIX=/home/user/.wine32/ wine Rocksmith2014.exe

You will get a message saying to make sure to have steam running but the game will still work just fine, I didn't tested the DLC stuff... But, RS_ASIO will work just fine again to get rid of the annoying latency :)

jgmdev avatar Apr 06 '25 00:04 jgmdev

@jgmdev A significant part of this guide is keeping Steam integration, which you wouldn't get with this exact way. After a few quick searches, I couldn't find an easy way to create a 32 bit prefix with Proton (for this game only). Creating a proton prefix by hand and hacking together some way of Steam integration would take a few extra steps that I 1. haven't figured out yet, 2. don't know if I want to have them.

theNizo avatar Apr 06 '25 09:04 theNizo

@theNizo Proton experimental already seems to use wine32 by default since there is a wine64 executable on ~/.steam/steam/steamapps/common/Proton\ -\ Experimental/files/bin and it is based on older wine v9.x

I tried the following, but...:

cp /usr/lib32/wine/i386-unix/wineasio32.dll.so ~/.steam/steam/steamapps/common/Proton\ -\ Experimental/files/lib/wine/i386-unix
cp /usr/lib32/wine/i386-windows/wineasio32.dll ~/.steam/steam/steamapps/common/Proton\ -\ Experimental/files/lib/wine/i386-windows

Then registering the dll worked:

WINEPREFIX=/home/user/.steam/steam/steamapps/compatdata/221680/pfx  ~/.steam/steam/steamapps/common/Proton\ -\ Experimental/files/bin/wine regsvr32 /home/user/.steam/steam/steamapps/common/Proton\ -\ Experimental/files/lib/wine/i386-windows/wineasio32.dll 

And here comes the but...:

WINEPREFIX=/home/user/.steam/steam/steamapps/compatdata/221680/pfx  ~/.steam/steam/steamapps/common/Proton\ -\ Experimental/files/bin/wine VBASIOTest32.exe

While VBASIOTest32.exe shows the WineAsio device it doesn't produces any sound, I guess this is due to compiling wineasio against a more recent wine version than the one shipped with steam proton which is still on v9.x

I tried to see if I could modify the wineasio makefile to compile against the proton build of wine but sadly valve doesn't ships the needed header files on ~/.steam/steam/steamapps/common/Proton\ -\ Experimental/files/

jgmdev avatar Apr 07 '25 22:04 jgmdev

Proton experimental already seems to use wine32 by default

That's the opposite of what I've read (1, 2; search for "wine64")

Then registering the dll worked:

That's actually useful, I'll try something.

[context VBASIO32] I guess this is due to compiling wineasio

I would guess it's because Proton makes it hard for you. Try adding this to the command: LD_PRELOAD=/usr/lib32/libjack.so

theNizo avatar Apr 08 '25 08:04 theNizo

I would guess it's because Proton makes it hard for you. Try adding this to the command: LD_PRELOAD=/usr/lib32/libjack.so

I did before posting the previous comment and sadly it didn't work.

jgmdev avatar Apr 08 '25 12:04 jgmdev

I thought as much, but now I can confirm a workaround (tried on Arch Linux with packages up to date as of today):

  1. Downgrade to wine 10.1 (EDIT: here's everything needed for Arch)
  2. make wineasio
  3. copy wineasio (to old as well as new places)
  4. register wineasio
  5. update wine
  6. still works.

Still no known solution :(

theNizo avatar Apr 21 '25 13:04 theNizo

There doesn't seem to be an easy way to downgrade wine on Fedora. I tried compiling the stable version and putting that version at the front of my path but it still used the staging version somehow. It seems winebuild is used in the Makefile but I don't have much experience with using wine, does anyone have any advice on this and/or how I might get the 10.1 version of winebuild?

robsassack avatar Apr 21 '25 19:04 robsassack

There doesn't seem to be an easy way to downgrade wine on Fedora.

Honestly, what did I expect?


Remove wine.

Create a new empty folder somewhere (I chose ~/Downloads/wine-install). Go here, download the following files and put them into the folder just created.

Should be ordered alphabetically, but no guarantee.

i686 (8 files)
	wine-alsa-10.1-1.fc42.i686.rpm
	wine-cms-10.1-1.fc42.i686.rpm
	wine-core-10.1-1.fc42.i686.rpm
	wine-ldap-10.1-1.fc42.i686.rpm
	wine-opencl-10.1-1.fc42.i686.rpm
	wine-pulseaudio-10.1-1.fc42.i686.rpm
	wine-smartcard-10.1-1.fc42.i686.rpm
	wine-twain-10.1-1.fc42.i686.rpm

noarch (17 files)
	wine-arial-fonts-10.1-1.fc42.noarch.rpm
	wine-common-10.1-1.fc42.noarch.rpm
	wine-courier-fonts-10.1-1.fc42.noarch.rpm
	wine-desktop-10.1-1.fc42.noarch.rpm
	wine-filesystem-10.1-1.fc42.noarch.rpm
	wine-fixedsys-fonts-10.1-1.fc42.noarch.rpm
	wine-fonts-10.1-1.fc42.noarch.rpm
	wine-marlett-fonts-10.1-1.fc42.noarch.rpm
	wine-ms-sans-serif-fonts-10.1-1.fc42.noarch.rpm
	wine-small-fonts-10.1-1.fc42.noarch.rpm
	wine-symbol-fonts-10.1-1.fc42.noarch.rpm
	wine-system-fonts-10.1-1.fc42.noarch.rpm
	wine-systemd-10.1-1.fc42.noarch.rpm
	wine-tahoma-fonts-10.1-1.fc42.noarch.rpm
	wine-times-new-roman-fonts-10.1-1.fc42.noarch.rpm
	wine-webdings-fonts-10.1-1.fc42.noarch.rpm
	wine-wingdings-fonts-10.1-1.fc42.noarch.rpm

x86_64 (9 files)
	wine-10.1-1.fc42.x86_64.rpm
	wine-alsa-10.1-1.fc42.x86_64.rpm
	wine-cms-10.1-1.fc42.x86_64.rpm
	wine-core-10.1-1.fc42.x86_64.rpm
	wine-ldap-10.1-1.fc42.x86_64.rpm
	wine-opencl-10.1-1.fc42.x86_64.rpm
	wine-pulseaudio-10.1-1.fc42.x86_64.rpm
	wine-smartcard-10.1-1.fc42.x86_64.rpm
	wine-twain-10.1-1.fc42.x86_64.rpm

cd into the folder and run sudo dnf install ./*

That should do it...


If this list is wrong for some reason, dnf will tell you which package you're missing.

theNizo avatar Apr 21 '25 21:04 theNizo

Honestly, what did I expect?

Apologies, I didn't mean to start a distro war. 😅

Thank you very much for the steps, though. I was able to get wineasio installed and the test program works.

I ran Rocksmith using the start script and I'm getting the below error, is there something else I should try and/or should I make another issue for this?

Image

robsassack avatar Apr 22 '25 01:04 robsassack

Seperate issue please ^^ Don't know which wine version you used there. Safest bet would be to stay on 10.1 first. Follow this just to make sure: https://github.com/theNizo/linux_rocksmith/blob/main/guides/troubleshoot-no-sound.md and give me your RS_ASIO log.

I didn't mean to start a distro war.

It's not the first time I mentioned my preferences here. My comment was possibly unnecessary, yes. In any way, keep using what you like.

theNizo avatar Apr 22 '25 14:04 theNizo

I just made Rocksmith work without having to keep my system wine to 10.1 using the following script.
WINE points to a folder where I extracted the wine-staging-10.1 Arch package (https://archive.archlinux.org/packages/w/wine-staging/wine-staging-10.1-1-x86_64.pkg.tar.zst) and the other variables are the same as your guide.

script_dir=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd /tmp/
git clone https://github.com/wineasio/wineasio.git 
cd wineasio
git submodule update --init

if [ -d $script_dir/patches ] && [ -n "$(ls $script_dir/patches/wineasio*)" ]; then
	git am 	$script_dir/patches/wineasio*
fi

make PREFIX=$WINE/usr 32
cp build32/wineasio32.dll $WINE/usr/lib32/wine/i386-windows/wineasio32.dll
cp build32/wineasio32.dll.so $WINE/usr/lib32/wine/i386-unix/wineasio32.dll.so
cp build32/wineasio32.dll $PROTON/lib/wine/i386-windows/wineasio32.dll
cp build32/wineasio32.dll.so $PROTON/lib/wine/i386-unix/wineasio32.dll.so

if [ -d "$WINEPREFIX/drive_c/windows/syswow64" ]; then
	cp build32/wineasio32.dll "${WINEPREFIX}/drive_c/windows/syswow64"
	cp build32/wineasio32.dll.so "${WINEPREFIX}/drive_c/windows/syswow64"
else
	cp build32/wineasio32.dll "${WINEPREFIX}/drive_c/windows/system32"
	cp build32/wineasio32.dll.so "${WINEPREFIX}/drive_c/windows/system32"
fi

The wineasio patch used to make it build against a custom wine is quite trivial :

From 7e231273ef3009fd9dfc92af7a5b141b376fac5f Mon Sep 17 00:00:00 2001
From: Loic Bauer <redacted>
Date: Mon, 26 May 2025 19:09:21 +0200
Subject: [PATCH] Make the prefix configurable to use a custom wine

---
 Makefile.mk | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/Makefile.mk b/Makefile.mk
index 991fd5d..abaccc1 100644
--- a/Makefile.mk
+++ b/Makefile.mk
@@ -14,7 +14,7 @@ endif
 
 wineasio_dll_MODULE   = wineasio$(M).dll
 
-PREFIX                = /usr
+PREFIX                ?= /usr
 SRCDIR                = .
 DLLS                  = $(wineasio_dll_MODULE) $(wineasio_dll_MODULE).so
 
@@ -63,10 +63,11 @@ wineasio_dll_LDFLAGS  = -shared \
 			-m$(M) \
 			-mnocygwin \
 			wineasio.dll.spec \
-			-L/usr/lib$(M)/wine \
-			-L/usr/lib/wine \
-			-L/usr/lib/$(ARCH)-linux-gnu/wine \
-			-L/usr/lib/$(ARCH)-linux-gnu/wine-development \
+			-L$(PREFIX)/lib$(M)/wine \
+			-L$(PREFIX)/lib$(M)/wine/$(ARCH)-unix \
+			-L$(PREFIX)/lib/wine \
+			-L$(PREFIX)/lib/$(ARCH)-linux-gnu/wine \
+			-L$(PREFIX)/lib/$(ARCH)-linux-gnu/wine-development \
 			-L/opt/wine-stable/lib \
 			-L/opt/wine-stable/lib/wine \
 			-L/opt/wine-stable/lib$(M) \
-- 
2.49.0


I did try it with a clean wine package, a clean proton (GE-10.3) and a newly generated prefix, so building the 64bit libs and using wineasio-register don't seem to be necessary.

bauerloic avatar May 27 '25 09:05 bauerloic

I don't quite understand why you did it this way, since the point of staying on 10.1 was keeping regsvr32 in a working state.

That said

I was previously against copying the files by hand, since regsvr32 does more than just copying (https://en.wikipedia.org/wiki/Regsvr32). However, if that's all it takes, I might recommend just copying them to the prefix until regsvr32 works again. Simplest way for now.

theNizo avatar May 31 '25 12:05 theNizo

Finally updated the guide. I'd like to keep this issue open until registering works again.

~~Fedora users, please check if the path update is correct. I changed /usr/lib/wine/i386-windows/wineasio32.dll to /usr/lib64/wine/i386-windows/wineasio32.dll, which would be equivalent to the change on Arch. Haven't confirmed if it's correct on Fedora though.~~ Reverted, nvm.

theNizo avatar Jun 08 '25 10:06 theNizo

Oh well, guess why I don't like just copying it by hand - I recently reinstalled my system and now the setup doesn't work.

theNizo avatar Jun 08 '25 11:06 theNizo

Okay, this is weird.

Starting with a wine version later than 10.2, I did the whole setup and it didn't work.

Switched back to wine 10.1. built, installed and registered wineasio. Worked.

Then upgraded to the current wine version (10.8), built, installed and in this case copied wineasio. NOW it works!?


Just copying is not a fix.

theNizo avatar Jun 08 '25 11:06 theNizo

It's weird indeed, I just did a fresh install of CachyOS, and installed wine-staging 10.8 along with the pipewire-jack libs.

Using the script I posted above everything works fine with GE-10.4 without needing to downgrade wine or using regsvr32.

bauerloic avatar Jun 10 '25 20:06 bauerloic

It's weird indeed, I just did a fresh install of CachyOS, and installed wine-staging 10.8 along with the pipewire-jack libs.

Using the script I posted above everything works fine with GE-10.4 without needing to downgrade wine or using regsvr32.

I would like to add my experience to this. I am on EndeavourOS (Arch-based). wine32 (10.13-1) instead of wine-staging worked when trying to build libraries for wineasio. Followed the instructions in this repository and then had to manually copy 32-bit .dll and .dll.so files due to wineasio-register not working - I put them into system32 folder. After creating a launch script, I got sound and Rocksmith did not crash in comparison to LD_PRELOAD=/usr/lib32/libjack.so PIPEWIRE_LATENCY=256/48000 %command%.

virusapex avatar Aug 20 '25 02:08 virusapex

I used this copr repo for installing an older wine version (9.21) on Fedora 43 and also installed wineasio through that instead of compiling it myself.

Sajeg avatar Dec 02 '25 14:12 Sajeg