According to its website:
PipeWire is a project that aims to greatly improve handling of audio and video under Linux. It provides a low-latency, graph based processing engine on top of audio and video devices that can be used to support the use cases currently handled by both pulseaudio and JACK. PipeWire was designed with a powerful security model that makes interacting with audio and video devices from containerized applications easy, with supporting Flatpak applications being the primary goal.
In other words, it replaces the current audio system with a system that is modular and ready for the future.
Checking what you are running now
Using the command
pactl info you can check to see what version of the audio system you are using. When you run only
PulseAudio the output will include the following:
Server Name: PulseAudio
When you have taken the steps in this article the output will look like the following:
Server String: /run/user/1000/pulse/native Library Protocol Version: 34 Server Protocol Version: 35 Is Local: yes Client Index: 50 Tile Size: 65472 User Name: arjen Host Name: beta Server Name: PulseAudio (on PipeWire 0.3.40) Server Version: 15.0.0 Default Sample Specification: float32le 2ch 48000Hz Default Channel Map: front-left,front-right Default Sink: alsa_output.pci-0000_0c_00.3.analog-stereo Default Source: alsa_input.usb-046d_Logitech_BRIO_B48C2639-03.analog-stereo Cookie: 678c:13a1
Enable it in POP_OS
Pipewire lives in
userland, meaning that it is a service that is run whenever a user is logged into a session. First you will need to add the
update your repositories.
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream -y sudo apt update sudo apt upgrade -y sudo apt install -y pipewire gstreamer1.0-pipewire pipewire-pulse \ libspa-0.2-bluetooth libspa-0.2-jack pipewire-audio-client-libraries
For each user that wants to run Pipewire you need to enable it using
systemctl. Afterwards you need to reboot.
systemctl --user mask pulseaudio systemctl --user --now disable pulseaudio.service pulseaudio.socket systemctl --user --now enable pipewire-media-session.service systemctl reboot
If you ever need to switch back to
PulseAudio the steps are quite easy:
systemctl --user unmask pulseaudio systemctl --user --now disable pipewire-media-session.service systemctl --user --now enable pulseaudio.service pulseaudio.socket systemctl reboot
Cadence and Catia
Catia tools are extremely useful when working with audio. To get them, first add the
# Install required dependencies if needed sudo apt-get install apt-transport-https gpgv # Remove legacy repos sudo dpkg --purge kxstudio-repos-gcc5 # Download package file wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb # Install it sudo dpkg -i kxstudio-repos_10.0.3_all.deb
Then install the applications:
sudo apt install carla-git cadence
You can then use
Catia to modify how sound is routed in your environment. You can for instance route the output of your Firefox session into the input of Discord, thereby sharing your sound with your friends. The below screenshot shows the default view in
Catia for my environment.
Go back to the homepage.