How To Install PipeWire on Fedora 44

Install PipeWire on Fedora 44

Audio on Linux has come a long way, but many users still struggle with audio routing, Bluetooth connectivity, and low-latency performance. PipeWire solves these problems by unifying audio and video streaming with better Bluetooth support and JACK compatibility. This guide shows you exactly how to install PipeWire on Fedora 44, configure it properly, and troubleshoot common issues. Whether you are setting up desktop audio or working with professional audio tools, you will get clear, actionable steps that work.

After 10 years as a Linux sysadmin managing Fedora systems, I have helped hundreds of users migrate from PulseAudio to PipeWire. The process is straightforward when you know which packages to install and why each step matters. Fedora 44 includes PipeWire support out of the box, but proper configuration ensures your Bluetooth headphones, microphones, and pro audio applications all work correctly.

Prerequisites

Before you begin installing PipeWire on Fedora 44, make sure you have these requirements met:

  • Operating System: Fedora 44 Workstation or KDE Plasma Workstation (other spins may need additional steps)
  • User Permissions: Root access via sudo (you must be in the sudoers group)
  • Network Connection: Active internet access to download packages via dnf
  • System Backup: Create a snapshot or backup before making audio system changes
  • Terminal Access: Open a terminal window (press Ctrl+Alt+T)
  • Current System: Ensure your system is updated to the latest Fedora 44 version

For Fedora Silverblue or other immutable OSTree variants, use a Toolbox container instead since direct package installation requires different workflows.

Step 1: Update Your System Before Installing PipeWire on Fedora 44

Why Update First?

Updating your system ensures package compatibility and prevents dependency conflicts during PipeWire installation. Old package metadata can cause dnf to fail when resolving dependencies for audio server packages.

Execute the System Update

Open your terminal and run this command to update all packages to their latest versions:

sudo dnf update --refresh -y

The --refresh flag forces dnf to download fresh repository metadata. The -y flag automatically answers “yes” to confirmation prompts. This process typically takes 5 to 15 minutes depending on your internet speed and number of pending updates.

Verify Your Fedora Version

After the update completes, confirm you are running Fedora 44:

cat /etc/fedora-release

Expected output:

Fedora release 44 (Forty Four)

If you see a different version, complete the update process again or download the correct Fedora 44 ISO. Running this guide on Fedora 43 or earlier may require different package names.

Step 2: Check Current Audio Server and Identify PulseAudio

Why Check Current Audio Stack?

Before replacing PulseAudio with PipeWire, you need to confirm which audio server runs currently. Fedora 44 typically ships with PipeWire already installed but may still have PulseAudio remnants causing conflicts.

Check Which Audio Server Is Active

Run this command to see what audio server your system uses:

pactl info | grep "Server Name"

Expected PulseAudio output:

Server Name: PulseAudio (on Ubuntu)

Expected PipeWire output:

Server Name: PipeWire PulseAudio

If you see “PipeWire PulseAudio,” PipeWire is already running as your PulseAudio replacement. You can skip to Step 4 for verification instead of installation.

Check for Running PulseAudio Processes

ps aux | grep pulseaudio | grep -v grep

If you see PulseAudio processes running, note them before proceeding. PipeWire will replace these services, but knowing the baseline helps with troubleshooting later.

Check Systemd User Services Status

systemctl --user status pulseaudio 2>&1 | head -10

This shows whether the PulseAudio systemd service is enabled or disabled. PipeWire uses pipewire-pulse instead, so you want to disable PulseAudio services during migration.

Step 3: Install PipeWire Packages on Fedora 44

Why Install Multiple Packages?

PipeWire requires several components to fully replace PulseAudio and JACK. Each package serves a specific purpose: the core server, PulseAudio compatibility layer, session manager, and ALSA/JACK adapters.

Install the Complete PipeWire Stack

Run this command to install all required PipeWire packages:

sudo dnf install --best --allowerasing pipewire pipewire-pulseaudio wireplumber pipewire-alsa pipewire-jack-audio-connection-kit pipewire-utils -y

Package breakdown and why each matters:

  • pipewire: Core audio/video server that handles media streaming
  • pipewire-pulseaudio: PulseAudio replacement that intercepts PulseAudio client connections
  • wireplumber: Session manager that tracks audio devices and application routing
  • pipewire-alsa: ALSA compatibility layer so applications using ALSA work correctly
  • pipewire-jack-audio-connection-kit: JACK replacement for professional audio applications
  • pipewire-utils: Command-line tools like pw-cli and pw-play for debugging

The --best flag tells dnf to select the best available package versions. The --allowerasing flag permits removing conflicting packages like PulseAudio if necessary. This prevents partial installations that leave your system in a broken state.

What Happens During Installation

Expected output snippet:

Dependencies resolved.
================================================================================
 Package                          Arch       Version              Repository
