- Usa commands like pactl info and inxi -A to check if PipeWire is the active server.
- Check the status of services such as pipewire, wireplumber, and pulseaudio with systemctl --user status.
- Distributions like Debian 12 and Fedora already use PipeWire by default, while in Ubuntu or Arch it has to be adjusted manually.
- Disabling and masking PulseAudio avoids conflicts when you want PipeWire to handle all audio.
In recent years, sound in GNU/Linux has taken a significant turn thanks to PipeWire, PulseAudio, JACK and ALSAAnd it's not always obvious what's actually handling the system audio. Sometimes we install a new distro, everything sounds fine, but we're not sure what server is running underneath or how to reliably check it.
If you are wondering How to tell if you're using PipeWire in LinuxIf you're still using PulseAudio, or even if you have both running simultaneously without realizing it, this guide will provide a thorough explanation. You'll find practical commands, examples for Debian, Ubuntu, Arch, Manjaro, and Fedora, and how to switch between PulseAudio and PipeWire (and vice versa) without any hassle.
Basic concepts: ALSA, PulseAudio, JACK and PipeWire
Before we start issuing commands, it's important to understand what each layer does. in the Linux sound stack, because many doubts arise precisely from mixing these terms as if they were the same.
in the first place is ALSA, which is part of the Linux kernel and is responsible for speaking directly with the hardware ALSA provides the drivers and firmware necessary for your audio card or chip to function; therefore, it is not a replacement for PipeWire or any other server.
The ALSA bus has been used for years. PulseAudio as a “desktop” sound serverIt is usually responsible for mixing various applications, controlling the overall volume, handling output profiles, Bluetooth, etc. It has long been the standard in most distributions.
In professional or low-latency environments, this comes into play JACK, an audio server designed for studios, musicians and productionJACK is highly optimized for very low latency and complex routing, but historically it has been a bit more cumbersome to configure for the average user.
To all this is added PipeWire, a modern media server that unifies audio and videoIt not only replaces PulseAudio and JACK, but is also designed to handle screenshots, cameras, and video streams, with enhanced security for Wayland environments and containerized applications like Flatpak.
What exactly is PipeWire and why are so many distributions adopting it?
PipeWire was created as a multimedia stream server designed for video and screencastingand it evolved into a powerful audio server as well. Its development is closely tied to the Red Hat, GNOME, systemd, and Flatpak ecosystem, and Fedora was one of the first to adopt it on a large scale.
In its early stages, the project started with ideas such as PulseVideo, a small server that distributed video from V4L2 cameras to several applications using GStreamer, D-Bus, and file descriptor passing. With There It was found that this approach could be extended to screenshots under Wayland, adding security and permission control through portals for isolated applications.
To accommodate the audio, PipeWire had to suffer major rewrites until it became a complete media server, with the ability to manage both video devices and audio streams and allow customers to supply and consume streams flexibly.
One of PipeWire's main goals is to offer a Linux solution. audio server suitable for professional usereducing latency, seamlessly integrating PulseAudio and JACK, and ensuring compatibility with Bluetooth, desktop applications, and tools musical production.
Furthermore, PipeWire is closely related to GNOME and Wayland for screen sharing and screencastingGNOME Shell, for example, sends a video stream to PipeWire when the user shares their screen, and this stream is routed to applications like Firefox, Chrome/Chromium, or OBS Studio through secure portals.
PipeWire as a replacement for PulseAudio and JACK
One of the keys to PipeWire's success is that it emulates the PulseAudio and JACK APIsso that many applications can continue to function unchanged while actually connecting to PipeWire underneath.
In the case of “desktop” audio, PipeWire can act as a PulseAudio server thanks to the pipewire-pulse componentThe applications create the illusion of speaking with PulseAudio, but the streams end up in PipeWire, and that is reflected, for example, in the output of certain diagnostic commands.
For professional audio users, PipeWire offers JACK compatibility through dedicated modules and libraries.In some distributions they are managed as packages. pipewire-jack or through configurations that replace the JACK libraries at runtime, targeting the PipeWire backend.
It is important to highlight that PipeWire does not replace ALSA, as ALSA remains essential in the kernel to access the hardware. PipeWire relies on ALSA to communicate with sound cards, just as PulseAudio and JACK did.
In many modern distributions, such as In recent Debian 12 Bookworm or Fedora systems, PipeWire is already the default sound server.In others, such as Ubuntu 22.04 LTS or Linux Mint 21.x, you can enable it instead of PulseAudio with a few additional steps.
How to tell if you're using PipeWire: universal methods
The most direct way to check which audio server you are using It involves querying the information exposed by the PulseAudio API, either to an actual PulseAudio daemon or to its replacement in PipeWire.
A very useful command is pactl info, which displays data from the sound serverAlways launch it as a normal user (without sudo):
$ pactl info
At the exit, look at the line “Server name”If you see something similar to:
Nombre del servidor: PulseAudio (on PipeWire 0.3.65)
This means your applications connect to the PulseAudio API, but in reality The server handling the audio is PipeWire., in the version indicated. You can also directly specify that data with:
$ pactl info | grep 'Nombre del servidor'
If instead only “PulseAudio” without mention of PipeWireNormally, you'll continue using pure PulseAudio as your main sound server.
Another very practical command is inxi -Awhich offers an audio summary If you have that program installed. In the audio section, look at the field Server-1If it indicates something like:
Server-1: PipeWire v: 0.3.65 status: active
it is clear that PipeWire is up and running and configured as the primary serverIf PulseAudio is mentioned instead, your system will continue to use the classic server.
Check the PipeWire and PulseAudio services using systemd
Another way to confirm what's running is to check the systemd user services.Since both PulseAudio and PipeWire typically run in the user session, not like root.
To view the status of PulseAudio on systems that manage it with systemd, you can use:
$ systemctl --user status pulseaudio
If the output shows the service as “active (running)” and you see a process /usr/bin/pulseaudioThis means that PulseAudio is running. It is often triggered by a socket. pulseaudio.socket, which launches the on-demand service.
Regarding PipeWire, the equivalent command would be:
$ systemctl --user status pipewire
If it appears as “active (running)” with /usr/bin/pipewire And, furthermore, he's fired it pipewire.socketYou have PipeWire running for your user. It's common to see this on systems that have migrated successfully. PipeWire and PulseAudio disabled or masked.
In some scenarios, especially after tinkering with packages and scripts, you might end up having PipeWire and PulseAudio running simultaneouslyIt's possible, for example, to see both services running on Arch or Manjaro if the replacement packages haven't been properly configured. This can lead to unusual behavior, so it's best to choose only one as the primary server.
How to check which server your distro uses: practical examples
Depending on the distribution you use, the default state changes considerably.Let's look at the most common cases so you're clear on what you should expect in each one.
Debian 12 Bookworm
In Debian 12, PipeWire 0.3.65 is the default sound server in new installationsThe installer itself takes care of configuring everything, so in principle you shouldn't need to touch anything after the clean installation.
If you upgraded from Debian 11 and something hasn't gone well, you might want to continue with PulseAudio as an active server or that pieces are missing, such as wireplumberThat's why it's so important to first check the current status using the commands mentioned above.
As a normal user, run:
$ pactl info | grep 'Nombre del servidor'
If you see “PulseAudio (on PipeWire 0.3.65)You're using PipeWire underneath. For further refinement, also check:
$ inxi -A
Si en Server-1 PipeWire figure with state activeThe migration is complete. If you still see PulseAudio, you'll need to install or adjust the necessary packages.
The minimum components for a PipeWire working on Debian 12 Packages include:
- pipewire
- pipewire-bin
- pipewire-pulse
- libpipewire-0.3-modules
- wireplumber
- libwireplumber-0.4-0
- liblua5.3-0
The recommended way is to install the metapackage pipewire-audio, which depends on wireplumber, pipewire-pulse, pipewire-alsa and libspa-0.2-bluetooth And, incidentally, it takes care of removing PulseAudio to avoid conflicts between both servers.
Once the packages are installed, you can Start and activate PipeWire services from your user account with:
$ systemctl --user --now enable pipewire pipewire-pulse
$ systemctl --user daemon-reload
Y completely disable PulseAudio so that it doesn't interfere:
$ systemctl --user --now disable pulseaudio.service pulseaudio.socket
$ systemctl --user mask pulseaudio
After restarting or logging out and back in, run again pactl info | grep 'Nombre del servidor' to confirm that the server now appears as PulseAudio on PipeWire.
Ubuntu 22.04 LTS and Linux Mint 21.x
On Ubuntu 22.04 LTS and Linux Mint 21.x, PulseAudio remains the default sound server in many installations, although PipeWire is available and can be activated as a replacement.
If your goal is for the system to use PipeWire for audio, you need to install a series of PipeWire and WirePlumber related packagesStarting with updating the system:
sudo apt update && sudo apt upgrade -y
Then install PipeWire and compatibility modules:
sudo apt install pipewire pipewire-audio-client-libraries pipewire-pulse pipewire-jack libspa-0.2-bluetooth -y
Next, install WirePlumber, the recommended session manager for PipeWire:
sudo apt install wireplumber -y
Once you have it, you can Disable PulseAudio and enable PipeWire as the primary server. with these commands (as your user, without sudo in front of systemctl –user):
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user mask pulseaudio
systemctl --user --now enable pipewire pipewire-pulse
After restarting the system with:
sudo reboot
Check the services:
systemctl --user status pipewire
systemctl --user status wireplumber
If both are active, you'll already have PipeWire and WirePlumber handling the audioFinally, confirm with pactl info that the server name shows PulseAudio (on PipeWire …).
Arch Linux and Manjaro
In Arch and derivatives, such as Manjaro, It's quite easy to take down PulseAudio and PipeWire at the same time if you don't follow a clear plan.especially if you were coming from a previous installation with JACK and custom scripts.
If you want to switch to PipeWire on Manjaro and leave PulseAudio behind, a typical strategy is Uninstall pulseaudio and add the appropriate PipeWire packages. For example: uterine
sudo pacman -Rdd pulseaudio
The option -Rdd avoids dragging dependencies that could break other packagesSo, you need to use it knowing what you're doing. Then, install PipeWire and its modules:
sudo pacman -S pipewire pipewire-alsa pipewire-jack pipewire-media-session pipewire-pulse
In some professional audio-oriented configurations, it may also come into play pipewire-jack-dropin from AUR, which is installed with a helper like yay:
yay -S pipewire-jack-dropin
After restarting, you should have PipeWire handling ALSA, JACK and PulseAudioTo check, use it again. pactl info y systemctl --user status pipewire, and check that PulseAudio is not still running in parallel.
If you previously had scripts that started JACK at login or custom rules to switch between different audio interfaces, it's advisable Disable those scripts to avoid conflicts.because PipeWire can automatically emulate JACK when a client needs it and hot-switch sound cards without any extra hacks.
Fedora and the role of PipeWire in GNOME
In Fedora, PipeWire first arrived as a solution for screencasting under Wayland And little by little it also assumed the role of audio server, replacing PulseAudio and facilitating screen sharing in browsers and recording applications.
GNOME-Shell It generates a video stream that it delivers to PipeWire when you share your screen.and that flow is channeled towards apps such as Firefox, Chrome/Chromium, or OBS Studio via the portal APIs. Additionally, the volume control you see in GNOME interacts with PipeWire through the PulseAudio API.
On current Fedora systems, if you run pactl info You'll see that the server is PulseAudio over PipeWire., and systemctl --user status pipewire will confirm that PipeWire is active as a user service.
Session managers: pipewire-media-session and WirePlumber
For PipeWire to function correctly, it needs a session manager.which is responsible for deciding which device to use, how flows are routed, how Bluetooth profiles are managed, etc. There are currently two main options.
On one side is pipewire-media-session, which offers basic functionality, initially very much focused on share screen And that's about it. It has been used in previous versions and in environments with simple requirements.
On the other hand we have WirePlumber, which is the recommended session manager in modern distributionsWirePlumber provides more advanced policies, better Bluetooth support, automatic profile switching, and more flexible configuration for complex desktop environments.
In Debian 12, for example, Installing the wireplumber package replaces the old pipewire-media-sessionand you will need to enable it as a user service with:
$ systemctl --user --now enable wireplumber.service
When using WirePlumber It is no longer necessary to create certain empty files that were required in older media-session configurations, such as those related to the JACK layer; the modern manager takes care of this more automatically.
Additional configuration: ALSA, JACK and Bluetooth with PipeWire
Although PipeWire centralizes the audio, ALSA remains key for level control.A good practice is to open alsamixer en terminal and check that all important channels are active and at a reasonable level.
In alsamixer, a muted channel appears with “MM” appears below the bar, while an active channel displays “OO”You can toggle between on and off by pressing the key MEven if PipeWire shows the volume at maximum, if ALSA has the channel at minimum or muted, you won't hear anything.
For professional audio users, PipeWire can act as a JACK server using packages like pipewire-jack or libspa-0.2-jackIn some cases, commands such as the following are used:
# cp /usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf /etc/ld.so.conf.d/
# ldconfig
This ensures that the JACK libraries are replaced by PipeWire libraries at runtime, pointing to the directory where the PipeWire JACK modules are located, allowing applications to continue using the JACK API but on top of the PipeWire engine.
In the field of Bluetooth, PipeWire works in conjunction with BlueZ to offer Bluetooth compatible headphones LE Audio when used as a PulseAudio replacementIn distributions like Debian, it is often necessary to install packages such as libspa-0.2-bluetooth and delete pulseaudio-module-bluetooth to avoid the "Protocol not available" error when connecting devices.
Advanced Bluetooth configuration in PipeWire is managed through files such as /usr/share/pipewire/media-session.d/bluez-monitor.conf or their equivalents depending on the session manager. To customize codecs and other options, this file is usually copied to:
~/.config/pipewire/media-session.d/bluez-monitor.conf
and edit it from your user account, without root privileges, to adjust details without touching the global system settings.
How to disable PulseAudio and use only PipeWire
One of the most frequent mistakes after “migrating” to PipeWire is leaving PulseAudio half aliveThis means that sometimes it starts and sometimes it doesn't, or it activates via socket and competes with PipeWire. To avoid this, it's best to disable it completely.
On systems with user-run systemd, it is common to run:
$ systemctl --user --now disable pulseaudio.service pulseaudio.socket
And finally, in case PulseAudio continues to activate for any reason, mask the service with:
$ systemctl --user mask pulseaudio
In many cases, after restarting, PulseAudio will stop starting even accidentally, and PipeWire will take exclusive control.If at any point you want to revert to the previous behavior, simply unmask and re-enable PulseAudio:
$ systemctl --user unmask pulseaudio
$ systemctl --user --now enable pulseaudio.service pulseaudio.socket
And if you no longer want to use PipeWire for audio, You can disable its PulseAudio-related services.:
$ systemctl --user --now disable pipewire pipewire-pulse
Passionate writer about the world of bytes and technology in general. I love sharing my knowledge through writing, and that's what I'll do on this blog, show you all the most interesting things about gadgets, software, hardware, tech trends, and more. My goal is to help you navigate the digital world in a simple and entertaining way.