How To Install PipeWire on Ubuntu 26.04 LTS

Install PipeWire on Ubuntu 26.04

If your audio randomly cuts out, your Bluetooth headset falls back to low-quality SBC audio, or your Flatpak apps refuse to play sound consistently, you are dealing with the structural limitations of PulseAudio. Ubuntu has shipped PulseAudio as its default sound server for over fifteen years, and while it works well enough for casual use, it was never designed for the demands of modern Linux desktops. That is exactly why PipeWire exists.

PipeWire is a next-generation multimedia server that replaces PulseAudio, handles JACK protocol natively, delivers sub-5ms latency, and supports advanced Bluetooth codecs like LDAC and aptX. When you install PipeWire on Ubuntu 26.04, you are not just swapping one daemon for another. You are upgrading the entire audio infrastructure of your machine.

Ubuntu 26.04 LTS (Resolute Raccoon) ships with PipeWire partially installed for WebRTC and screen recording under Wayland, but the full audio stack requires manual setup. This guide walks you through the complete process: updating your system, installing core packages, disabling PulseAudio safely, enabling WirePlumber as the session manager, adding Bluetooth codec support, and verifying that everything works before you touch a single application.

By the end of this tutorial, your Ubuntu 26.04 system will run a fully configured PipeWire audio stack with zero PulseAudio interference, and every app from Firefox to Spotify to Zoom will route audio through PipeWire transparently without any reconfiguration on their end.

Prerequisites

Before you run a single command, confirm the following:

  • Operating System: Ubuntu 26.04 LTS (Resolute Raccoon), clean install or upgraded from 24.04 LTS
  • User Permissions: A non-root user account with sudo access
  • Desktop Session: GNOME, KDE, or any other desktop environment (this tutorial does not apply to headless servers without a graphical session, because PipeWire runs as a user-session service)
  • Internet Connection: Active, to download packages from Ubuntu’s repositories
  • Terminal Access: GNOME Terminal, Konsole, Tilix, or any terminal emulator you prefer
  • Baseline check: Run this command before starting and note the output:
pactl info | grep "Server Name"

If the output says Server Name: PulseAudio, you are in the right place. That line should read differently after you finish this guide.

Step 1: Update Your System Before Installing Anything

Why this matters: Installing PipeWire on top of an outdated package index creates dependency conflicts. PipeWire, WirePlumber, and the libspa modules are tightly version-coupled. If your local package cache references old versions, apt might resolve dependencies incorrectly and install mismatched components that break audio entirely.

Run the following two commands:

sudo apt update && sudo apt upgrade -y

What each part does:

  • apt update refreshes your local package list from Ubuntu’s repositories. It does not install anything; it just syncs the index so apt knows what is available.
  • apt upgrade -y installs all available updates including kernel packages, ALSA drivers, and shared libraries. The -y flag auto-confirms without prompting.

If a kernel update was included in the upgrade, reboot your machine before continuing:

sudo reboot

Why reboot after a kernel update: PipeWire communicates with your audio hardware through kernel-level ALSA drivers. If you install a new kernel but keep running the old one, PipeWire may fail to enumerate your audio devices because the running kernel and the new ALSA modules are out of sync.

After rebooting, confirm your kernel version with:

uname -r

You should see a kernel version of 6.14 or newer on Ubuntu 26.04 LTS.

Step 2: Install PipeWire and Its Core Components

Why this matters: Ubuntu 26.04 includes PipeWire for video-related WebRTC tasks but does not activate the audio stack by default. The PulseAudio compatibility layer, ALSA integration, and session manager are separate packages that you must explicitly install.

Run this single installation command:

sudo apt install pipewire pipewire-audio pipewire-pulse \
  pipewire-audio-client-libraries wireplumber -y

What Each Package Does and Why You Need It

  • pipewire

This is the core daemon, the heart of the entire framework. It handles the graph-based routing of audio and video streams between devices and applications. Without it, nothing else in this list functions.

  • pipewire-audio

A meta-package that pulls in all audio-specific PipeWire modules. Without this, PipeWire only handles video streams and leaves audio untouched.

  • pipewire-pulse