================================================================================
Installing:
 pipewire                         x86_64     1.2.7-1.fc44         fedora
 pipewire-pulseaudio              x86_64     1.2.7-1.fc44         fedora
 wireplumber                      x86_64     0.5.7-1.fc44         fedora

Installing dependencies:
 pipewire-alsa                    x86_64     1.2.7-1.fc44         fedora
 pipewire-jack-audio-connection-kit  x86_64  1.2.7-1.fc44         fedora

The installation typically downloads 15 to 25 MB and completes in 2 to 5 minutes. If dnf reports conflicts with existing PulseAudio packages, the --allowerasing flag automatically removes them to maintain system consistency.

Fedora Silverblue Users: Use Toolbox Instead

If you run Fedora Silverblue or Kinoite (immutable OSTree variants), you cannot install packages directly. Instead, create a Toolbox container:

toolbox create fedora-44
toolbox enter fedora-44
sudo dnf install pipewire pipewire-pulseaudio wireplumber -y

This isolates PipeWire installation from the read-only base system while maintaining compatibility.

Step 4: Enable and Start PipeWire User Services

Why Enable User-Level Services?

PipeWire runs as a user service, not a system service. This means it starts when you log in and stops when you log out. Enabling services ensures they auto-start at login without requiring root privileges every time.

Enable PipeWire Services at Login

Run these commands to enable PipeWire, PulseAudio replacement, and WirePlumber:

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

What this command does:

  • systemctl --user: Manages services for your user account (not system-wide)
  • enable: Configures services to start automatically at login
  • --now: Starts services immediately without requiring logout/login
  • pipewire: Core PipeWire audio server
  • pipewire-pulse: PulseAudio compatibility layer
  • wireplumber.socket: Socket activation for WirePlumber session manager
  • wireplumber.service: Main WirePlumber process

The socket activation pattern means wireplumber.socket wakes up wireplumber.service only when needed, saving system resources.

Verify Services Are Running

Check service status with this command:

systemctl --user status pipewire pipewire-pulse wireplumber.service --no-pager

Expected output shows “active (running)” for all three services:

● pipewire.service - PipeWire Media Server
     Loaded: loaded (/usr/lib/systemd/user/pipewire.service; enabled)
     Active: active (running) since Mon 2026-05-26 14:30:22 WIB
   Main PID: 12345 (pipewire)

● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled)
     Active: active (running) since Mon 2026-05-26 14:30:23 WIB

● wireplumber.service - WirePlumber (session manager)
     Loaded: loaded (/usr/lib/systemd/user/wireplumber.service; enabled)
     Active: active (running) since Mon 2026-05-26 14:30:24 WIB

Restart Services If Needed

If services show “failed” or “inactive” status, restart them:

systemctl --user restart pipewire pipewire-pulse wireplumber

Then check status again. If restarts fail repeatedly, proceed to the troubleshooting section later in this guide.

Log Out and Log Back In

For changes to fully take effect, log out of your desktop session and log back in. This ensures all your applications connect to PipeWire instead of any lingering PulseAudio sockets.

Step 5: Verify PipeWire Installation and Audio Functionality

Why Verify After Installation?

Confirmation that PipeWire works prevents wasted time troubleshooting later. You need to verify the server is active, devices are detected, and applications can play audio through PipeWire.

Check Which Audio Server Is Running

Run this command to confirm PipeWire is now your audio server:

pactl info | grep "Server Name"

Expected output after successful installation:

Server Name: PipeWire 0

If you still see “PulseAudio (on Ubuntu)” or similar, PipeWire is not running. Restart services from Step 4 or check the troubleshooting section.

Check PipeWire Version and Capabilities

pw-info | grep -E "Version|API"

Expected output:

Version: 1.2.7
API version: 3

This confirms PipeWire version 1.2.x (stable) is installed. Fedora 44 ships with PipeWire 1.2.x, which includes improved Bluetooth codecs and lower latency.

List All Audio Nodes and Devices

pw-cli ls Node

This shows all detected audio devices (input/output). You should see entries for your speakers, headphones, and microphone. Each node displays its name, media class, and state (running, suspended).

Check WirePlumber Session Manager Status

wpctl status

Expected output:

PipeWire 0.3.84
 Context:
  State: running
  Properties:
   api.dbus.Running: true

 Default Nodes:
  Node 123: Built-in Audio Analog Stereo (Playing)
  Node 124: Bluetooth Audio A2DP Sink (Suspended)

This confirms WirePlumber is managing your audio devices. The “Default Nodes” section shows which devices are selected for playback and recording.

Test Audio Playback

Play a test tone to verify audio works:

pw-play --rate=48000 --channels=2 --format=S16LE /dev/zero &
sleep 3
kill %1

This generates a 3-second silent audio stream through PipeWire. For actual sound testing, play any audio file:

pw-play ~/Music/sample.mp3

Replace the path with an actual audio file on your system.

Step 6: Configure PipeWire for Bluetooth and Low Latency

Why Configure After Installation?

