PipeWire
General Commands
Check running PulseAudio process:
$ ps axf | grep pulseaudio
Check running PipeWire process:
$ ps axf | grep pipewire
PulseAudio information:
$ pactl info
Check dependencies of
pavucontrol-qt
for PulseAudio:$ ldd /usr/bin/pavucontrol-qt | grep pulse
Key Concepts
- SPA: Simple Plugin API
- ALSA: Advanced Linux Sound Architecture
Working with PipeWire
- Navigate to the PipeWire directory:
# Navigate to the project path
$ cd /path/to/pipewire
- Start a shell for testing or debugging:
$ make shell
- Useful tools:
PipeWire CLI:
$ pw-cli $ list-objects
PipeWire Monitor:
$ pipewire-monitor
Debugging PipeWire:
$ DEBUG_PIPEWIRE=4 pipewire
Installed Tools
- Carla: A modular audio plugin host.
- Pavucontrol: PulseAudio Volume Control.
Visualization
Generate and view a graphical representation of PipeWire's graph:
$ pw-dot pw.dot && xdot pw.dot
$ pw-dot --detail pw.dot && xdot pw.dot
Starting the Camera
Use
gst-launch
to stream video:$ gst-launch-1.0 pipewiresrc ! videoconvert ! xvimagesink
Commands to run:
PipeWire:
$ make run
WirePlumber:
$ make run
Using VLC
Open audio files with VLC:
$ vlc /home/ugur/Downloads/EverybodyKnows.wav
Open audio files in CLI mode with VLC:
$ cvlc /home/ugur/Downloads/EverybodyKnows.wav
PipeWire Configuration Path
- Daemon Configuration Path:
/home/ugur/Desktop/Codes/pipewire/pipewire/src/daemon
- Global Configuration Path:
/etc/pipewire
Note:
To ensure WirePlumber works, comment out the following line in
pipewire.conf.in
:exec @media_session_path@
This is because WirePlumber is an external media session manager and conflicts with the built-in session.
Uncomment the required
libpipewire
modules inpipewire.conf
using a text editor:$ nano /etc/pipewire/pipewire.conf
System Management
Start PipeWire services:
$ systemctl --user start pipewire-pulse.service pipewire-pulse.socket
Stop PipeWire services:
$ systemctl --user stop pipewire-pulse.service pipewire-pulse.socket
Start PulseAudio services:
$ systemctl --user start pulseaudio.service pulseaudio.socket
Stop PulseAudio services:
$ systemctl --user stop pulseaudio.service pulseaudio.socket
Non-Functional Features
Not Working:
pipewire-gstreamer
pipewire-monitor
python3 xdp-screen-cast.py
Playing audio files via VLC:
$ vlc /home/ugur/Downloads/EverybodyKnows.wav # Opens VLC, no sound $ cvlc /home/ugur/Downloads/EverybodyKnows.wav # CLI VLC, no sound
Environment Variables
Set the library path for PipeWire:
$ export LD_LIBRARY_PATH=/home/ugur/Desktop/Codes/pipewire/pipewire/build/src/pipewire:/home/ugur/Desktop/Codes/pipewire/pipewire/pipewire-jack:/home/ugur/Desktop/Codes/pipewire/pipewire/pipewire-pulseaudio
Miscellaneous
Run the following to debug or verify PipeWire and PulseAudio processes:
$ ps ax | grep -e pipe -e pulse