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

Rocksmith connecting to JACK server but not exposing outputs #36

Closed zurgeg closed 9 months ago

zurgeg commented 9 months ago
zurgeg commented 9 months ago

Seems like this is related, from the log:

5.296 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
zurgeg commented 9 months ago

Alright, I'm trying to set up a mic input to see if that works. Just purged my prefix again, wish me luck

zurgeg commented 9 months ago

Alright, mic is working (with latency problems obviously). Gonna try following the guide again

theNizo commented 9 months ago

Sorry for the lackluster support. I'm a bit busy with real life.

If a microphone is working now, you seem to be a good track and it would be interesting for others to know what caused the issue.

If you found something that works, then this isn't important, but I'm gonna leave it here > RS2014 appears on "Readable Clients / Output Port" but not "Writable Clients / Input Ports" in QjackCTL. I don't know what those two terms mean and I also can't find these in QjackCTL, but I guess Rocksmith doesn't take audio in? > "To play in Real Tone Cable Mode[...]" I have never seen that message, but I guess it's telling you that no RealToneCable is plugged in? > I'm trying to set up a mic input In the sense of a physical microphone, or the mic input that you can set up in the RS_ASIO config file?
zurgeg commented 9 months ago

Sorry for the lackluster support. I'm a bit busy with real life.

If a microphone is working now, you seem to be a good track and it would be interesting for others to know what caused the issue. Yeah, so the microphone works, but ASIO doesn't (yet, need t If you found something that works, then this isn't important, but I'm gonna leave it here

RS2014 appears on "Readable Clients / Output Port" but not "Writable Clients / Input Ports" in QjackCTL.

I don't know what those two terms mean and I also can't find these in QjackCTL, but I guess Rocksmith doesn't take audio in? Yeah. If you go in QJackCTL, there's a setting to use "Connections" instead of the graph

"To play in Real Tone Cable Mode[...]"

I have never seen that message, but I guess it's telling you that no RealToneCable is plugged in? Exactly.

I'm trying to set up a mic input

In the sense of a physical microphone, or the mic input that you can set up in the RS_ASIO config file? Yep, a physical mic. I wanted to see if that worked (which it did)

zurgeg commented 9 months ago

Alright, I've tried again. RSASIO is saying DebugDeviceEnum::UpdateAvailableDevices - 3 render devices, 5 capture devices in the logs, but still giving me the no RTC error

zurgeg commented 9 months ago

@theNizo Wait a sec...

This setup isn't audio interfaces only right? I'm using a USB microphone...

theNizo commented 9 months ago

This setup isn't audio interfaces only right? I'm using a USB microphone...

I don't understand the question...

You can theoretically use a microphone as an input. That technically works.

A USB microphone is an audio interface to your PC.

zurgeg commented 9 months ago

This setup isn't audio interfaces only right? I'm using a USB microphone...

I don't understand the question...

You can theoretically use a microphone as an input. That technically works.

A USB microphone is an audio interface to your PC.

Ahh okay, that was what I was looking for.

I'm going to try using chaotic-aur's wineasio build, although I don't have high hopes for that helping, given VBAsioTest32 worked, which means wineasio was working. I'll update later once I test

zurgeg commented 9 months ago

Yeah, still nothing...

RS2014 is showing up in QJackCTLs connection graph as "ALSA plug-in [wine-preloader]" if that helps.

zurgeg commented 9 months ago

Ah-ha! This might give us a clue:

RSAsioDeviceEnum::UpdateAvailableDevices - failed.
...then later...
DebugDeviceEnum::UpdateAvailableDevices - 12 render devices, 0 capture devices

Wonder what's different between the two DeviceEnums

theNizo commented 9 months ago

RS2014 is showing up in QJackCTLs [...]

I won't help you with a UI that I don't understand.


Okay, let's start from the beginning. Can you even hear sound from Rocksmith?

zurgeg commented 9 months ago

RS2014 is showing up in QJackCTLs [...]

I won't help you with a UI that I don't understand. Okay, let's start from the beginning. Can you even hear sound from Rocksmith?

Yeah, but only if I set EnableWasapiInputs=1

theNizo commented 9 months ago

Yeah, but only if I set EnableWasapiInputs=1

