当前位置:首页>Linux>Linux声音问题攻略(下)——没声音/爆音/蓝牙音频/多设备切换

Linux声音问题攻略(下)——没声音/爆音/蓝牙音频/多设备切换

  • 2026-09-09 04:14:33
Linux声音问题攻略(下)——没声音/爆音/蓝牙音频/多设备切换

大家好,我是冯哥的缓存。今天这篇我们来聊一下:遇到没声音、爆音、蓝牙耳机不出声、多设备切换等常见问题,如何排查解决。

💡提示:本文基于 Ubuntu 22.04 / 24.04(默认使用 PipeWire + WirePlumber),大多数步骤在 Debian / Linux Mint 上同样适用。

基准测试环境

项目

配置

CPU

Intel   Core i5-10400

内存

16GB DDR4

声卡

Realtek   ALC1200(内置)+ 蓝牙 5.0

系统

Ubuntu   22.04 LTS

音频服务器

PipeWire   0.3.48 + WirePlumber

💡提示:不同硬件/系统的排查步骤基本一致,只是设备名称(如 pci-0000_00_1f.3)会不同,注意替换成你实际看到的名字。

第一步:确认问题所在层

排查声音问题,首先要确认是哪一层出了问题,不要盲目搜"没声音怎么办"——层不同,解法完全不一样。

#第一步:确认音频服务器

pactl info | grep "Server Name"

#输出PipeWire 说明用的是 PipeWire;输出PulseAudio 说明用的是旧版

#第二步:确认声卡被识别到

aplay -l

#有输出且列出你的声卡 = ALSA层正常

#第三步:直接用ALSA播放测试音(绕过音频服务器)

speaker-test -t sine -f 1000 -c 2

#有声音= 硬件和驱动正常,问题在音频服务器那层

#没声音= 问题在ALSA或更底层(驱动/硬件)

测试结果

说明

排查方向

aplay -l没有声卡

ALSA未识别声卡

驱动缺失 / 硬件问题

aplay -l有卡,speaker-test没声

ALSA层问题

alsamixer静音 / 错误设备

speaker-test有声,应用没声

音频服务器层问题

PipeWire/PulseAudio配置

应用有声,特定软件没声

应用层问题

软件自身设置

问题一:完全没声音——逐层排查

1-1 检查 alsamixer 是否静音

这是最常见的问题,没有之一。

alsamixer

打开后用方向键选择声道,注意:

·数字下方显示 00或字母'o' = 正常(已解除静音)

·数字下方显示 MM = 已静音(按 M键解除)

·常见需要检查的通道:Master、Headphone、Speaker、PCM

⚠️注意:很多人PulseAudio/PipeWire 那层音量调满了,但 ALSA 的 Master或 Speaker还是 MM(静音)状态,这是新手最高频的问题。

#也可以用命令直接解除静音

amixer set Master unmute

amixer set Speaker unmute

amixer sset 'Master' 100% unmute

1-2 检查音频输出设备是否选对

#查看所有输出设备

pactl list sinks short

示例输出:

0alsa_output.pci-0000_00_1f.3.analog-stereoPipeWireLocalNodeRUNNING

1bluez_output.AA_BB_CC_DD_EE_FF.1PipeWireLocalNodeSUSPENDED

如果默认输出选到了蓝牙耳机(已断开),声音就没了:

#查看当前默认输出

pactl get-default-sink

#设置默认输出为内置声卡(替换为你的设备名)

pactl set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo

或者直接用图形工具pavucontrol(更直观):

sudo apt install pavucontrol

pavucontrol

在"输出设备"标签页确认内置声卡没有被设为"静音","播放"标签页里可以看到当前每个应用的输出走向。

1-3 重启音频服务

# PipeWire(Ubuntu 22.04+)

systemctl --user restart pipewire pipewire-pulse wireplumber

# PulseAudio(旧版系统)

pulseaudio -k && pulseaudio --start

1-4 检查驱动加载情况

#查看声卡驱动模块

lspci -v | grep -A 10 "Audio"

#看Kernel driver in use 这行,有值说明驱动已加载

#查看所有已加载的音频模块

lsmod | grep snd

#最常见的驱动:snd_hda_intel(Intel/Realtek HDaudio)

#没有这个模块则需要重新安装

问题二:爆音/杂音/声音卡顿

爆音(Crackling / Popping)是 Linux 上常见的声音问题之一,通常是电源管理导致的。

2-1 Intel HDA 声卡爆音:关闭电源保护

#检查当前电源管理状态

cat/sys/module/snd_hda_intel/parameters/power_save

