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:
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.
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).
I cannot say anything about bluetooth support. It might not work.
You might find it an interesting experiment, as it is being discussed to have pipewire by default in future Fedora release.
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.
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.
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.
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.
I was using pipewire-pulseaudio on Silverblue 33 successfully since start of January. Yesterday, due to a manual error unrelated to pipewire/pulseaudio, I had to reset my base system. But now the command to replace pulseaudio with pipewire-pulseaudio suggested by the OP doesnāt succeed anymore:
$ rpm-ostree override remove pulseaudio pulseaudio-module-bluetooth pulseaudio-module-x11 alsa-plugins-pulseaudio --install=pipewire-pulseaudio
Inactive base removals:
pulseaudio-module-bluetooth
pulseaudio-module-x11
pulseaudio
alsa-plugins-pulseaudio
Checking out tree 1470646... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-modular fedora-modular updates-archive
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2020-08-25T19:10:34Z
rpm-md repo 'updates' (cached); generated: 2021-02-07T00:59:12Z
rpm-md repo 'fedora' (cached); generated: 2020-10-19T23:27:19Z
rpm-md repo 'updates-modular' (cached); generated: 2021-02-03T02:19:29Z
rpm-md repo 'fedora-modular' (cached); generated: 2020-10-19T23:04:43Z
rpm-md repo 'updates-archive' (cached); generated: 2021-02-07T02:29:49Z
Importing rpm-md... done
Resolving dependencies... done
error: Could not depsolve transaction; 1 problem detected:
Problem: conflicting requests
- package pipewire-pulseaudio-0.3.13-4.fc33.i686 conflicts with pulseaudio-libs provided by pulseaudio-libs-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.13-4.fc33.x86_64 conflicts with pulseaudio-libs provided by pulseaudio-libs-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.14-1.fc33.x86_64 conflicts with pulseaudio-libs provided by pulseaudio-libs-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.14-2.fc33.x86_64 conflicts with pulseaudio-libs provided by pulseaudio-libs-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.15-2.fc33.x86_64 conflicts with pulseaudio-libs provided by pulseaudio-libs-14.0-2.fc33.x86_64
- package pulseaudio-14.0-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-0.3.21-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.21-2.fc33.x86_64 conflicts with pulseaudio provided by pulseaudio-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.21-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pulseaudio-14.0-2.fc33.x86_64
- package pulseaudio-14.0-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-0.3.18-1.fc33.x86_64
- package pipewire-pulseaudio-0.3.18-1.fc33.x86_64 conflicts with pulseaudio provided by pulseaudio-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.18-1.fc33.x86_64 conflicts with pulseaudio-daemon provided by pulseaudio-14.0-2.fc33.x86_64
- package pulseaudio-14.0-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-0.3.19-1.fc33.x86_64
- package pipewire-pulseaudio-0.3.19-1.fc33.x86_64 conflicts with pulseaudio provided by pulseaudio-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.19-1.fc33.x86_64 conflicts with pulseaudio-daemon provided by pulseaudio-14.0-2.fc33.x86_64
- package pulseaudio-14.0-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-0.3.19-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.19-2.fc33.x86_64 conflicts with pulseaudio provided by pulseaudio-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.19-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pulseaudio-14.0-2.fc33.x86_64
- package pulseaudio-14.0-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-0.3.19-3.fc33.x86_64
- package pipewire-pulseaudio-0.3.19-3.fc33.x86_64 conflicts with pulseaudio provided by pulseaudio-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.19-3.fc33.x86_64 conflicts with pulseaudio-daemon provided by pulseaudio-14.0-2.fc33.x86_64
- package pulseaudio-14.0-2.fc33.x86_64 conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-0.3.20-1.fc33.x86_64
- package pipewire-pulseaudio-0.3.20-1.fc33.x86_64 conflicts with pulseaudio provided by pulseaudio-14.0-2.fc33.x86_64
- package pipewire-pulseaudio-0.3.20-1.fc33.x86_64 conflicts with pulseaudio-daemon provided by pulseaudio-14.0-2.fc33.x86_64
I already checked the rpm specs for pipewire-pulseaudio and pulseaudio, but I could not find any recent changes to the dependencies that could have caused this (not an expert though). Is anyone else having this issue as well?
I have this issue too. My first impression is that this is a issue with requested version of pulseaudio being too higher than what pipewire-pulseaudio offers at the moment. Therefore, it cannot satisfy all requirements. (This is an educated guess, at this point.)
Options that I see:
override replace newest updated packages with older versions that require lower version of pulseaudio.
wait for pipewire-pulseaudio to catch up with new requirements.
discover (if true) that I used the override-mechanism incorrectly. Then use override in the correct way to make it work.
The thing that bugs me, though, is this message:
Inactive base removals:
pulseaudio-module-bluetooth
pulseaudio-module-x11
pulseaudio
Some people seam to not be able to neither rpm-ostree override replace or rpm-ostree override remove any packages in base image with libsolv-0.7.17-1.fc33 and rpm-ostree-2021.1-3.fc33. My self included. So it might be that itās related to multiple issues libsolv has. Apparently downgrading the library manually gave the ability to override back for some users.
I was specificly replying to the part where @cobratbq was wondering about inactive base removals. That is what is happening now when you try to override something in base image. Overrides get marked immediately as inactive. I got curious and tried the command to replace pulseaudio with pipewire-pulsaudio:
You are right, I downgraded libsolv and Iām not getting this, though Iām not getting any other updates either for the time being.
Wasnāt the libsolv issue supposed to be resolved with a new build in the repos?
I believe I was previously capable of updating (more than once) after rolling back to a working commit.
Well, yes, the upgrading and package layering was solved with rpm-ostree-2021.1-3.fc33 . It just that specifically overriding packages in base image doesnāt work now (neither override replace or override remove) with rpm-ostree-2021.1-3.fc33 and libsolv-0.7.17-1.fc33. I donāt know if every user with combination of those two packages experience this or just some. At least this is my expearince.