Linux 音频刺耳怎么解决?
我是题主,谢谢各位的回答。
现在问题已经解决了,想看解决方案的可以往下翻一下。
或者我过几天会出一篇文章,想看的可以先关注我,写完文章再取关也行。我不是为了骗关注
下面是原回答:
目前锁定了问题:笔记本是4个扬声器,分为两个高音扬声器和两个低音扬声器,问题在于低音扬声器不工作而导致的音频刺耳。这大概是因为机型比较新,而内核没有做适配导致的,而且联想官方也不会给 Linux 写驱动,得用户自己写。
我的声卡型号是 Realtek ALC 3306,但系统认成了 Realtek ALC 287,并且没有打这种机型的补丁。现在打算查查资料然后自己做适配,给内核打上补丁之后再试。
2月17日更新:
现在低音扬声器工作了,我的解决方案是这个链接,对你的设备可能有风险,提前自知。
注意:我安装了之后,音量为0听不到声音,音量为1声音就变成最大了,所以如果设置更高音量可能会损坏设备,建议提前了解风险。
如果有解决方案我会更新的。
2月18日更新:
音量设置为1就变成最大了可能是因为我没有看到 README 里的 Step 9 吧……(不过还没试)
2月19日更新:(显示20日是因为昨天打了草稿没发)
Step 9也做了,但是音量到7左右就是最大了。感觉应该是两个配置 文件的问题。另外虽然两个低音扬声器工作了,但效果仍然不是很好,跟老式收音机似的。
接下来打算自己提取固件,然后研究一下补丁代码自己写补丁。
2月21日更新:
使用补丁之后高音扬声器又不工作了,所以可能还得写一些驱动。接下来打算去http://kernel.org看看,如果有就跟进一下,没有就开一个,然后准备打补丁
2月24日更新:
在没怎么写驱动的情况下可以将就用,AI 告诉我这种2高音扬声器+2低音扬声器属于Hi-Fi,而不是模拟环绕。但目前来看只能使用模拟环绕4.0,因为如果选择Hi-Fi,不管打没打现有补丁,高音扬声器都不工作。
如果从模拟环绕4.0的角度看,硬件层面已经解决了,使用 mpv 独占音频播放没有问题了,但是软件层面可能还有一些问题。不过需要对现有补丁进行一下小更改
使用模拟环绕4.0的方法:
首先需要获取你 DMI 的 Product Name:
cat /sys/class/dmi/id/product_name我的是83F4,笔记本厂商把扬声器左右顺序接反了,所以需要手动调整。patch里有作调整,不过你需要检查一下是否对应你的Product Name,把83F5改成你自己的或者在后面加一个或判断。不过如果你感觉没有接反,那么就不需要添加。

之后指定内核参数snd_intel_dspcfg.dsp_driver=1,强制使用传统模式
最后编译内核,安装。具体可以参考内核/传统编译 - Arch Linux 中文维基 。如果/boot分区空间不够,可以使用 Ubuntu ISO 里的 GParted 调整一下分区,一定不要删除原来的内核
之后在 Pulse Audio 音量控制里选择模拟环绕4.0,然后在 KDE 系统设置里听一下。最后配置一下 Pulse Audio 就行
不过我还没配置,过几天再说怎么配置
2月25日更新:
昨天已经配置好了,我的方案是再在 PipeWire 创建一个虚拟设备,创建 /etc/pipewire/11-virtual-device.conf
context.modules = [
{
name = libpipewire-module-loopback
args = {
audio.position = [ FL FR ]
capture.props = {
media.class = "Audio/Sink"
node.name = "loopback-sink"
node.description = "Loopback Virtual Sink"
# Make it selectable in desktop audio controls
device.description = "Loopback Virtual Sink"
device.class = "sound"
device.icon-name = "audio-card"
node.virtual = false
}
playback.props = {
# 你的节点名称,可以通过 pw-link -i 获取
node.name = "alsa_output.pci-0000_80_1f.3.analog-surround-40"
node.passive = true
channelmix.upmix = true
channelmix.upmix-method = "simple" # 也可以选 psd,具体去看文档
}
}
}
]这样就会把这个新的虚拟设备发出的声音串到物理设备上。这个虚拟设备输入是2声道,输出是4声道。
然后在KDE系统设置或者PulseAudio音量控制里把物理设备的音量调到100%,然后把默认设备选为虚拟设备就行了。效果和 Windows 已经没两样了。
参考链接: