You are not logged in.

#1 2025-02-26 09:10:59

dtgoitia
Member
Registered: 2025-02-26
Posts: 1

WirePlumber: device unexpectedly disappears

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 smile
  - if headphones are not plugged sad
    - 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 smile

Last edited by dtgoitia (2025-02-26 09:46:48)

Offline

Board footer

Powered by FluxBB