This should have been listed under "did you do anything different".

WASAPI is the audio protocol that Rocksmith uses by default, AKA the one we DO NOT want. Please disable that.


Okay, I'm currently working on the guide to update it for the wineasio update. There are some steps I will change.

Could you please do the following steps and tell me the outcome:

EDIT: this is meant for wineasio 1.2, sorry.

  1. Delete Rocksmith prefix, then start the game again
  2. Run this command: env WINEPREFIX=$STEAMLIBRARY/steamapps/compatdata/221680/pfx ./wineasio-register (the wineasio-register script comes in the wineasio zip (the one you get here))
  3. In the RS_ASIO.ini file, set the Driver= lines to wineasio-rsasio instead.
zurgeg commented 9 months ago

wineasio-register spit out the usual failed to create L"C:\\Windws\system32\whatever.dll, which is awk'd out with awk '!/create_dest_file/' to prevent that from flooding the log. Besides that, it outputs this:

002c:fixme:winediag:LdrInitializeThunk wine-staging 8.15 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org.
0080:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0080:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0080:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0080:fixme:hid:handle_IRP_MN_QUERY_ID Unhandled type 00000005
0090:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
0090:fixme:xrandr:xrandr10_get_current_mode Non-primary adapters are unsupported.
0090:fixme:xrandr:xrandr10_get_current_mode Non-primary adapters are unsupported.
0090:fixme:xrandr:xrandr10_get_current_mode Non-primary adapters are unsupported.
0034:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
002c:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
0024:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
0114:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
regsvr32: Successfully registered DLL '/usr/lib32/wine/i386-unix/wineasio32.dll.so'
'/usr/lib/wine/x86_64-windows/wineasio64.dll' -> '/home/jg/.local/share/Steam//steamapps/compatdata/221680/pfx/drive_c/windows/system32/wineasio64.dll'
011c:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
012c:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
regsvr32: Successfully registered DLL '/usr/lib/wine/x86_64-unix/wineasio64.dll.so'

RS_ASIO-log.txt contains (after going to the path/input menu, then closing the game)

0.000 [INFO]   - Wrapper DLL loaded (v0.7.0)
0.000 [INFO]  PatchOriginalCode
0.043 [INFO]  image crc32: 0xd1b38fcb
0.263 [INFO]  Patching CoCreateInstance
0.263 [INFO]  Patch_CallAbsoluteIndirectAddress - num locations: 2
0.263 [INFO]  Patching call at 00C02DBD
0.263 [INFO]  Patching call at 00E75278
0.263 [INFO]  Patching PortAudio MarshalStreamComPointers
0.263 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.263 [INFO]  Patching call at 00E7483F
0.263 [INFO]  Patching PortAudio UnmarshalStreamComPointers
0.263 [INFO]  Patch_CallRelativeAddress - num locations: 1
0.263 [INFO]  Patching call at 00E748F4
0.263 [INFO]  Patching Two Guitar Tones Connected Message Box (num locations: 1)
0.263 [INFO]  Patching bytes at 007C0C5F
0.263 [INFO]  Patched_CoCreateInstance called: IID_IMMDeviceEnumerator
0.264 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia
0.264 [INFO]  RSAggregatorDeviceEnum::UpdateAvailableDevices
0.264 [INFO]  GetWineAsioInfo - Looking for wineasio.dll... 
0.265 [INFO]    Failed to load wineasio.dll or file not found
0.265 [INFO]  AsioHelpers::FindDrivers
0.265 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: wineasio-rsasio
0.265 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.265 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: wineasio-rsasio
0.265 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.265 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[1] requesting ASIO driver: wineasio-rsasio
0.265 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.265 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[2] requesting ASIO driver: wineasio-rsasio
0.265 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
0.265 [INFO]  DebugDeviceEnum::UpdateAvailableDevices - 0 render devices, 0 capture devices
0.265 [INFO]    hr: 80070490
0.265 [INFO]    *ppEndpoint: 00000000
0.265 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia
0.265 [INFO]    hr: 80070490
0.265 [INFO]    *ppEndpoint: 00000000
0.265 [INFO]  DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1
0.265 [INFO]    hr: S_OK
0.265 [INFO]    *ppDevices: 11892F70
1.089 [INFO]  Patched_CoCreateInstance called: IID_IMMDeviceEnumerator
1.089 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eRender - role: eMultimedia
1.089 [INFO]  RSAggregatorDeviceEnum::UpdateAvailableDevices
1.089 [INFO]  AsioHelpers::FindDrivers
1.089 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - output requesting ASIO driver: wineasio-rsasio
1.089 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
1.089 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[0] requesting ASIO driver: wineasio-rsasio
1.089 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
1.089 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[1] requesting ASIO driver: wineasio-rsasio
1.089 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
1.089 [INFO]  RSAsioDeviceEnum::UpdateAvailableDevices - input[2] requesting ASIO driver: wineasio-rsasio
1.089 [ERROR]  RSAsioDeviceEnum::UpdateAvailableDevices - failed.
1.089 [INFO]  DebugDeviceEnum::UpdateAvailableDevices - 0 render devices, 0 capture devices
1.089 [INFO]    hr: 80070490
1.089 [INFO]    *ppEndpoint: 00000000
1.089 [INFO]  DebugDeviceEnum::GetDefaultAudioEndpoint - dataFlow: eCapture - role: eMultimedia
1.089 [INFO]    hr: 80070490
1.089 [INFO]    *ppEndpoint: 00000000
1.089 [INFO]  DebugDeviceEnum::EnumAudioEndpoints - dataFlow: eAll - dwStateMask: 1
1.089 [INFO]    hr: S_OK
1.089 [INFO]    *ppDevices: 118968F0
1.090 [INFO]  DebugDeviceEnum::RegisterEndpointNotificationCallback
48.151 [INFO]  DebugDeviceEnum::UnregisterEndpointNotificationCallback
48.375 [INFO]   - Wrapper DLL unloaded

