How to Use PulseAudio Volume Control (pavucontrol) on Fedora

Install and run pavucontrol on Fedora to visually manage audio volumes and device routing for applications.

You plugged in headphones and the audio stayed on the speakers

You plug in your USB headset. The system tray icon shows a volume slider, but the audio keeps blasting out of your laptop speakers. Or your microphone works in the system settings test but stays silent in your voice chat app. You have tried clicking the tray icon and it only gives you a global mute button. You need granular control over where sound goes and which device an application is using.

The system tray volume control is a master knob. It cannot route individual streams. It cannot switch hardware profiles. It cannot show you which app is hogging the audio device. You need pavucontrol.

What is actually happening

Fedora ships with PipeWire as the audio server. PipeWire handles low-level audio processing, video, and screen sharing. It includes a compatibility layer called pipewire-pulse that speaks the PulseAudio protocol. Most desktop audio tools, including pavucontrol, were written for PulseAudio. They work on Fedora because PipeWire pretends to be PulseAudio for them.

Under the hood, wireplumber acts as the session manager. It decides which device is the default, applies routing policies, and manages device states. pavucontrol sends requests to pipewire-pulse, which forwards them to wireplumber. If wireplumber crashes or loses state, pavucontrol shows an empty list or stale device names.

Think of the audio stack as a switchboard. Applications are callers trying to connect to lines. The system tray is the master volume knob on the wall. pavucontrol is the patch bay where you can move any caller to any line, mute a specific line, or reconfigure the hardware ports.

PipeWire is a user service. It runs inside your login session, not as root. Commands like systemctl status pipewire check the system-wide service, which does not exist. Always use systemctl --user. This distinction matters for debugging. A broken audio setup is almost always a user session issue, not a root configuration error.

Install and launch pavucontrol

Install the package and run the tool. No reboot is required. The tool connects to your active user session immediately.

sudo dnf install pavucontrol
# Install the GUI control panel. No reboot needed.
pavucontrol
# Launch the tool. It connects to the user session audio server.

If the window opens but shows no devices or streams, your audio services may be stuck. Check the user service status before assuming the tool is broken.

systemctl --user status pipewire pipewire-pulse wireplumber
# PipeWire runs per-user. Systemctl --user checks your session, not root.

Navigate the tabs

pavucontrol has five tabs. Each tab controls a different layer of the audio stack.

Playback

The Playback tab lists every application currently sending audio. Each row has a volume slider and a device dropdown. Click the dropdown to move the stream to a different output. If the dropdown is grayed out, the application has locked the device or the audio server has not detected the new output yet.

Click the speaker icon on the row to mute the app without affecting global volume. Some applications reset their volume on launch. pavucontrol remembers the last setting, but the app may override it on startup. This is an application behavior, not a Fedora bug.

Recording

The Recording tab shows applications capturing audio from a microphone. Use this tab to verify which app is using the mic. If your mic is silent in one app but works in another, check this tab. The app may be muted or routed to a dummy input.

Output Devices

The Output Devices tab shows available speakers and headphones. You can adjust the volume per device here. The port selection dropdown lets you choose between internal speakers, headphone jacks, and HDMI outputs on the same hardware card.

Input Devices

The Input Devices tab shows microphones. Adjust the input level here. If your mic is too quiet, increase the slider. If you hear echo, check the Configuration tab for duplex settings.

Configuration

The Configuration tab shows hardware profiles. A profile defines how the hardware is used. This tab solves the most common audio issues.

Analog Stereo Duplex enables both playback and recording. Analog Stereo Output disables the microphone. USB headsets often default to Output Only. If your mic is missing, check this tab. Switch the profile to Duplex. The change applies immediately.

Bluetooth devices show separate profiles for A2DP and HSP/HFP. A2DP provides high-quality stereo audio but no microphone. HSP/HFP enables the microphone but drops audio quality to mono. You cannot use A2DP and the microphone at the same time on most Bluetooth hardware. Switch to HSP/HFP to enable the mic, accepting lower audio quality.

Check the Configuration tab first. Profile mismatches cause more support tickets than driver bugs.

Verify the routing

Use command-line tools to verify that pavucontrol changes took effect. These tools query the server directly and bypass the GUI.

pactl list short sinks
# List available outputs. Verify the device names match pavucontrol.
pactl list short sink-inputs
# List active streams. Confirm the app you moved shows the correct sink index.

If you need to verify the PipeWire state without the PulseAudio compatibility layer, use wpctl.

wpctl status
# Query the PipeWire status directly. Bypasses the PulseAudio compatibility layer.

Common pitfalls and errors

pavucontrol shows an empty list

If pavucontrol opens but shows no devices or streams, the connection to the audio server failed. You may see an error message in the terminal or the GUI may hang.

Connection refused

This error means pipewire-pulse is not running or not listening. Restart the user services in dependency order. Wireplumber must start before pipewire-pulse can register correctly.

systemctl --user restart wireplumber pipewire-pulse pipewire
# Restart the stack in dependency order. Wireplumber starts first.

Application does not appear in Playback

Some applications use ALSA directly instead of PulseAudio or PipeWire. pavucontrol only sees streams that go through the audio server. If an app bypasses the server, it will not appear in the list.

Check if the app has a configuration option to use PulseAudio or PipeWire. Most modern apps support this. If the app only supports ALSA, you cannot route it with pavucontrol. You must use alsamixer to control its volume.

Bluetooth audio is choppy or silent

Bluetooth audio issues usually stem from profile conflicts. If you switch to HSP/HFP to use the mic, audio quality drops. If you stay on A2DP, the mic is disabled.

Some Bluetooth headsets fail to switch profiles cleanly. If the audio cuts out, disconnect and reconnect the device. Then switch the profile in the Configuration tab. Do not rely on the system tray to switch profiles. The tray icon often does not expose profile options.

Volume resets after app restart

Applications may request a specific volume level on startup. pavucontrol stores the last known volume, but the app can override it. This is normal behavior. Adjust the volume in pavucontrol after the app launches. Some apps provide their own volume controls. Use those when available.

Restart the user services before you reboot. A service restart fixes 90 percent of audio routing glitches.

When to use pavucontrol versus alternatives

Use pavucontrol when you need to route a specific application to a different output device. Use pavucontrol when you must switch a Bluetooth headset between high-quality audio and microphone mode. Use pavucontrol when an application appears muted despite the system volume being up. Use the system settings sound panel when you only need to change the global default device or adjust master volume. Use wpctl in the terminal when you are scripting audio changes or managing audio on a headless server. Use alsamixer when you need to unmute a hardware channel that the audio server does not expose.

Trust the user service. Audio lives in your session, not in root.

Where to go next