protonscr

multichannel duplex audio interface no sound from proton (focusrite scarlett 18i20 + pipewire)

protonopen
ValveSoftware/Proton#8517 · opened 2025-03-12 by tabroughton · updated 2026-08-09 · 10 comments · github
Ttabroughton 2025-03-12 github

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

TTheBiochemic 2025-03-16 github

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.

TTheBiochemic 2025-03-25 github

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?

Llentz1 2025-04-14 github

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 🍻

FFrank-Krick 2025-06-28 github

I have the same issue with a RME Raydat, the underlying issue is probably that the card is flagged as pro audio device.

FFrank-Krick 2025-06-28 github

@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

TTheBiochemic 2025-10-19 github

@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 :)

FFrank-Krick 2025-10-19 github

@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.

Rredux93 2026-07-26 github

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.

Ttedtramonte 2026-08-04 github

@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.

Zzapotah 2026-08-09 github

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.

Launch lines

Upstream links