How To Install PipeWire on Manjaro

Install PipeWire on Manjaro

If you have ever dealt with crackling Bluetooth audio, application conflicts between PulseAudio and JACK, or random audio dropouts on your Manjaro desktop, the root cause is almost always PulseAudio’s aging architecture. PipeWire fixes all of that in one clean swap. This guide walks you through exactly how to install PipeWire on Manjaro, configure it correctly, and verify that everything works before you call it done.

Whether you run KDE Plasma, GNOME, or XFCE on Manjaro, this tutorial gives you the exact terminal commands, explains what each one does and why it matters, and covers the most common problems you will run into. No handwaving, no vague steps.

What Is PipeWire and Why Should You Care?

PipeWire is a modern, low-latency multimedia server that replaces PulseAudio, JACK, and ALSA’s routing layer with a single unified daemon. It was originally created by Wim Taymans at Red Hat and is now the default audio stack on Fedora, Ubuntu 22.04+, and Pop!OS.

The old Linux audio stack worked in separate layers: the kernel handled hardware access through ALSA, PulseAudio sat on top for desktop audio mixing, and JACK ran separately for professional low-latency audio. This fragmented architecture meant that a Spotify stream and a DAW session could not easily share the same audio device without routing hacks.

PipeWire eliminates that fragmentation. It speaks ALSA, PulseAudio, and JACK protocols simultaneously, so every application connects to the same graph regardless of which API it was coded against.

What Is WirePlumber and Why Do You Need It?

WirePlumber is the session manager for PipeWire. Think of PipeWire as the engine and WirePlumber as the driver making policy decisions: which app connects to which device, what happens when you plug in a USB audio interface, which Bluetooth codec to negotiate.

Without WirePlumber running, PipeWire starts but routes nothing. It is not optional for a functional desktop audio setup.

PipeWire vs. PulseAudio at a Glance

Feature PulseAudio PipeWire
Bluetooth codecs AAC only (with extra module) AAC, LDAC, aptX natively
JACK compatibility Requires separate daemon Built-in via pipewire-jack
Latency ~20–40ms typical Sub-10ms possible
Wayland support Partial Native
Active development Maintenance mode Actively developed

Prerequisites Before You Install PipeWire on Manjaro

Check these items before touching any terminal commands. Skipping this step is how people end up with a broken audio stack and no clear path back.

  • Manjaro Linux installed (any edition: KDE, GNOME, or XFCE)
  • Sudo privileges on your user account
  • A working internet connection for package downloads
  • Timeshift installed (strongly recommended for a snapshot before migration)
  • Basic comfort running commands in a terminal

Step 1: Update Your Manjaro System Completely

The very first thing to do before any major package change on a rolling release distro is a full system update. Manjaro’s package database moves fast. Installing PipeWire on top of a partially synced system causes dependency mismatches that are frustrating to untangle.

Run this single command:

sudo pacman -Syu

What it does: Syncs the package database (-Sy) and upgrades all installed packages (-u) in one pass.

Why it matters: On Manjaro, packages like pipewire-pulse depend on specific library versions. If your system is behind by even a few days of updates, the installer may pull in conflicting versions of libjack or libpipewire and fail mid-install. Update first, always.

After the upgrade finishes, reboot once to load any new kernel or library updates cleanly:

sudo reboot

Step 2: Create a Timeshift Snapshot (Do Not Skip This)

Replacing the core audio daemon is not a trivial operation. A snapshot takes two minutes and can save you from a full reinstall if something goes wrong.

sudo timeshift --create --comments "pre-pipewire-migration"

What it does: Creates a labeled restore point of your current system state.

Why it matters: If PipeWire conflicts with a specific piece of hardware or a niche application you rely on, restoring this snapshot gets you back to a working state in under five minutes without touching anything else. Real-world sysadmin practice always includes a rollback option before modifying system-level daemons.

Step 3: Stop and Remove PulseAudio

If your Manjaro install shipped with PulseAudio (most editions before 2022 did), you need to cleanly remove it before installing PipeWire. Running both at the same time causes a socket conflict where neither server reliably claims the audio devices.

Stop PulseAudio Services First

Do not just uninstall the package while the daemon is running. Stop it cleanly first:

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

What it does: Stops the running PulseAudio daemon and its socket listener, then prevents them from starting again on login.

Why it matters: PulseAudio creates a socket file at /run/user/$(id -u)/pulse/native. If you remove the package while the daemon is running, that socket file can linger and intercept audio calls before PipeWire gets a chance to initialize.

Remove PulseAudio Packages

Now uninstall PulseAudio and Manjaro’s PulseAudio meta-package:

pamac remove pulseaudio pulseaudio-bluetooth manjaro-pulse

What it does: Removes the core PulseAudio daemon, its Bluetooth module, and the Manjaro-specific meta-package that ties them together.

