How to Set Up WirePlumber on Gentoo
Practical Gentoo WirePlumber setup for PipeWire audio: package installation, service configuration, volume checks, and fixes for missing devices.
Before you start
WirePlumber is the session manager that controls how PipeWire discovers and routes audio devices. On Gentoo this runs locally for your user session; the service normally starts automatically through your desktop environment or a user-level init setup. Check that media-video/pipewire is installed and that your user belongs to the audio group if you need real-time scheduling for lower latency. You can confirm your USE flags before changing anything: run emerge --info media-video/wireplumber and look for enabled PipeWire-related options.
Step-by-step instructions
Start by deciding whether you want the main WirePlumber package or the older split package. Newer Gentoo setups usually use media-video/wireplumber. If your profile or overlay still provides media-video/wireplumber with the lua USE flag, enabling it gives you the Lua configuration engine. At the time of writing, many installations can proceed with the default USE flags, but inspect the available options for the installed version instead of assuming a menu path.
Install and configure the package
emerge --ask --verbose media-video/wireplumber
If you need a specific configuration option, set it in /etc/portage/package.use before the emerge command. Keep the change reversible by recording the original USE value. For a minimal install without PipeWire extras, first check whether PipeWire itself is already present:
equery list media-video/pipewire media-video/wireplumber
If PipeWire is absent, install it together with WirePlumber so the session manager has a server to manage:
emerge --ask --verbose media-video/pipewire media-video/wireplumber
Start WirePlumber for your session
WirePlumber is not typically started as a system-wide daemon for desktop audio. The runtime should be launched per user. Under a Wayland or X11 desktop, the desktop session often starts PipeWire and WirePlumber automatically. If you use a plain window manager or a custom session, add the launch command to your user autostart file or session script:
pipewire &
wireplumber &
For a system with elogind or seatd, the service-style approach may be available through your environment's user unit support. Do not guess the exact unit name: check the package contents or local documentation for whether a user unit is installed.
Make a backup of the runtime configuration
WirePlumber reads global configuration from a system location and can also read overrides from your user configuration directory. If you want to change routing behavior, copy the relevant example into your user configuration area rather than editing system files directly. Keeping your changes in the user-level location makes a rollback easier: remove or rename the override file to return to the packaged defaults.
Check the output
First confirm that the PipeWire server is available:
pw-cli info
If the command returns version and server information, PipeWire is reachable. Next, list detected audio devices from WirePlumber's view:
wpctl status
Look for your expected camera, microphone, headset or built-in audio interface in the audio section. Verify the active volume level for a selected device by checking its ID:
wpctl get-volume @DEFAULT_AUDIO_SINK@
For a quick audible test, play a local sound through the default sink. If the device appears but is muted, use wpctl set-mute with the device ID to unmute it, then recheck the volume. This confirms routing and output without changing global policy.
Common problems and next steps
No devices appear
If wpctl status shows no audio devices, confirm that WirePlumber is actually running in the same session as PipeWire. A mismatched XDG_RUNTIME_DIR can make the session manager connect to the wrong instance. Run:
pgrep -a wireplumber
No process usually means WirePlumber was not started or exited after launch. Restart it in the same shell and environment as PipeWire, then wait a few seconds before checking wpctl status again.
Device appears but has no sound
Check the default sink and its mute state. If the sound uses the wrong output, list available endpoints by ID:
wpctl status
Then set the intended default with wpctl set-default followed by the endpoint ID. For a camera microphone or USB audio interface, confirm the device is connected before starting the session, then restart WirePlumber if it was plugged in later.
Configuration changes do not apply
After editing a user override, restart WirePlumber and verify that the expected file is loaded. If the behavior remains unchanged, check that your override lives in the correct user configuration path and that the filename follows WirePlumber's expected naming. Keep a copy of the original configuration so you can restore it and test the default behavior again.
Camera or video-call audio problems
For conference applications, check that the application selects the same PipeWire node you see in wpctl status. If the browser or video-call tool cannot access a camera microphone, verify the camera is visible at system level first. Use a local recording or playback test that isolates the device from the application. If the camera is visible but the browser is not allowed to use it, adjust browser site permissions separately; WirePlumber cannot grant that permission.
Version differences
WirePlumber behavior changed between versions, especially around configuration file locations and Lua support. Before applying an older guide, check the version installed on your system:
wireplumber --version
Use paths and commands from documentation matching that major version. If the installed version conflicts with an overlay or USE change, run emerge with --ask and review the proposed changes before proceeding. Reversibility is easiest when you test with user-level overrides and keep system configuration unchanged.