RS_ASIO.ini contains this:

# for "EnableWasapiOutputs" you can use -1 to have a message prompting
# to use either WASAPI or ASIO for output every time you boot the game
[Config]
EnableWasapiOutputs=0
EnableWasapiInputs=0
EnableAsio=1

[Asio]
; available buffer size modes:
;    driver - respect buffer size setting set in the driver
;    host   - use a buffer size as close as possible as that requested by the host application
;    custom - use the buffer size specified in CustomBufferSize field
BufferSizeMode=driver
CustomBufferSize=

# if your game hangs or crashes on exit, try setting "EnableRefCountHack" to true.
# when blank or invalid, the value of "EnableRefCountHack" will be interpreted as
# true if RS ASIO detects the usage of Asio4All.
# the same applies for all inputs.
[Asio.Output]
Driver=wineasio-rsasio
BaseChannel=0
AltBaseChannel=
EnableSoftwareEndpointVolumeControl=1
EnableSoftwareMasterVolumeControl=1
SoftwareMasterVolumePercent=100
EnableRefCountHack=

[Asio.Input.0]
Driver=wineasio-rsasio
Channel=0
EnableSoftwareEndpointVolumeControl=1
EnableSoftwareMasterVolumeControl=1
SoftwareMasterVolumePercent=100
EnableRefCountHack=

[Asio.Input.1]
Driver=wineasio-rsasio
Channel=1
EnableSoftwareEndpointVolumeControl=1
EnableSoftwareMasterVolumeControl=1
SoftwareMasterVolumePercent=100
EnableRefCountHack=

[Asio.Input.Mic]
Driver=wineasio-rsasio
Channel=1
EnableSoftwareEndpointVolumeControl=1
EnableSoftwareMasterVolumeControl=1
SoftwareMasterVolumePercent=100
EnableRefCountHack=
theNizo commented 9 months ago

usual failed to create L"C:\\Windws\system32\whatever.dll

As the guide says:

(Errors are normal, should end with "regsvr32: Successfully registered DLL [...]")

So it seems to have been worked fine.

Just to be sure, you're using 1.2 now? And since the files are called different now, please make sure that you're not using both versions simultaneously.

RS_ASIO.ini

looks good

RS_ASIO-log.txt

So it can't find the DLL.

According to my log, this should be located in C:\windows\system32\wineasio.dll.

In drive_c/windows/system32/ there should be

