theNizo / linux_rocksmith

Guides to get Rocksmith 2014 running on Linux
https://thenizo.github.io/linux_rocksmith/
GNU General Public License v3.0
92 stars 9 forks source link

Fedora Guide #21

Closed vscsilva closed 1 year ago

vscsilva commented 1 year ago

A Fedora guide would be great.

damnms commented 1 year ago

Jop, i am currently trying to get that up and running but fail with wineasio. I compiled the 32 bit and 64 bit .dll/.dll.so and was able to register... at least wine64 regsrv32 wineasio.dll told me it should have been registered. seems like the pfx wineprefix is 64 bit, so i tried it with the 64 bit dll, but running winecfg does not show any wineasio in the libraries. same with the 32 bit version.

theNizo commented 1 year ago

wine64 regsrv32 wineasio.dll

I'm not sure if that's how you meant it, but regsvr32 is a standalone command that doesn't need wine in front of it. In fact, in older wine versions wine regsvr32 did work, but the last time I tried, it didn't with a newer one.

i tried it with the 64 bit dll

Rocksmith is 32 bit and therefore needs the 32 bit dll.

I can confirm though, that the prefix seems to be 64 bit, judging by the C:\Windows\SysWow64 folder

damnms commented 1 year ago

wine64 regsrv32 should be used on 64bit prefixes, which is the case for the pfx folder where rocksmith is inside, so i am not sure if the 32 bit dll should be used or the 64 bit dll, but i would assume that wine runs in 64 bit mode, it should be the 64 bit dll so i can use winecfg and override it

but as mentioned, it did neither work with 32 bit nor with 64 bit wineasio.dll

[oli@DESKTOP-E83VF5L ~]$ echo $WINEPREFIX
/home/oli/.steam/steam/steamapps/compatdata/221680/pfx
[oli@DESKTOP-E83VF5L ~]$ regsvr32 /usr/lib/wine/i386-unix/wineasio.dll
002c:fixme:winediag:LdrInitializeThunk wine-staging 7.12 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
regsvr32: DLL '/usr/lib/wine/i386-unix/wineasio.dll' erfolgreich registriert
[oli@DESKTOP-E83VF5L ~]$ regsvr32 /usr/lib/wine/i386-unix/wineasio.dll.so 
regsvr32: DLL '/usr/lib/wine/i386-unix/wineasio.dll.so' erfolgreich registriert
[oli@DESKTOP-E83VF5L ~]$ winecfg 

nothing in winecfg -> libraries with name wineasio

theNizo commented 1 year ago

wine64 regsrv32 should be used on 64bit prefixes

This might be information about wine that I don't/didn't know, I'm not an expert on wine after all. Haven't looked it up yet.

However (each tried with a fresh prefix):

wine64 regsvr32 <32-bit dll> # Failed to register
wine64 regsvr32 <64-bit dll> # Successfully registers and game doesn't detect output.
wine64 regsvr <32-bit dll> # Failed
wine64 regsvr <64-bit dll> # Failed
regsvr32 <32-bit dll> # Works
regsvr32 <64-bit dll> # Failed to register
regsvr <32-bit dll> # unknown command
regsvr <64-bit dll> # unknown command
wine regsvr32 <whatever> # Seems to be working again...

but i would assume that wine runs in 64 bit mode, it should be the 64 bit dll

A 32 bit program on a 64 bit Windows machine wouldn't use 64 bit resources, because it's made to (also) be used on 32 bit machines. Rocksmith is a 32 bit software (you can run file Rocksmith2014.exe on it to see yourself) and needs the 32 bit dll.

nothing in winecfg -> libraries with name wineasio

https://github.com/theNizo/linux_rocksmith/blob/main/guides/unused.md (TL/DR: Don't worry about that step.)

damnms commented 1 year ago

regsvr32 <32-bit dll> # Works

and as mentioned, this does not work on my side. when i go to libraries, click "add", there is no wineasio to select. When i run ASIOSigGen.exe in that prefix, it says: no asio device. so this is absolutely no step that can simply be skipped. maybe some magic happens when the .dll/.dll.so is copied somewhere, dont know.