#输出 1 = 开启了省电模式(可能导致爆音)

#输出 0 = 已禁用(修改成功)

#临时关闭

sudo sh -c 'echo 0 > /sys/module/snd_hda_intel/parameters/power_save'

sudo sh -c 'echo N > /sys/module/snd_hda_intel/parameters/power_save_controller'

#永久关闭(写入配置文件)

sudo nano /etc/modprobe.d/audio_disable_powersave.conf

写入以下内容保存:

options snd_hda_intel power_save=0 power_save_controller=N

#重启后验证

cat/sys/module/snd_hda_intel/parameters/power_save

#应该输出0

2-2 PipeWire 量化/采样率不匹配

如果播放特定格式音频时爆音,可能是采样率转换问题:

#查看PipeWire 当前配置

pw-metadata -n settings

#找clock.rate 和 clock.allowed-rates 这两行

如果应用用 44100Hz,系统配置只允许 48000Hz,就会有转换损耗。编辑配置:

#在家目录创建 PipeWire 用户配置

mkdir -p ~/.config/pipewire

cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/

#编辑

nano ~/.config/pipewire/pipewire.conf

找到context.properties段,修改:

default.clock.rate = 48000

default.clock.allowed-rates = [ 44100 48000 96000 ]

#重启PipeWire 生效

systemctl --user restart pipewire pipewire-pulse wireplumber

2-3 USB 声卡/DAC 爆音

#编辑USB 音频模块配置

sudo nano /etc/modprobe.d/usb_audio_fix.conf

添加:

options snd_usb_audio nrpacks=1

问题三:蓝牙耳机没声音或音质差

蓝牙音频在 Linux 上历来是个难题,PipeWire 对比 PulseAudio 已大幅改善。

3-1 确认蓝牙音频依赖包

# Ubuntu 22.04+ 基本包

sudo apt install pipewire-audio pulseaudio-utils bluez pipewire-pulse

#如果还是不行,装完整蓝牙套件

sudo apt install bluez bluez-tools libspa-0.2-bluetooth#Ubuntu 22.04版

sudo apt install bluez bluez-tools libspa-bluetooth#Ubuntu 24.04版

装完后重启音频服务:

systemctl --user restart pipewire pipewire-pulse wireplumber

3-2 蓝牙耳机连上了但没声音

#查看连接状态

pactl list cards | grep -A 20 "bluez"

#找Active Profile 这行

#手动切换到音频模式(a2dp-sink = 高质量音频输出)

pactl set-card-profile bluez_card.AA_BB_CC_DD_EE_FF a2dp-sink

#这个MAC 地址可以通过 pactl list cards \| grep bluez 看到,复制 bluez_card. 后面的部分。

#如果上面报错,用以下命令查看可用的 Profile

pactl list cards | grep "Profile:"

蓝牙音频 Profile

说明

a2dp-sink

高质量立体声(推荐听音乐用)

headset-head-unit (HFP/HSP)

通话模式,质量差但支持麦克风

off

已断开

⚠️注意:同时使用蓝牙耳机的麦克风和扬声器(通话模式)时,系统会自动切到 HFP 模式,音质会变成电话音质(8kHz 或 16kHz)。这是蓝牙协议限制,不是 Linux 的 Bug。

3-3 蓝牙音频有延迟/断断续续

#查看PipeWire 蓝牙量子大小(延迟相关)

pw-metadata -n settings | grep quantum

#降低量子大小可以降低延迟(但会增加 CPU 占用)

pw-metadata -n settings 0 clock.force-quantum 256

也可以用图形工具EasyEffects或Helvum(PipeWire 专用音频路由工具)管理蓝牙音频:

sudo apt install helvum# 图形化管线可视化

3-4 蓝牙耳机每次重连要手动切换Profile

编辑 WirePlumber 配置,让系统记住上次的 Profile:

mkdir -p ~/.config/wireplumber/bluetooth.lua.d

cp/usr/share/wireplumber/bluetooth.lua.d/50-bluez-config.lua ~/.config/wireplumber/bluetooth.lua.d/

nano ~/.config/wireplumber/bluetooth.lua.d/50-bluez-config.lua

找到["bluez5.auto-connect"]那行,改为:

["bluez5.auto-connect"] = "[ hfp_hf hsp_hs a2dp_sink ]"

问题四:多声音设备切换

4-1 通过 pavucontrol 切换(推荐)

sudo apt install pavucontrol && pavucontrol

标签页

用途

播放(Playback)

为每个正在播放的应用单独选择输出设备

录音(Recording)

为每个录音程序单独选择麦克风

