Today I finally found the time to fight my audio interface device names, which in my opinion are broken.
The current situation is quite annoying because the names are too long. Furthermore there are devices listed that I don't use at all (Displayport/ HDMI Audio) see for yourself:
I have setup wireplumber on my Archlinux. The Archlinux documentation also has an example for disabling a device: https://wiki.archlinux.org/title/WirePlumber
However, I have multiple devices and I'm sure there must be a way to edit multiple devices at the same time. The wireplumber documentation has the answer to this question 😉 see https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/conf_file.html
Navigate to the folder where wireplumber looks for rules and configurations (depends on the distribution!) :
cd ~/.config/wireplumber
create and go to the wireplumber.conf.d folder
mkdir wireplumber.conf.d
cd wireplumber.conf.d
create a file which contains the rules for doing the renaming
vim 51-device-rename.conf
my file looks like this:
monitor.alsa.rules = [
{
matches = [
{node.name = "alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink"},
{node.name = "alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__source"}
]
actions = {update-props = {node.description = "Laptop"}}
},
{
matches = [
{node.name = "alsa_input.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_6__source"}
]
actions = {update-props = {node.description = "Laptop digital"}}
}
]
save the file with :wq
restart the wireplumber service
systemctl --user restart wireplumber
so what happens here ?
wpctl status
and wpctl inspect {DeviceID}
Command:After this rule and the restart of Wireplumber kmix shows Laptop
for the Speakers and Laptop/Laptop digital
for the integrated Microphones:
Next, we take care of the unnecessary devices. we create another file 51-disable-dell-dp-audio.conf
monitor.alsa.rules = [
{
matches = [
{
device.profile.description = "~HDMI / DisplayPort*"
}
]
actions = {
update-props = {
node.disabled = true
}
}
}
]