Default PipeWire settings work for most users, but Bluetooth audio requires explicit module enabling. Professional audio users also benefit from realtime priority configuration to prevent audio dropouts.

Enable Bluetooth Audio Modules

Fedora sometimes ships with Bluetooth modules disabled by default. Edit the PipeWire configuration to enable them:

mkdir -p ~/.config/pipewire/pipewire.conf.d
cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/

This creates a user-level configuration directory and copies the default config. Why copy instead of editing directly? System updates overwrite /usr/share/pipewire/pipewire.conf, but your ~/.config/pipewire/ changes persist.

Edit the Configuration File

Open the configuration file in your text editor:

nano ~/.config/pipewire/pipewire.conf

Find the section labeled context.modules and add these lines if bluez5 is not enabled:

    { name = libpipewire-module-bluez5.bluez_backend }
    { name = libpipewire-module-bluez5 }

Save the file (Ctrl+O, Enter, Ctrl+X in nano) and restart PipeWire services:

systemctl --user restart pipewire pipewire-pulse wireplumber

Pair Bluetooth Headphones

Use bluetoothctl to pair your Bluetooth audio device:

bluetoothctl
[bluetooth]# power on
[bluetooth]# agent on
[bluetooth]# scan on
[bluetooth]# pair XX:XX:XX:XX:XX:XX
[bluetooth]# trust XX:XX:XX:XX:XX:XX
[bluetooth]# connect XX:XX:XX:XX:XX:XX

Replace XX:XX:XX:XX:XX:XX with your device’s MAC address. After connecting, check WirePlumber status again:

wpctl status

Your Bluetooth device should now appear as an available audio node.

Configure Realtime Priority for Low Latency

Professional audio applications (DAWs, Ardour, Reaper) need realtime scheduling to prevent audio glitches. Add your user to the audio group and configure limits:

sudo usermod -aG audio $USER

Create a limits configuration file:

sudo nano /etc/security/limits.d/99-audio-limits.conf

Add these lines:

@audio    -   rtprio     95
@audio    -   memlock    unlimited
@audio    -   nice      -19

This grants the audio group realtime priority (rtprio 95), unlimited locked memory (prevents swapping), and high nice priority. Log out and back in for changes to take effect.

Troubleshooting Common PipeWire Installation Errors

Error 1: “Connection refused” When Running pactl

Problem: Running pactl info returns “Connection refused” error.

Solution: PipeWire services are not running. Restart them:

systemctl --user restart pipewire pipewire-pulse wireplumber
systemctl --user status pipewire pipewire-pulse wireplumber

If services fail to start, check logs:

journalctl --user -xe | grep -i pipewire

Look for error messages about missing dependencies or permission issues.

Error 2: PulseAudio Still Running After Installation

Problem: pactl info still shows “PulseAudio” instead of “PipeWire 0”.

Solution: PulseAudio processes are blocking PipeWire. Kill them and restart:

pulseaudio -k
systemctl --user stop pulseaudio
systemctl --user disable pulseaudio
systemctl --user restart pipewire pipewire-pulse wireplumber

Then verify again with pactl info. If PulseAudio restarts automatically, check for startup entries in ~/.config/autostart/ and remove PulseAudio launchers.

Error 3: Bluetooth Audio Not Working

Problem: Bluetooth headphones pair but produce no sound or show profile unavailable.

Solution: Enable bluez5 modules and check codec support:

wpctl metadata
systemctl --user restart pipewire pipewire-pulse

Ensure your system has bluez and bluez-utils packages installed:

sudo dnf install bluez bluez-utils -y
systemctl restart bluetooth

Some older Bluetooth adapters lack A2DP codec support. Check adapter compatibility with bluetoothctl info.

Error 4: No Sound After Migration

Problem: Audio applications run but produce no output.

Solution: Check default output device selection:

wpctl set-default @DEFAULT_AUDIO_SINK@
wpctl status

Open your desktop environment’s sound settings and select the correct output device. Test with PipeWire’s audio test tool:

pw-play /usr/share/sounds/freedesktop/stereo/bell.oga

If you hear the bell, the issue is application-specific configuration, not PipeWire itself.

Error 5: High CPU Usage or Audio Dropouts

Problem: Audio stutters, crackles, or causes high CPU usage.

Solution: Adjust buffer size and enable realtime priority:

mkdir -p ~/.config/pipewire/pipewire.conf.d
nano ~/.config/pipewire/pipewire.conf.d/latency.conf

Add this configuration:

context.properties = {
    default.clock.rate = 48000
    default.clock.quantum = 512
    default.clock.min-quantum = 256
    default.clock.max-quantum = 2048
}

Restart PipeWire and test again. Lower quantum values reduce latency but increase CPU usage. Find the balance that works for your hardware.

[su_box title=”VPS Manage Service Offer” style=”bubbles” box_color=”#000000″ radius=”10″]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![/su_box]

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