If that's the case, how are you launching Rocksmith?

zurgeg commented 9 months ago

usual failed to create L"C:\\Windws\system32\whatever.dll

As the guide says:

(Errors are normal, should end with "regsvr32: Successfully registered DLL [...]")

So it seems to have been worked fine.

Just to be sure, you're using 1.2 now?

Yeah.

RS_ASIO.ini

looks good

RS_ASIO-log.txt

So it can't find the DLL.

According to my log, this should be located in C:\windows\system32\wineasio.dll.

In drive_c/windows/system32/ there should be

* `wineasio.dll`

* `wineasio32.dll`

* `wineasio64.dll`

So, the latest build of wineasio doesn't have a wineasio.dll. I ended up copying wineasio32.dll to wineasio.dll. Other than that, it all seems fine.

If that's the case, how are you launching Rocksmith?

I've tried with the start script generated by PROTON_LOG=1 PROTON_DUMP_DEBUG_COMMANDS=1 %command%, that being:

#!/bin/bash
#Run game or given command in environment

cd "/home/jg/.local/share/Steam/steamapps/common/Rocksmith2014"
DEF_CMD=("/home/jg/.local/share/Steam/steamapps/common/Rocksmith2014/Rocksmith2014.exe" "-uplay_steam_mode")
PATH="/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/bin/:/usr/bin:/bin" \
    TERM="xterm" \
    WINEDEBUG="-all" \
    WINEDLLPATH="/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64//wine:/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib//wine" \
    LD_LIBRARY_PATH="/home/jg/.local/share/Steam/ubuntu12_64/video/:/home/jg/.local/share/Steam/ubuntu12_32/video/:/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/:/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib/:/usr/lib/pressure-vessel/overrides/lib/x86_64-linux-gnu/aliases:/usr/lib/pressure-vessel/overrides/lib/i386-linux-gnu/aliases" \
    WINEPREFIX="/home/jg/.local/share/Steam/steamapps/compatdata/221680/pfx/" \
    WINEESYNC="1" \
    WINEFSYNC="1" \
    SteamGameId="221680" \
    SteamAppId="221680" \
    WINEDLLOVERRIDES="steam.exe=b;dotnetfx35.exe=b;dotnetfx35setup.exe=b;beclient.dll=b,n;beclient_x64.dll=b,n;d3d11=n;d3d10core=n;d3d9=n;dxgi=n;d3d12=n;d3d12core=n" \
    STEAM_COMPAT_CLIENT_INSTALL_PATH="/home/jg/.local/share/Steam" \
    WINE_LARGE_ADDRESS_AWARE="1" \
    GST_PLUGIN_SYSTEM_PATH_1_0="/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib64/gstreamer-1.0:/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/lib/gstreamer-1.0" \
    WINE_GST_REGISTRY_DIR="/home/jg/.local/share/Steam/steamapps/compatdata/221680/gstreamer-1.0/" \
    "/home/jg/.local/share/Steam/steamapps/common/Proton - Experimental/files/bin/wine64" c:\\windows\\system32\\steam.exe "${@:-${DEF_CMD[@]}}"

But launching from Steam with LD_PRELOAD=/usr/lib32/libjack.so PIPEWIRE_LATENCY=256/48000 %command% also fails in the same way.

zurgeg commented 9 months ago

AHA! I got it!

Turns out I was doing two things wrong:

  1. I was copying my DLLs to Proton 7.0 and not Proton Experimental
  2. I needed to copy them to wineasio.dll for it to work.

Now with everything set as normal, it works (with the WineASIO autodetect too!)

Thanks!

theNizo commented 9 months ago

AHA! I got it!

Awesome.

(with the WineASIO autodetect

Do you mean the autodetect that RS_ASIO claims to have? (For which you don't need to register the dlls to the prefix?)

zurgeg commented 9 months ago

AHA! I got it!

Awesome.

(with the WineASIO autodetect

Do you mean the autodetect that RS_ASIO claims to have? (For which you don't need to register the dlls to the prefix?)

Yep

theNizo commented 9 months ago

Interesting. I didn't manage that. Maybe you might be able to help me with this issue (if you want to, of course): https://github.com/theNizo/linux_rocksmith/issues/33