What WirePlumber Does and How to Use It on Linux
A practical guide to WirePlumber on Linux: what it does, how to view and control audio devices, and how to check or adjust the session manager for PipeWire.
Before you start
WirePlumber is a session and policy manager for PipeWire. It runs locally on the Linux machine where your audio, video and camera devices are connected. Check whether it is already active with this command: systemctl --user status wireplumber. On a normal desktop session, WirePlumber starts as a user service, so it does not need a separate remote service account. The exact service name and startup method can differ between distributions, especially if PipeWire is provided in different packages.
You do not need WirePlumber to run every audio or camera application. PipeWire can route streams, while WirePlumber watches devices, selects sensible default nodes and applies session policy. If the service is not running, audio may still work but device selection and automatic profile changes may behave differently.
Step-by-step instructions
Start by identifying the current state of PipeWire and WirePlumber. Open a terminal and run:
systemctl --user status wireplumber
wpctl status
The first command shows whether the WirePlumber user service is active. The second lists PipeWire objects that WirePlumber sees, including audio sinks, sources and video devices in supported builds. Look for the audio section and note the ID of the device you want to inspect.
To see detailed properties for a node, use its ID from wpctl status:
wpctl inspect 42
Replace 42 with the number shown in your own output. The result includes the node name, description and current parameters. This is useful when an application exposes only a generic device name and you need to confirm which physical device it refers to.
WirePlumber also handles default device selection. To set a different audio sink or source as the default, use:
wpctl set-default 43
Use the ID listed under the audio section. For audio-only tests, this changes where new streams normally play or record. Some desktop environments apply their own default-device setting, so check the sound settings after making the change.
If you need to adjust WirePlumber policy itself, use its configuration files rather than editing PipeWire configuration directly. The main configuration location is:
/etc/wireplumber/wireplumber.conf.d/
~/.config/wireplumber/wireplumber.conf.d/
System-wide settings go in the first directory, while the second is for per-user overrides. Copy a default file into the user directory only when you need to change a small setting. After changing a configuration file, reload WirePlumber:
systemctl --user restart wireplumber
WirePlumber versions differ in how policy sections are structured. A setting that works in one version may need a different file name or property in another. Before editing, check the version with:
wireplumber --version
Keep changes reversible by saving a copy of the original configuration file before you edit it.
Check the output
After changing a default device, run wpctl status again and confirm that the intended node is marked as the default. Start the application you use for calls or recording and check that its input or output appears under the expected device.
For a camera or video capture device, check whether it appears in wpctl status. Availability depends on the PipeWire build and the session policy on your distribution. If the device is shown, inspect it with wpctl inspect to confirm its media class and available formats. Applications must still open the device through PipeWire before you can judge whether the selected profile is correct.
WirePlumber selects and manages nodes, but it does not define every application behavior. A low-level WirePlumber command can confirm that a node exists; application-level quality, latency and format negotiation still depend on the application through PipeWire. Do not treat wpctl information as a full camera or audio quality test.
Common problems and next steps
If wpctl reports that the service is unavailable, WirePlumber may not be running or may not be installed for this session. Check with:
systemctl --user status wireplumber pipewire pipewire-pulse
Look for failed or inactive services. If WirePlumber is inactive but PipeWire is running, the session manager may need to be started explicitly on that system.
A device may not appear because it is not connected, the kernel driver is not loaded, or the PipeWire session does not have access to it. Check the device outside WirePlumber first. For USB audio or cameras, inspect the connected hardware with lsusb and check the kernel log with dmesg after connecting the device. If the device is present at that level but missing from wpctl status, the issue is more likely in the PipeWire or WirePlumber session.
When a default-device change does not persist after logout, verify whether your desktop environment stores its own audio output setting. Some desktop sound panels override WirePlumber defaults when the session starts. If your distribution uses that behavior, change the default in the desktop sound settings instead of relying only on wpctl set-default.
For users learning WirePlumber, the practical path is to first read wpctl status, then inspect the relevant node, then change only the default-device or policy setting that is needed. Avoid editing multiple WirePlumber configuration files at once: if behavior changes unexpectedly, it is easier to identify the cause when only one override was added.
If a camera is visible in PipeWire but an application cannot open it, close other applications that may hold the device and test with one application at a time. WirePlumber can select and manage the node, but exclusive access and permission handling can still prevent a specific application from using the video stream.