This is the most important compatibility component. Every major application on Ubuntu, including Firefox, Chromium, Zoom, Spotify, and OBS, was built to speak the PulseAudio protocol. pipewire-pulse intercepts those protocol calls at the socket level and hands them to PipeWire transparently. The applications never know they are talking to PipeWire, which means zero reconfiguration on your part.

  • pipewire-audio-client-libraries

Some applications talk directly to ALSA rather than PulseAudio, bypassing the sound server entirely. These include legacy software, certain games, and command-line tools like aplay. This package provides an ALSA plugin that redirects those direct ALSA calls through PipeWire, ensuring everything routes through one unified system.

  • wireplumber

WirePlumber is the session and policy manager for PipeWire. Think of PipeWire as the engine and WirePlumber as the driver making decisions. It handles which device gets audio, what happens when you plug in headphones, how to route Bluetooth audio, and what the default sink and source should be. Without WirePlumber, PipeWire runs with no routing intelligence whatsoever.

Confirm WirePlumber Replaced the Old Session Manager

Ubuntu previously used pipewire-media-session as a lightweight session manager. It conflicts with WirePlumber. Confirm it is gone:

dpkg -l | grep pipewire-media-session

If this command returns no output, you are clear. If it shows the package as installed, remove it:

sudo apt remove pipewire-media-session -y

Step 3: Disable PulseAudio and Mask Its Services

Why this matters: PipeWire and PulseAudio cannot run simultaneously for the same user session. When both are active, PulseAudio grabs the audio device first because it starts earlier in the session. This leaves PipeWire unable to access the hardware, and your audio ends up routing through PulseAudio anyway, defeating the entire purpose of this installation.

Run these three commands in order:

systemctl --user stop pulseaudio.service pulseaudio.socket
systemctl --user disable pulseaudio.service pulseaudio.socket
systemctl --user mask pulseaudio.service pulseaudio.socket

Why Each Command Serves a Distinct Purpose

stop terminates the currently running PulseAudio daemon immediately. Your audio will be silent for a moment until PipeWire takes over.

disable removes the auto-start symlinks from systemd. This prevents PulseAudio from starting automatically on your next login.

mask is the most critical command of the three. It creates a symlink from the PulseAudio service unit file to /dev/null, making it impossible for any tool, dependency, or package to accidentally restart PulseAudio. Some packages like libpulse0 list PulseAudio as a recommended service and can trigger restarts even after you disable it. Masking blocks all of that completely.

The --user flag is not optional. These are per-user session services, not system-wide daemons. If you run these commands without --user, systemd will either throw an error or modify the wrong service unit. Every guide that skips this explanation causes unnecessary confusion for new Linux users.

Step 4: Enable and Start PipeWire Services

Why this matters: Just like PulseAudio, PipeWire’s audio components run as user-session services. Installing the packages does not automatically start them. You must explicitly enable and start each service so PipeWire takes control of your audio hardware immediately and on every future login.

systemctl --user enable --now pipewire.socket pipewire-pulse.socket
systemctl --user enable --now wireplumber.service

What Each Service Controls

pipewire.socket is the primary D-Bus socket that all applications use to connect to PipeWire. Using socket activation means the PipeWire daemon starts on-demand when a client connects, rather than always consuming RAM in the background.

pipewire-pulse.socket intercepts PulseAudio protocol requests at the socket level. The moment an app tries to connect to PulseAudio, this socket catches the request and routes it to PipeWire instead. The app never detects the difference.

wireplumber.service starts the session manager. This must run alongside PipeWire or audio routing will not function.

Verify Both Services Are Running

systemctl --user status pipewire wireplumber

You are looking for active (running) in the output for both services. An example of healthy output looks like this:

pipewire.service - PipeWire Multimedia Service
     Loaded: loaded
     Active: active (running) since ...

wireplumber.service - Session manager for PipeWire
     Loaded: loaded
     Active: active (running) since ...

If either shows failed or inactive, jump to the troubleshooting section at the bottom of this article.

Step 5: Add Bluetooth Codec Support

