How to enable HDMI audio output in WirePlumber on Fedora 41

Hello everyone,

I wanted to share how I solved an issue I encountered with HDMI audio output on Fedora 41 using WirePlumber and PipeWire. I was able to get HDMI audio working by following a few simple steps.

Here’s what I did:

1. Copy WirePlumber configuration to your user directory

First, I copied the system-wide WirePlumber configuration to my user directory. This allows me to customize the configuration:

cp -r /usr/share/wireplumber ~/.config/

2. Edit the alsa-vm.conf file

I then edited the alsa-vm.conf file to configure the HDMI output. This file is located in ~/.config/wireplumber/wireplumber.conf.d/.

I opened the file and modified it to look like this:

# ALSA node property overrides for HDMI output
monitor.alsa.rules = [
  {
    matches = [
      { node.name = "~alsa_output.*" }
    ]
    actions = {
      update-props = {
        audio.format = "S16LE"
        audio.channels = 2
        audio.position = "FR,FL"
      }
    }
  }
]

I found this solution in this Arch Linux forum thread, which was very helpful.

3. Restart WirePlumber and PipeWire

After editing the configuration, I restarted both WirePlumber and PipeWire to apply the changes:

systemctl --user restart wireplumber
systemctl --user restart pipewire

4. Switch output to HDMI in GNOME sound settings

Finally, I went to the GNOME sound settings and switched the audio output to HDMI. After that, the audio was routed to my TV correctly.

Important Notes:

  • You may need to restart PipeWire every time you plug in the TV to ensure it picks up the HDMI output correctly.

    You can do this by running:

    systemctl --user restart pipewire
    

I hope this helps anyone with a similar issue!