输出设备(Output   Devices)

管理所有输出设备,设置默认

输入设备(Input   Devices)

管理所有输入设备(麦克风)

配置(Configuration)

切换每块声卡的   Profile(立体声/环绕声等)

4-2 通过命令行切换默认输出

#查看所有输出设备

pactl list sinks short

#设置默认输出

pactl set-default-sink <设备名>

#把所有正在播放的流也切换过去

pactl list sink-inputs short | awk '{print $1}' | xargs -I{} pactl move-sink-input {} <设备名>

4-3 快捷键自动切换(进阶)

可以写一个小脚本绑定快捷键,在内置音频和蓝牙之间一键切换:

#创建切换脚本

nano ~/bin/switch_audio.sh

写入内容:

#!/bin/bash

CURRENT=$(pactl get-default-sink)

BT="bluez_output.AA_BB_CC_DD_EE_FF.1"# 换成你的蓝牙设备名

BUILTIN="alsa_output.pci-0000_00_1f.3.analog-stereo"# 换成你的内置声卡名

if [ "$CURRENT" = "$BT" ]; then

pactl set-default-sink "$BUILTIN"

notify-send "音频切换""已切换到内置扬声器"

else

pactl set-default-sink "$BT"

notify-send "音频切换""已切换到蓝牙耳机"

fi

chmod +x ~/bin/switch_audio.sh

然后在桌面环境设置里把这个脚本绑定到一个快捷键。

问题五:麦克风没声音

#查看录音设备

arecord -l

#用alsamixer 检查麦克风是否静音

alsamixer

#按 F4切换到"录音"模式,检查 Capture 通道是否为 MM

#测试麦克风录音(录5秒然后播放)

arecord -d 5 /tmp/test.wav && aplay /tmp/test.wav

#用pavucontrol 检查录音源

#打开后切到"输入设备"标签页,观察是否有音量条在动

报错 / 现象

解决方法

麦克风没电平

alsamixer   → F4 → Capture 解除 MM 静音

可以录音但很小声

alsamixer  里 Mic Boost调高

视频通话对方没声音

pavucontrol   → 录音 → 把该应用的麦克风源选正确

HDMI 声卡把麦克风抢走了

pavucontrol   → 输入设备 → 把不需要的设备静音

常见报错速查

报错 / 现象

原因

解决方法

aplay -l无输出

声卡未被识别

lspci -v确认驱动,modprobe snd_hda_intel手动加载

Cannot open audio   device

设备被占用

fuser /dev/snd/*查看是哪个进程,kill掉再试

Firefox/Chrome  没声

浏览器沙箱问题(snap版常见)

改装 deb 版,或 snap connect firefox:audio-record(少数版本需要加 sudo)

耳机插上没切换

插孔检测延迟

alsamixer → Auto-Mute Mode设为 Enabled

声音只在一个声道(单声道)

硬件连接或配置问题

alsamixer检查左右声道是否都解除静音

系统升级后没声音

PipeWire/内核版本不兼容

sudo apt install   --reinstall pipewire pipewire-pulse wireplumber

蓝牙连接后质量极差

Profile 切到了 HFP 通话模式

pactl   set-card-profile bluez_card.XX a2dp-sink

游戏/Wine 里没声音

Wine 音频配置问题

winecfg →   Audio → 选择 PulseAudio 驱动

声音问题排查流程表

步骤

操作

正常结果

1

aplay -l

有声卡列表

2

alsamixer检查 MM 静音

所有通道显示 00

3

speaker-test -t   sine -f 1000 -c 2

听到白噪声/提示音

4

pactl list sinks   short

有设备,且是你想用的那个

5

pavucontrol查看应用输出

应用输出路由到正确设备

6

重启音频服务

问题消失

小结

问题类型

最先检查

推荐工具

完全没声音

alsamixer   MM 静音

alsamixer + pavucontrol

爆音/卡顿

Intel HDA  电源管理

修改 /etc/modprobe.d/

蓝牙没声

libspa-0.2-bluetooth  缺失

apt install + pactl set-card-profile

多设备切换

pavucontrol   "播放"标签

pavucontrol

麦克风没声

alsamixer   F4 Capture MM

alsamixer + arecord测试

💡提示:音频问题绝大多数都可以用 alsamixer + pavucontrol两个工具解决。如果折腾很久还解决不了,可以考虑换一个外置 USB 声卡,30元以内的基础款就能解决 95% 的声音问题。

下篇预告:《Linux NTFS与exFAT硬盘挂载——Windows硬盘读写攻略》。

最新文章

随机文章