wireplumber ignores default audio sink & source configured in pipewire
wireplumber
ignores the default audio sink & source that I configured in pipewire
, and selects its own defaults instead. So after each reboot, I have to run wpctl status
to find the ID of the audio sink & source that I want, and then run wpctl set-default
twice to set both the correct sink and source.
In /usr/local/etc/pipewire/pipewire.conf
, I have the following config, which I created after some googling when I switched from PulseAudio to PipeWire some months ago:
context.properties = {
[...]
# default sink & source
default.audio.sink = "alsa_output.pci-0000_00_1b.0.analog-stereo"
default.audio.source = "alsa_input.pci-0000_00_1b.0.analog-stereo"
default.configured.audio.sink = "alsa_output.pci-0000_00_1b.0.analog-stereo"
default.configured.audio.source = "alsa_input.pci-0000_00_1b.0.analog-stereo"
}
[...]
context.objects = [
[...]
# Use the metadata factory to create metadata and some default values.
{ factory = metadata
args = {
metadata.name = default-metadata
metadata.values = [
{ key = default.audio.sink value = { name = "alsa_output.pci-0000_00_1b.0.analog-stereo" } }
{ key = default.audio.source value = { name = "alsa_input.pci-0000_00_1b.0.analog-stereo" } }
{ key = default.configured.audio.sink value = { name = "alsa_output.pci-0000_00_1b.0.analog-stereo" } }
{ key = default.configured.audio.source value = { name = "alsa_input.pci-0000_00_1b.0.analog-stereo" } }
]
}
}
]
This leads to the following output, which looks correct to me:
[zlatko@disclosure:~]$ pw-cli i all | grep default | grep -E "sink|source"
info: unsupported type PipeWire:Interface:Profiler
* default.configured.audio.source = "alsa_input.pci-0000_00_1b.0.analog-stereo"
* default.audio.sink = "alsa_output.pci-0000_00_1b.0.analog-stereo"
* default.audio.source = "alsa_input.pci-0000_00_1b.0.analog-stereo"
* default.configured.audio.sink = "alsa_output.pci-0000_00_1b.0.analog-stereo"
wireplumber
seems to have its own mind, though, and always selects something like this after startup:
[zlatko@disclosure:~]$ wpctl status
PipeWire 'pipewire-0' [1.0.5, zlatko@disclosure, cookie:3791024536]
└─ Clients:
33. pipewire [1.0.5, zlatko@disclosure, pid:22076]
34. pipewire [1.0.5, zlatko@disclosure, pid:22076]
36. GNOME Volume Control Media Keys [1.0.5, zlatko@disclosure, pid:21926]
37. WirePlumber [1.0.5, zlatko@disclosure, pid:22324]
49. WirePlumber [export] [1.0.5, zlatko@disclosure, pid:22324]
91. nagstamon [1.0.5, zlatko@disclosure, pid:22578]
92. GNOME Flashback Volume Control [1.0.5, zlatko@disclosure, pid:22429]
93. CallAudio [1.0.5, zlatko@disclosure, pid:23712]
94. Firefox [1.0.5, zlatko@disclosure, pid:31491]
95. pidgin [1.0.5, zlatko@disclosure, pid:29298]
96. Audacious [1.0.5, zlatko@disclosure, pid:960]
97. Pidgin [1.0.5, zlatko@disclosure, pid:29298]
98. GNOME Volume Control Applet [1.0.5, zlatko@disclosure, pid:22472]
99. Blueman [1.0.5, zlatko@disclosure, pid:22604]
100. xdg-desktop-portal [1.0.5, zlatko@disclosure, pid:22599]
106. Steam Voice Settings [1.0.5, zlatko@disclosure, pid:5246]
107. Steam [1.0.5, zlatko@disclosure, pid:5246]
108. metacity [1.0.5, zlatko@disclosure, pid:22402]
114. wpctl [1.0.5, zlatko@disclosure, pid:3019]
Audio
├─ Devices:
│ 50. TU116 High Definition Audio Controller [alsa]
│ 51. Headset H340 [alsa]
│ 52. Razer Barracuda X 2.4 [alsa]
│ 53. Full HD webcam [alsa]
│ 54. Built-in Audio [alsa]
│
├─ Sinks:
│ 58. TU116 High Definition Audio Controller Digital Stereo (HDMI) [vol: 1.00]
│ 60. Headset H340 Analog Stereo [vol: 0.40]
│ * 62. Razer Barracuda X 2.4 Analog Stereo [vol: 0.20]
│ 64. Built-in Audio Analog Stereo [vol: 0.50]
│
├─ Sources:
│ 59. Headset H340 Analog Stereo [vol: 0.76]
│ 61. Razer Barracuda X 2.4 Mono [vol: 1.00]
│ * 63. Full HD webcam Mono [vol: 1.00]
│ 65. Built-in Audio Analog Stereo [vol: 1.00]
│
├─ Filters:
│
└─ Streams:
101. Audacious
103. output_FL > ALC892 Analog:playback_FL [init]
105. output_FR > ALC892 Analog:playback_FR [init]
109. Firefox
111. output_FL > ALC892 Analog:playback_FL [active]
113. output_FR > ALC892 Analog:playback_FR [active]
Video
├─ Devices:
│ 47. Full HD webcam: Full HD webcam [libcamera]
│ 66. Full HD webcam [v4l2]
│ 67. Full HD webcam [v4l2]
│
├─ Sinks:
│
├─ Sources:
│ * 45. Full HD webcam (V4L2)
│
├─ Filters:
│
└─ Streams:
Settings
└─ Default Configured Devices:
0. Audio/Sink alsa_output.usb-Macronix_Razer_Barracuda_X_2.4_1234-00.analog-stereo
1. Audio/Source alsa_input.usb-SHENZHEN_AONI_ELECTRONIC_CO._LTD_Full_HD_webcam_AN20200417001-02.mono-fallback
So my big question is, how do I tell wireplumber
to respect pipewire
's config, or how & where can I configure what wireplumber
selects as its "Settings => Default Configured Devices"? With PulseAudio, it was as easy as having two lines ...
default-sink = alsa_output.pci-0000_00_1b.0.analog-stereo
default-source = alsa_input.pci-0000_00_1b.0.analog-stereo
... in /usr/local/etc/pulse/client.conf
, and that was that, and it worked fine, every time.
I've read something about having to write Lua scripts or snippets now with 0.5.x, but I'm not a programmer, and I'm not familiar with Lua at all. I've also had a look at the contents of /usr/local/share/wireplumber/scripts/default-nodes
, but I still couldn't figure out what I have to put where to achieve what I want. I also couldn't find any simple examples on how to set your default sink & source in wireplumber
. Am I the only one who actually wants/needs this, or am I the only one unlucky enough to have wireplumber
think it knows better than the user?
This should be such a trivial and normal thing to do that I think I'm missing something obvious here ... but what?