I had to switch from PulseAudio to PipeWire as a result of the PulseEffects update. I have been excitedly anticipating this and hoping it would resolve the audio configuration issues I’ve had to deal with every time I reboot. It wasn’t obvious how to make the switch, but I did it.
Before explaining what I did, here are the general audio problems I must handle system-wide:
My speakers are uncomfortably and unnaturally bassy by default, so they sound bad without having their bass reduced by a system-wide equalizer. I’ve been using PulseEffects equalizer for this, since the simpler PulseAudio-equalizer software had a bug which caused YouTube videos to make horrible noises when seeking.
My microphone is old and makes a constant waterfall hissing noise as of a few years ago. I’ve been using NoiseTorch for this, which is only compatible with PulseAudio.
With PulseAudio, these tools have had problems with their default configurations which I have had to work around after each reboot. Here are those problems:
PulseEffects with PulseAudio had a bug causing it to route microphone audio through the speakers instead of to an input source, I had to disable all its input processing entirely, and use NoiseTorch exclusively.
With NoiseTorch, on each boot, it didn’t apply despite a small script I wrote to run PulseEffects on boot, load NoiseTorch, then set default source to its microphone. Here’s that script:
The script was working for a couple months, but some time in November, it stopped working, and I haven’t been able to figure out why.
Therefore, every time I reboot, I have had to run the NoiseTorch GUI, make it overwrite an “inconsistent state” with “Unload NoiseTorch” and “Load NoiseTorch”, and sometimes manually fix the audio routing if the microphone started playing through my speakers, then change both default output and input sources with the PulseAudio system tray, pasystray.
That all being said, here was my update process, and how I handled issues:
I installed everything I could that was available from the stable update, including the official PulseEffects package which went from 4.x (the PulseAudio version) to 5.x (the PipeWire version).
I installed manjaro-pipewire and gst-plugin-pipewire, which removed a bunch of PulseAudio packages. This succeeded. This was something I read from this forum thread.
I removed NoiseTorch because I read in a github issue ticket that it does not work with PipeWire and I could use the “Noise Reduction” effect in PulseEffects instead to accomplish the same noise reduction using RNNoise.
I rebooted.
PulseEffects did not work at all to reduce my bass and I couldn’t get input from my microphone at all.
I installed pulseeffects-git from the AUR, which removed the official PulseEffects package.
I rebooted.
I checked the audio input source in pasystray and set it to my microphone because it wasn’t set to that.
I tested my bass output with PulseEffects via an audio player. It worked to reduce my bass via its equalizer and I could get input from my microphone, but noise reduction didn’t work.
I ran pulseeffects -q and pulseeffects --gapplication-service & disown from the terminal.
I ran the PulseEffects GUI from my whisker menu.
Suddenly PulseEffects was working completely, with both the output equalizer and input noise reduction.
I saved a PulseEffects preset with the output equalizer and input noise reduction.
I rebooted.
I checked the audio input source in pasystray and set it to my microphone because it wasn’t set to that.
I tested audio input and output again. PulseEffects worked from then on after reboots, for both input and output, but I still have to set the default audio input source in pasystray after each reboot.
So, the only problem I have remaining is that the default audio input source is set to “Monitor of Built-in Audio Analog Stereo” instead of “Audio Adapter (Unitek Y-247A) Mono” each time I reboot. I don’t know how to set the default default input source with PipeWire, and I can’t find a GUI that lets me set that. Yes, double “default”, because I want the one that the default is set to when I start my PC. There seems to be no obvious way to set that.
Audio in Linux is insanely quirky and weird, but now I only have to do 1 small workaround when I reboot, which is the best I’ve had yet. If I could finally eliminate the need for that workaround, my Linux audio would reach the goodness I had on Windows 7 before switching to Manjaro last year.
If anyone can tell me how to set the default default audio input source with PipeWire, I would be grateful. Thank you for reading.
Audio in Linux is not usually ‘insanely quirky and weird’, but it can be too flat and clean; which will reveal all the shortcomings in audio hardware
I might have been able to help with the PulseAudio script if you had asked at the time
But I can’t help with Pipewire, and I do not know if there is anyone else on this forum that is up to speed on Pipewire yet
Thanks. The hardware issues with my speakers and microphone are purely hardware issues, which I have tested in Windows as well. I used EqualizerAPO there to handle them. The audio response is, to my ear, identical in Windows and Linux before any software modifications, which is great.
The bit about “insanely quirky and weird” I mentioned was regarding specifically the microphone being sent directly through the speakers or the microphone input or a particular application’s output (like zoom) no longer working seemingly spontaneously, and having to use NoiseTorch and pavucontrol to fix audio routing manually whenever it happened. Nothing like that ever happened in the other OSes I’ve tried. The great news, though, is that since switching to PipeWire 2 days ago through the process I described, I haven’t experienced any issues like that!
I still think it’s a bit quirky that the system is seemingly using several different audio systems, including ALSA, JACK, PulseAudio (via a PipeWire compatibility layer), PipeWire, and gstreamer. It’s very confusing, and I’m not sure exactly which of these named layers does what. In Windows, if there is a similar level of complication and weirdness, it’s hidden from me. While I’m all for revealing information, most other systems in my Linux machine seem less complicated to understand. That being said, since the issues I had with random routing changes are seemingly gone, I’m a lot less worried about it. The developers of those tools are the ones who have to deal with that, not the users, and the devs are doing a great job!
Thanks for your support. I hope my post can help someone else who is deciding whether to make the jump from PulseAudio to PipeWire. I’ll read bulk PipeWire wiki information to educate myself on its configuration soon, since I’m not sure exactly where to look to figure out how to set a default default input source.
I’ve switched to the -git packages for all pipewire-related packages and now my microphone is the default on startup. I guess this is a bug that was fixed with a later change.
Confusion was to be expected. and was predicted when Pipewire arrived in Manjaro
But no mention on this forum about ‘reinventing the wheel’ or the Relevant xkcd or any sense of déjà moo with the history of PulseAudio. The discussions during promotion of Pipewire happened outside Manjaro community so recent changes probably came as a surprise to most users
I agree your comments that it is quirky and confusing to have 2 sound servers and a compatibility layer and gstreamer.
I have been using JACK and ALSA with a bit of PulseAudio for a few years now and it has proven quality and reliability. If you prefer using Pipewire I would suggest you remove PulseAudio and the compatibility layer. That would simplify the audio stack, and should make it easier to understand and manage audio streams. But Pipewire still has a lack of knowledge and experienced users to help with troubleshooting and maintenance, so you may have to work a lot of this out for yourself
So, I’m not sure why this thread was split off. My post isn’t a support post, and in fact, it’s the post I wrote for the stable update saying what issue I had with the update and how I solved it. Can it please be un-split?
That part was a very small part of the overall post, and was definitely not the main focus. The announcement threads shouldn’t tell users to explain how they solved their problems and then remove the posts that do that. I spent a lot of effort making my solution available for others also updating and encountering the big hurdle of switching to PipeWire due to the PulseEffects dependency change. It feels a bit rude to me to remove the whole post from the thread after that effort just because there was one sentence about wanting to know how to fix the last tiny issue, after having shared my solution to the whole hurdle for anyone else in the community facing a similar hurdle.
That being said, thanks for acknowledging my concern and responding. You’re doing a great job. I realize there are misunderstandings and the thread being split doesn’t ruin my day.
Additionally, pulseeffects is not able to find any of its plugins when started manually from the terminal:
pulseeffects --gapplication-service
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.054: limiter plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.054: compressor plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.054: filter plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.054: equalizer plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.055: reverb plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.055: bass_enhancer plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.056: exciter plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.060: maximizer plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.060: multiband_compressor plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.060: loudness plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.061: gate plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.061: pitch plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.061: multiband_gate plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.061: deesser plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.061: stereo_tools plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.081: delay plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.081: rnnoise plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.092: limiter plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.092: compressor plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.093: filter plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.093: equalizer plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.093: reverb plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.093: gate plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.093: deesser plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.093: pitch plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.105: multiband_compressor plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.105: multiband_gate plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.105: stereo_tools plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.105: maximizer plugin was not found!
(pulseeffects:2172): pulseeffects-WARNING **: 10:19:13.106: rnnoise plugin was not found!
Doing some research, I found the reason:
So, I had to remove pulseeffects whatsoever and install easyeffects:
Now, it looks like this is working. Only glitch: When starting playback of any audio, I get a loud click sound from the speakers, right before the playback starts.
For pulseaudio, the fix was disabling / commenting out the line
load-module module-suspend-on-idle
in /etc/pulse/default.pa.
Is there something similar for pipewire?
Maybe try experimenting with what the Arch wiki says here: PipeWire - ArchWiki (this is a direct link to “Noticeable audio delay when starting playback”)