You’ve just finished installing Linux on your PC. You boot it up and notice that all your audio sounds like it’s coming out of a phone. You put your hand against your subwoofer and it isn’t working at all – even when you put on a song that would normally have very heavy bass.
Most major Linux distributions use both the Advanced Linux Sound Architecture (ALSA) and PulseAudio for sound management. While they’re both excellent pieces of software, the default setup can be quite barebones. If you’re using a more complex speaker setup that has more than two channels (for example, a 5.1 surround sound system), you may end up losing subwoofer input due to how PulseAudio mixes input/output by default or various other reasons.
Here is how to fix the subwoofer not working issue in Linux.
First Things First
Before you start messing around with your operating system, check all of your cables to ensure that all of your speakers are plugged in properly. Also, if you have another operating system on your computer where your speakers may have last worked, now’s a good time to test them again.
You want to make sure that you’ve eliminated all other causes for the problem so that you’re sure the problem lies in the way your Linux distribution handles audio as it’s currently configured.
Testing The Speakers on Linux
In your Linux distribution, you should be able to find a way to access system settings. If you have no such application in your menu, open your terminal and install “gnome-control-center.”
For Debian-based systems like Ubuntu/Kali/Mint/MX:
For Arch distributions like Manjaro/EndeavourOS/Garuda:
Now that we have this out of the way, it’s time to run the application and go to “Sound.” Check your output and make sure the right audio device is selected. After that, make sure the “Subwoofer” channel has an adequate amount of volume. For me, it’s maxed out.
Also, make sure your output device configuration matches the types of speakers you’re running. If you’re running a six-channel 5.1 surround system, you should choose “Analog Surround 5.1 Output” under “Configuration.”
After you have all these ducks in a row, it’s time to click the “Test” button. Click on each speaker and listen to where the sound is coming from. If you don’t hear sound at all from a speaker even when you approach it with your ear, it is all but a certainty that this is a connection issue and that your speakers are not working properly on the hardware level for some reason.
If you’re hearing some sound come from your center speaker while you click on “Subwoofer” and vice-versa, you’ve run into a pretty common problem that some sound systems come across, and this is going to be the first priority.
Center and Subwoofer Mixed Up? This Should Help!
Since the way that sound systems are built isn’t completely standardized, some companies choose to do some fancy wiring that ends up swapping the center and subwoofer channels. This makes your computer attempt to play center audio through the woofer and vice-versa.
In your terminal, type the following command:
In the config file, scroll down until you find a bunch of sections that start with “[Mapping …].” You’ll want to look for something that matches the audio profile of your speakers. For example, if you want to configure your 5.1 surround speakers, you have to look for a section headed like this:
Configuring a 7.1 system instead? Look for “analog-surround-71.”
The variable we want to change in this little section is “channel-map.” By default. it’s listed like this for a 5.1 surround system:
In anything below a 7.1 surround system, the subwoofer comes last in the mapping for most operating systems. When your subwoofer and center outputs are switched around by the manufacturer of your speakers, you have to reverse this.
Switch the positions of “front-center” with “lfe,” and you’re set! If you’re following me in configuring a 5.1 surround system, it should look like this:
If you’re configuring a 7.1 surround system, you should change “channel-map” from this:
Save and exit the file. After a reboot, your audio should output to the correct channel.
Subwoofer Audio Not Working? Here’s What To Do!
If the above trick doesn’t work, be sure you’ve tested your audio as described previously. See if the subwoofer responds. If you get a response but still can’t hear anything resembling bass coming from your speakers no matter what you play on them, you’ll need to do some more sniffing.
First things first, install “alsa-utils” if you haven’t done so already.
In Debian-based systems:
In Arch-based systems:
Now just run
alsamixer in your terminal. This will display the levels on each channel of your sound device. Press F6 on your keyboard to select the appropriate audio output. For me, it’s the HD-Audio Generic card.
Navigate to LFE using the left and right arrow keys and make sure that its level is at 100 or whatever your preference is:
If you’re still not hearing any bass from your speakers, then it’s likely you’re attempting to play something that doesn’t have a native subwoofer input channel. Luckily, PulseAudio has a feature that synthesizes a low-pass filtered signal to account for this.
To get this delicious bass on your system, you need to edit the “daemon.conf” configuration file for PulseAudio.
Look for two lines in the configuration file:
Remove the semicolons from the beginning of each line and change each “no” to “yes.”
Save the file and restart PulseAudio from the terminal:
If your subwoofer still doesn’t work after this, try a reboot. You should be set now!
Taking Things One Step Further
When it comes to audio management, the default option in Linux is a bit barebones. The good thing is, it can be easily configured to fix the subwoofer not working issue in Linux. Meanwhile, check out this amazing guide to using PulseEffects to squeeze everything out of your sweet rig!