Why this command, not just pacman -R: The manjaro-pulse meta-package has dependency hooks. Using pamac remove ensures orphaned dependencies are flagged properly.

Important: Before confirming the removal, read the output carefully. If pamac says it will also remove large KDE or GNOME packages, stop. In that case, skip the manual removal and let pamac handle PulseAudio automatically during the PipeWire install in the next step.

Confirm PulseAudio Is Gone

pactl info

Expected output: Connection failure: Connection refused

That error is what you want to see. It confirms no PulseAudio server is running. If you still see a server name in the output, check for a still-running PulseAudio process:

ps aux | grep pulseaudio

Kill any remaining process with kill -9 <PID> before proceeding.

Step 4: Install PipeWire on Manjaro

This is where the actual PipeWire on Manjaro setup begins. You have two solid methods depending on your preference.

Method 1: The Manjaro Meta-Package (Recommended)

This is the cleanest and safest way for the majority of users:

pamac install manjaro-pipewire

What it does: Installs the full PipeWire stack as a curated Manjaro bundle, including:

  • pipewire — the core daemon
  • pipewire-pulse — PulseAudio compatibility layer
  • pipewire-alsa — redirects ALSA calls through PipeWire
  • pipewire-jack — JACK compatibility for DAWs and pro audio apps
  • wireplumber — the session manager
  • easyeffects — system-wide equalizer and audio effects

Why this method wins: Manjaro’s meta-package handles DE-specific dependencies automatically. On KDE it pulls in plasma-pa. On GNOME it brings the correct applet. You do not need to figure out which optional pieces apply to your desktop.

Method 2: Manual Install via pacman (Power Users)

If you want precise control over exactly what gets installed:

sudo pacman -S pipewire pipewire-pulse pipewire-alsa pipewire-jack wireplumber

Why each package matters individually:

  • pipewire-pulse is critical: without it, every app coded against the PulseAudio API sees no audio server at all
  • pipewire-alsa ensures low-level ALSA applications route through PipeWire instead of bypassing it
  • pipewire-jack lets professional tools like Ardour and Bitwig connect without a separate JACK daemon running

Optional but Useful Packages

sudo pacman -S realtime-privileges pipewire-zeroconf
  • realtime-privileges — enables real-time CPU scheduling for PipeWire threads, which eliminates audio glitches under load
  • pipewire-zeroconf — adds network audio streaming support via Avahi

After installing realtime-privileges, add your user to the realtime and audio groups:

sudo usermod -aG realtime,audio $USER

Log out and back in for group changes to take effect.

Step 5: Enable PipeWire Systemd Services

Installing the packages is not enough. PipeWire runs as a user-level systemd service. You need to explicitly enable and start each component.

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

What it does: Enables each service to start on login (enable) and starts it immediately in the current session (--now).

Why --user and not sudo: PipeWire is a per-user session service, not a system daemon. Running it with sudo starts it as root, which breaks permission-based device access for your regular desktop session.

Expected behavior: No output on success. Systemd only speaks up when something goes wrong.

Step 6: Verify the PipeWire Installation

Never assume an installation worked. Always verify. This step takes 60 seconds and catches 90% of configuration mistakes before they become problems later.

Check the Active Audio Server

pactl info | grep "Server Name"

Expected output:

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

This output looks like PulseAudio but that is correct. The pipewire-pulse compatibility layer presents itself as PulseAudio to all apps, while PipeWire handles everything underneath.

Check WirePlumber Is Routing Audio

wpctl status

This command lists all audio sinks (outputs), sources (inputs), and the currently active default devices. If WirePlumber is running correctly, you will see your sound card and any connected Bluetooth devices listed here.

Monitor Live Audio Activity

pw-top

What it does: Opens PipeWire’s real-time process monitor, similar to top but for audio streams. It shows active nodes, their latency, and buffer sizes.

Why use this: pavucontrol only shows volume levels. pw-top shows you the actual audio graph activity, confirming the audio path runs through PipeWire end-to-end. Press q to exit.

Step 7: Configure PipeWire for Your Needs

The default PipeWire configuration works well for most desktop users. However, two settings are worth adjusting upfront: sample rate and buffer size.

Never edit files inside /etc/pipewire/ directly. Those files get overwritten on package updates. Put all custom configs in your user directory instead:

mkdir -p ~/.config/pipewire
cp /etc/pipewire/pipewire.conf ~/.config/pipewire/pipewire.conf

Then open the copied file in your editor and find the default.clock section. Adjust these two values:

default.clock.rate = 48000
default.clock.quantum = 1024

What these do:

  • default.clock.rate = 48000 — sets the sample rate to 48 kHz, which matches most modern audio hardware and USB interfaces
  • default.clock.quantum = 1024 — sets the buffer size; at 48 kHz this gives ~21ms latency, a solid balance between stability and responsiveness for desktop use

