pipewire(1)

๐Ÿ“ฆ
version 1.6.8 ยท 5 versions
, in ubuntu stonking

โœจ pipewire(1) โ€” the PipeWire media server โœจ

okay bestie, pull up a chair ๐Ÿซถ this is the manual page for pipewire, straight out of the General Commands Manual โ€” and yes, the man page is literally named pipewire(1), we're doing this properly bestie ๐Ÿ’…


๐ŸŒธ SYNOPSIS ๐ŸŒธ

pipewire [options]

that's it, that's the whole vibe check. just the command and some options ๐Ÿ‘‘


๐Ÿ’– DESCRIPTION ๐Ÿ’–

PipeWire is a service โ€” like, a whole thing โ€” and its entire job is facilitating the sharing of multimedia content between devices and applications. audio, video, all of it, getting passed around the group chat of your system ๐ŸŽ€

The pipewire daemon reads a config file, and that config file has its own whole manual page situation going on: it's documented in pipewire.conf(5). go read it, i'll wait ๐Ÿฆ‹


โœจ OPTIONS โœจ

  • -h | --help โ€” shows you the help. the "hey what do i do" button ๐Ÿ™ˆ
  • -v | --verbose โ€” turns the verbosity up by one level. and listen, you can stack this โ€” spec it multiple times if you want maximum yapping ๐Ÿ’ฌ
  • --version โ€” spills the version info. iconic. simple. we love her โญ
  • -c | --config=FILE โ€” loads the config file you hand her. default is pipewire.conf ๐Ÿ“„
  • -P | --properties=PROPS โ€” adds the properties you give as a SPA JSON object to the context. fancy โœจ

๐ŸŽ€ RUNTIME SETTINGS ๐ŸŽ€

so a PipeWire daemon will also expose a settings metadata object, and that object lets you change some settings at runtime. no restart, no drama, live changes ๐Ÿ’…

Normally these settings can bypass any of the restrictions listed in the config options above โ€” yes, even things like quantum and samplerate values. no cap ๐Ÿซฃ

You modify the settings with pw-metadata(1):

pw-metadata -n settings                  # list settings
pw-metadata -n settings 0                # list server settings
pw-metadata -n settings 0 log.level 2    # modify a server setting
  • log.level = INTEGER โ€” changes the log level of the PipeWire daemon ๐Ÿ”
  • clock.rate = INTEGER โ€” the default samplerate ๐ŸŽต
  • clock.allowed-rates = [ RATE1 RATE2... ] โ€” the allowed samplerates โœ…
  • clock.force-rate = INTEGER โ€” temporarily forces the graph to operate in a fixed sample rate. both DSP processing and devices will switch to the new rate immediately. running streams (PulseAudio, native and ALSA applications) will automatically resample to match the new rate. Set the value to 0 to allow the sample rate to vary again. ๐ŸŒ€
  • clock.quantum = INTEGER โ€” the default quantum (buffer size) ๐Ÿ“ฆ
  • clock.min-quantum = INTEGER โ€” smallest quantum to be used ๐Ÿ”ฝ
  • clock.max-quantum = INTEGER โ€” largest quantum to be used ๐Ÿ”ผ
  • clock.force-quantum = INTEGER โ€” temporarily force the graph to operate in a fixed quantum. Set the value to 0 to allow the quantum to vary again. ๐ŸŒ€

๐ŸŒˆ ENVIRONMENT VARIABLES ๐ŸŒˆ

๐Ÿ”Œ Socket directories

These three are the find-the-socket squad โ€” used to find the PipeWire socket on the server (and native clients):

  • PIPEWIRE_RUNTIME_DIR
  • XDG_RUNTIME_DIR
  • USERPROFILE

and then, individually:

  • PIPEWIRE_CORE โ€” name of the socket to make ๐Ÿ› ๏ธ
  • PIPEWIRE_REMOTE โ€” name of the socket to connect to ๐Ÿ”—
  • PIPEWIRE_DAEMON โ€” if you set it to true, then the process becomes a new PipeWire server ๐Ÿ‘‘ main character energy fr

๐Ÿ“ Config directories, config file name and prefix

The directory-finding trio, used to find the config file directories:

  • PIPEWIRE_CONFIG_DIR
  • XDG_CONFIG_HOME
  • HOME

then:

  • PIPEWIRE_CONFIG_PREFIX
  • PIPEWIRE_CONFIG_NAME โ€” these two are used to override the application provided config prefix and config name ๐Ÿ’…
  • PIPEWIRE_NO_CONFIG โ€” enables (false) or disables (true) overriding on the default configuration โš ๏ธ yes, it's inverted, read it twice

๐Ÿง  Context information

