The pipe wire system is a new audio system that is taking over from Pulseaudio in Fedora 34. This is also in Ubuntu 21.04. This is a superior audio system and also replaces the Jack audio system. I hope this is a low latency system and gives better performance. Pulseaudio has its fair share of issues and needs replacement with something better. Instead of having multiple audio systems on Linux, we only need one that works just fine with any audio device, as long as it has driver support. That will make using Linux easier.
The pw-cli command will allow a user to get information about a Pipewire instance.
Below is an example.
john@john-virtual-machine:~/Desktop$ pw-cli info all |
This is an example of the very comprehensive information you can get with the pw-cli utility.
pipewire-0>>info all id: 0 permissions: rwxm type: PipeWire:Interface:Core/3 cookie: 2049154167 user-name: "john" host-name: "john-virtual-machine" version: "0.3.24" name: "pipewire-0" * properties: * config.name = "pipewire.conf" * link.max-buffers = "16" * core.daemon = "true" * core.name = "pipewire-0" * clock.power-of-two-quantum = "true" * default.clock.rate = "48000" * default.clock.quantum = "1024" * default.clock.min-quantum = "32" * default.clock.max-quantum = "8192" * default.video.width = "640" * default.video.height = "480" * default.video.rate.num = "25" * default.video.rate.denom = "1" * mem.warn-mlock = "false" * mem.allow-mlock = "true" * cpu.max-align = "32" * object.id = "0" id: 1 permissions: rwxm type: PipeWire:Interface:Module/3 name: "libpipewire-module-rtkit" filename: "/usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-rtkit.so" args: "{ #nice.level = -11 #rt.prio = 88 #rt.time.soft = 200000 #rt.time.hard = 200000 }" |
Use the help command to show available options.
pipewire-0>>help Available commands: help Show this help load-module Load a module. <module-name> [<module-arguments>] unload-module Unload a module. <module-var> connect Connect to a remote. [<remote-name>] disconnect Disconnect from a remote. [<remote-var>] list-remotes List connected remotes. switch-remote Switch between current remotes. [<remote-var>] list-objects List objects or current remote. [<interface>] info Get info about an object. <object-id>|all create-device Create a device from a factory. <factory-name> [<properties>] create-node Create a node from a factory. <factory-name> [<properties>] destroy Destroy a global object. <object-id> create-link Create a link between nodes. <node-id> <port-id> <node-id> <port-id> [<properties>] export-node Export a local node to the current remote. <node-id> [remote-var] enum-params Enumerate params of an object <object-id> <param-id> set-param Set param of an object <object-id> <param-id> <param-json> permissions Set permissions for a client <client-id> <object> <permission> get-permissions Get permissions of a client <client-id> dump Dump objects in ways that are cleaner for humans to understand [short|deep|resolve|notype] [-sdrt] [all|Core|Module|Device|Node|Port|Factory|Client|Link|Session|Endpoint|EndpointStream|<id>] |
Pipe wire supports multi-core processing as well as sandboxing applications while still allowing audio playback. This is a step forward for Linux desktops. This allows simple and fast audio playback and reliable configuration of new devices. Just like on Windows, you do not need to worry about whether you are using Pulseaudio or Jack, it just works. And that is what Linux needs. Reliable and fast audio support.