Introduction
PipeWire is a server and API for handling multimedia on Linux, designed to replace both PulseAudio (consumer audio) and JACK (professional low-latency audio) with a single unified framework. It also handles video streams, enabling secure screen sharing under Wayland compositors.
What PipeWire Does
- Routes audio and video streams between applications and hardware devices
- Provides PulseAudio and JACK compatibility layers for existing applications
- Enables low-latency audio processing suitable for professional music production
- Handles screen capture and camera streams for Wayland-native applications
- Manages Bluetooth audio codecs including AAC, LDAC, and aptX
Architecture Overview
PipeWire is written in C and runs as a user-space daemon managed by a session manager (WirePlumber by default). It processes media through a graph of linked nodes, where each node represents a source, sink, or filter. The graph executes in a real-time thread with configurable quantum (buffer) sizes as low as 32 samples. Compatibility modules translate PulseAudio and JACK API calls into native PipeWire operations.
Self-Hosting & Configuration
- Ships as the default audio stack on Fedora, Ubuntu 22.10+, and many modern distros
- On older systems, install pipewire, pipewire-pulse, and wireplumber packages
- Configure default sample rate and buffer size in pipewire.conf
- Use WirePlumber Lua scripts to define routing policies and device profiles
- Adjust Bluetooth codec preferences in the bluetooth configuration files
Key Features
- Drop-in replacement for both PulseAudio and JACK simultaneously
- Sub-millisecond latency capability for real-time audio work
- Secure video capture for screen sharing under Wayland using xdg-desktop-portal
- Per-stream volume control, routing, and format negotiation
- Bluetooth audio with support for modern high-quality codecs
Comparison with Similar Tools
- PulseAudio — the previous standard for desktop Linux audio; PipeWire replaces it with lower latency
- JACK — professional audio server; PipeWire provides equivalent latency with simpler setup
- ALSA — kernel-level audio layer; PipeWire sits above ALSA and adds routing and mixing
- CoreAudio (macOS) — Apple's integrated audio stack; PipeWire serves a similar unified role on Linux
FAQ
Q: Can I use PipeWire for professional audio production? A: Yes. With buffer sizes down to 32 samples, it matches JACK's latency for real-time work.
Q: Will my PulseAudio applications still work? A: Yes. PipeWire includes a PulseAudio compatibility daemon that handles existing apps transparently.
Q: Does PipeWire handle screen sharing? A: Yes. It provides the video capture backend for Wayland screen sharing via xdg-desktop-portal.
Q: How do I switch from PulseAudio to PipeWire? A: Install pipewire-pulse and wireplumber, then disable PulseAudio. Most modern distros handle this automatically.