MGA9 supports both PulseAudio and PipeWire as sound servers. However draksound supports only configuring PulseAudio We need to add the support also for switching (back and forth) from PulseAudio to PipeWire. This is a complex task: installing just task-pipewire or task-pulseaudio is not enough for switching from one configuration to the other, as it wouldn't create a valid (systemd) configuration that doesn't create conflicts between the two sound servers, so it needs to be treated specifically. The code for the GUI is here: https://gitweb.mageia.org/software/drakx/plain/perl-install/harddrake/sound.pm We can track the progress in this bug.
CC: (none) => marja11Assignee: bugsquad => mageiatools
Created attachment 13680 [details] script to switch from various sound server (user)
Created attachment 13681 [details] script to switch from various sound servers (system)
I attached here two scripts: - pa-switcher - pa-switcher-system they are an upgrade of the script that I posted in qa-discuss@ml. Install BOTH files in /usr/local/bin/, and chmod +x them. You can use them to switch the sound server from pulseaudio to pipewire (back and forth). Note that pipewire comes in mga9 with two alternatives session managers: pipewire-media-session and wireplumber. Wireplumber is the newest, which is where most of current development is done. Pipewire Media Session is the older one. The scripts works in the following ways: - as plain user run "pa-switcher", or "pa-switcher -y" (the "-y" this option will auto install the required packages without prompting for them them). - you'll get a pop-up where you can choose the sound server. It should start showing the current sound server (though the auto-detecting sometimes might fail). - select the desidered server, then click ok. It will prompt for the root password for allowing to install|remove newer packages. - then it will be installed the required packages and adjusted the systemd or other services accordingly. - the switching is performed for both the current user as well as for all the users in the system. - for the current user (i.e. the one invoking pa-switcher) the newer sound server will be automatically restarted. You should get an icon showing that audio has been detached then reattached in a few seconds. - pa-switcher-system can be used alone to switch from one sound server to another system-wide, but won't act in current user. E.g. pa-switcher-system -w -y will automatically switch the system sound daemon to pipewire and mediaplumber (a reboot is then required). The scripts are based on task-pipewire/task-pulseaudio meta-packages. The scripts have still some limits, i.e.: - they doesn't work offline, e.g. when there aren't the RPM media available in the system providing both pulseaudio and pipewire. This happens for instance on the default LIVE system. - sometimes plasma-desktop got uninstalled and need to be reinstalled. I tried to preserve re-installing it when this happens, but it might occur. In that case at next login plasma will show a black screen. If this occurs check plasma-desktop is installed and then reinstall. - if another user has touched his locate systemd presets to enable pipewire outside pa-switcher, and then the pa-switcher is ran as a different user to switch to pulseaudio, the global altered presets could be in a situation were both pulseaudio and pipewire services are running for that user leading to some unpredictable behaviour.
I noticed that in the meta-task package we have a preference for task-pipewire, this apparently install pipewire and pipewire packages when mga8 system is upgraded to mga9. Bu since task-pipewire is not enough to automatically migrate to pipewire also the systemd presets and other startup scripts (and thus disabling and cleaning pulseaudio), we should change in https://svnweb.mageia.org/packages/cauldron/meta-task/current/SOURCES/prefer.vendor.list?revision=1919093&view=markup, the preference from task-pipewire to task-pulseaudio.
(In reply to Giuseppe Ghibò from comment #4) > I noticed that in the meta-task package we have a preference for > task-pipewire, this apparently install pipewire and pipewire packages when > mga8 system is upgraded to mga9. Bu since task-pipewire is not enough to > automatically migrate to pipewire also the systemd presets and other startup > scripts (and thus disabling and cleaning pulseaudio), we should change in > https://svnweb.mageia.org/packages/cauldron/meta-task/current/SOURCES/prefer. > vendor.list?revision=1919093&view=markup, the preference from task-pipewire > to task-pulseaudio. Quoting myself to keep track. Done in meta-task-9-0.16.mga9.
Should you be enabling pipewire.service and pipewire-pulse.service? I thought that was done on demand by pipewire.socket and pipewire-pulse.socket.
CC: (none) => mageia
(In reply to Martin Whitaker from comment #6) > Should you be enabling pipewire.service and pipewire-pulse.service? I > thought that was done on demand by pipewire.socket and pipewire-pulse.socket. I guess you are referring to the scripts above pa-switcher|pa-switcher-system. While on disabling, all the services *.socket and *.service needs to be disabled, on starting|enabling it's not completely clear whether to enable only .socket, only .service or both. Actually I enabled both. Poking around also I see there is no uniformity. For instance FC enables only pipewire.socket and pipewire-pulse.socket, leaving .service disabled, deb/ubu/mint/ instead enables all the four. Some doc on net even says the opposite, i.e. enable only .service but not .socket. The doc itself of /usr/lib/systemd/user/pipewire.service also says: # # A user installing pipewire and doing `systemctl --user start pipewire` # will not get the socket started, which might be confusing and problematic if # the server is to be restarted later on, as the client autospawn feature # might kick in. Also, a start of the socket unit will fail, adding to the # confusion. and also: # We require pipewire.socket to be active before starting the daemon, because # while it is possible to use the service without the socket, it is not clear # why it would be desirable. From tests on switching PA <-> PPW also seemed that enabled all the four (i.e. service+socket) was the one that worked all the time while with only one of them I get sometimes some problem. But we might try to enable only .socket in the script and see what happens.
Created attachment 13716 [details] source package with the script installed in the system
Created attachment 13717 [details] package with the script installed in the system Here is the package with the scripts added in the system and a desktop icon (search for PA-Switcher in the Plasma Menu.
The script seem to work very well. Will it be added to our normal repos? https://forums.mageia.org/en/viewtopic.php?p=87376#p87376 https://wiki.mageia.org/en/Pipewire
CC: (none) => fri
If some information about this in Release Notes i afraid the pipewire info will not be known. I'm not sure where to put
Keywords: (none) => FOR_RELEASENOTES9
(In reply to katnatek from comment #11) > If some information about this in Release Notes i afraid the pipewire info > will not be known. > If some information about this in Release Notes "is not added", i afraid the pipewire info will not be known.
I put it here: https://wiki.mageia.org/en/Mageia_9_Release_Notes#Sound_servers
Keywords: FOR_RELEASENOTES9 => IN_RELEASENOTES9
How much do mga8 support Pipewire? - How much of that wiki is also relevant for mga8? i.e do the script work? D.Hodgins told Pipewire packages exist in mga8, but not wireplumber.
(In reply to Morgan Leijström from comment #10) > The script seem to work very well. > Will it be added to our normal repos? > > https://forums.mageia.org/en/viewtopic.php?p=87376#p87376 > https://wiki.mageia.org/en/Pipewire Actually with anaselli we are working on integrating the pa-switcher feature directly into draksound.
CC: (none) => anaselli
(In reply to Giuseppe Ghibò from comment #15) > (In reply to Morgan Leijström from comment #10) > > The script seem to work very well. > > Will it be added to our normal repos? > > > > https://forums.mageia.org/en/viewtopic.php?p=87376#p87376 > > https://wiki.mageia.org/en/Pipewire > > Actually with anaselli we are working on integrating the pa-switcher feature > directly into draksound. Should be ready for something to test soon.
Hi. For who want to test, a new draksound with pa-switcher features it's available into cauldron core/updates_testing/draktools-curses-18.56-2.mga9.
(In reply to Giuseppe Ghibò from comment #17) > Hi. For who want to test, a new draksound with pa-switcher features it's > available into cauldron core/updates_testing/draktools-curses-18.56-2.mga9. In VirtualBox client, M9, Plasma, 64-bit urpmi --test drakxtools-backend Package drakxtools-backend-18.57-2.mga9.x86_64 is already installed MCC -> Hardware -> Sound Configuration Intel Corporation 82801AA AC97 Audio Controller Select the sound server None PulseAudio PulseAudio with Glitch-Free mode ( default ) Pipewire with WirePlumber Pipewire with PipeWire Media Session Selecting "None" results in no sound server Others results in sound. What would be the preferred selection?
CC: (none) => wilcal.int
(In reply to William Kenney from comment #18) > (In reply to Giuseppe Ghibò from comment #17) > > Hi. For who want to test, a new draksound with pa-switcher features it's > > available into cauldron core/updates_testing/draktools-curses-18.56-2.mga9. > > In VirtualBox client, M9, Plasma, 64-bit > > urpmi --test drakxtools-backend > Package drakxtools-backend-18.57-2.mga9.x86_64 is already installed there is drakxtools-backed-18.57-3.mga9 available in updates_testing > > MCC -> Hardware -> Sound Configuration > > Intel Corporation 82801AA AC97 Audio Controller > Select the sound server > None > PulseAudio > PulseAudio with Glitch-Free mode ( default ) > Pipewire with WirePlumber > Pipewire with PipeWire Media Session > > Selecting "None" results in no sound server > Others results in sound. > What would be the preferred selection? The recommended is to have a sound server, and pulseaudio+gf is the default choice (which was already in mga8). For more complex audio configurations a user might want to experiment other sound servers, like "pipewire with wireplumber" for instance and see how it's going. There you can try with other complex tools like qpwgraph and easyeffects (or pulseeffects if you are under pulseaudio*) for instance. From a point of view of end-user with just plain audio/video playback you shouldn't see much differences between the various sound servers choices.
(In reply to Giuseppe Ghibò from comment #19) > > there is drakxtools-backed-18.57-3.mga9 available in updates_testing > > > > > MCC -> Hardware -> Sound Configuration > > > > Intel Corporation 82801AA AC97 Audio Controller > > Select the sound server > > None > > PulseAudio > > PulseAudio with Glitch-Free mode ( default ) > > Pipewire with WirePlumber > > Pipewire with PipeWire Media Session > > > > Selecting "None" results in no sound server > > Others results in sound. > > What would be the preferred selection? > i try the 18.57-3 version and the "Pipewire with PipeWire Media Session", look like do his work, but what must see to reaaly know that i'm using this?
CC: (none) => j.alberto.vc
When pipewire is configured and running, inxi -Axx for instance shows: Sound Server-1: PulseAudio v: 16.1 running: no Sound Server-2: PipeWire v: 0.3.67 running: yes and also either /usr/bin/pipewire-media-session process or /usr/bin/wireplumber process is also running in background. When pulseaudio is running, inxi -Axx would show: Sound Server-1: PulseAudio v: 16.1 running: no Sound Server-2: PipeWire v: 0.3.67 running: yes If you get something like: Sound Server-1: PulseAudio v: 16.1 running: yes Sound Server-2: PipeWire v: 0.3.67 running: yes it means there is an overlapping and unpredictable results.
Sorry, a typo, when pulseaudio is configured and running the inxi -Axx shows: Sound Server-1: PulseAudio v: 16.1 running: yes Sound Server-2: PipeWire v: 0.3.67 running: no and /usr/bin/pulseaudio process is running in background.
(In reply to Giuseppe Ghibò from comment #22) Then i can say that the selected option works :) inxi -Axx Audio: Device-1: Intel 82801I HD Audio vendor: Dell Optiplex 755 driver: snd_hda_intel v: kernel bus-ID: 00:1b.0 chip-ID: 8086:293e Sound API: ALSA v: k6.2.8-desktop-1.mga9 running: yes Sound Server-1: JACK v: 1.9.21 running: no Sound Server-2: PulseAudio v: 16.1 running: no Sound Server-3: PipeWire v: 0.3.67 running: yes ps fax|grep pipe 3134 ? S<sl 0:00 \_ /usr/bin/pipewire 3135 ? Ssl 0:00 \_ /usr/bin/pipewire-media-session 3136 ? S<sl 0:00 \_ /usr/bin/pipewire-pulse 28801 pts/0 S+ 0:00 | \_ grep --color pipe Playing in general works i must test recording
I'm still encountering instants of no sound. In order to get the sound back a warm boot has always brought it back. Is there a way to correct this without having to reboot the system? Some root terminal command?
(In reply to William Kenney from comment #24) > I'm still encountering instants of no sound. > In order to get the sound back a warm boot has always brought it back. > Is there a way to correct this without having to reboot the system? > Some root terminal command? According to what you said it seems you get the sound daemon freeze or shut down when the machine is under heavy load (either CPU and I/O)? Or do you get the sound just scattering? Is that happening on any sound server? I.e. either pulseaudio or pipewire+wireplumber or pipewire+media-session, or just one of them?
(In reply to Giuseppe Ghibò from comment #25) > According to what you said it seems you get the sound daemon freeze or shut > down when the machine is under heavy load (either CPU and I/O)? Or do you > get the sound just scattering? Is that happening on any sound server? I.e. > either pulseaudio or pipewire+wireplumber or pipewire+media-session, or just > one of them? Back to you soon on this. Thanks
If i want to switch in the MCC from "PipeWire with WirePlumber" to "PipeWire with PipeWire Media session" the installation fails do to pakage conflicts (Note: pipewire 0.3.70 is in core/testing) ---- Holen der RPM-Dateien von Medium »Core Release (distrib1)« … $MIRRORLIST: media/core/release/pulseaudio-module-gsettings-16.1-14.mga9.x86_64.rpm $MIRRORLIST: media/core/release/alsa-plugins-pulse-config-1.2.7.1-2.mga9.noarch.rpm $MIRRORLIST: media/core/release/pulseaudio-16.1-14.mga9.x86_64.rpm $MIRRORLIST: media/core/release/pulseaudio-module-zeroconf-16.1-14.mga9.x86_64.rpm $MIRRORLIST: media/core/release/lib64alsa-plugins-pulseaudio-1.2.7.1-2.mga9.x86_64.rpm $MIRRORLIST: media/core/release/paprefs-1.2-1.mga9.x86_64.rpm $MIRRORLIST: media/core/release/pulseaudio-module-x11-16.1-14.mga9.x86_64.rpm $MIRRORLIST: media/core/release/pipewire-media-session-0.4.2-1.mga9.x86_64.rpm $MIRRORLIST: media/core/release/task-pulseaudio-9-1.mga9.noarch.rpm $MIRRORLIST media/core/release pulseaudio-module-gsettings-16.1-14.mga9.x86_64.rpm alsa-plugins-pulse-config-1.2.7.1-2.mga9.noarch.rpm pulseaudio-16.1-14.mga9.x86_64.rpm pulseaudio-module-zeroconf-16.1-14.mga9.x86_64.rpm lib64alsa-plugins-pulseaudio-1.2.7.1-2.mga9.x86_64.rpm paprefs-1.2-1.mga9.x86_64.rpm pulseaudio-module-x11-16.1-14.mga9.x86_64.rpm pipewire-media-session-0.4.2-1.mga9.x86_64.rpm task-pulseaudio-9-1.mga9.noarch.rpm wurde geholt … Holen beendet Holen der RPM-Dateien von Medium »Core 32bit Release (distrib31)« … $MIRRORLIST: media/../../i586/media/core/release/libalsa-plugins-pulseaudio-1.2.7.1-2.mga9.i586.rpm $MIRRORLIST media/../../i586/media/core/release libalsa-plugins-pulseaudio-1.2.7.1-2.mga9.i586.rpm wurde geholt … Holen beendet task-pulseaudio-9-1.mga9.noarch.rpm pipewire-media-session-0.4.2-1.mga9.x86_64.rpm libalsa-plugins-pulseaudio-1.2.7.1-2.mga9.i586.rpm paprefs-1.2-1.mga9.x86_64.rpm pulseaudio-module-x11-16.1-14.mga9.x86_64.rpm pulseaudio-module-zeroconf-16.1-14.mga9.x86_64.rpm lib64alsa-plugins-pulseaudio-1.2.7.1-2.mga9.x86_64.rpm pulseaudio-16.1-14.mga9.x86_64.rpm alsa-plugins-pulse-config-1.2.7.1-2.mga9.noarch.rpm pulseaudio-module-gsettings-16.1-14.mga9.x86_64.rpm von /var/cache/urpmi/rpms wird installiert starting installing packages Vorgang zum Installieren auf / gestellt (entfernen=3, installieren=0, aktualisieren=10) Installation fehlgeschlagen: lib64alsa-plugins-pulseaudio kollidiert mit (installiert) pipewire-alsa-0.3.70-1.mga9.x86_64 alsa-plugins-pulse-config kollidiert mit (installiert) pipewire-alsa-0.3.70-1.mga9.x86_64 unlocking urpmi database unlocking rpm database Installation fehlgeschlagen: lib64alsa-plugins-pulseaudio kollidiert mit (installiert) pipewire-alsa-0.3.70-1.mga9.x86_64 alsa-plugins-pulse-config kollidiert mit (installiert) pipewire-alsa-0.3.70-1.mga9.x86_64
CC: (none) => linux
(In reply to psyca from comment #27) > If i want to switch in the MCC from > "PipeWire with WirePlumber" to "PipeWire with PipeWire Media session" the > installation fails do to pakage conflicts > > (Note: pipewire 0.3.70 is in core/testing) > > ---- > > Holen der RPM-Dateien von Medium »Core Release (distrib1)« … > $MIRRORLIST: > media/core/release/pulseaudio-module-gsettings-16.1-14.mga9.x86_64.rpm > $MIRRORLIST: > media/core/release/alsa-plugins-pulse-config-1.2.7.1-2.mga9.noarch.rpm > > $MIRRORLIST: media/core/release/pulseaudio-16.1-14.mga9.x86_64.rpm > > $MIRRORLIST: > media/core/release/pulseaudio-module-zeroconf-16.1-14.mga9.x86_64.rpm > > $MIRRORLIST: > media/core/release/lib64alsa-plugins-pulseaudio-1.2.7.1-2.mga9.x86_64.rpm > > $MIRRORLIST: media/core/release/paprefs-1.2-1.mga9.x86_64.rpm > > $MIRRORLIST: > media/core/release/pulseaudio-module-x11-16.1-14.mga9.x86_64.rpm > > $MIRRORLIST: > media/core/release/pipewire-media-session-0.4.2-1.mga9.x86_64.rpm > > $MIRRORLIST: media/core/release/task-pulseaudio-9-1.mga9.noarch.rpm > > $MIRRORLIST media/core/release > pulseaudio-module-gsettings-16.1-14.mga9.x86_64.rpm > alsa-plugins-pulse-config-1.2.7.1-2.mga9.noarch.rpm > pulseaudio-16.1-14.mga9.x86_64.rpm > pulseaudio-module-zeroconf-16.1-14.mga9.x86_64.rpm > lib64alsa-plugins-pulseaudio-1.2.7.1-2.mga9.x86_64.rpm > paprefs-1.2-1.mga9.x86_64.rpm pulseaudio-module-x11-16.1-14.mga9.x86_64.rpm > pipewire-media-session-0.4.2-1.mga9.x86_64.rpm > task-pulseaudio-9-1.mga9.noarch.rpm wurde geholt > … Holen beendet > Holen der RPM-Dateien von Medium »Core 32bit Release (distrib31)« … > $MIRRORLIST: > media/../../i586/media/core/release/libalsa-plugins-pulseaudio-1.2.7.1-2. > mga9.i586.rpm > $MIRRORLIST media/../../i586/media/core/release > libalsa-plugins-pulseaudio-1.2.7.1-2.mga9.i586.rpm wurde geholt > … Holen beendet > task-pulseaudio-9-1.mga9.noarch.rpm > pipewire-media-session-0.4.2-1.mga9.x86_64.rpm > libalsa-plugins-pulseaudio-1.2.7.1-2.mga9.i586.rpm > paprefs-1.2-1.mga9.x86_64.rpm pulseaudio-module-x11-16.1-14.mga9.x86_64.rpm > pulseaudio-module-zeroconf-16.1-14.mga9.x86_64.rpm > lib64alsa-plugins-pulseaudio-1.2.7.1-2.mga9.x86_64.rpm > pulseaudio-16.1-14.mga9.x86_64.rpm > alsa-plugins-pulse-config-1.2.7.1-2.mga9.noarch.rpm > pulseaudio-module-gsettings-16.1-14.mga9.x86_64.rpm von > /var/cache/urpmi/rpms wird installiert > starting installing packages > Vorgang zum Installieren auf / gestellt (entfernen=3, installieren=0, > aktualisieren=10) > Installation fehlgeschlagen: > lib64alsa-plugins-pulseaudio kollidiert mit (installiert) > pipewire-alsa-0.3.70-1.mga9.x86_64 > alsa-plugins-pulse-config kollidiert mit (installiert) > pipewire-alsa-0.3.70-1.mga9.x86_64 > > unlocking urpmi database > unlocking rpm database > Installation fehlgeschlagen: lib64alsa-plugins-pulseaudio kollidiert mit > (installiert) pipewire-alsa-0.3.70-1.mga9.x86_64 > alsa-plugins-pulse-config kollidiert mit (installiert) > pipewire-alsa-0.3.70-1.mga9.x86_64 This should be fixed in drakxtools-18.60-2.mga9 and beyond.