Why this matters: Ubuntu 26.04’s default PipeWire installation does not include advanced Bluetooth codec libraries. Without this step, your Bluetooth headphones and speakers fall back to SBC-only audio. SBC is the lowest-common-denominator Bluetooth audio codec. It works, but the audio quality is noticeably inferior compared to LDAC, which is the codec used by Sony, Bose, and Sennheiser premium devices.

Install the Bluetooth and additional audio libraries:

sudo apt install libspa-0.2-bluetooth libspa-0.2-jack \
  gstreamer1.0-pipewire -y

What Each Package Provides

libspa-0.2-bluetooth is the SPA (Simple Plugin API) Bluetooth module. It gives PipeWire direct control over Bluetooth audio routing and unlocks LDAC and AAC codec support. This is the package that makes the difference between mediocre Bluetooth audio and high-fidelity wireless sound.

libspa-0.2-jack enables JACK protocol compatibility through PipeWire. This benefits producers and developers running DAWs like Ardour, Reaper, or Bitwig on Ubuntu 26.04 who need JACK’s precise timing without running a separate JACK daemon.

gstreamer1.0-pipewire integrates PipeWire into the GStreamer multimedia pipeline. Media players and video editors that use GStreamer, including GNOME Videos, Kdenlive, and Pitivi, will route their audio through PipeWire natively after this is installed.

Remove PulseAudio’s Bluetooth Module

PulseAudio has its own Bluetooth module that will conflict with PipeWire’s Bluetooth handling if left installed:

sudo apt remove pulseaudio-module-bluetooth -y

Why: If both the PulseAudio Bluetooth module and libspa-0.2-bluetooth are present, they fight over the Bluetooth device. The result is either no audio on Bluetooth devices or random disconnections during playback.

Step 6: Configure ALSA to Route Through PipeWire

Why this matters: A subset of applications talks directly to ALSA without going through any sound server. These include legacy desktop apps, some open-source games, and command-line tools. Without this configuration step, those apps bypass PipeWire entirely and write audio directly to the hardware. This causes audio conflicts where PipeWire and a direct-ALSA app compete for the same device.

Copy the PipeWire ALSA configuration file into the system-wide ALSA config directory:

sudo cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf \
  /etc/alsa/conf.d/

What this file does: It sets PipeWire as the default ALSA PCM and CTL device. Any application that opens an ALSA audio device will now hit PipeWire’s virtual ALSA layer instead of the raw hardware.

After copying the file, check for conflicting PulseAudio ALSA configs:

ls /etc/alsa/conf.d/

If you see any file with pulse in the name, remove it:

