Unable to customize pipewire daemon to include RAOP Discover on boot

I’ve been trying to configure pipewire to load the context.module libpipewire-module-raop-discover loaded on login. However, when attempting to implement the steps detailed on https://docs.pipewire.org/ results in no sound outputs.

Current system:
Fedora Linux 40 (Workstation Edition) - System is defined as PT-PT
Intel_R_ Client Systems NUC8i7BEH
System Memory 16,0 GiB
Processor Intel® Core™ i7-8559U × 8
Graphics Intel® Iris® Plus Graphics 655 (CFL GT3)
GNOME 46
Window management Wayland
Kernel Version Linux 6.8.9-300.fc40.x86_64

Steps taken

  1. Copied the contents of /usr/share/pipewire to ~/.config/pipewire

    reboot revealed that sound worked as it did before this change

  2. Created a text file file.confin ~/.config/pipewire/pipewire.conf.d with the contents of the Example configuration available on RAOP Discover documentation.

    reboot left me with no audio outputs (as seen on GNOME Setting App)
    deleted file.conf logged out and logged back in and sound output options were again available

  3. Created a new text file file2.confin ~/.config/pipewire/pipewire.conf.d with the following contents

context.modules = [
{   name = libpipewire-raop-discover
    args = {  }
            }
]

reboot left me with no audio outputs (as seen on GNOME Settings App)
deleted file2.conf logged out and logged back in and sound output options were again available

  1. Tryed troubleshooting procedures (on Terminal)
  • Installed pulseaudio-utils (all sites I read suggested I had to have pactl installed).
  • Ran pactl list modules which listed 21 modules, none of which was libpipewire-module-raop-discover.
  • Ran: pactl load-module module-raop-discover then pactl list modules and the output now presented
Módulo #536870913
	Nome: module-raop-discover
	Argumento: 
	Contador de utilização: n/d
	Propriedades:
		module.author = "Wim Taymans <wim.taymans@gmail.con>"
		module.description = "mDNS/DNS-SD Service Discovery of RAOP devices"
		module.usage = ""
		module.version = "1.0.6"

At this point when I go to Gnome Settings, all my home-network airplay devices are listed and sound output works as expect.

What can I do to have Module RAOP Discover loaded on boot.
What have I done wrong, because as far as I can understand I followed the instruction on https://docs.pipewire.org/ to the letter.

Thank you.

Since this unanswered query keeps being the first search engine result when I look into this, I figured I’d add some detail. The above steps were quite close. The below solution works on Fedora workstation as well as the rpm-ostree variants (Silverblue etc), and was tested on F40 and F41 but should work on any fedora system with the package pipewire-libs providing the raop discover module.

How the ~/.config/pipewire/ override setup works, you copy a config file from /usr/share/pipewire/ (such as pipewire.conf) to an empty ~/.config/pipewire, or if your Fedora system is multi-user, as root to /etc/pipewire/. The file name needs to stay the same, pipewire will override the existing file with the one from your .config. Make your modifications to that file where needed. Plenty of pipewire modules load in pipewire.conf so it’s what this example uses.

In ~/.config/pipewire/pipewire.conf, search for the context.modules section that already exists, it’ll be fairly long. At the end of that section, before the “]” that closes the section, and before the context.objects section below it, insert something like this:

        this = is an example line from the last module } ]
    }
    # CUSTOMIZATION load raop discover for discovering airplay devices
    { name = libpipewire-module-raop-discover
        args = {  }
    }
]

context.objects = [

note that this is very similar to Alberto’s original post, but the module name is libpipewire-module-raop-discover instead of libpipewire-raop-discover. Your setup may need some lines within the “args” section, the documentation link in the first post should guide you.

If pipewire doesn’t seem to be starting after your changes, you can check the logs with journalctl --user -u pipewire -r which will show the latest messages at the top and let you arrow down to see about any errors