this is the log i get:

[oli@DESKTOP-E83VF5L Rocksmith2014]$ cat RS_ASIO-log.txt 
0.000 [INFO]   - Wrapper DLL loaded (v0.6.3)
0.000 [INFO]  PatchOriginalCode
0.050 [INFO]  image crc32: 0xd1b38fcb
0.330 [INFO]  Patching CoCreateInstance
0.330 [INFO]  Patch_CallAbsoluteIndirectAddress - num locations: 2
0.330 [INFO]  Patching call at 00C02DBD
0.330 [INFO]  Patching call at 00E75278
0.330 [INFO]  Patching PortAudio MarshalStreamComPointers
0.330 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.330 [INFO]  Patching call at 00E7483F
0.330 [INFO]  Patching PortAudio UnmarshalStreamComPointers
0.330 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.330 [INFO]  Patching call at 00E748F4
0.330 [INFO]  Patching Two Guitar Tones Connected Message Box (num locations: 1)
0.330 [INFO]  Patching bytes at 007C0C5F
0.330 [INFO]  Patched_CoCreateInstance called: IID_IMMDeviceEnumerator
0.330 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia
0.330 [INFO]  RSAggregatorDeviceEnum::UpdateAvailableDevices
0.330 [INFO]  AsioHelpers::FindDrivers
0.333 [INFO]    WineASIO
0.333 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: WineASIO
0.333 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
0.334 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
0.334 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.334 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: WineASIO
0.334 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
0.335 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
0.335 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.335 [INFO]  DebugDeviceEnum::UpdateAvailableDevices - 0 render devices, 0 capture devices
0.335 [INFO]    hr: 80070490
0.335 [INFO]    *ppEndpoint: 00000000
0.335 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia
0.335 [INFO]    hr: 80070490
0.335 [INFO]    *ppEndpoint: 00000000
0.335 [INFO]  DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1
0.335 [INFO]    hr: S_OK
0.335 [INFO]    *ppDevices: 1043BE30
3.069 [INFO]  Patched_CoCreateInstance called: IID_IMMDeviceEnumerator
3.070 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia
3.070 [INFO]  RSAggregatorDeviceEnum::UpdateAvailableDevices
3.070 [INFO]  AsioHelpers::FindDrivers
3.070 [INFO]    WineASIO
3.070 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: WineASIO
3.070 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
3.072 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
3.072 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
3.072 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: WineASIO
3.072 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
3.074 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
3.074 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
3.074 [INFO]  DebugDeviceEnum::UpdateAvailableDevices - 0 render devices, 0 capture devices
3.074 [INFO]    hr: 80070490
3.074 [INFO]    *ppEndpoint: 00000000
3.074 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia
3.074 [INFO]    hr: 80070490
3.074 [INFO]    *ppEndpoint: 00000000
3.074 [INFO]  DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1
3.074 [INFO]    hr: S_OK
3.074 [INFO]    *ppDevices: 1043FE70
3.075 [INFO]  DebugDeviceEnum::RegisterEndpointNotificationCallback
41.630 [INFO]  DebugDeviceEnum::UnregisterEndpointNotificationCallback
41.790 [INFO]   - Wrapper DLL unloaded

so it finds a wineasio device but is not able to use the .dll

i added the wineasio entry myself for testing and set it to builtin, then native, but did not help in any way.

theNizo commented 1 year ago

when i go to libraries, click "add", there is no wineasio to select.

Ok, I think there's been a misunderstanding here. With "working" I meant that the game has sound. I can confirm the dll not listed in winecfg on my working setup (and don't remember there ever being a dropdown, but that's another topic). But AFAIK, you should be fine if the following command outputs two paths: find $WINEPREFIX -name "wineasio.dll"

so this is absolutely no step that can simply be skipped.

I'm not sure if you're talking about the winecfg step, or the registering command. winecfg can be skipped, the registering command cannot.

so it finds a wineasio device but is not able to use the .dll

Did you start the game from the "Play" button in Steam, or from the terminal?

damnms commented 1 year ago

