You’re on Ubuntu (or Linux Mint, Pop!_OS, Fedora) and suddenly there’s no sound. Nothing from the speakers, nothing from headphones. The volume slider moves, but no audio comes out.
Audio on Linux has a reputation for being complicated, and honestly, it can be. Linux uses a layered audio system: ALSA at the hardware level, and either PulseAudio or PipeWire as the sound server on top. When any layer breaks, you get silence.
This guide walks you through diagnosing which layer is broken and fixing it.
Understanding the Linux Audio Stack
Before fixing, it helps to understand what’s happening:
Your App (Spotify, Firefox, etc.)
↓
PulseAudio or PipeWire (sound server - manages audio routing)
↓
ALSA (hardware driver - talks to your sound card)
↓
Physical Speaker / Headphones
The problem can be at any layer. We’ll check from top to bottom.
Step 1: Check the Obvious Stuff First
Before diving into terminal commands, verify these basics:
Check 1: Is the system volume muted? Click the speaker icon in the top-right panel and make sure volume is up and not muted.
Check 2: Is the correct output device selected? Click the speaker icon → check if the right output (speakers, headphones, HDMI) is selected.
Check 3: Are headphones plugged in? Some systems switch to headphone output automatically and mute speakers.
Check 4: Does the hardware work at all? Test with:
speaker-test -c 2 -t wav
If you hear “Front Left… Front Right…” your hardware and ALSA driver are working fine. The problem is in PulseAudio/PipeWire. Skip to Step 3.
If you hear nothing, the problem is at the ALSA level. Continue to Step 2.
Step 2: Fix ALSA (Hardware Level)
Check if your sound card is detected:
aplay -l
This lists all sound cards. You should see at least one entry like:
card 0: PCH [HDA Intel PCH], device 0: ALC269 Analog [ALC269 Analog]
If nothing is listed, your sound card driver isn’t loaded:
sudo modprobe snd-hda-intel
Then check again with aplay -l.
Check if ALSA channels are muted:
This is a very common hidden cause — ALSA channels can be muted even when PulseAudio shows volume at 100%.
alsamixer
This opens a terminal-based mixer. Look for:
- Master — should be up (green bar) and NOT show “MM” (muted)
- Speaker — should be up and not muted
- Headphone — should be up and not muted
- PCM — should be up and not muted
To unmute: Select the channel with arrow keys, then press M to toggle mute on/off.
To increase volume: Press the Up arrow key.
Press Esc to exit alsamixer. Then save the settings:
sudo alsactl store
Reload ALSA if needed:
sudo alsa force-reload
Test again with speaker-test -c 2 -t wav.
Step 3: Fix PulseAudio
If ALSA works (speaker-test produces sound) but applications have no audio, PulseAudio is the culprit.
Check PulseAudio status:
pulseaudio --check
echo $?
If the output is 0, PulseAudio is running. If it’s 1, PulseAudio is not running.
Restart PulseAudio:
pulseaudio --kill
pulseaudio --start
Check available audio sinks (output devices):
pactl list short sinks
You’ll see entries like:
0 alsa_output.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
If the status shows SUSPENDED instead of RUNNING, set it as default:
pactl set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo
Make sure the sink isn’t muted:
pactl set-sink-mute @DEFAULT_SINK@ 0
pactl set-sink-volume @DEFAULT_SINK@ 80%
Check which applications are connected:
pactl list short sink-inputs
If nothing is listed, no application is sending audio to PulseAudio. Open an app (like Firefox playing a YouTube video) and check again.
Reset PulseAudio completely (nuclear option):
If nothing works, reset PulseAudio to default configuration:
rm -rf ~/.config/pulse
pulseaudio --kill
pulseaudio --start
This deletes your PulseAudio config and recreates it from scratch.
Step 4: Fix PipeWire (Ubuntu 22.10+ and Fedora)
Newer Ubuntu versions (22.10+) and Fedora use PipeWire instead of PulseAudio. The diagnostics are slightly different.
Check if PipeWire is running:
systemctl --user status pipewire pipewire-pulse wireplumber
All three services should show active (running).
Restart PipeWire:
systemctl --user restart pipewire pipewire-pulse wireplumber
Check PipeWire audio devices:
wpctl status
This shows all audio devices and their current routing. Look for your output device under “Sinks” and make sure it’s marked with an asterisk (*) as the default.
Set the correct default output:
wpctl set-default SINK_ID
Replace SINK_ID with the ID number from wpctl status.
Make sure volume isn’t at zero:
wpctl get-volume @DEFAULT_AUDIO_SINK@
If it shows 0.00 or [MUTED]:
wpctl set-mute @DEFAULT_AUDIO_SINK@ 0
wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.8
Step 5: Fix HDMI Audio (If Using External Monitor)
HDMI audio is a common problem because the system may default to HDMI output even when you want speakers.
List all output devices:
pactl list short sinks
Look for entries containing hdmi and analog. Switch to the one you want:
pactl set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo
For PipeWire:
wpctl status
wpctl set-default ANALOG_SINK_ID
Step 6: Reinstall Audio Packages (Last Resort)
If everything else fails, reinstall the entire audio stack:
For PulseAudio systems:
sudo apt install --reinstall pulseaudio pulseaudio-utils alsa-base alsa-utils
For PipeWire systems:
sudo apt install --reinstall pipewire pipewire-pulse wireplumber
Then reboot:
sudo reboot
Quick Diagnostic Cheat Sheet
| Test | Command | Passes? | Problem Area |
|---|---|---|---|
| Hardware test | speaker-test -c 2 -t wav |
Sound? | If no → ALSA |
| Sound card detected | aplay -l |
Lists cards? | If no → Driver |
| ALSA not muted | alsamixer |
Bars up, no MM? | If muted → ALSA |
| PulseAudio running | pulseaudio --check |
Returns 0? | If 1 → PulseAudio |
| PipeWire running | systemctl --user status pipewire |
Active? | If no → PipeWire |
| App sending audio | pactl list short sink-inputs |
Shows apps? | If empty → App issue |
Frequently Asked Questions
Audio works in speaker-test but not in Firefox or Spotify. Why?
The application might be sending audio to the wrong output device. Open pavucontrol (PulseAudio Volume Control) to see per-application audio routing. Install it with sudo apt install pavucontrol if not present. Under the “Playback” tab, check that each app is routed to the correct output.
Sound stopped working after a kernel update. How do I fix it?
Kernel updates can sometimes break audio drivers. Try rebooting first. If that doesn’t help, reinstall the ALSA modules for your current kernel: sudo apt install --reinstall linux-modules-$(uname -r) and reboot.
I have both PulseAudio and PipeWire installed. Is that a problem?
Yes, they can conflict. Check which one is active: pactl info | grep "Server Name". If it says “PulseAudio” you’re on PulseAudio. If it says “PulseAudio (on PipeWire)” you’re on PipeWire. Only one should be active.
Bluetooth audio doesn’t work but wired audio is fine. What do I do?
Install bluetooth audio support: sudo apt install pulseaudio-module-bluetooth (for PulseAudio) or sudo apt install libspa-0.2-bluetooth (for PipeWire). Then restart the audio service and re-pair your Bluetooth device.
Conclusion
Linux audio issues are almost always caused by one of three things: muted ALSA channels (check with alsamixer), PulseAudio/PipeWire misconfiguration (restart the service), or wrong output device selected (set the correct default sink). Start with speaker-test to identify which layer is broken, then fix that specific layer.