pw-mon
Monitor PipeWire streams
TLDR
Monitor the default PipeWire instance
Monitor a specific remote instance
Monitor the default instance specifying a color configuration
Display help
SYNOPSIS
pw-mon [-h] [-V] [-n] [-p] [-m] [-M] [-O type] [id ...]
pw-mon --help
pw-mon --version
PARAMETERS
-h
Displays a help message and exits.
--help
Same as -h.
-V
Displays the PipeWire version and exits.
--version
Same as -V.
-n
Show object node names (default).
-p
Show object port names.
-m
Show monitor/event messages. This makes pw-mon actively monitor events.
-M
Do not show monitor/event messages (default unless -m is used).
-O type
Filter objects by type. Valid types include PipeWire:Interface:Client, PipeWire:Interface:Device, PipeWire:Interface:Node, PipeWire:Interface:Port, PipeWire:Interface:Link, etc.
id ...
Display information about specific PipeWire object IDs. These IDs can be found by running pw-mon without arguments.
DESCRIPTION
pw-mon (PipeWire Monitor) is a command-line utility for inspecting the state of the PipeWire media server. It allows users to view detailed information about PipeWire objects, including clients, devices, nodes, ports, and links. It's an essential tool for debugging audio and video routing issues, verifying device connections, and understanding how applications interact with the PipeWire daemon.
pw-mon can display a dynamic, real-time view of the graph or a static snapshot, providing insights into active streams, their properties, and connections. It helps identify issues like missing audio output, incorrect routing, or applications not connecting to PipeWire as expected.
CAVEATS
pw-mon requires the PipeWire daemon to be running and accessible. If PipeWire is not running or if there are D-Bus or socket communication issues, the command may fail or show an empty output. Permissions can also be a factor; generally, it runs under the user session's PipeWire instance. The output can be verbose, especially in active systems, making it challenging to pinpoint specific information without filtering or piping to other tools like grep.
INTERACTIVE MONITORING
When run without the id argument and without specifying -M (or with -m), pw-mon provides a dynamic, real-time view of the PipeWire graph. It updates automatically when new objects are created, removed, or their state changes, making it invaluable for observing live multimedia stream activity.
OBJECT IDS
Each object in PipeWire (clients, devices, nodes, ports, links) is assigned a unique numerical ID. These IDs are displayed in the main pw-mon output and can be used as arguments to pw-mon to get detailed information about a specific object.
HISTORY
pw-mon is an integral part of the PipeWire project, which was initiated by Wim Taymans at Red Hat in 2017. PipeWire aims to provide a low-latency, graph-based multimedia server that can handle audio, video, and hardware access, effectively unifying and modernizing the roles previously served by PulseAudio for audio and JACK for professional audio/video. pw-mon has been available since the early releases of PipeWire, serving as a primary debugging and monitoring tool for developers and users. Its development parallels the evolution of PipeWire itself, continually adapting to new features and interfaces within the framework.