Find a file
2020-05-18 07:31:07 +00:00
docs docs: add full documentation on WirePlumber's configuration options and files 2019-12-23 18:21:14 +02:00
lib lib: debug loading of config files + endpoint priorities 2019-12-18 15:43:29 +02:00
modules config-policy: debug handling of endpoints 2019-12-19 14:49:57 +02:00
src docs: add full documentation on WirePlumber's configuration options and files 2019-12-23 18:21:14 +02:00
subprojects wptoml: add new library to parse TOML files 2019-12-04 16:38:35 -05:00
tests config-policy: add timeout when waiting on conditional variables 2019-12-27 08:38:07 -05:00
tools cli: fail gracefully if connection to pipewire fails 2019-12-17 19:49:50 +02:00
.editorconfig Add a sample config file and a Makefile to make running (for testing) easier 2019-05-17 13:34:33 +03:00
.gitignore add .gitignore 2019-12-23 18:24:06 +02:00
.gitlab-ci.yml ci: pin pipewire to a specific working commit 2019-12-06 20:07:46 +02:00
LICENSE Relicense to MIT 2019-05-31 12:13:12 +03:00
Makefile config: refactor wireplumber's configuration 2019-12-17 17:16:53 +02:00
meson.build meson: fix version number in 0.2 branch 2020-05-18 07:31:07 +00:00
meson_options.txt meson: add option to disable gobject introspection 2019-06-20 15:48:29 +03:00
README.md README.md: add instructions on building and running 2019-11-03 15:26:05 +01:00

WirePlumber

WirePlumber is a session / policy manager implementation for PipeWire.

Compiling and Running

Dependencies

In order to compile WirePlumber you will need:

  • GLib >= 2.58
  • PipeWire 0.3 (master)

At the moment, due to heavy development of both PipeWire and WirePlumber, it is not always the case that the latest master of WirePlumber works with the latest master of PipeWire. The safest PipeWire branch to use with WirePlumber master is the agl-next branch from my personal clone

Compilation

WirePlumber uses the meson build system. For compatibility and ease of use, though, a Makefile is also provided. The Makefile works only after the initial configuration of the project with meson.

Here is the very basic sequence of compiling for the first time:

$ meson build
$ make

Running automated tests

WirePlumber has a few automated tests that you can easily run with:

$ make test

Running

  1. First of all, you will need to run PipeWire. PipeWire itself comes with an example session manager that you will need to disable in order to run WirePlumber. This can be achieved by editing src/daemon/pipewire.conf.in on the PipeWire git tree to disable the execution of the session manager:
diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in
index bf64c574..e733e76c 100644
--- a/src/daemon/pipewire.conf.in
+++ b/src/daemon/pipewire.conf.in
@@ -24,4 +24,4 @@ load-module libpipewire-module-access
 load-module libpipewire-module-adapter
 load-module libpipewire-module-link-factory
 load-module libpipewire-module-session-manager
-exec build/src/examples/media-session
+#exec build/src/examples/media-session
  1. Second, you will need to run pipewire: in the pipewire source tree, do make run

  2. Without stopping pipewire, in the wireplumber source tree, do make run

Testing with an audio client

The easiest way to test that things are working is to start a gstreamer pipeline that outputs a test sound to pipewire.

In the pipewire source tree, do:

$ make shell
$ gst-launch-1.0 audiotestsrc ! pwaudiosink

Note that pwaudiosink is currently only available in the agl-next branch.

Debugging

The Makefile included with WirePlumber also supports the gdb and valgrind targets. So, instead of make run you can do make gdb or make valgrind to do some debugging.

Getting debug messages on the command line is a matter of setting the G_MESSAGES_DEBUG environment variable as documented in the GLib documentation. Usually you can just do:

G_MESSAGES_DEBUG=all make run

Note that this only gives out WirePlumber's debug messages. If you want to also see libpipewire's debug messages, then you can also set:

PIPEWIRE_DEBUG=4 G_MESSAGES_DEBUG=all make run

... where PIPEWIRE_DEBUG can be set to a value between 1 and 5, with 5 being the most verbose and 1 the least verbose.