Skip to content

Commit

Permalink
Update WineASIO article for F40/pipewire-1.0.4-2 changes
Browse files Browse the repository at this point in the history
TBH I'm not sure if it was me going to F40 beta or the upgrade to PW
that caused this issue, but good to update steps anyway as this feels
more 'right' after my messing around with realtime... where the security
limits just happened to work after that.
  • Loading branch information
nicholastay committed Mar 30, 2024
1 parent 6edb82c commit 40838ac
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions content/post/2024-01-06-wineasio.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ tags:
- wine
---

*(This post was updated on 2024-03-30 to support Fedora 40 too.)*

## Background

Recently I formatted my home computer and made the jump to Linux -- specifically, the lazy way and just using Fedora Workstation 39 KDE Spin. It's been surprisingly pretty good so far!
Expand All @@ -31,8 +33,8 @@ In my case, I was using **Bottles** (Flatpak) to manage my WINE prefix, so this

(`wineasio-register` could work, but to make sure the final registering works in Bottles I think it's better to just do it manually.)

1. Ensure the Pipewire JACK connection kit is installed, and the system is ready for realtime: `sudo dnf install pipewire-jack-audio-connection-kit realtime-setup`
1. Ensure your user is able to use realtime, and can access audio devices: `sudo usermod -aG realtime,audio $USER`
1. Ensure the Pipewire JACK connection kit is installed: `sudo dnf install pipewire-jack-audio-connection-kit`
1. Ensure your user is able to use realtime priorities (via the Pipewire group / security limit rule), and can access audio devices: `sudo usermod -aG pipewire,audio $USER`
1. Copy built WineASIO libraries into WINE libraries folder:
- `cp wineasio64.dll.so ~/.var/app/com.usebottles.bottles/data/bottles/runners/wine-ge-proton8-25/lib64/wine/x86_64-unix`
- `cp wineasio64.dll ~/.var/app/com.usebottles.bottles/data/bottles/runners/wine-ge-proton8-25/lib64/wine/x86_64-windows`
Expand Down Expand Up @@ -68,4 +70,21 @@ Notably, some of these details I stumbled across were seemingly out of date in s
- https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1495
- https://github.com/theNizo/linux_rocksmith/blob/main/guides/setup/fed-pipewire.md

(Edits -- 2024-01-07: Added missing realtime/audio setup+group steps, missing C drive switch in DLL registration, and minor reordering; 2024-01-29: Moved prebuilt download into same domain)
---

## Further experimentation

There's certainly a few things more I'd like to play with in this space:

- Different kernels. I'm already running the [kernel-cachyos](https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos/) since that was most convenient in COPR, but perhaps some other realtime ones could further improve latency/quality
- I stumbled upon [audlinux](https://copr.fedorainfracloud.org/coprs/ycollet/audinux/packages/), and this is fairly intriguing
- The kernel has definitely already improved single-core-heavy game performance, I'd suggest experimenting here for sure if you have time to waste :)
- Resampling quirks. I now have to run my system in 44.1kHz mode to match audio output from WINE (or it results in no or sped up audio)... but I'm curious if I can run it in 48kHz instead and just have the 44.1kHz resample. (or, just a way to have apps detect/forced to the right one, and no crackling/artefacts!!)

---

*Updates after initial publishing:*

- 2024-01-07: Added missing realtime/audio setup+group steps, missing C drive switch in DLL registration, and minor reordering of steps
- 2024-01-29: Moved prebuilt download into blog hosting rather than relying on Windblume filehost
- 2024-03-30: F40 or [this change](https://src.fedoraproject.org/rpms/pipewire/c/ecc2c916e3f8ca3b7701b8d43062ff3cee73479a?branch=f40) possibly broke this guide - updated realtime instructions to actually use pw group instead of piggybacking realtime-setup's 'nice' rules - those aren't actually needed and just the pipewire group was the whole time. Also added further experimentation notes for future expansion

0 comments on commit 40838ac

Please sign in to comment.