You are not logged in.
I'm half-way through a (what I thought was going to be) simple WirePipe setup. I want a config-driven setup, hence I'm avoiding GUIs.
Devices involved:
- laptop
- external monitor (has integrated speakers)
- wired headphones with microphone
Desired behavior:
- never use external monitor speakers
- use laptop speakers and mic
- use headphones speakers and mic if plugged
Actual behavior:
- if headphones are plugged: headphones speakers and mic are used
- if headphones are not plugged
- no audio output is defined
- pwctl status does not list the laptop speakers
- pw-cli ls Node does not list the laptop speakers
- restarting pipewire and/or wireplumber systemd services did not help either
More context:
- I've managed to use this GNOME extension to manually select and use the laptop speakers, but then if I plug the headphones the laptop speakers are not automatically selected
- if I delete ~/.local/state/wireplumber, heaphones are automatically selected when plugged, but when unplugged the laptop speakers disappear again
Config files:
$ find ~/.config/wireplumber/
/home/dtg/.config/wireplumber/
/home/dtg/.config/wireplumber/wireplumber.conf.d
/home/dtg/.config/wireplumber/wireplumber.conf.d/51-device-rename.conf
/home/dtg/.config/wireplumber/wireplumber.conf.d/52-device-priorities-speakers.conf
/home/dtg/.config/wireplumber/wireplumber.conf.d/53-device-priorities-microphones.conf
/home/dtg/.config/wireplumber/wireplumber.conf.d/54-disable-external-monitor.conf
$ cat ~/.config/wireplumber/wireplumber.conf.d/51-device-rename.conf
monitor.alsa.rules = [
{
matches = [ { node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__Speaker__sink" } ]
actions = { update-props = { node.description = "Laptop speakers" } }
},
{
matches = [ { node.name = "alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__Mic1__source" } ]
actions = { update-props = { node.description = "Laptop microphone" } }
},
{
matches = [ { node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI1__sink" } ]
actions = { update-props = { node.description = "External monitor speakers 1" } }
},
{
matches = [ { node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI2__sink" } ]
actions = { update-props = { node.description = "External monitor speakers 2" } }
},
{
matches = [ { node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI3__sink" } ]
actions = { update-props = { node.description = "External monitor speakers 3" } }
},
{
matches = [ { node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__Headphones__sink" } ]
actions = { update-props = { node.description = "Wired headphones speakers" } }
},
{
matches = [ { node.name = "alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__Mic2__source" } ]
actions = { update-props = { node.description = "Wired headphones microphone" } }
},
]
$ cat ~.config/wireplumber/wireplumber.conf.d/52-device-priorities-speakers.conf
monitor.alsa.rules = [
{
matches = [ { node.description = "External monitor speakers 1" } ]
actions = { update-props = {
priority.driver = "700",
priority.session = "700",
} }
},
{
matches = [ { node.description = "External monitor speakers 2" } ]
actions = { update-props = {
priority.driver = "700",
priority.session = "700",
} }
},
{
matches = [ { node.description = "External monitor speakers 3" } ]
actions = { update-props = {
priority.driver = "700",
priority.session = "700",
} }
},
{
matches = [ { node.description = "Laptop speakers" } ]
actions = { update-props = {
priority.driver = "1000",
priority.session = "1000",
} }
},
{
matches = [ { node.description = "Wired headphones speakers" } ]
actions = { update-props = {
priority.driver = "1001",
priority.session = "1001",
} }
},
]
$ cat ~.config/wireplumber/wireplumber.conf.d/53-device-priorities-microphones.conf
monitor.alsa.rules = [
{
matches = [ { node.description = "Laptop microphone" } ]
actions = { update-props = {
priority.driver = "1000",
priority.session = "1000",
} }
},
{
matches = [ { node.description = "Wired headphones microphone" } ]
actions = { update-props = {
priority.driver = "1001",
priority.session = "1001",
} }
},
]
$ cat ~.config/wireplumber/wireplumber.conf.d/54-disable-external-monitor.conf
monitor.alsa.rules = [
{
matches = [ { node.description = "External monitor speakers 1" } ]
actions = { update-props = { node.disabled = "true" } }
},
{
matches = [ { node.description = "External monitor speakers 2" } ]
actions = { update-props = { node.disabled = "true" } }
},
{
matches = [ { node.description = "External monitor speakers 3" } ]
actions = { update-props = { node.disabled = "true" } }
},
]
Logs:
$ systemctl --user status pipewire.service
● pipewire.service - PipeWire Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-02-26 09:42:31 GMT; 10s ago
Invocation: 02ef27d38b234b1cabb0c24477b1e029
TriggeredBy: ● pipewire.socket
Main PID: 95910 (pipewire)
Tasks: 3 (limit: 18691)
Memory: 5.3M (peak: 5.8M)
CPU: 71ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire.service
└─95910 /usr/bin/pipewire
Feb 26 09:42:31 beltz systemd[1811]: Started PipeWire Multimedia Service.
$ systemctl --user status pipewire-pulse.service
● pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; disabled; preset: enabled)
Active: active (running) since Wed 2025-02-26 09:42:33 GMT; 10s ago
Invocation: 038dbfc32c554a04837ed3a1dbb7e47f
TriggeredBy: ● pipewire-pulse.socket
Main PID: 95973 (pipewire-pulse)
Tasks: 3 (limit: 18691)
Memory: 2.6M (peak: 2.9M)
CPU: 32ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
└─95973 /usr/bin/pipewire-pulse
Feb 26 09:42:33 beltz systemd[1811]: Started PipeWire PulseAudio.
$ systemctl --user status wireplumber
● wireplumber.service - Multimedia Service Session Manager
Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-02-26 09:42:36 GMT; 11s ago
Invocation: 6c5d3327b2b347689a1a13c1473c2a0c
Main PID: 96023 (wireplumber)
Tasks: 7 (limit: 18691)
Memory: 5.2M (peak: 5.9M)
CPU: 223ms
CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/wireplumber.service
└─96023 /usr/bin/wireplumber
Feb 26 09:42:36 beltz systemd[1811]: Started Multimedia Service Session Manager.
Feb 26 09:42:36 beltz wireplumber[96023]: wp-internal-comp-loader: Loading profile 'main'
Feb 26 09:42:36 beltz wireplumber[96023]: s-monitors: ALSA node alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI3__sink disabled
Feb 26 09:42:36 beltz wireplumber[96023]: s-monitors: ALSA node alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI2__sink disabled
Feb 26 09:42:36 beltz wireplumber[96023]: s-monitors: ALSA node alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__HDMI1__sink disabled
Feb 26 09:42:36 beltz wireplumber[96023]: wp-device: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
Feb 26 09:42:36 beltz wireplumber[96023]: s-monitors-libcamera: PipeWire's libcamera SPA plugin is missing or broken. Some camera types may not be supported.
I would appreciate any help to further debug this issue.
Thank you very much in advance
Last edited by dtgoitia (2025-02-26 09:46:48)
Offline