Linux踩坑(一) 部分笔电连接耳机底噪问题解决

关键词:底噪,白噪音,alsamixer,alsactl 失灵

我个人的笔记本已经用了几年了,型号比较老,是联想小新锐7000。

两三年前我用这台电脑装 deepin 的时候就发现连接耳机会有白噪音,而且换用其它的 linux 发行版仍然有这个问题。

在本文记录一下该问题的解决方案,作个备忘的同时希望能帮到其他出现这个问题的人。

之前我的解决方案

在网上查询后,发现可以通过修改 alsamixer 设置解决

alsamixer

1
2
3
4
5
6
7
8
alsamixer # 进入 alsa 混音器界面

# 按 F6 选择当前设备的声卡,我这里是 HDA Intel PCH
# 方向键移动用 Auto-Mute Mode 项,切换一下启动状态(Disabled ↔ Enable)
# 这个时候你可能就发现烦人的底噪消失了
# ESC 退出混音器

alsactl store # 保存当前声卡配置,需要 sudo 权限

但是,这种方式有点问题,当设备重启或耳机插拔就会发现底噪又出现了,进入 alsamixer 发现,刚才设置的 Auto-Mute 设置又变回了原样。

所以当时我写了一个小脚本让它开机自动执行,并且保持耳机一直插在电脑上,但这毕竟治标不治本。

所以之后不堪其扰,再加上刚需(指打游戏)又装回了 windows 😂


新的解决方案

最近又开始在实机上用 Linux 当做我的主力系统,这次我选择装的是 Arch Linux,桌面环境使用的是 KDE Plasma。

这次装好系统后,发现之前碰到的底噪问题仍然存在,这次在外网翻了半天,终于找到了管用的方法1

导致 alsamixer 无法保存设置的原因:alsa-mixer: disable the Auto-Mute once the system has speaker

  1. 首先,旧的方案仍然适用,我们先按照上述的命令进行更改

  2. 修改 alsa 扬声器相关的配置文件:

1
2
3
4
5
# 使用你喜欢的文本编辑器打开下面的路径,需要 sudo 权限,这里使用的是 vim
vim /usr/share/pulseaudio/alsa-mixer/paths/analog-output-speaker.conf

# 若你没有使用 pulseaudio 的话,可以试试下面的路径存不存在
vim /usr/share/alsa-card-profile/mixer/paths/analog-output-speaker.conf

注释掉这两行

1
2
3
4
5
6
7
8
9
; analog-output-speaker.conf

...
; 找到这两项 Auto-Mute 相关的条目,注释掉
[Element Auto-Mute Mode]
; enumeration = select
[Option Auto-Mute Mode:Disabled]
; name = analog-output-speaker
...
  1. Reboot && Enjoy yourself!