Getting started
If your distribution ships WirePlumber — which most do — it is probably already installed and running as part of your PipeWire setup. This page is a short tour of how to check that, what you can do from the command line, and where to go next.
If you want to build WirePlumber from source instead, see Installing WirePlumber.
Is it running?
On a systemd-based system:
$ systemctl --user status wireplumber
If it is not running, enable and start it:
$ systemctl --user --now enable wireplumber
See Running the WirePlumber daemon for non-systemd systems and for running WirePlumber by hand.
First commands
wpctl is the command-line control tool. Start with an overview of the
graph:
$ wpctl status
This lists the devices, sinks, sources and streams that WirePlumber currently manages, each with an id. Those ids are what the other commands take.
# change the volume of the default sink
$ wpctl set-volume @DEFAULT_SINK@ 50%
# mute and unmute it
$ wpctl set-mute @DEFAULT_SINK@ toggle
# make a different device the default
$ wpctl set-default 47
# look at everything WirePlumber knows about an object
$ wpctl inspect 47
See wpctl(1) for the full list of commands.
Changing the configuration
WirePlumber's own configuration lives in /usr/share/wireplumber/. Do not
edit it — it belongs to the package and will be overwritten on upgrade.
Instead, drop a fragment into your own configuration directory, containing only the settings you want to change:
$ mkdir -p ~/.config/wireplumber/wireplumber.conf.d
$ $EDITOR ~/.config/wireplumber/wireplumber.conf.d/50-my-config.conf
Fragments are merged on top of the shipped configuration, so you only need to write the parts you are changing. See Modifying configuration for the details, and Example configuration fragments for ready-made fragments you can copy and uncomment.
Many options can also be changed at runtime, without editing any file:
$ wpctl settings
Getting logs
$ journalctl --user -u wireplumber
To get more detail, raise the log level. This can be done at runtime:
$ wpctl set-log-level D
or for a single run, with an environment variable that also lets you select which parts of WirePlumber you are interested in:
$ WIREPLUMBER_DEBUG=s-linking:D wireplumber
See Debug Logging for the full syntax and the list of topics.
Where to go next
Configuration — the configuration file format, and the per-subsystem options for ALSA, Bluetooth, video and access control.
Understanding WirePlumber — how WirePlumber is put together, if you want to know what is actually happening.
Custom Scripts — writing your own policy in Lua.
Community Resources — where to ask questions and report bugs.