The Auto-Gain Problem
If you use Ubuntu Linux for voice calls (via Discord, Slack, Microsoft Teams, or Zoom) or for recording audio, you may have noticed a frustrating phenomenon: your microphone volume keeps changing on its own. You manually set your input volume to 75% so you don’t peak, but the moment you start speaking loudly, the system automatically pulls the slider down. If you whisper, the system pushes the slider to 100%, capturing massive amounts of background noise. This is caused by an automatic gain control (AGC) algorithm built into PulseAudio/PipeWire, or aggressively enforced by modern VoIP applications.
How to Disable Auto-Gain in Applications
Before modifying the Linux sound server, you must check your applications, as programs like Discord, Zoom, and Google Meet actively override system settings and force the volume slider to move on their own.
1. In Zoom: Go to Settings > Audio and uncheck the box for Automatically adjust microphone volume.
2. In Discord: Go to User Settings > Voice & Video. Scroll down to the “Voice Processing” section and turn Off the toggle for Automatic Gain Control.
3. In Google Meet: Open a meeting, click the three dots > Settings > Audio, and turn off Noise cancellation (which often includes gain control scripts).
In 90% of cases, disabling the feature inside your specific chat application will stop the system volume slider from moving automatically.
How to Disable Auto-Gain in PulseAudio (Advanced)
If the volume slider is still moving on its own across all applications, you can attempt to disable flat volumes and module-echo-cancel at the PulseAudio daemon level.
1. Open your Terminal.
2. Type the following command to edit the PulseAudio configuration file (you will need root privileges):sudo nano /etc/pulse/daemon.conf
3. Use your arrow keys to scroll down and look for a line that says flat-volumes = yes.
4. Change the “yes” to “no” so it reads flat-volumes = no. (If there is a semicolon ; at the start of the line, delete the semicolon to uncomment the line).
5. Save the file by pressing Ctrl + O, hit Enter, and then press Ctrl + X to exit.
6. Restart the PulseAudio server by typing pulseaudio -k and hitting Enter.
This will stop applications from being able to pull the master system volume slider up or down without your consent.