💾 Archived View for calcuode.com › gemlog › 2021-02-01_pipewire.gmi captured on 2021-12-17 at 13:26:06. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

-=-=-=-=-=-=-

PipeWire

Audio on Linux is a bit of a pain, at least when you need more than PulseAudio. I've spent quite a few hours setting up audio related stuff in the past and I look forward to the day when everything just works :-). I reckon pipewire has a decent shot at achieving that.

PipeWire README

(I'm not linking to the website because it's horrible)

I probably first heard about pipewire a few years ago and it's popped up a few times since. Mostly people talking about how this new thing is going to make multimedia on Linux good, but not actually using it. So when I reinstalled my desktop recently I decided to actually try running all of my audio through pipewire. As expected, it took longer than I'd hoped.

Getting the core pipewire stuff working was pretty quick once I figured out I needed a running D-Bus session: all I needed was to install pipewire, run it, and use the inbuilt tool pw-cat to play a handy FLAC file. It even used my USB DAC by default! More problematic was getting pulseaudio and JACK applications routed through pipewire.

Pipewire can run a whole pulseaudio server (provided in a separate package) that feeds directly into it's internal graph. I think that's quite neat and enabling it throught configuration is not tricky, but if you've also got pulseaudio installed then there can be problems. Well, only one problem I've noticed so far: if pulseaudio is started automatically then the D-Bus name is already taken, preventing pipewire from starting. Of course you can solve this by uninstalling pulseaudio, but if you want to use pavucontrol for volume pulseaudio is required. I'd quite like a pipewire native volume control program so I can do away with pulseaudio altogether.

Jack gave me the most trouble overall. The pipewire way of doing jack is to redirect programs that access the jack shared object (.so) files to its own set, either by running the program through the pw-jack tool or by making a system-wide link. After much annoyance I decided pw-jack doesn't work on Alpine Linux and so made symlinks to the pipwire versions of the jack libraries. This worked (yay!), but gets undone when jackd, which is required by pipewire (?), is upgraded. I feel like doing jack in the same way as pulseaudio might be nicer, but I'm sure the pipewire devs have their reasons. Also, using existing jack patchbay programs is alright, but I'd prefer something native to pipewire.

To hopefully save some people from the same issues I had, I wrote up some instructions for the Alpine Wiki. If you're an Alpine user and want to try pipwire, check them out! Feedback is welcome. Probably it's easier to get it working on systemd distros that use glibc.

PipeWire on the Alpine Linux Wiki

I've been using pipewire for all my audio for about a month now and my overall verdict is..... pretty good. It is still alpha quality and in heavy development, but I can imagine a time in the not-too-far-off-future when pipewire is the default on major Linux distributions. That said, I haven't tried the video side of things; at the moment a functional webcam is all I need.

---------------------------

Callum Brown, 2021-02-01

Licensed under CC BY-SA 4.0

Gemlog index