For production audio work, drop quantum to 256 or 128 for lower latency. For a media server or background streaming machine, raise it to 2048 to reduce CPU overhead.

Configuring PipeWire on Manjaro for Bluetooth Audio

PipeWire handles Bluetooth audio far better than PulseAudio because it ships with native codec support for AAC, LDAC, and aptX without needing any third-party modules.

First, make sure BlueZ is installed and running:

sudo pacman -S bluez bluez-utils
sudo systemctl enable --now bluetooth

Why BlueZ is required: PipeWire’s Bluetooth audio module (libspa-bluetooth) depends on BlueZ to enumerate and negotiate with Bluetooth devices. Without BlueZ active, PipeWire simply cannot see any wireless audio hardware.

Pair your device through your DE’s Bluetooth settings as normal. PipeWire will automatically negotiate the highest-quality codec your device supports.

To confirm which codec is active after connecting:

wpctl status | grep -i bluetooth

Troubleshooting Common PipeWire Issues on Manjaro

No Sound After Installation

Symptom: System plays audio but nothing comes out of speakers or headphones.

Check first:

pactl info | grep "Server Name"

If the output still shows a plain PulseAudio without “on PipeWire”, a ghost PulseAudio socket is still active. Remove it:

rm -rf /run/user/$(id -u)/pulse
systemctl --user restart pipewire pipewire-pulse wireplumber

Why this happens: PulseAudio socket files persist after package removal if the daemon was not stopped cleanly. PipeWire sees the existing socket and steps back rather than fight for the device.

Audio Crackling and Stuttering

Symptom: Audible pops, clicks, or interruptions during playback.

Fix: Increase the quantum value in your user config:

nano ~/.config/pipewire/pipewire.conf

Change default.clock.quantum to 2048. Restart PipeWire:

systemctl --user restart pipewire wireplumber

Why it happens: The system’s CPU scheduler is interrupting PipeWire’s audio thread before the buffer refills. A larger buffer gives the scheduler more time between fills, eliminating the gap. If crackling persists after the buffer increase, ensure your user account is in the realtime group as described in Step 4.

JACK Applications Not Detecting Audio

Symptom: Ardour, Bitwig, or other JACK-based apps report no JACK server found.

Fix:

pacman -Q pipewire-jack

If not installed, add it:

sudo pacman -S pipewire-jack

Then launch your DAW with the PipeWire JACK wrapper:

pw-jack ardour

Why the wrapper is needed: Some DAWs hardcode the path to the JACK library. The pw-jack wrapper redirects that library call to PipeWire’s JACK implementation transparently, without recompiling the app.

Bluetooth Audio Not Appearing in PipeWire

Symptom: Bluetooth device pairs successfully but shows no audio source or sink.

Diagnose:

journalctl --user -u pipewire | grep -i bluez

Common fix:

sudo pacman -S libspa-bluetooth
systemctl --user restart pipewire wireplumber
sudo systemctl restart bluetooth

Why this happens: libspa-bluetooth is occasionally missed during a manual install (not through the meta-package). Without it, PipeWire has no plugin to handle Bluetooth audio profiles.

Applications Not Finding an Audio Server

Symptom: Firefox, VLC, or other apps show no audio output available.

Check:

systemctl --user status pipewire-pulse

If pipewire-pulse is inactive, start it:

systemctl --user start pipewire-pulse

Why it happens: Legacy apps query the PulseAudio socket path directly. If pipewire-pulse is not running, those apps find no socket and report no audio server, even though the core PipeWire daemon is running fine.

How to Roll Back to PulseAudio on Manjaro

If PipeWire does not work well with your specific hardware or a critical application, reverting is straightforward, especially if you created the Timeshift snapshot earlier.

To restore the snapshot:

sudo timeshift --restore

To manually revert via packages:

pamac remove manjaro-pipewire
pamac install manjaro-pulse
sudo reboot

This is not a failure scenario. Some older hardware and niche audio interfaces work better with PulseAudio until PipeWire’s driver support matures further.

Congratulations! You have successfully installed PipeWire. Thanks for using this tutorial for installing PipeWire server for handling audio and video streams on your Manjaro 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 dedicated and highly skilled Linux Systems Administrator with over a decade of progressive experience in designing, deploying, and maintaining enterprise-grade Linux infrastructure. His professional journey began in the telecommunications industry, where early exposure to Unix-based operating systems ignited a deep and enduring passion for open-source technologies and server administration.​ Throughout his career, r00t has demonstrated exceptional proficiency in managing large-scale Linux environments, overseeing more than 300 servers across development, staging, and production platforms while consistently achieving 99.9% system uptime. He holds advanced competencies in Red Hat Enterprise Linux (RHEL), Debian, and Ubuntu distributions, complemented by hands-on expertise in automation tools such as Ansible, Terraform, Bash scripting, and Python.

Related Posts