Pipewire as default audio server

Is there any way to set pipewire as the default audio server on clear linux, and disable pulseaudio at the same time? Normal systemctl commands don’t seem to work at disabling/enabling these services, and pulseaudio remains running and default despite my attempts to replace it.

Any help would be appreciated

https://pkgs.org/download/pipewire-pulseaudio

2 Likes

Also, keep an eye on Use pipewire instead of pulseaudio by default · Issue #2278 · clearlinux/distribution · GitHub

1 Like

Starts with troubles, ends with joy… :wink:

1 Like

Has anyone managed to switch to using Pipewire?

Many bugs got resolved last months, in a couple of weeks it will be 100% compatible with Jack.

# see https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/#autospawning
mkdir -p ~/.config/pulse
echo 'autospawn=no'>>~/.config/pulse/client.conf

# see https://github.com/clearlinux/distribution/issues/2589
mkdir  -p ~/Desktop/git
cd ~/Desktop/git
git clone https://gitlab.freedesktop.org/pipewire/wireplumber
cd wireplumber
meson setup --prefix=/usr/local --buildtype=release build/
meson compile -C build
sudo meson install -C build

# finish up
systemctl --user disable pulseaudio
systemctl --user enable pipewire{-pulse,}
systemctl --user enable wireplumber
reboot

(ensure /usr/local/lib64 is setup as per man stateless. see below)

2 Likes

Thanks for the writeup.

I built and installed wireplumber and it told me a library was missing.

Run-time dependency libelogind found: NO

So this seems to be needed for Gnome Display Manager.

https://pkgs.alpinelinux.org/package/edge/community/x86/wireplumber-logind

Do you know how I can install this depency as I can’t find it on swupd. Perhaps it’s part of one of these enormous bundles. I’m using Gnome so I’m assuming I need it.

Anyway I installed Wireplumber and it won’t run due to not being able to find a library

wireplumber: error while loading shared libraries: libwireplumber-0.4.so.0: cannot open shared object file: No such file or directory

The file is installed in /usr/loca/lib64 so perhaps I need to alter a conf file or add it to the path.

not neccessary,
elogind is only required if you dont have systemd

this is because you have installed it in /usr/local
so you must do

echo "/usr/local/lib64" | sudo tee -a /etc/ld.so.conf
sudo ldconfig

see man stateless section ldconfig

1 Like

Many thanks, that’s fixed it. Just in time for the F1 practice too :o)

I’m still at the recipe following stage so doubt I’d have sorted that anytime soon.

So anytime I build something that puts a library somewhere I need to update whatever ld.so is , I see its a “dynamic linker loader”. I think this will fix a couple of other issues I’ve had building stuff to.

Happy weekend!

export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/local/lib64/pkgconfig
1 Like

I was using the Ardour flatpak quite happily with Pipewire Jack, however some plugins did not work, so I tried a downloaded binary from Ardour, and also built it myself from source.

Flatpak Ardour can see the Pipewire Jack Server emulation running and connect to it, however Native Ardour cannot. Native Ardour only connects to Pipewire using Pulse.

Some github sleuthing by someone smarter than me has revealed that Flatpak Ardour has the pw-jack bridge running inside the container, which then connects to the xdg-run/pipewire-0 socket in Clear Linux.

Apparently pw-jack does not exist on Clear,

So I’m wondering

  • if there is a cunning workaround for this
  • whether it could be turned on in a subsequent build
  • what would happen if I build pipewire myself and installed it in the user space, where I’ve installed wireplumber.

would user space installed packages like this work like config files in /etc/ ? in that they take precedence over system supplied ones? so I’d have two sets of pipewire binaries, the system ones, and mine /usr/local, and the system would run mine?

depends what is first in $PATH

1 Like

if you request this on github, there is a high chance that your request will be accepted

cheers. I’ve submitted a request.

Does the PipeWire-JACK bridge provide transparent communication like in this video? :smile:

Good grief, sounds like he was having a stroke. all I got was he was piping audio from one PC to another using netJack, which is a horrible idea for live audio. sounds like he also hacked a monitoring setup. I’ve done network video in a live rig VJing, dropping a few frames isn’t really noticeable, but audio seems like a needless hack. streaming to small devices from a server using Kodi is ok because sync doesn’t matter. Jack2 is janky enough already without adding the nightmare of dropped packets and all that stuff. thinking about it I’ve seen people doing radio work using Jack network for adverts and that kind of thing, that doesn’t need to stay in sync.

I have no idea about netword audio with Pipewire and Pipewire-Jack as I cannot get Pipewire-Jack working on my laptop, I tried building pipewire form source and the compiler crashes everytime. I then tried using the autospec tool to build it but that also crashes. so I gave up for the moment. urgh. back to the acoustic guitar.

I’d say network audio = pain.

1 Like

Run-time dependency libspa-0.2 found: NO (tried pkgconfig and cmake)

meson.build:36:0: ERROR: Dependency “libspa-0.2” not found, tried pkgconfig and cmake

I can’t find bundles that includle libspa, how to install it?

do you have pipewire installed?

if you dont:
sudo swupd bundle-add flatpak
or
sudo swupd bundle-add devpkg-pipewire

1 Like