I did start it from steam with the play button maybe we have some misunderstandings, english is not my native language, so maybe i read some parts wrong ;)

find $WINEPREFIX -name "wineasio.dll" returns nothing, as i did not copy that file manually. maybe thats a problem. i will copy that file into the prefix and test again

damnms commented 1 year ago

i copied the .dll and .dll.so in $WINEPREFIX's system/system32 and now the game does start but freezes quiet early. the output of the rs asio debug log:

[oli@DESKTOP-E83VF5L Rocksmith2014]$ cat RS_ASIO-log.txt 
0.000 [INFO]   - Wrapper DLL loaded (v0.6.3)
0.000 [INFO]  PatchOriginalCode
0.049 [INFO]  image crc32: 0xd1b38fcb
0.190 [INFO]  Patching CoCreateInstance
0.190 [INFO]  Patch_CallAbsoluteIndirectAddress - num locations: 2
0.191 [INFO]  Patching call at 00C02DBD
0.191 [INFO]  Patching call at 00E75278
0.191 [INFO]  Patching PortAudio MarshalStreamComPointers
0.191 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.191 [INFO]  Patching call at 00E7483F
0.191 [INFO]  Patching PortAudio UnmarshalStreamComPointers
0.191 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.191 [INFO]  Patching call at 00E748F4
0.191 [INFO]  Patching Two Guitar Tones Connected Message Box (num locations: 1)
0.191 [INFO]  Patching bytes at 007C0C5F
0.191 [INFO]  Patched_CoCreateInstance called: IID_IMMDeviceEnumerator
0.191 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia
0.191 [INFO]  RSAggregatorDeviceEnum::UpdateAvailableDevices
0.191 [INFO]  AsioHelpers::FindDrivers
0.194 [INFO]    WineASIO
0.194 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: WineASIO
0.194 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
0.201 [ERROR]  ASIO Error: WineASIO does not return error messages

0.201 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
0.201 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.201 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: WineASIO
0.201 [INFO]  Creating AsioSharedHost - dll: wineasio.dll
0.205 [ERROR]  ASIO Error: WineASIO does not return error messages

0.205 [INFO]  Destroying AsioSharedHost - dll: wineasio.dll
0.206 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.206 [INFO]  DebugDeviceEnum::UpdateAvailableDevices - 0 render devices, 0 capture devices
0.206 [INFO]    hr: 80070490
0.206 [INFO]    *ppEndpoint: 00000000
0.206 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia
0.206 [INFO]    hr: 80070490
0.206 [INFO]    *ppEndpoint: 00000000
0.206 [INFO]  DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1
0.206 [INFO]    hr: S_OK
0.206 [INFO]    *ppDevices: 146EBE30
theNizo commented 1 year ago

