Can confirm i have the same problem for quite a while now, after switching to pipewire using focusrite scarlett 18i20 across several Games (for example Cyberpunk2077)
I have the Issue on Ubuntu 24.10 and the latest CachyOS.
The Fix @tabroughton mentioned works.
As a workaround i was trying to setup some Sort of virtual Sink, that is just Stereo and is the default device for Steam Games, and this definitely solved the issue.
However i never could fully automate it (maybe i'm missing more documentation/more detailed documentation).
That is how the relevant parts in my ~/.config/pipewire look like
context.properties = {
...
default.audio.sink = "FS18i20VirtualSink"
}
context.objects = [
...
{
factory = "adapter"
args = {
factory.name = support.null-audio-sink
node.name = FS18i20VirtualSink
media.class = "Audio/Sink"
object.linger = true
audio.format = "S16LE"
audio.rate = 48000
audio.channels = 2
audio.position = "FL,FR"
node.description = "Focusrite Scarlett 18i20 Virtual Sink"
monitor = true
}
}
{
factory = "link-factory"
args = {
link.output.port = "FS18i20VirtualSink:monitor_0"
link.input.port = "alsa_output.usb-Focusrite_Scarlett_18i20_USB_P93K8T62811287-00.multichannel-output:playback_0"
}
flags = [ nofail ]
}
{
factory = "link-factory"
args = {
link.output.port = "FS18i20VirtualSink:monitor_1"
link.input.port = "alsa_output.usb-Focusrite_Scarlett_18i20_USB_P93K8T62811287-00.multichannel-output:playback_1"
}
flags = [ nofail ]
}
]
This creates the Adapter, but not the links, i always have to manually link them in coppwr or qpwgraph.
So on a related note, does somebody has a temporary fix, that i can put into the pipewire config, until this is resolved?
I have the same issue, and your solution got me 90% of the way there. It looks like there's a separate issue with pipewire where nodes and links don't coordinate their creation order (or some magic config is required for that?), and that is detailed here: https://www.reddit.com/r/pipewire/comments/1ezn1xq/help_with_creating_and_linking_a_node_at_startup/ . That link describes using a systemd service to make link creation happen after pipewire is up, which resolves the race by making it systemd's problem.
I used your pipewire config along with the systemd service for creating links, and I now have working audio in both Baldur's Gate 3 and Cyberpunk 2077 that works across reboots! Thanks for doing all the work here 🍻
I have the same issue with a RME Raydat, the underlying issue is probably that the card is flagged as pro audio device.
@TheBiochemic for the links you'd have to create a wireplumber script and listen to the ports pop up in wireplumber. Maybe I'll have time over the weekend to put one together
@TheBiochemic for the links you'd have to create a wireplumber script and listen to the ports pop up in wireplumber. Maybe I'll have time over the weekend to put one together
Yeah i was worried, that i have to do something like that.
If you have something however, feel free to let me know :)
@TheBiochemic ah, I forgot about this chat, github broke my 2FA, so I can't login with my preferered browser, so I moved away fomr here. Just got your notification mail.
Anyway, the correct way to make it work with the multichannel pro-audio interface would be to create a pipewire loopback interface, which exsposed the audio channel names you need, e.g. [ FL, RL ] for front left and front right. And then to connect that loopback device to the respective channels of the pro-audio interface. That allows pipewire to route the device correctly.
You'd then have to select that device before gaming and it would use your pro-audio card.
You have to add a loopback device config into ~/.config/pipewire/pipewire.conf.d similar to this:
context.modules = [
{ name = libpipewire-module-loopback
args = {
node.description = "Game Sink"
audio.position = [ FL FR ]
capture.props = {
node.name = "game sink"
media.class = Audio/Sink
}
playback.props = {
node.name = "game.source"
audio.position = [ AUX0 AUX1 ]
node.passive = true
}
}
}
More infor is here: https://docs.pipewire.org/page_module_loopback.html
That's btw. a good way to segregate a pro-audio card into multiple devices for easier routing. For example, I created bunch of loopback devices for external hardware efx.
Hey I had this same bug, with the scarlett 18i20 4th gen!
The problem with mine was that the wine/proton could not map the multiple aux channels to a valid windows/speaker channel mask. I created a virtual stereo PipeWire-Pulse sink named: Scarlett_Game that exposes two conventional channel positions (audio.channels = 2 audio.position = [ FL, FR ]).
After creating the sink I use launch commands for the games that are having the issue I add PULSE_SINK=Scarlett_Game %command%
Seems like this was the only way for me to be able to keep my Scarlett in Pro Audio mode (for music production in reaper) and still be able to get sound for some of the games, sound works fine for 85% of the games I run but a few of them were running in to this bug.
@Frank-Krick @redux93 Thank you both. I've struggled with my 18i20 since making the full time leap to Linux for gaming and your solutions have saved my sanity, especially for FFXIV (https://github.com/goatcorp/wine-xiv-git/issues/17) which was resistant to my workaround of disabling the soundcard until the game launched and then enabling it.
Hope someone with deeper knowledge of what's going on can properly address this, whether is Proton specific or something further upstream in pipewire or pulseaudio.
Ran into this problem too and did some digging https://bugs.winehq.org/show_bug.cgi?id=53799 and apparently this is a known issue. The problem is that the pulse interface basically throws its hands up with anything beyond 8 channels (which would mean that running a 11.1, 13.1 or such large home theater sound setups would not work either.
PULSE_SINK=Scarlett_Game %command%x1 2026-07
OS: 6.13.5-2-MANJARO
Steam 1741737356
Proton: 9.0.4
Baldur's Gate 3 (appid 1086940 build 16065077)
Audio interface: Focusrite Scarlett Gen2 18i20 set to multichannel duplex
Pipewire 1.2.7
When running proton games (eg Balders gate 3) there is no sound into this device. The device is not seen by proton and no audio plumbed to the playback interfaces. I cannot see any audio stream in pipewire.
If I close the game, set the default audio interface to something else (onboard motherboard, Komplete Audio usb interface, monitor). Where the profile is something like "digital stereo" or "pro audio" etc. Then Audio works when running the game. I can see the audio stream in a graphical pipewire graph.
Once game is running like this, I can change my audio settings in the os to the Scarlett (multichannel duplex) device and the sound is piped through to the interface and works.
so there is something that proton can't see with this kind of interface.
I have attached Steam system info, game log when running, and the details of the interface which is not working.
Hopefully we can find a solution since I think this is an issue others might be experiencing.
20250312-pactl-card-info-scarlett-18i20.txt
steam-1086940.log
20250312-Steam.System.Info.txt