As part of a client context, the following info gets collected from environment variables and dropped into the context properties:

  • LANG โ€” the current language, in application.language ๐Ÿ—ฃ๏ธ
  • XDG_SESSION_ID โ€” set as the application.process.session-id property ๐Ÿชช
  • DISPLAY โ€” is set as the window.x11.display property ๐Ÿ–ฅ๏ธ

๐Ÿงฉ Modules

  • PIPEWIRE_MODULE_DIR โ€” sets the directory where to find PipeWire modules ๐Ÿ“ฆ
  • SPA_SUPPORT_LIB โ€” the name of the SPA support lib to load. this can be used to switch to an alternative support library โ€” for example, to run on the EVL realtime kernel โšก

๐Ÿ“ Logging options

  • JOURNAL_STREAM โ€” is used to parse the stream used for the journal. this is usually configured by systemd ๐Ÿงพ
  • PIPEWIRE_LOG_LINE โ€” enables the logging of line numbers. default true ๐Ÿ”ข
  • PIPEWIRE_LOG_TIMESTAMP โ€” logging timestamp type: "local", "monotonic", "realtime", "none". default "local" โฐ
  • PIPEWIRE_LOG โ€” specifies a log file to use instead of the default logger ๐Ÿ“„
  • PIPEWIRE_LOG_SYSTEMD โ€” enables the use of systemd for the logger, default true ๐Ÿงต

๐Ÿ› ๏ธ Other settings

  • PIPEWIRE_CPU โ€” selects the CPU and flags. this is a bitmask of any of the CPU flags ๐Ÿงฎ
  • PIPEWIRE_VM โ€” selects the Virtual Machine PipeWire is running on. this can be any of the VM types ๐Ÿ’ป
  • DISABLE_RTKIT โ€” disables the use of RTKit or the Realtime Portal for realtime scheduling โฑ๏ธ
  • NO_COLOR โ€” disables the use of colors in the console output ๐ŸŽจ (sad. but valid.)

๐Ÿ› Debugging options

  • PIPEWIRE_DLCLOSE โ€” enables (true) or disables (false) the use of dlclose when a shared library is no longer in use. when debugging, it might make sense to disable dlclose to be able to get debugging symbols from the object ๐Ÿ”ฌ

๐ŸŒŠ Stream options

  • PIPEWIRE_NODE โ€” makes a stream connect to a specific object.serial or node.name ๐ŸŽฏ
  • PIPEWIRE_PROPS โ€” adds extra properties to a stream or filter โž•
  • PIPEWIRE_QUANTUM โ€” forces a specific rate and buffer-size for the stream or filter ๐Ÿ“
  • PIPEWIRE_LATENCY โ€” sets a specific latency for a stream or filter. this is only a suggestion, but the configured latency will not be larger ๐Ÿข
  • PIPEWIRE_RATE โ€” sets a rate for a stream or filter. this is only a suggestion. the rate will be switched when the graph is idle ๐Ÿ’ค
  • PIPEWIRE_AUTOCONNECT โ€” overrides the default stream autoconnect settings ๐Ÿ”„

๐Ÿงš Plugin options

  • SPA_PLUGIN_DIR โ€” is used to locate SPA plugins ๐Ÿงฉ
  • SPA_DATA_DIR โ€” is used to locate plugin specific config files. this is used by the bluetooth plugin currently to locate the quirks database ๐Ÿฆท
  • SPA_DEBUG โ€” set the log level for SPA plugins. this is usually controlled by the PIPEWIRE_DEBUG variable when the plugins are managed by PipeWire, but some standalone tools (like spa-inspect) use this variable ๐Ÿž
  • ACP_BUILDDIR โ€” if set, the ACP profiles are loaded from the builddir ๐Ÿ—๏ธ
  • ACP_PATHS_DIR
  • ACP_PROFILES_DIR โ€” used to locate the ACP paths and profile directories respectively ๐Ÿ“‚
  • LADSPA_PATH โ€” comma separated list of directories where the ladspa plugins can be found ๐ŸŽ›๏ธ
  • LIBJACK_PATH โ€” directory where the jack1 or jack2 libjack.so can be found ๐ŸŽท

๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

The PipeWire Developers โ€” they said it, not me: <https://gitlab.freedesktop.org/pipewire/pipewire/issues>

and PipeWire is available from <https://pipewire.org> ๐Ÿซถ


๐Ÿ”— SEE ALSO ๐Ÿ”—

pw-top(1), pw-dump(1), pw-mon(1), pw-cat(1), pw-cli(1), libpipewire-modules(7)

go read those too, they're all part of the friend group ๐Ÿ’œ


lowkey that's the whole page bestie. every flag, every env var, every setting โ€” nothing skipped, nothing invented. iykyk ๐Ÿ˜ญ

bye bestie ๐Ÿ’– this was brought to you by PipeWire, version 1.6.8, serving you the pipewire(1) manual page. now go make some audio happen โœจ๐ŸŽ€๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from