(English version below, in case I guessed wrong with german, or you're not @damnms)


Du, ich sprech auch deutsch (hab den Terminal-output gesehen und daran geurteilt), also wenn dir das leichter fällt, können wir das machen. Es ist halt jetzt so ziemlich individuelle Fehlerbehebung, weshalb ich weitere Probleme, die dir in den Weg kommen, auf ein eigenes Issue auslagern würde. Dann kann ich besser erklären, ohne dass andere Leute hier unnötig viele Nachrichten lesen, die mit individueller Fehlerbehebung zu tun haben.

Ich nehme mal an, dass du wineasio korrekt auf deinem System installiert hast und RS_ASIO scheint ebenfalls richtig eingerichtet. regsvr32 fügt dir u.a. die DLLs in zwei Verzeichnisse im Prefix. Daher sollte der find Befehl auch etwas ausgeben. Wie gesagt, so wie ich es gemacht habe, ist der Befehl gut durchgelaufen. Bei dir scheinbar auch.

Jetzt darfst du das Spiel aber nicht über die Steam Oberfläche starten (frag mich nicht, warum, das versteh ich auch (noch) nicht), sondern wir werden es über das Terminal machen. Gehe in den Pfad, in dem Rocksmith installiert ist und führe von dort aus den letzten Befehl aus meinem Guide aus.


(this is not a complete translation as I explained a few things that I've already explained in english.)

I probably should have done this earlier, but this turned into individual debugging. If this comment doesn't solve your problem, or new problems arise, please open a seperate issue.

Don't copy by hand, that should happen with the regsvr32 command. That's why the find command is supposed to return something. If you've done this, look up "Starting the game" in my guide. TL/DR: Use a terminal, cd into the root of your Rocksmith installation and run the last command in the whole guide.

damnms commented 1 year ago

moved to https://github.com/theNizo/linux_rocksmith/issues/23

Siarkowy commented 1 year ago

Running Fedora Silverblue as my desktop OS. I was able to toolbox enter a clean f37 container, followed by:

# install build deps
sudo dnf install -y gcc make glibc-devel.i686 wine-devel.i686 wine-devel.x86_64 pipewire-jack-audio-connection-kit-devel.i686

# allow linker to find libjack (only needed for build)
# probably a bad workaround for broken pkg-config
sudo ln -s libjack.so.0 /usr/lib64/pipewire-0.3/jack/libjack.so

Afterwards, was able to build latest wineasio v1.1.0 after modifying the makefiles:

diff --git a/Makefile.mk b/Makefile.mk
index 3351d5e..0b3df8c 100644
--- a/Makefile.mk
+++ b/Makefile.mk
@@ -40,7 +40,7 @@ INCLUDE_PATH         += -I/opt/wine-stable/include
 INCLUDE_PATH         += -I/opt/wine-stable/include/wine/windows
 INCLUDE_PATH         += -I/opt/wine-staging/include
 INCLUDE_PATH         += -I/opt/wine-staging/include/wine/windows
-LIBRARIES             = $(shell pkg-config --libs jack)
+LIBRARIES             = -ljack

 # 64bit build needs an extra flag
 ifeq ($(M),64)
@@ -63,10 +63,14 @@ wineasio_dll_LDFLAGS  = -shared \
            -m$(M) \
            -mnocygwin \
            $(wineasio_dll_MODULE:%=%.spec) \
+           -L/usr/lib$(M) \
+           -L/usr/lib \
            -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/usr/lib$(M)/pipewire-0.3/jack \
+           -L/usr/lib/pipewire-0.3/jack \
            -L/opt/wine-stable/lib \
            -L/opt/wine-stable/lib/wine \
            -L/opt/wine-stable/lib$(M) \
% make clean 32 64

Seems to be the minimal changes required to make it work, but feel free to tinker more.

Siarkowy commented 1 year ago

Didn't go anywhere further though, since I got Steam installed as flatpak.

(Also trying to tackle it by building wineasio as a flatpak addon, but that's early in progress.)

damnms commented 1 year ago

the dll is available from copr, there are also build instructions iirc. what you posted is also listed as bug or so in wineasio. but even with the .dll, you probably wont be able to get it working. i tried for 2-3 days and failed. there is an application for testing that wineasio works (correctly registered). it produces some sounds out of the wineasio device. i ran this application about 20 times, 2-3 times it produced sound. so even if you think you might have it, it might be only luck. there seems to be some race conditions and whatever.

https://github.com/wineasio/wineasio/issues/58 https://github.com/wineasio/wineasio/issues/57

test application including bug report, probably nr. 1 to continue when this wierd behaviour occurs and re-open that: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1495

theNizo commented 1 year ago

@Siarkowy okay, thank you, that works and I wouldn't have found out myself. Shouldn't have deleted my comment after all.

EDIT: VBASIOTest32.exe works with just wine. Let's look further.

theNizo commented 1 year ago

Since sandboxing probably creates obstacles, would you be fine with Steam from the rpmfusion nonfree repo?

Siarkowy commented 1 year ago

Yeah, sandboxing makes this even more complicated. I'll try to install steam natively as a layered package on my f37 laptop instead. (However, if flatpak is solved, it makes it portable regardless of OS. Pipewire becomes the only hard requirement.)

Not sure if wineasio.dll{,.so} need to be placed in /usr/lib{,64} or it is enough to put that in comopatibilitytools.d/? I'm trying to understand, how regsvr32 actually works and where the libs are expected.

theNizo commented 1 year ago

sandboxing

Come to think of it, can't you adjust what is accessible and what isn't? Because then you could look for the needed files once we get it running.

Not sure if wineasio.dll{,.so} need to be placed in /usr/lib{,64} or it is enough to put that in compatibilitytools.d/

Since the regsvr32 command changed recently, there might be a change. I can test this when I'm back home. The safest bet is to install wineasio properly with these commands (adjusted for Fedora):

sudo cp build32/wineasio.dll /usr/lib/wine/i386-windows/wineasio.dll
sudo cp build32/wineasio.dll.so /usr/lib/wine/i386-unix/wineasio.dll.so
sudo cp build64/wineasio.dll /usr/lib64/wine/x86_64-windows/wineasio.dll
sudo cp build64/wineasio.dll.so /usr/lib64/wine/x86_64-unix/wineasio.dll.so

Never without an EDIT: And also copy them to your Proton install

damnms commented 1 year ago

EDIT: VBASIOTest32.exe works with just wine. Let's look further.

did you only execute it, or did you run the application with the asio device selected? this is a huge difference. if the later, please paste the output.

theNizo commented 1 year ago
cd
rm -rf wine-test
INEPREFIX=$HOME/wine-test regsvr32 /usr/lib/wine/i386-windows/wineasio.dll
WINEPREFIX=$HOME/wine-test wine Downloads/VBAsioTest_1013/VBASIOTest32.exe

Since you wanted to know it for THAT sure, I then select "Devices" -> "ASIO: WineASIO"

Results in a beep and this view (working as it should):

Screenshot_2023-05-08_13-27-12_1920x1080

damnms commented 1 year ago

great, in that case it seems like this is really a big progress compared to the old wine 7.x version. maybe i'll give it a try the next days. just to be sure: can you maybe do this 3-4 times? :P just want to see if it really does not crash

Siarkowy commented 1 year ago

The safest bet is to install wineasio properly with these commands (adjusted for Fedora):

So in Silverblue, /usr/lib{,64} is not writable. However, maybe installing wineasio from copr works; this would provide necessary libs in /usr for regsvr. Then, only wineasio.dll need to be put into Proton installation.

I'll let you know if I got anything new.

damnms commented 1 year ago

when you use wineasio from copr, there are some things to adjust. self-compiling was more easy (at least for me ;) )

theNizo commented 1 year ago

Alright, results:

Should work just fine, theoretically.

RS_ASIO-log.txt ``` 0.000 [INFO] - Wrapper DLL loaded (v0.6.3) 0.000 [INFO] PatchOriginalCode 0.118 [INFO] image crc32: 0xd1b38fcb 0.896 [INFO] Patching CoCreateInstance 0.896 [INFO] Patch_CallAbsoluteIndirectAddress - num locations: 2 0.896 [INFO] Patching call at 00C02DBD 0.896 [INFO] Patching call at 00E75278 0.896 [INFO] Patching PortAudio MarshalStreamComPointers 0.896 [INFO] Patch_CallRelativeAddress - num locations: 1 0.896 [INFO] Patching call at 00E7483F 0.896 [INFO] Patching PortAudio UnmarshalStreamComPointers 0.896 [INFO] Patch_CallRelativeAddress - num locations: 1 0.896 [INFO] Patching call at 00E748F4 0.896 [INFO] Patching Two Guitar Tones Connected Message Box (num locations: 1) 0.896 [INFO] Patching bytes at 007C0C5F 0.898 [INFO] Patched_CoCreateInstance called: IID_IMMDeviceEnumerator 0.899 [INFO] DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia 0.899 [INFO] RSAggregatorDeviceEnum::UpdateAvailableDevices 0.899 [INFO] AsioHelpers::FindDrivers 0.902 [INFO] WineASIO 0.902 [INFO] RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: WineASIO 0.902 [INFO] Creating AsioSharedHost - dll: wineasio.dll 1.152 [INFO] ASIO input channels info: 1.153 [INFO] 0 - active: 0, channel: 0, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_1 1.153 [INFO] 1 - active: 0, channel: 1, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_2 1.153 [INFO] 2 - active: 0, channel: 2, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_3 1.153 [INFO] 3 - active: 0, channel: 3, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_4 1.153 [INFO] 4 - active: 0, channel: 4, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_5 1.153 [INFO] 5 - active: 0, channel: 5, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_6 1.153 [INFO] 6 - active: 0, channel: 6, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_7 1.153 [INFO] 7 - active: 0, channel: 7, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_8 1.153 [INFO] 8 - active: 0, channel: 8, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_9 1.153 [INFO] 9 - active: 0, channel: 9, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_10 1.153 [INFO] 10 - active: 0, channel: 10, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_11 1.153 [INFO] 11 - active: 0, channel: 11, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_12 1.153 [INFO] 12 - active: 0, channel: 12, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_13 1.153 [INFO] 13 - active: 0, channel: 13, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_14 1.153 [INFO] 14 - active: 0, channel: 14, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_15 1.153 [INFO] 15 - active: 0, channel: 15, group: 0, isInput: 1, type: ASIOSTFloat32LSB, name: in_16 1.153 [INFO] ASIO output channels info: 1.153 [INFO] 0 - active: 0, channel: 0, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_1 1.153 [INFO] 1 - active: 0, channel: 1, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_2 1.153 [INFO] 2 - active: 0, channel: 2, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_3 1.153 [INFO] 3 - active: 0, channel: 3, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_4 1.153 [INFO] 4 - active: 0, channel: 4, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_5 1.153 [INFO] 5 - active: 0, channel: 5, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_6 1.153 [INFO] 6 - active: 0, channel: 6, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_7 1.153 [INFO] 7 - active: 0, channel: 7, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_8 1.153 [INFO] 8 - active: 0, channel: 8, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_9 1.153 [INFO] 9 - active: 0, channel: 9, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_10 1.153 [INFO] 10 - active: 0, channel: 10, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_11 1.153 [INFO] 11 - active: 0, channel: 11, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_12 1.153 [INFO] 12 - active: 0, channel: 12, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_13 1.153 [INFO] 13 - active: 0, channel: 13, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_14 1.153 [INFO] 14 - active: 0, channel: 14, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_15 1.153 [INFO] 15 - active: 0, channel: 15, group: 0, isInput: 0, type: ASIOSTFloat32LSB, name: out_16 1.153 [INFO] RSAsioDeviceEnum::UpdateAvailableDevices - OK 1.153 [INFO] RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: WineASIO 1.153 [INFO] RSAsioDeviceEnum::UpdateAvailableDevices - OK 1.153 [INFO] DebugDeviceEnum::UpdateAvailableDevices - 1 render devices, 1 capture devices 1.153 [INFO] hr: S_OK 1.153 [INFO] *ppEndpoint: 027546A0 1.153 [INFO] DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia 1.153 [INFO] hr: S_OK 1.153 [INFO] *ppEndpoint: 02754820 1.153 [INFO] DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1 1.154 [INFO] hr: S_OK 1.154 [INFO] *ppDevices: 02762998 1.154 [INFO] {ASIO Out} DebugWrapperDevice::OpenPropertyStore - stgmAccess: 0 1.154 [INFO] {ASIO Out} DebugWrapperDevicePropertyStore::GetCount 1.154 [INFO] *cProps: 2 1.154 [INFO] {ASIO Out} DebugWrapperDevice::QueryInterface - riid: IID_IMMEndpoint 1.154 [INFO] {ASIO Out} DebugWrapperEndpoint::GetDataFlow 1.154 [INFO] *pDataFlow: eRender 1.154 [INFO] {ASIO Out} DebugWrapperDevice::Activate - Activate iid: IID_IAudioClient dwClsCtx: 1 1.154 [INFO] {ASIO Out} DebugWrapperAudioClient::GetDevicePeriod 1.154 [INFO] {ASIO Out} RSAsioAudioClient::~RSAsioAudioClient 1.154 [INFO] {ASIO IN 0} DebugWrapperDevice::OpenPropertyStore - stgmAccess: 0 1.154 [INFO] {ASIO IN 0} DebugWrapperDevicePropertyStore::GetCount 1.154 [INFO] *cProps: 5 1.154 [INFO] {ASIO IN 0} DebugWrapperDevice::QueryInterface - riid: IID_IMMEndpoint 1.154 [INFO] {ASIO IN 0} DebugWrapperEndpoint::GetDataFlow 1.154 [INFO] *pDataFlow: eCapture 1.154 [INFO] {ASIO IN 0} DebugWrapperDevice::Activate - Activate iid: IID_IAudioClient dwClsCtx: 1 1.154 [INFO] {ASIO IN 0} DebugWrapperAudioClient::GetDevicePeriod 1.154 [INFO] {ASIO IN 0} RSAsioAudioClient::~RSAsioAudioClient 1.157 [INFO] {ASIO Out} DebugWrapperDevice::Activate - Activate iid: IID_IAudioClient dwClsCtx: 17 1.157 [INFO] {ASIO Out} DebugWrapperAudioClient::IsFormatSupported - ShareMode: Exclusive 1.158 [INFO] {ASIO Out} DebugWrapperAudioClient::Initialize - ShareMode: Exclusive Flags: 40000 bufferDuration: 3ms periodicity: 3ms 1.158 [INFO] {ASIO Out} RSAsioAudioClient::Initialize - host requested buffer duration: 3ms (144 frames) 1.158 [INFO] {ASIO Out} WAVEFORMATEX wFormatTag: fffe nChannels: 2 nSamplesPerSec: 48000 nAvgBytesPerSec: 384000 nBlockAlign: 8 wBitsPerSample: 32 cbSize: 22 ext.SubFormat: KSDATAFORMAT_SUBTYPE_IEEE_FLOAT ext.Samples: 32 ext.dwChannelMask: 3 1.158 [INFO] {ASIO Out} RSAsioAudioClient::Initialize - actual buffer duration: 5ms (256 frames) 1.158 [INFO] AsioSharedHost::Setup - startCount: 0 1.158 [INFO] post output ready: 0 1.158 [INFO] ASIOBufferSize - min: 256 max: 256 preferred: 256 granularity: 0 1.158 [INFO] Creating ASIO buffers (16 out, 16 in)... 1.158 [INFO] AsioSharedHost::AsioCalback_asioMessage - selector: 1 value: 4 | returning: 0 1.158 [INFO] AsioSharedHost::AsioCalback_asioMessage - selector: 1 value: 3 | returning: 0 1.158 [INFO] AsioSharedHost::AsioCalback_asioMessage - selector: 1 value: 5 | returning: 0 1.158 [INFO] AsioSharedHost::AsioCalback_asioMessage - selector: 1 value: 6 | returning: 0 1.158 [INFO] AsioSharedHost::AsioCalback_asioMessage - selector: 7 value: 0 | returning: 0 1.168 [INFO] {ASIO Out} DebugWrapperAudioClient::GetBufferSize 1.168 [INFO] *pNumBufferFrames: 256 1.168 [INFO] {ASIO Out} DebugWrapperAudioClient::GetStreamLatency 1.168 [INFO] latency: 106ms 1.168 [INFO] {ASIO Out} DebugWrapperAudioClient::GetService - riid: IID_IAudioRenderClient 1.168 [INFO] returning render client 1.173 [INFO] DebugDeviceEnum::RegisterEndpointNotificationCallback 1.178 [INFO] Patched_PortAudio_MarshalStreamComPointers 1.183 [INFO] Patched_PortAudio_UnmarshalStreamComPointers 1.183 [INFO] {ASIO Out} DebugWrapperAudioClient3::QueryInterface riid: {F2D67F48-1977-4991-A3FC-A093835A7DC2} 1.183 [INFO] {ASIO Out} DebugWrapperAudioClient2::QueryInterface riid: {F2D67F48-1977-4991-A3FC-A093835A7DC2} 1.183 [INFO] {ASIO Out} DebugWrapperAudioClient::QueryInterface riid: {F2D67F48-1977-4991-A3FC-A093835A7DC2} 1.183 [INFO] {ASIO Out} DebugWrapperAudioClient::SetEventHandle 1.183 [INFO] {ASIO Out} DebugWrapperRenderClient::GetBuffer NumFramesRequested: 256 1.183 [INFO] {ASIO Out} DebugWrapperRenderClient::ReleaseBuffer NumFramesWritten: 256 1.183 [INFO] {ASIO Out} RSAsioAudioClient::SwapBuffers 1.183 [INFO] {ASIO Out} DebugWrapperAudioClient::Start 1.184 [INFO] AsioSharedHost::Start - enter startCount: 0 1.184 [INFO] Starting ASIO stream... 1.184 [INFO] AsioSharedHost::Start - leave startCount: 1 1.188 [INFO] WineASIO - AsioSharedHost::AsioCalback_bufferSwitch - buffer switch 1 1.188 [INFO] {ASIO Out} DebugWrapperRenderClient::GetBuffer NumFramesRequested: 256 1.188 [INFO] {ASIO Out} DebugWrapperRenderClient::ReleaseBuffer NumFramesWritten: 256 1.188 [INFO] {ASIO Out} RSAsioAudioClient::SwapBuffers 1.209 [INFO] WineASIO - AsioSharedHost::AsioCalback_bufferSwitch - buffer switch 2 1.210 [INFO] {ASIO Out} DebugWrapperRenderClient::GetBuffer NumFramesRequested: 256 1.210 [INFO] {ASIO Out} DebugWrapperRenderClient::ReleaseBuffer NumFramesWritten: 256 1.210 [INFO] {ASIO Out} RSAsioAudioClient::SwapBuffers 1.231 [INFO] WineASIO - AsioSharedHost::AsioCalback_bufferSwitch - buffer switch 3 (not logging upcoming switches) 5.946 [INFO] - Wrapper DLL unloaded ```
Siarkowy commented 1 year ago

Managed to compile and install wineasio (should I credit you for this?)

All good, you can briefly mention when we flesh out the Fedora guide some more. ;)

logs say communication with wineasio worked

What does PROTON_LOG=1 produce with regard to wineasio?

theNizo commented 1 year ago

What does PROTON_LOG=1 produce with regard to wineasio?

Took me a moment to find out what this flag does.

Oh well (I will think about this later, but IIRC I've had this before):

log (about everything asio and jack related) ``` 534.268:0120:0124:trace:loaddll:build_module Loaded L"Z:\\home\\john\\.local\\share\\Steam\\steamapps\\common\\Rocksmith2014\\RS_ASIO.dll" at 0F510000: native 534.996:0120:0124:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\wineasio.dll" at C4BD0000: builtin Cannot connect to server socket err = No such file or directory Cannot connect to server request channel exec of JACK server (command = "/usr/bin/jackd") failed: No such file or directory Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock Unable to open a JACK client as: Rocksmith2014 541.066:0120:0124:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\wineasio.dll" : builtin 541.073:0120:0124:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\wineasio.dll" at C4BD0000: builtin Cannot connect to server socket err = No such file or directory Cannot connect to server request channel exec of JACK server (command = "/usr/bin/jackd") failed: No such file or directory ``` This is located ~10 lines before the log ends
Siarkowy commented 1 year ago

Oh well (I will think about this later, but IIRC I've had this before):

What happens if you try to LD_PRELOAD jack as in https://github.com/theNizo/linux_rocksmith/issues/22#issuecomment-1508279208?

theNizo commented 1 year ago

Then I get the RS_ASIO error message...

I'll bother with it later.

Siarkowy commented 1 year ago

I suppose you run regsvr as usual?

theNizo commented 1 year ago

IT IS WORKING!

Installed Fedora on a spare Hard drive, plugged in via usb.

Other than building wineasio, I just had to adjust a few paths. I'm already on the Fedora guide.

theNizo commented 1 year ago

Alright, Fedora pipewire guide is up. I need to do non-pipewire too, but I'll remind myself of that in a cleanup issue.