LinuxCommandLibrary

wireplumber

Manage audio and video streams

TLDR

Run WirePlumber, after pipewire is started (for non-systemd systems)

$ wireplumber
copy

Specify a different context configuration file
$ wireplumber --config-file [path/to/file]
copy

Display help
$ wireplumber --help
copy

Display version
$ wireplumber --version
copy

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.

SEE ALSO

pipewire(1), wpctl(1), pw-cli(1), systemd(1)

Copied to clipboard