Using Pipewire instead of Pulseaudio in Slackware 15
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
..
Program python3 (sphinx, sphinx_rtd_theme, breathe, sphinx.ext.graphviz) found: NO modules: sphinx
..
../docs/meson.build:34:0: ERROR: Running ['/usr/bin/sphinx-build', '--version'] failed
----------------
Hi, the Sphinx setup expected by Wireplumber made me install more stuff than available on SBo, like breathe, docutils. Or did you use pip? Note that the most recent Sphinx version might not work with the most recent version of docutils. I have Sphinx-4.2.0 and that needed docutils 0.17.1 (not 0.18).
I do not think that Marav would notice this issue as his set-up does not attempt to build the documentation by lack of Sphinx.
Last edited by brobr; 11-21-2021 at 12:55 PM.
Reason: typos
Hi, the Sphinx setup expected by Wireplumber made me install more stuff than available on SBo, like breathe, docutils. Or did you use pip? Note that the most recent Sphinx version might not work with the most recent version of docutils. I have Sphinx-4.2.0 and that needed docutils 0.17.1 (not 0.18).
I do not think that Marav would notice this issues as his set-up does not attempt to built the documentation by lack of Sphinx.
wireplumber 0.4.5
Lua version : 5.4.3 (built-in)
systemd conf data : NO
libsystemd : NO
libelogind : YES
For documentation
Python 3 Sphinx related modules: NO
Doxygen : NO
sphinx-build : NO
For introspection
Python 3 lxml module : NO
Doxygen : NO
g-ir-scanner : NO
Subprojects
lua : YES
Maybe a note in the Readme would be enough? Adding those flags will keep it simple and lean (but no idea how important 'introspection' is).
The meson-build options ('meson_options.txt') show that compilation should work on a clean Slackware install + Lua like you see:
Quote:
option('introspection', type : 'feature', value : 'auto',
description : 'Generate gobject-introspection bindings')
option('doc', type : 'feature', value : 'auto',
description: 'Enable documentation.')
option('system-lua', type : 'boolean', value : 'false',
description : 'Use lua from the system instead of the bundled one')
option('system-lua-version',
type: 'string', value : 'auto',
description: 'The system lua version to use or "auto" for auto-detection'
What will be built/installed with respect to introspection, documentation and scripting depends on what is available on the user's system.
Sphinx (needed for the documentation), lxml (for introspection) and lua (for lua from the system) come in via 3rd parties (pip/SBo).
Thus only when these are installed the build-script attempts to use them and this could lead to errors when such modules are not ok (outdated, lacking the correct dependencies etc). It's up to the user to repair this or not to bother building those extra bits.
By turning flags as '-Ddoc=disabled' '-Dintrospection=disabled' into build-options for the SlackBuild, all choices would be covered.
(e.g. something like this -which could be much nicer, sorry, but my bash-skills are minimal):
Code:
WITHDOC=no
if [ $WITHDOC == "yes" ]; then documentation="-Ddoc=auto"; elif [ $WITHDOC == "no" ]; then documentation="-Ddoc=disabled"; fi
WITHINTRO=no
if [ $WITHINTRO == "yes" ]; then introspection="-Dintrospection=auto"; elif [ $WITHINTRO == "no" ]; then introspection="-Dintrospection=disabled"; fi
# Configure, build, and install:
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
mkdir build
cd build
meson setup \
--prefix=/usr \
..
-Dsystemd-user-service=false \
-Dsystem-lua=true \
$documentation \
$introspection \
..
But then it would become quite an adapted script.
I noticed that using the built-in lua leads to a download of lua during compilation, which is not so good; thus lua from SBo should be installed as you say, turning Wireplumber into a 3rd party SBo-like package.
EDIT:
Missed above actions while putting this blurb together;-)
Maybe a note in the Readme would be enough? Adding those flags will keep it simple and lean (but no idea how important 'introspection' is).
The meson-build options ('meson_options.txt') show that compilation should work on a clean Slackware install + Lua like you see:
What will be built/installed with respect to introspection, documentation and scripting depends on what is available on the user's system.
Sphinx (needed for the documentation), lxml (for introspection) and lua (for lua from the system) come in via 3rd parties (pip/SBo).
Thus only when these are installed the build-script attempts to use them and this could lead to errors when such modules are not ok (outdated, lacking the correct dependencies etc). It's up to the user to repair this or not to bother building those extra bits.
By turning flags as '-Ddoc=disabled' '-Dintrospection=disabled' into build-options for the SlackBuild, all choices would be covered.
(e.g. something like this -which could be much nicer, sorry, but my bash-skills are minimal):
Code:
WITHDOC=no
if [ $WITHDOC == "yes" ]; then documentation="-Ddoc=auto"; elif [ $WITHDOC == "no" ]; then documentation="-Ddoc=disabled"; fi
WITHINTRO=no
if [ $WITHINTRO == "yes" ]; then introspection="-Dintrospection=auto"; elif [ $WITHINTRO == "no" ]; then introspection="-Dintrospection=disabled"; fi
# Configure, build, and install:
export CFLAGS="$SLKCFLAGS"
export CXXFLAGS="$SLKCFLAGS"
mkdir build
cd build
meson setup \
--prefix=/usr \
..
-Dsystemd-user-service=false \
-Dsystem-lua=true \
$documentation \
$introspection \
..
But then it would become quite an adapted script.
I noticed that using the built-in lua leads to a download of lua during compilation, which is not so good; thus lua from SBo should be installed as you say, turning Wireplumber into a 3rd party SBo-like package.
EDIT:
Missed above actions while putting this blurb together;-)
I've seen that too
I made the changes following your excellent advice ;-)
Code:
WITHDOC=${WITHDOC:-no}
WITHINTRO=${WITHINTRO:-no}
if [ $WITHDOC == "no" ]; then
DOC_OPTION="-Ddoc=disabled"
else
DOC_OPTION="-Ddoc=auto"
fi
if [ $WITHINTRO == "no" ]; then
INTRO_OPTION="-Dintrospection=disabled"
else
INTRO_OPTION="-Dintrospection=auto"
fi
...
-Dsystem-lua=true \
$DOC_OPTION \
$INTRO_OPTION \
As this is already very good thread to discuss this, I'm not gonna open another thread;
So, I'm not really active here, but I came here to give the community good news, and sure, I want suggestions and help!
Inspired from many, I have pending scripts for submission, the package named actually "pipewire-pulse"!
And a revert build for it.
As this is dangerous process and one simple mistake end you stuck at login, for my case plasma which I hopefully had pulseaudio binary from official Slackware repository while I was testing this due procedure, I came up with great method of 'Do' and 'Undo' build for switching over audio backends, I could write them both as perfect as they should be.
"Why did you bother yourself for this so badly?"
Well to answer this, I'm contributor to a very advanced player called Tauon Music Box which is not only simple player, it can be radio, it has 4 level gui mode for any situation you're on, has many many features and easter eggs I'm sure you can read it's wiki and figure even some unknown ones out later
I could just not wait when I saw it and eventually wrote builds for it and pushed to SBo which at that time I found Slackware masterpiece.
Recently Taiko the developer, deployed 24bit floats for Phazor, and pulseaudio has some limitations at that point, which is a bit experimental to hear.
I'm also working on phazor for some other cases you might realize at other versions!
I need senior maintainers suggestion on this PR,
thanks!
Thu Dec 16 21:34:10 UTC 2021
l/pipewire-0.3.42-x86_64-1.txz: Upgraded.
Code:
# PipeWire 0.3.42 (2021-12-16)
This is a bugfix release that is API and ABI compatible with previous
0.3.x releases.
This is a quick emergency release to fix some severe
problems with the previous release.
## Highlights
- Fixes a bug in pulse-server underrun handling that broke qemu
and orca.
- A fix was added to pulse-server to handle quantum changes
gracefully.
- Fix module-echo-cancel again.
- Fix a bug where the bluetooth headset capture was producing
noise.
I guess it wasn't mentioned but the PipeWire 0.3.41 that we quickly passed over from yesterday had some interesting updates as well:
Quote:
Highlights
Improved compatibility for flatpaks. Flatpaks with newer PipeWire version can connect to an older server in all cases.
A new RAOP module was added to stream to Apple Airplay devices.
OBS can now capture from the monitor devices again when using WirePlumber.
Improved JACK compatibility. Improved stability in Carla and Ardour when changing buffer size. Improved latency calculations and playback latency in Ardour.
Improved pulse-server handling of underruns and buffer size changes.
Many bugfixes and improvements.
In the past versions changing buffer sizes in Ardour would crash pipewire fairly regularly. I haven't rebuilt and tested this new version yet but its got my hopes up.
Also the RAOP module is something I missed from pulseaudio for streaming to my Pioneer speaker that runs Airplay only. I'll have to test that out too now when I have some time. I'm assuming that pipewire would have to be rebuilt with Avahi, which was the case with pulseaudio's RAOP module.
I would like to share with you some things that maybe can help some people.
Wireplumber was interesting in the Bluetooth part because it was not necessary to enable MSBC options and XQ manually as it is required using Media-Session, by Wireplumber, these functions has been detected without having to edit these files.
Also i have compiled pipewire using the option in Meson Configure
Code:
-Dsession-managers=wireplumber \
#or for =media-session
with this command you set the Session-Manager to be used default and automatically downloads and compiles wireplumber or media-session so having no need to manually compile these managers before.
Last edited by Candelabrus; 01-03-2022 at 10:46 AM.
- Fixed a lot of race condition bugs that would cause strange crashes ormany log messages being printed
when streaming clients would connect and disconnect very fast (#128, #78, ...)
- Improved the logic for selecting a default target device (#74)
- Fixed switching to headphones when the wired headphones are plugged in (#98)
- Fixed an issue where udevadm trigger would break wireplumber (#93)
- Fixed an issue where switching profiles of a device could kill client nodes
- Fixed briefly switching output to a secondary device when switching device profiles (#85)
- Fixed wpctl status showing default device selections when dealing with module-loopback virtual sinks and sources (#130)
- WirePlumber now ignores hidden files from the config directory (#104)
- Fixed an interoperability issue with jackdbus (pipewire#1846)
- Fixed an issue where pulseaudio tcp clients would not have permissions to connect to PipeWire (pipewire#1863)
- Fixed a crash in the journald logger with NULL debug messages (#124)
- Enabled real-time priority for the bluetooth nodes to run in RT (#132)
- Made the default stream volume configurable
- Scripts are now also looked up in $XDG_CONFIG_HOME/wireplumber/scripts
- Updated documentation on configuring WirePlumber and fixed some more documentation issues (#68)
- Added support for using strings as log level selectors in WIREPLUMBER_DEBUG
Fixed a regression in 0.4.6 that caused the selection of the default audio sources and sinks to be delayed until some event, which effectively caused losing audio output in many circumstances (#148, #150, #151, #153)
Fixed a regression in 0.4.6 that caused the echo-cancellation pipewire module (and possibly others) to not work
A default sink or source is now not selected if there is no available route for it (#145)
Fixed an issue where some clients would wait for a bit while seeking (#146)
Fixed audio capture in the endpoints-based policy
Fixed an issue that would cause certain lua scripts to error out with older configuration files (#158)
I don't know if it's just my problem. For several months, when I turn on the headphones, I see that blueman is connected, but I do not hear the classic voice "connected" and I do not see them among the audio devices. I always have to disconnect and reconnect them in blueman, and then everything works. I've tried everything, but I don't get out of it.
This problem gives it, both using only pulseaudio and with pulsewire, I tried to delete the config files and recreate everything. I also tried older versions of pulse. Obviously the problem is with all the headphones I have.
Thanks to Pat for his major improvements to the Pipewire integration in Slackware
Based on his scripts, I've made similar method to enable/disable wireplumber (as a replacement of pipewire-media-session)
with 2 scripts in /usr/sbin/ :
- wireplumber-enable.sh
- wireplumber-disable.sh
+ it's no longer necessary to write your own wireplumber.desktop, it's now included as wireplumber.desktop.sample
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.