sudo rm /etc/alsa/conf.d/*pulse*

Why remove those files: They redirect ALSA traffic to PulseAudio, which is now masked and inactive. Leaving them in place creates a conflict where ALSA tries to route to PulseAudio, causing audio failures for direct-ALSA applications.

Step 7: Reboot and Verify the Full Installation

Why a reboot is required, not just a logout: PipeWire socket activation integrates deeply with the systemd user session. A full reboot ensures the masked PulseAudio units stay masked, WirePlumber loads with the correct kernel ALSA state, and all session environment variables are populated cleanly. A simple logout and login sometimes leaves stale session variables that cause intermittent issues.

sudo reboot

After your system comes back up, open a terminal and run these verification commands:

Confirm PipeWire Is the Active Audio Server

pactl info | grep "Server Name"

Expected output:

Server Name: PulseAudio (on PipeWire 1.x.x)

The phrase “on PipeWire” confirms that PulseAudio’s API layer is now running on top of PipeWire’s engine. If you see just PulseAudio without that suffix, PulseAudio reclaimed control and you need to re-run the mask commands from Step 3.

Check WirePlumber Session Manager Health

wpctl status

This command lists all active audio devices, their IDs, and which one is set as the default (marked with *). A healthy output looks like:

PipeWire 'pipewire-0' [...]
 └─ Clients:
      ...
Audio
 ├─ Devices:
 │   ...
 ├─ Sinks:
 │   *  47. Built-in Audio Analog Stereo [vol: 1.00]
 ├─ Sources:
 │   *  48. Built-in Audio Analog Stereo [vol: 1.00]

List Active Audio Sinks

pactl list sinks short

You should see at least one output device listed. If you see your speakers, headphone jack, or HDMI listed here, PipeWire has full control of your audio hardware.

Troubleshooting Common PipeWire Errors on Ubuntu 26.04

Even with a clean installation, you might hit one of these issues. Here are the five most common problems and exactly how to fix them.

Error 1: No Sound After Installation

Symptom: System is silent, wpctl status shows audio devices listed but nothing plays.

Cause: WirePlumber is routing audio to the wrong sink. This commonly happens when HDMI output takes priority over your speakers or headphone jack.

Fix: Identify the correct sink ID from wpctl status output, then set it as the default:

wpctl set-default SINK_ID

Replace SINK_ID with the numeric ID next to your target speaker output from the wpctl status output.

Error 2: PulseAudio Still Shows as the Active Server

Symptom: pactl info | grep "Server Name" returns Server Name: PulseAudio without the PipeWire suffix.

Cause: The pulseaudio.socket was not masked properly and auto-restarted during login.

Fix: Re-run the mask commands and verify:

systemctl --user mask pulseaudio.service pulseaudio.socket
systemctl --user status pulseaudio

The status output should show masked under the Loaded: line. Log out and back in to apply.

Error 3: Bluetooth Headset Connected But No Audio

Symptom: Your Bluetooth device connects successfully in the Bluetooth settings panel but produces no audio.

Cause: Either libspa-0.2-bluetooth is not installed, or the PulseAudio Bluetooth module is still present and intercepting the Bluetooth audio stream.

Fix:

dpkg -l | grep libspa-0.2-bluetooth
sudo apt remove pulseaudio-module-bluetooth -y
systemctl --user restart pipewire wireplumber

Disconnect your Bluetooth device, wait 10 seconds, and reconnect.

Error 4: Audio Cuts Out Randomly or Stutters

Symptom: Audio plays fine for a few minutes then drops out, stutters, or goes silent, especially with USB audio interfaces or certain Bluetooth devices.

Cause: WirePlumber session manager crashed or entered a bad state. This is a known edge case with some USB audio interface drivers on Linux.

Fix: Restart WirePlumber without rebooting:

systemctl --user restart wireplumber

If this happens repeatedly, check WirePlumber’s journal for the root cause:

journalctl --user -u wireplumber -n 50

Error 5: Firefox Snap Has No Audio After PipeWire Setup

Symptom: All other apps produce sound correctly, but Firefox (Snap version) is completely silent after switching to PipeWire.

Cause: This is a known Ubuntu 26.04 issue where pipewire-pulse.service crashes due to a missing LSM syscall filter configuration.

Fix: Create a systemd drop-in config for pipewire-pulse:

sudo mkdir -p /etc/systemd/user/pipewire-pulse.service.d/
sudo nano /etc/systemd/user/pipewire-pulse.service.d/lsm-syscalls.conf

Paste this content:

[Service]
SystemCallFilter=lsm_get_self_attr lsm_set_self_attr lsm_list_modules

Save the file, then reload and restart:

systemctl --user daemon-reload && systemctl --user restart pipewire-pulse

Firefox audio will resume immediately.

Congratulations! You have successfully installed PipeWire. Thanks for using this tutorial for installing PipeWire server for handling audio and video streams on your Ubuntu 26.04 LTS (Resolute Raccoon) Linux system. For additional help or useful information, we recommend you check the official PipeWire website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!
r00t is a Linux Systems Administrator and open-source advocate with over ten years of hands-on experience in server infrastructure, system hardening, and performance tuning. Having worked across distributions such as Debian, Arch, RHEL, and Ubuntu, he brings real-world depth to every article published on this blog. r00t writes to bridge the gap between complex sysadmin concepts and practical, everyday application — whether you are configuring your first server or optimizing a production environment. Based in New York, US, he is a firm believer that knowledge, like open-source software, is best when shared freely.

Related Posts