- 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 ALSA , and it's not always obvious which daemon is actually handling the system's 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're wondering how to tell if you're using PipeWire on Linux , if PulseAudio is still running, 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 the role of each layer in the Linux sound stack, because many questions arise precisely from mixing these terms as if they were the same.
First, there's ALSA, which is part of the Linux kernel and handles direct communication with the sound hardware . ALSA provides the necessary drivers and firmware for your audio card or chip to function; that's why it's not replaced by PipeWire or any other server.
PulseAudio has been used for years as the desktop sound server on top of ALSA , typically responsible for mixing various applications, controlling global volume, managing output profiles, Bluetooth, etc. It has long been the standard in most distributions.
In professional or low-latency environments, JACK comes into play, an audio server designed for studios, musicians, and production . JACK 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.
Adding to all this is PipeWire, a modern media server that unifies audio and video . It 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 began as a multimedia stream server designed for video and screencasting , and 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 distributions to adopt it widely.
Initially, the project started with ideas like PulseVideo, a small server that distributed video from V4L2 cameras to various applications using GStreamer, D-Bus, and file descriptor passing. Over time , it became clear that this approach could be extended to screen capture under Wayland, adding security and permission control through portals for isolated applications.
To accommodate audio, PipeWire had to undergo major rewrites to become a full-fledged media server , capable of managing both video devices and sound streams and allowing clients to flexibly supply and consume streams.
One of PipeWire's main goals is to offer an audio server on Linux that meets professional standards , reducing latency, coherently integrating PulseAudio and JACK, and ensuring compatibility with Bluetooth, desktop applications, and music production tools.
Furthermore, PipeWire is closely integrated with GNOME and Wayland for screen sharing and screencasting . GNOME Shell, for example, sends a video stream to PipeWire when the user shares their screen, and this stream is routed to applications such as 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 APIs , so 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 component . Applications create the illusion of communicating with PulseAudio, but the data streams ultimately end up in PipeWire, and this is reflected, for example, in the output of certain diagnostic commands.
For professional audio users, PipeWire offers JACK support through dedicated modules and libraries . In some distributions, these are managed as packages like pipewire-jack or through configurations that replace the JACK libraries at runtime, targeting the PipeWire backend.
It's important to note that PipeWire doesn't replace ALSA, as ALSA remains essential to the kernel for accessing hardware. PipeWire relies on ALSA to communicate with sound cards, just as PulseAudio and JACK did.
In many modern distributions, such as recent Debian 12 Bookworm or Fedora releases, 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 is to consult 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
In the output, 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 are connecting to the PulseAudio API, but the server actually handling the audio is PipeWire , in the specified version. You can also specify this information directly with:
$ pactl info | grep 'Nombre del servidor'
If instead you only see “PulseAudio” without any mention of PipeWire , it is normal to 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's clear that PipeWire is active and configured as the primary server . If 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 usually run in the user session, not as 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 experimenting with packages and scripts, you might end up with PipeWire and PulseAudio running simultaneously . For example, you might see both services active 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 varies 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 for new installations . The installer itself handles the configuration, so you shouldn't need to change anything after a clean install.
If you've upgraded from Debian 11 and something isn't working correctly, you might still be using PulseAudio as your active server , or components like Wireplumber might be missing . That's why it's so important to first check the current status using the commands mentioned earlier.
As a normal user , run:
$ pactl info | grep 'Nombre del servidor'
If you see “ PulseAudio (on PipeWire 0.3.65) ”, you are using an underlying PipeWire version. For further fine-tuning, also check:
$ inxi -A
If PipeWire is listed as active on Server-1 , the migration is complete. If you still see PulseAudio, you need to install or adjust the necessary packages.
The minimum components for a functional PipeWire on Debian 12 include packages such as:
- pipewire
- pipewire-bin
- pipewire-pulse
- libpipewire-0.3-modules
- wireplumber
- libwireplumber-0.4-0
- liblua5.3-0
The recommended way is to install the pipewire-audio metapackage, which depends on wireplumber, pipewire-pulse, pipewire-alsa and libspa-0.2-bluetooth and, incidentally, 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
And 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
In 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 enabled as a replacement.
If your goal is to have the system use PipeWire for audio, you need to install several packages related to PipeWire and WirePlumber . Starting 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 get rid of PulseAudio and PipeWire at the same time if you don't follow a clear plan , especially if you came from a previous installation with JACK and custom scripts.
If you want to switch to PipeWire on Manjaro and move away from PulseAudio, a typical strategy is to uninstall PulseAudio and add the appropriate PipeWire packages . For example:
sudo pacman -Rdd pulseaudio
The -Rdd option prevents dragging dependencies that could break other packages , so use it carefully. 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 to disable those scripts to avoid conflicts , since 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 screencasting solution under Wayland and gradually also assumed the role of audio server, replacing PulseAudio and facilitating screen sharing in browsers and recording applications.
GNOME Shell generates a video stream that it sends to PipeWire when you share your screen , and that stream is then piped to apps like Firefox, Chrome/Chromium, or OBS Studio using the portal APIs. Additionally, the volume control you see in GNOME interacts with PipeWire using 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. Currently, there are two main options.
On one hand, there's pipewire-media-session, which offers basic functionality , primarily focused on screen sharing and little else. 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 distributions . WirePlumber 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-session , and 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-jack . In 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 the PipeWire engine.
In the Bluetooth arena , PipeWire collaborates with BlueZ to offer Bluetooth LE Audio compatible headphones when used as a PulseAudio replacement . On distributions like Debian, it's often necessary to install packages such as libspa-0.2-bluetooth and remove 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 common mistakes after migrating to PipeWire is leaving PulseAudio partially active , so that it sometimes starts and sometimes 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 sole control . If you ever 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.