Introduction
More and more programs are adjusting the volume of my microphone not just within their own settings but directly on my system, which causes issues where no one can hear me in other programs. This problem exists on Windows, Linux, and any OS. The real issue is that random websites can modify my system settings without my permission. It’s outrageous that a random site has such privileges on my system.
Almost all online communication apps, whether it’s Zoom, Discord, or random apps for interviews or calls, lower my microphone volume in the system without my consent, and no one can hear me. I wish the developers of this garbage the worst. It took me a lot of time to fix this completely. Some people don’t face this problem, others do.
Fixing the Problem in the Browser
If the issue is only with websites in the browser, there is a universal fix for any OS.
In Chromium and its derivatives, type chrome://flags/
in the address bar. Then search for Allow WebRTC to adjust the input volume
and set it to Disabled
.
In Firefox and its derivatives, I didn’t face the issue, but theoretically, you should open about:config
and search for media.getusermedia.agc_enabled
. Set it to False
. AGC stands for Automatic Gain Control.
Fixing the Problem on Linux with PipeWire
I faced the same problem with the desktop Discord app, so I fixed it at the OS level. This fix only works on Linux with PipeWire. To fix it, you need to configure WirePlumber. It is a session and policy manager for PipeWire that handles devices and audio/video streams.
WirePlumber’s configuration files are located in ~/.config/wireplumber/
. You need to create a file called 99-stop-microphone-auto-adjust.lua
with the following content:
|
|
Here, I deny write
permissions to all binaries (*
). This means they won’t be able to change anything in the system’s audio; they can only read and use it. After that, I specifically allow certain programs to change the system’s audio.
In my case, these programs are pavucontrol
for controlling audio device volumes, and easyeffects
for various sound filters, equalizers, etc.
You can also restrict write
permissions for specific programs, and I did that before. Here’s an example:
|
|
For denying write access, it doesn’t matter if you write rx
or r-x
.
I don’t like the approach of restricting specific software because there’s so much trash software from idiots that invade my system without my permission, and it’s only growing. The number of programs I use to adjust my system’s audio is always limited, and I know them in advance.
To apply these settings, run this command in the terminal:
|
|
Some programs may stop outputting sound, because they need to be restarted after PipeWire is rebooted.
There’s also a small detail. I’m specifying application.process.binary = something
. But how do you know what “something” is? To find out, you need to do a bit of work.
First, launch the program that adjusts the audio. If it’s a voice channel, it’s best to join it to ensure the process is created. Then, run the following in the terminal:
|
|
Look for the correct app. For voice channels, it’s usually WEBRTC VoiceEngine
. But there will be many of them, so how do you know which one corresponds to Discord, for example? You need to run:
|
|
It will show you the binary name to use. If you want to see the names of all active binaries, you can run this command:
|
|
Fix for NixOS
On NixOS, the standard approach might work, but I implemented it through the .nix
config right away. Here’s my full configuration for sound on NixOS:
|
|