wireplumber
Manage audio and video streams
TLDR
Run WirePlumber, after pipewire is started (for non-systemd systems)
Specify a different context configuration file
Display help
Display version
SYNOPSIS
wireplumber [OPTION...]
PARAMETERS
-h, --help
Displays a brief help message detailing the available command-line options for wireplumber.
-v, --version
Shows the version information of the wireplumber utility and exits.
-n, --no-daemon
Runs wireplumber in the foreground, preventing it from detaching and running as a background daemon. Useful for debugging.
-c FILE, --config=FILE
Specifies an alternative configuration FILE (a Lua script) to load instead of the default system-wide or user-specific ones.
-D, --debug
Enables debug output, providing more verbose logging which can be helpful for troubleshooting and development purposes.
--log-level=LEVEL
Sets the logging verbosity LEVEL for wireplumber. Typical levels range from 0 (error) to 3 (debug), with higher numbers producing more detailed output.
DESCRIPTION
wireplumber is a crucial component of the PipeWire media server framework, acting as its default session and policy manager. It is responsible for orchestrating the audio, video, and multimedia streams by managing the various nodes, links, and devices within the PipeWire graph.
Written primarily in Lua, wireplumber implements policies for automatic device detection, input/output routing, stream connections, and resource allocation. It ensures that applications can correctly access and utilize audio and video hardware, handling scenarios like hot-plugging devices, switching default outputs, and managing exclusive access. Essentially, it automates the complex task of connecting applications to the right audio/video paths, making the PipeWire system robust and user-friendly by abstracting much of the underlying complexity.
CAVEATS
wireplumber is designed to run as a background daemon, typically started automatically by systemd --user for the current user's session. Direct manual invocation is generally not required for normal operation. Its advanced configuration involves editing Lua scripts, which demands a degree of familiarity with both Lua and the PipeWire ecosystem. Incorrect configurations can lead to audio or video playback issues.
CONFIGURATION FILES
wireplumber's operational behavior and policies are defined through a set of Lua-based configuration files. These files are typically located in system-wide directories such as /usr/share/wireplumber/ and /etc/wireplumber/. Users can customize or override default settings by placing modified or new configuration files within their personal configuration directory, commonly found at ~/.config/wireplumber/.
DAEMON OPERATION
As a persistent background process, wireplumber continuously monitors the PipeWire graph and system events, such as the hot-plugging of audio devices or application requests for audio/video streams. It dynamically manages devices, streams, and connections based on its loaded policies, ensuring seamless and automatic audio and video routing. Its continuous operation is fundamental to the dynamic and flexible nature of the PipeWire multimedia system on Linux.
HISTORY
wireplumber was developed as a modern and highly flexible session manager for the PipeWire media server, specifically designed to supersede earlier, less extensible solutions like pipewire-media-session. Its introduction marked a significant step in PipeWire's evolution towards a unified and robust audio, video, and hardware management system on Linux. By leveraging Lua for its policy engine, wireplumber offers enhanced scriptability and control, contributing to PipeWire's goal of replacing or integrating with traditional sound servers like PulseAudio and JACK.