Is it possible to disable an input device without breaking everything?
System information:
- OS: Arch Linux (5.17.7.arch1-1)
- PipeWire: 0.3.51
- WirePlumber: 0.4.10
-
pw-dump
: pw-dump.log
I think I have an unusual setup that is causing issues with WirePlumber/PipeWire. Or, it's possible that I'm just doing something very wrong...
I have enabled indep_hp
on my onboard sound card, which gives me the ability to independently play audio on my Speakers and Headset, when using the "Pro Audio" profile of PipeWire.
This setup works perfectly, except that I get an extra - non-working - input device (it's the "Built-in Audio Pro 2" that doesn't do anything):
So, I decided to come up with a WirePlumber rule to rename these devices and also try to disable the non-working input device (please excuse my poor Lua):
-- Tweak the device name when using the Pro Audio profile on PipeWire
speakers_out = {
matches = {
{
{ "alsa.id", "equals", "ALC887-VD Analog" },
{ "api.alsa.pcm.stream", "equals", "playback" },
},
},
apply_properties = {
["node.description"] = "Speakers",
["device.icon_name"] = "audio-speakers"
},
}
front_headset_out = {
matches = {
{
{ "alsa.id", "equals", "ALC887-VD Alt Analog" },
{ "api.alsa.pcm.stream", "equals", "playback" },
},
},
apply_properties = {
["node.description"] = "Headset",
["device.icon_name"] = "audio-headset"
},
}
front_headset_in = {
matches = {
{
{ "alsa.id", "equals", "ALC887-VD Analog" },
{ "api.alsa.pcm.stream", "equals", "capture" },
},
},
apply_properties = {
["node.description"] = "Headset Microphone",
},
}
-- PipeWire also creates an extra invalid input device, but disabling this device
-- with ["node.disabled"] = true, breaks everything... Let's do it anyway.
invalid_in = {
matches = {
{
{ "alsa.id", "equals", "ALC887-VD Alt Analog" },
{ "api.alsa.pcm.stream", "equals", "capture" },
},
},
apply_properties = {
["node.disabled"] = true,
["node.description"] = "Invalid Mic I Cannot Disable",
},
}
table.insert(alsa_monitor.rules, speakers_out)
table.insert(alsa_monitor.rules, front_headset_out)
table.insert(alsa_monitor.rules, front_headset_in)
table.insert(alsa_monitor.rules, invalid_in)
Now my input devices list look like this (which is exactly what I want):
And just for completion sake, here's also my output devices list:
But now comes the problem... that ["node.disabled"] = true
in the invalid_in
rule seems to break everything, and I can't use any of my output devices because of it.
The system journal gives me this after I restart wireplumber.service
:
May 16 18:15:27 arch wireplumber[97979]: stopped by signal: Terminated
May 16 18:15:27 arch systemd[589]: Stopping Multimedia Service Session Manager...
May 16 18:15:27 arch wireplumber[97979]: disconnected from pipewire
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/ldac
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSink/aptx_hd
May 16 18:15:27 arch systemd[589]: Stopped Multimedia Service Session Manager.
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/aptx_hd
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSink/aptx
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/aptx
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/aac
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSink/sbc
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/sbc
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSink/sbc_xq
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/sbc_xq
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/aptx_ll_1
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/aptx_ll_0
May 16 18:15:27 arch gsd-media-keys[947]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
May 16 18:15:27 arch gsd-media-keys[947]: Unable to get default sink
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
May 16 18:15:27 arch gsd-media-keys[947]: Unable to get default source
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/faststream
May 16 18:15:27 arch systemd[589]: Started Multimedia Service Session Manager.
May 16 18:15:27 arch bluetoothd[464]: Endpoint unregistered: sender=:1.451 path=/MediaEndpoint/A2DPSource/faststream_duplex
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch bluetoothd[464]: Player unregistered: sender=:1.451 path=/media_player0
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch gnome-shell[781]: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
May 16 18:15:27 arch kernel: snd_hda_intel 0000:01:00.1: Too many BDL entries: buffer=2097152, period=65536
May 16 18:15:27 arch kernel: snd_hda_intel 0000:01:00.1: Too many BDL entries: buffer=2097152, period=65536
May 16 18:15:27 arch kernel: snd_hda_intel 0000:01:00.1: Too many BDL entries: buffer=2097152, period=65536
May 16 18:15:27 arch kernel: snd_hda_intel 0000:01:00.1: Too many BDL entries: buffer=2097152, period=65536
May 16 18:15:27 arch kernel: snd_hda_intel 0000:01:00.1: Too many BDL entries: buffer=2097152, period=65536
May 16 18:15:27 arch kernel: snd_hda_intel 0000:01:00.1: Too many BDL entries: buffer=2097152, period=65536
May 16 18:15:27 arch bluetoothd[464]: Player registered: sender=:1.454 path=/media_player0
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/ldac
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSink/aptx_hd
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/aptx_hd
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSink/aptx
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/aptx
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/aac
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSink/sbc
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/sbc
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSink/sbc_xq
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/sbc_xq
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/aptx_ll_1
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/aptx_ll_0
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_1
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/aptx_ll_duplex_0
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/faststream
May 16 18:15:27 arch bluetoothd[464]: Endpoint registered: sender=:1.454 path=/MediaEndpoint/A2DPSource/faststream_duplex
May 16 18:15:27 arch wireplumber[98259]: <WpSiStandardLink:0x561fd763f4a0> item deactivated before format set
Trying to play a random wav file with pw-play
, gives me this:
$ pw-play test.wav
stream node 127 error: no node available
remote error: id=2 seq:7 res:-2 (No such file or directory): no node available
If I uncomment that ["node.disabled"] = true
line, everything works again, but I end up with an invalid input device on my list:
What can I do?
Thank you for any help.