Installing pipewire as audio server + interface in Silverblue

Hi all. Very recently, pipewire 0.3.18 has become available as package. As pipewire is getting more attention lately as the next audio server, supposedly offering low latency and direct compability with Pulse Audio and JACK. In addition, pipewire is used for flatpak packages, so integration is - all things considered - pretty ubiquitous.

For Silverblue, you can replace Pulse Audio with pipewire with the following command:

# issue below command to replace Pulse Audio with pipewire's pulse audio-compatible interface
sudo rpm-ostree override remove pulseaudio pulseaudio-module-bluetooth pulseaudio-module-x11 alsa-plugins-pulseaudio --install=pipewire-pulseaudio
# now restart to boot into the new image
pactl info
# ...
# Server Name: PulseAudio (on PipeWire 0.3.18)
# ...

Please consider a few things when trying this:

  1. You will deviate further from the base image of Silverblue.
    It removes Pulse Audio from the base image using overrides, then adds pipewire-pulseaudio as overlay. Other pipewire -packages are already installed.
  2. I can confirm that Pulse Audio-based audio works in various use cases: normal desktop apps, wine inside toolbox, games, system audio. Volume control works as it is compatible with Pulse Audio. Mic is detected (but haven’t tested).
  3. I cannot say anything about bluetooth support. It might not work.
  4. You might find it an interesting experiment, as it is being discussed to have pipewire by default in future Fedora release.
  5. You might find it useful if you are interested in audio production/mixing. I have seen some topics on this subject, though I myself have no experience with or use for this use case, so have not tested it.
  6. I think I have noticced that on high CPU load, e.g. game that requires better hardware, audio might have stuttering issues where it previously wouldn’t. (Most likely due to low-latency characteristic.)

So far I have experimented with it only for a few hours and will report back in case I have critical issues/observations. I hope other people will find this interesting/useful.

Update
Not tested this myself yet, but I believe the command below will reset the customizations in order to revert back to Silverblue’s default Pulse Audio server.

sudo rpm-ostree override reset pulseaudio pulseaudio-module-bluetooth pulseaudio-module-x11 alsa-plugins-pulseaudio --uninstall=pipewire-pulseaudio
5 Likes

I did this and it is working well for me so far. I am excited to test it, thanks for the information!

I’m trying to replace pulseaudio with pipewire under fedora 33 and have only one issue - clicking on the menu in the right top corner does not contain a volume bar, only brightness. All other stuff working fine.

вс, 3 янв. 2021 г. в 22:07, Matthew Phillips via Fedora Discussion <fedoraproject@discoursemail.com>:

I’ve been using PipeWire for a while now and only just realized this is actually often missing.
You can bring it back by switching your preferred output device (ie from Line Out to Digital Output), but it’s not really persistent.

I have yet to make extended use of the sound applet on Gnome since imho the implementation is just too freaking limited, like why do I have to launch Sound settings to change my main output and input sources?

edit: Just to clarify, after the sound module returns you may always switch back to whichever audio device you were previously using and it will still stay there.

On a whim I decided to rebase to Silverblue Rawhide today. Seems I lost the function of my keyboard volume keys in the transition. Hoping that will come back in a fix lol.

One question, if/when the default audio server becomes pipewire will it stop becoming a ‘layered package’ and become part of the base image? Or will it still be layered because I had previously layered it?

It is layered compared to the base image. If the base image for Fedora 34 contains Pipewire instead of Pulse Audio, then Pipewire becomes part of the base image, so no layering needed anymore. Let’s say you would then choose to uninstall Pipewire in favor of Pulse Audio, then Pulse Audio would become layered on top given that it is a deviation from the base image. The base image is the common image for a release and is typically only updated for package updates + security fixes (AFAIK). However, for a new release, package changes may be introduced.

As for your “failed” rebase. You are aware that you can always rollback/rebase to previous release, right?

I didn’t intend to make it come off as a failure, so that is my bad. Just an observation and to be honest my hardware is somewhat janky (Thinkpad E585).

I was thinking there might have been something broken in the new packages because I was able to use my keyboard controls for the volume even with using pipewire on Silverblue stable. Not so in Rawhide, but figured there would be a fix eventually coming out since I’ve always been able to use my keyboard. No desire on my part to go back, it is otherwise working great.