Unable to load pipewire module snapcast discover

Hi!

I’m trying to setup pipewire to be be able to stream audio directly to a snapcast server in my home network. This requires loading an additional module named libpipewire-module-snapcast-discover. The module is described in the pipewire documentation. I followed the steps described there and simply recreated the sample configuration.

However, pipewire is unable to load the module. systemctl --user status pipewire gives

Started PipeWire Multimedia Service.
pw.conf: 0x5643180455a0: could not load mandatory module "libpipewire-module-snapcast-discover": no such file or directory

I tried looking up all pipewire module files that or on my disk via ls -1 /usr/lib64/pipewire-0.3/libpipewire-module-* which gives

/usr/lib64/pipewire-0.3/libpipewire-module-access.so
/usr/lib64/pipewire-0.3/libpipewire-module-adapter.so
/usr/lib64/pipewire-0.3/libpipewire-module-avb.so
/usr/lib64/pipewire-0.3/libpipewire-module-client-device.so
/usr/lib64/pipewire-0.3/libpipewire-module-client-node.so
/usr/lib64/pipewire-0.3/libpipewire-module-combine-stream.so
/usr/lib64/pipewire-0.3/libpipewire-module-echo-cancel.so
/usr/lib64/pipewire-0.3/libpipewire-module-fallback-sink.so
/usr/lib64/pipewire-0.3/libpipewire-module-filter-chain.so
/usr/lib64/pipewire-0.3/libpipewire-module-link-factory.so
/usr/lib64/pipewire-0.3/libpipewire-module-loopback.so
/usr/lib64/pipewire-0.3/libpipewire-module-metadata.so
/usr/lib64/pipewire-0.3/libpipewire-module-netjack2-driver.so
/usr/lib64/pipewire-0.3/libpipewire-module-netjack2-manager.so
/usr/lib64/pipewire-0.3/libpipewire-module-parametric-equalizer.so
/usr/lib64/pipewire-0.3/libpipewire-module-pipe-tunnel.so
/usr/lib64/pipewire-0.3/libpipewire-module-portal.so
/usr/lib64/pipewire-0.3/libpipewire-module-profiler.so
/usr/lib64/pipewire-0.3/libpipewire-module-protocol-native.so
/usr/lib64/pipewire-0.3/libpipewire-module-protocol-pulse.so
/usr/lib64/pipewire-0.3/libpipewire-module-protocol-simple.so
/usr/lib64/pipewire-0.3/libpipewire-module-pulse-tunnel.so
/usr/lib64/pipewire-0.3/libpipewire-module-rtkit.so
/usr/lib64/pipewire-0.3/libpipewire-module-rtp-sap.so
/usr/lib64/pipewire-0.3/libpipewire-module-rtp-sink.so
/usr/lib64/pipewire-0.3/libpipewire-module-rtp-source.so
/usr/lib64/pipewire-0.3/libpipewire-module-rt.so
/usr/lib64/pipewire-0.3/libpipewire-module-session-manager.so
/usr/lib64/pipewire-0.3/libpipewire-module-spa-device-factory.so
/usr/lib64/pipewire-0.3/libpipewire-module-spa-device.so
/usr/lib64/pipewire-0.3/libpipewire-module-spa-node-factory.so
/usr/lib64/pipewire-0.3/libpipewire-module-spa-node.so
/usr/lib64/pipewire-0.3/libpipewire-module-vban-recv.so
/usr/lib64/pipewire-0.3/libpipewire-module-vban-send.so

Indeed my desired module is missing - as well as a lot of other modules mentioned in the pipewire documentation.

My question now is if there is another package providing these missing pipewire modules in the repos somewhere? I tried searching via pacman -F libpipewire-module-snapcast-discover, but this gives no result.

I also looked at the arch pipewire package where the module (again as well as other modules) is also not provided. Maybe this is a packaging issue? Or am I missing something completely here?

My pipewire version is 1.6.2, system is up to date.

You need to install the pipewire-zeroconf package, which provides the following files:

/usr/lib/pipewire-0.3/libpipewire-module-raop-discover.so
/usr/lib/pipewire-0.3/libpipewire-module-raop-sink.so
/usr/lib/pipewire-0.3/libpipewire-module-rtp-session.so
/usr/lib/pipewire-0.3/libpipewire-module-snapcast-discover.so
/usr/lib/pipewire-0.3/libpipewire-module-zeroconf-discover.so
/usr/share/licenses/pipewire-zeroconf/COPYING
/usr/share/man/man7/libpipewire-module-raop-discover.7.gz
/usr/share/man/man7/libpipewire-module-raop-sink.7.gz
/usr/share/man/man7/libpipewire-module-rtp-session.7.gz
/usr/share/man/man7/libpipewire-module-snapcast-discover.7.gz
/usr/share/man/man7/libpipewire-module-zeroconf-discover.7.gz
2 Likes

Thanks, it seems I was indeed completely blind. For future problems, is there a pacman command that I could have used that would have found this?

If you know the full file name, then the pkgfile command (you may need to install the pkgfile package) can be used:

pkgfile -s libpipewire-module-zeroconf-discover.so
extra/pipewire-zeroconf

However, in this case I just searched for “libpipewire-module-zeroconf-discover” on Google, and the 2nd result was the Arch manual page that I linked to above. The package name is at top right of that page:

2 Likes

Pamac command to search for files shows the name of the package owner

$ pamac search --files snapcast-discover.so
/usr/lib/pipewire-0.3/libpipewire-module-snapcast-discover.so is owned by pipewire-zeroconf

ArchWiki also suggests installing pipewire-zeroconf for network support:

ArchWiki – PipeWire – Sharing audio devices with computers on the network

PipeWire supports sharing audio over the network using several mechanisms

The PipeWire wiki includes an overview and comparison page for the different network protocols.

To enable this functionality, install the pipewire-zeroconf package.

2 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.