在 Linux(特别是 Arch Linux)上,Realtek 音频设备不需要单独安装“驱动”。因为驱动(如 snd_hda_codec_realtek 模块)已经内置在内核中,开机时 udev 会自动加载。
如果你在日志或 speaker-test 中看到音频正在正常播放,但笔记本就是没有声音,这通常是由硬件层静音、SOF 固件缺失或默认输出设备选错导致的。
以下是精简且无 AI 味的 Arch Linux 音频修复与排查全流程。
第一步:检查内核模块与硬件识别
首先确认系统是否认到了 Realtek 声卡。 Bash
# 查看音频设备(检查是否有 ALCxxx 芯片,如 ALC256)
aplay -l
# 确认 Realtek 内核模块已加载
lsmod | grep snd_hda_codec_realtek
常见现象:如果输出中可以看到
card 0: PCH [HDA Intel PCH]... ALC256 Analog,并且能搜到snd_hda_codec_realtek_lib,说明硬件驱动完全正常,问题出在配置或音量层。
第二步:安装固件与音频服务器
笔记本电脑(尤其是较新的 Intel Core 或 AMD 平台)通常需要额外的数字信号处理器(DSP)固件,否则会导致声卡无法正常发声。 Bash
# 1. 安装基础 ALSA 工具和笔记本必备的 SOF 固件
sudo pacman -S alsa-utils sof-firmware
# 2. 安装现代桌面标配的 PipeWire 音频服务套件
sudo pacman -S pipewire pipewire-audio pipewire-alsa pipewire-pulse wireplumber
# 3. 启动/启用 PipeWire 用户服务(切勿以 root 身份运行)
systemctl --user enable --now pipewire pipewire-pulse wireplumber
第三步:解除硬件层静音(核心解决步骤)
Linux 的初始状态或部分笔记本的默认策略经常会将扬声器静音。使用 ALSA 字符界面进行检查: Bash
alsamixer
进入界面后,严格按照以下顺序操作:
- 按
F6键,选择HDA Intel PCH(或者你的 Realtek 声卡名称),不要留在默认的 PipeWire 虚拟卡上。 - 按
F5键,显示所有通道。 - 找到
Master、Speaker和Headphone通道。 - 如果通道底部显示
MM,说明该通道被静音了。用方向键移动过去,按M键将其切换为OO(解除静音)。 - 使用
↑方向键将音量拉到80 - 100之间。 - 找到
Auto-Mute Mode(自动静音模式),用上下键将其改为Disabled(防止插拔耳机时导致扬声器意外锁死静音)。
修改完成后,执行以下命令保存配置,防止重启后重置: Bash
sudo alsactl store
第四步:调整用户态音量与测试
确保 PipeWire 层的音量也没有被拉到过低或静音(有时显示 vol: 0.10 意味着只有 10% 音量)。
Bash
# 设置默认输出设备音量为 100%
wpctl set-volume @DEFAULT_AUDIO_SINK@ 1.0
# 取消默认输出设备的静音
wpctl set-mute @DEFAULT_AUDIO_SINK@ 0
# 循环测试扬声器输出(会有左右声道的人声提示)
speaker-test -t wav -c 2
常见故障排查
1. 依旧无声,怀疑 SOF 驱动与传统 HDA 冲突
部分新机型的内核音频管理(SOF)存在兼容问题,可以尝试强制其降级使用传统的 HDA 驱动: Bash
# 创建配置文件
sudo tee /etc/modprobe.d/audio-fix.conf << 'EOF'
options snd-intel-dspcfg dsp_driver=1
EOF
# 重新生成 initramfs 并重启
sudo mkinitcpio -P
sudo reboot
2. 声音输出设备跑到了 HDMI 上
如果连接了外接显示器或带有显卡音频,默认输出可能会被抢占。使用图形化工具 pavucontrol,在“回放”或“输出设备”标签页中,将端口手动切换回“内置音频模拟立体声(Analog Output)”。