How to Configure PipeWire for Audio on Arch Linux
Categories:
5 minute read
PipeWire has rapidly become the new standard multimedia server on many modern Linux distributions, offering a unified solution for handling audio and video streams. Initially developed by Red Hat for professional audio/video use cases, it has now matured into a full replacement for both PulseAudio and JACK. Arch Linux, being a bleeding-edge rolling release distribution, offers robust support for PipeWire and makes it easy for users to switch or configure it for various use cases.
This article will walk you through configuring PipeWire for audio on Arch Linux, explaining the relevant components, installation process, configuration steps, troubleshooting tips, and how to replace PulseAudio or JACK entirely.
What is PipeWire?
PipeWire is a server for handling multimedia streams. It is designed to support a wide range of applications, including:
- Desktop audio (similar to PulseAudio)
- Low-latency pro audio (similar to JACK)
- Video capture and screen sharing
- Secure sandboxed audio/video streams (e.g., in Flatpak apps)
Advantages of PipeWire
- Unified audio/video handling
- Compatibility with PulseAudio and JACK
- Improved Bluetooth audio support
- Better performance and lower latency
- Security enhancements with sandboxing support
Prerequisites
Before diving into configuration, ensure you have the following:
- A working Arch Linux installation
- A user with
sudo
privileges - A desktop environment or window manager (e.g., GNOME, KDE, i3, etc.)
Step 1: Install PipeWire and Related Packages
Start by installing PipeWire and its audio components.
sudo pacman -S pipewire pipewire-audio pipewire-pulse pipewire-alsa wireplumber
Optional (for JACK compatibility)
sudo pacman -S pipewire-jack
Optional (Bluetooth support)
sudo pacman -S pipewire-bluetooth
Explanation of packages:
pipewire
: Core PipeWire service.pipewire-audio
: Audio components for PipeWire.pipewire-pulse
: PulseAudio replacement compatibility layer.pipewire-alsa
: ALSA plugin compatibility.pipewire-jack
: JACK server replacement.wireplumber
: A session and policy manager for PipeWire, replacing the olderpipewire-media-session
.
Step 2: Enable and Start the PipeWire Services
You typically don’t need to manually enable PipeWire as it’s user-level. But you can check and manage the services using systemctl --user
.
Start and enable services
systemctl --user enable --now pipewire pipewire-pulse wireplumber
Verify PipeWire is running
systemctl --user status pipewire
You should see the service active and running.
Step 3: Remove or Disable PulseAudio (if applicable)
If you’re migrating from PulseAudio, make sure it’s not running.
Remove PulseAudio (optional)
sudo pacman -Rns pulseaudio
If you prefer to disable it temporarily (without uninstalling)
systemctl --user mask pulseaudio
Then restart your session or reboot.
Step 4: Check Audio Functionality
Once everything is installed and running:
Test audio
You can use speaker-test
to test:
speaker-test -t wav
Or play a sound file with a media player like mpv
, vlc
, or aplay
.
Check audio levels
Use a graphical tool:
sudo pacman -S pavucontrol
Run it:
pavucontrol
It should work with PipeWire via the pipewire-pulse
layer.
Step 5: Fine-Tuning and Configuration
PipeWire uses configuration files typically stored in /usr/share/pipewire/
and /etc/pipewire/
. It is recommended to copy the default configuration to /etc/pipewire/
if you plan to edit it.
Copy default configuration
sudo cp -r /usr/share/pipewire /etc/pipewire
Edit the main config
sudo nano /etc/pipewire/pipewire.conf
You can also configure session behavior via:
sudo nano /etc/pipewire/media-session.d/bluez-monitor.conf # For Bluetooth
However, WirePlumber uses Lua scripts for configuration instead. The configuration files can be found at:
/etc/wireplumber/
You can tweak routing, volume defaults, or even device priorities using these Lua scripts. For advanced customization, refer to the WirePlumber documentation.
Step 6: Configure Bluetooth Audio
PipeWire improves Bluetooth audio, including better support for codecs like AAC, LDAC, and aptX.
Install required packages (if not already done)
sudo pacman -S pipewire-bluetooth bluez bluez-utils
Enable Bluetooth service
sudo systemctl enable --now bluetooth
Connect to your Bluetooth device
bluetoothctl
Commands inside bluetoothctl
:
power on
agent on
scan on
pair <MAC_ADDRESS>
connect <MAC_ADDRESS>
trust <MAC_ADDRESS>
You should now see the device in pavucontrol
.
Step 7: Verify Audio Backend Usage
To confirm that applications are using PipeWire:
pw-cli ls Node
Or:
pw-top
You can also run:
pactl info
This should show:
Server Name: PulseAudio (on PipeWire x.x.x)
Which means the PulseAudio compatibility layer is working properly.
Step 8: Use JACK Applications with PipeWire
PipeWire’s JACK support allows running JACK apps without needing to install the traditional JACK server.
Confirm JACK support
pw-jack <jack-app>
For example:
pw-jack qjackctl
Or:
pw-jack carla
The pw-jack
command wraps the app with environment variables for JACK compatibility with PipeWire.
Step 9: Autostart PipeWire with the Desktop Session
Most modern desktops already support PipeWire out of the box (GNOME, KDE). If using a minimal WM like i3 or bspwm, make sure to start PipeWire and WirePlumber in your session.
Add the following to your .xinitrc
, .xprofile
, or the startup script for your window manager:
systemctl --user start pipewire
systemctl --user start wireplumber
Troubleshooting Tips
No sound?
- Check with
pavucontrol
that output is not muted or set to the wrong device. - Make sure no other audio server (like PulseAudio or JACK) is interfering.
- Restart PipeWire:
systemctl --user restart pipewire pipewire-pulse wireplumber
Bluetooth not working?
- Ensure
pipewire-bluetooth
is installed. - Ensure
bluez
andbluez-utils
are running. - Use
bluetoothctl
to trust and connect the device.
JACK apps crash?
- Try using
pw-jack
prefix. - Verify
pipewire-jack
is installed. - Check logs:
journalctl --user -xe
Conclusion
PipeWire is a powerful and flexible audio (and video) server that has quickly become a worthy replacement for both PulseAudio and JACK. On Arch Linux, configuring PipeWire is straightforward, and thanks to the rolling release nature of Arch, users can access the latest features and fixes.
By following the steps outlined in this guide, you can set up a fully functional audio system with support for regular playback, Bluetooth audio, pro-audio workflows with JACK, and fine-grained control over devices and streams.
As PipeWire continues to evolve, expect even greater stability and integration. Whether you’re a casual desktop user, a gamer, or a professional audio engineer, PipeWire on Arch Linux has the tools you need.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.