XPS15 9530 的音频质量非常糟糕。扬声器在 Windows 上听起来很漂亮,但在 Linux 上绝对是狗。人们似乎在多个发行版上都遇到了这个问题,我相信这是一个持续存在的问题。
我拥有的唯一可能有用的信息是 XPS15 9530 使用 Realtek ALC3281 编解码器,但是,内核和整个系统中有多个位置引用了 ALC298,这是在XPS15 9510 和 9520(我认为)。 ALC3281 似乎没有出现在我的任何日志中,但 ALC298 却无处不在。我希望这些信息有用。
这可能有用:https://www.reddit.com/r/DellXPS/commen… io_issues/ 这是我为 9530 找到的一个内核补丁,但它似乎不起作用:https://www.spinics.net/lists/alsa-devel/msg161419.html 这是有相同问题的人的 bugzilla 报告:https://bugzilla.kernel.org/show_bug.cgi?id=217906
内核:6.5.7-arch1-1
如果有人有任何可能有帮助的信息,请分享。
如果您需要更多信息,请告诉我。
答案1
(我没有足够的声誉来发表评论,所以写在这里。希望信息有帮助,但它是不是一个解决方案,而是我对同一问题的广泛调查)
这里同样的问题。我应用了怪异补丁,低音炮确实出现在 alsa 混音器中,但仍然没有声音来自低音炮(向下发射),而只有高音扬声器(向上发射),而完全是垃圾。我设法挖掘出更多见解:
- 看起来 ALC298=ALC3281,因为以前型号的数据表(9510,9520,9530)还指定 ALC3281,即使其已知事实是 ALC298。
- 虽然编解码器相同,但 9530 配备了更强大的放大器(10W/12W vs 8W/10W 平均/峰值),特别是低音炮放大器似乎是 3.5W,而之前是 3W。不确定这会影响他们工作/不工作,但 ALC 动词可能会有所不同?
- 这里根据 bugzilla 的假设(某种程度已得到证实?),建议戴尔默认应用高通滤波器来“保护扬声器”。如果是这种情况,只有 Windows Realtek 驱动程序知道如何“绕过”它。这可以解释为什么现有的怪癖确实可以为低音扬声器放大器供电,并且它们得到识别,但它们没有发出实际的声音。
测试一些假设。由于戴尔可能将非 Windows 扬声器支持锁定为仅支持“Ubuntu 认证”设备(又名 Precision,XPS 兄弟),我与 Precision 5570 所有者取得了联系(激烈地回答了我的随机电子邮件)。不幸的是,他似乎也遇到了同样的问题。作为参考,他/她正在运行带有 LTS 6.1 内核的 Arch,其中 5570 已经修补了怪癖。这证明9530并不是唯一一个快不灵的型号不再。我最后还尝试在我的机器上设置相同的 ALC 动词(通过内核补丁和固件加载),即使应用了设置,也没有任何改变(不过,这并不奇怪,因为它在原始机器上也不起作用)。
我还尝试了一些其他方法,但没有成功:
- 将补丁应用于从 6.2.X 到 6.5.X 的各种内核版本。结果是一样的,低音扬声器出现在 alsa-mixer 中,但没有声音
- 禁用 Intel SDA 驱动程序 - 声卡在设置中切换为模拟,但仅此而已,没有低音扬声器。
- 使用与 Reddit 上的用户声称取得成功的系统相同的系统 - PopOS。依然没有
- 这很有趣- 我可以访问 XPS 9510,它已经在上游进行了怪异补丁,多个用户(内核合并、reddit 等)声称它可以工作 - 但......它没有。运行 Ubuntu 22.04,通用(我认为是 6.2?)内核,低音炮按预期在 alsa-mixer 中可见,但低音炮不工作! => 我唯一的想法是,戴尔确实通过 BIOS 更新引入了上述高通来“保护”扬声器(因为这些设置了默认的 ALC 动词),但这只是我(未受过充分教育)的猜测。
还有一些我还不能尝试的事情:
- 在 XPS 9530 和/或实际 Precision 5570 上安装戴尔的官方 Precision 5570 Ubuntu 映像。它运行来自戴尔的 OEM 内核,并且他们可能发挥了魔力让扬声器真正工作,因为它通过 Ubuntu 认证毕竟。问题:仅下载 Ubuntu 映像需要该机器的序列号与该操作系统一起购买- 如果有人拥有运行 Ubuntu 的 5570 并且可以(私下)共享服务标签,那将是一个很好的开始!此外,即使它不适用于 XPS,也不意味着它通常不起作用,因为戴尔可能对系统路径进行了硬编码,这些路径因平台而异。因此,理想情况下,需要使用 Ubuntu 用户访问 Precision 5570(或 5560?),他们愿意安装 OEM Ubuntu 并解决问题/让我们解决问题。
- 获得仍然有的 Dell XPS 9510/9520/9530实际工作低音炮,并读出所有 alc 动词?如果戴尔确实通过 BIOS 更新添加了“保护”,那么在某些早期版本上它应该仍然可以工作(就像它对所有进行内核合并的人所做的那样?)。
- 可能是最“确定”的方式:根据这repo,想法是在 Linux 上的修改后的 QEMU 中运行 Windows,同时将音频硬件完全传递给 VM(需要自定义内核补丁)。 Windows 中的 Realtek 驱动程序将正确处理编解码器,修改后的 QEMU 可以拦截通信并创建动词“dumb”。然后可以轻松地将其添加到内核补丁中,或者只是作为固件覆盖加载。可悲的是,到目前为止,我很难让它工作(即使在内核补丁之后,IOMMU 组分离也无法工作,还找不到我搞砸的东西)。此外,由于放大器功率差异,可能需要对每个型号执行此过程,或者至少对 9530/pre 9530 执行此过程。
总而言之,这(幸运的是)不仅仅是 9530 的问题,并且有一些假设的选项可以解决这个问题,但不幸的是戴尔并没有让我们轻松解决这个问题。我正在被动地研究最后一个(基于 QEMU)选项,如果我取得任何突破,我将进行更新。
编辑:我们取得了突破,扬声器现在可以完全固定。不过,要使其适合上游,仍然需要做一些工作。更多信息关于github问题
答案2
有些人正在为此寻找解决方案。事实上,目前您可以通过修补内核来使其工作。正在努力将这些更改提交到主线。您可以在此处关注该主题:
https://github.com/thesofproject/linux/issues/4624
另外关于不和谐:
https://discord.com/channels/1164868856012079126/1164872627236647003
对于那些赶时间的人,这里有一张收据,可以让其发挥作用:
# clone the firmware files
git clone --depth 1 https://github.com/alexVinarskis/dell-firmware.git
sudo cp -ri dell-firmware/cirrus/* /lib/firmware/cirrus/
# get patches
wget "https://github.com/thesofproject/linux/files/13613194/0001-ALSA-hda-cs35l41-Dell-Fiorano.txt"
wget "https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git/patch/?id=cd14dedf15be432066e63783c63d650f2800cd48" -O quirk.patch
# download kernel
wget "https://git.kernel.org/torvalds/t/linux-6.7-rc4.tar.gz"
tar zxf linux-6.7-rc4.tar.gz
cd linux-6.7-rc4/
# optionally copy your current kernel config
cp /boot/config-6.6.3 .config
# apply patches
git apply ../0001-ALSA-hda-cs35l41-Dell-Fiorano.txt
git apply ../quirk.patch
# optionally apply the patch suggested
# here: https://github.com/thesofproject/linux/issues/4624#issuecomment-1845026029
# until we find a better solution.
# configure kernel so that we update .config with new
# values eventually added upstream
make menuconfig
# choose Save -> confirm
# choose Exit
# compile kernel
make -j$(nproc)
# install everything
sudo make INSTALL_MOD_STRIP=1 modules_install -j$(nproc)
sudo make INSTALL_MOD_STRIP=1 install -j$(nproc)
答案3
戴尔 XPS 9530
找到了一个效果惊人的修复方法。
我有一台 Dell XPS 15 9530,如本文中报道的那样戴尔论坛帖子由于戴尔方面的错误,Linux 上未启用低音炮,导致扬声器声音较弱且音频质量较差。
OSS 开发人员已经致力于修复该错误,该修复将在 Linux 内核版本 6.9 中实现,
直到那时: 我不得不这样指导经过亚历克斯·维纳尔斯基斯并创建自定义 Linux 内核。该指南为不同版本的 Linux 提供了不同的选项,它对我使用 6.8 源代码有效。
戴尔 XPS 9520 和 9510
这些计算机扬声器应适用于最新的内核版本 6.8,因此,请尝试将您的发行版更新到最新版本。