I’m having an annoying issue with pipewire. I have a Scarlett 8i6 audio interface. I have it set to Pro Audio so that I can access all the input and output channels, and I have virtual devices defined to allow applications to access groups of channels as discrete devices.

For some reason, all applications keep automatically switching to my secondary (mono) output. I can sometimes get them to switch to my primary stereo output, but it’s only ever a one-off and they will switch back when the current media is done playing. any thoughts?

config:

context.modules = [
    {   name = libpipewire-module-loopback
        args = {
            node.description = "Primary - Focusrite Scarlett 8i6"
            capture.props = {
                node.name = "scarlett_8i6_primary"
                media.class = "Audio/Sink"
                audio.position = [ FL FR ]
            }
            playback.props = {
                node.name = "playback.scarlett_8i6_primary"
                audio.position = [ AUX0 AUX1 ]
                target.object = "alsa_output.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-output-0"
                stream.dont-remix = true
                node.passive = true
            }
        }
    }
    {   name = libpipewire-module-loopback
        args = {
            node.description = "Secondary (Mono) - Focusrite Scarlett 8i6"
            capture.props = {
                node.name = "scarlett_8i6_secondary"
                media.class = "Audio/Sink"
                audio.position = [ MONO ]
            }
            playback.props = {
                node.name = "playback.scarlett_8i6_secondary"
                audio.position = [ AUX2 ]
                target.object = "alsa_output.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-output-0"
                stream.dont-remix = true
                node.passive = true
            }
        }
    }
    {   name = libpipewire-module-loopback
        args = {
            node.description = "Microphone - Focusrite Scarlett 8i6"
            capture.props = {
                node.name = "capture.scarlett_8i6_mic"
                audio.position = [ AUX0 ]
                stream.dont-remix = true
                target.object = "alsa_input.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-input-0"
                node.passive = true
            }
            playback.props = {
                node.name = "scarlett_8i6_mic"
                media.class = "Audio/Source"
                audio.position = [ MONO ]
            }
        }
    }
    {   name = libpipewire-module-loopback
        args = {
            node.description = "Instrument - Focusrite Scarlett 8i6"
            capture.props = {
                node.name = "capture.scarlett_8i6_inst"
                audio.position = [ AUX1 ]
                stream.dont-remix = true
                target.object = "alsa_input.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-input-0"
                node.passive = true
            }
            playback.props = {
                node.name = "scarlett_8i6_inst"
                media.class = "Audio/Source"
                audio.position = [ MONO ]
            }
        }
    }
    {   name = libpipewire-module-loopback
        args = {
            node.description = "Mix - Focusrite Scarlett 8i6"
            capture.props = {
                node.name = "capture.scarlett_8i6_mix"
                audio.position = [ AUX2 AUX3 ]
                stream.dont-remix = true
                target.object = "alsa_input.usb-Focusrite_Scarlett_8i6_USB_F8CEK2H1B8391D-00.pro-input-0"
                node.passive = true
            }
            playback.props = {
                node.name = "scarlett_8i6_mix"
                media.class = "Audio/Source"
                audio.position = [ FL FR ]
            }
        }
    }
]