如何禁用联想 Y50 低音炮音频引脚的省电功能?

如何禁用联想 Y50 低音炮音频引脚的省电功能?

后续行动来自:如何让我的联想 Y50 的低音炮在 Linux 上工作?

简而言之,我有一台联想 Y50,它有一个集成低音炮,只有当我使用 HDA Analyzer 在两个引脚上设置一些设置时,它才能在 Linux Mint 上工作。同样的解决方案在 Fedora 和其他发行版上不起作用。更多信息请参见上面的链接。

我花了一些时间进行进一步调查,并注意到 HDA Analyzer 的文本转储选项卡显示的每个引脚、每个发行版都有差异(左边是 Linux Mint,右边是 Fedora):

图片 1

图片 2

我了解到 D0 表示全功率状态,D3 表示低功耗状态。我研究过如何完全禁用音频卡上的省电功能,因此我在 Fedora 上尝试了以下操作,在终端中输入并在重启前后进行测试,但这并没有解决我的问题:

echo 0 > /sys/module/snd_hda_intel/parameters/power_save

echo N > /sys/module/snd_hda_intel/parameters/power_save_controller

我也尝试过启用Linux Mint 上的省电功能确实在重启之前禁用了低音炮(重启后仍然被禁用)。

我想知道是否有人知道如何进一步尝试将这两个引脚(0x17 和 0x1a)上的电源状态从 D3 切换到 D0,以使我的低音炮输出声音。谢谢!

编辑:这是一个基于我编写的 python 脚本的解决方案这里。不要忽视下面有帮助的答案(再次感谢!)。

答案1

除了将引脚 0x17 和 0x1a 的电源状态设置为 D0 之外,还要尝试增加节点 0x3 (AUD_OUT) 的输出音量。

在运行 Debian 测试的同一型号笔记本电脑上进行测试,低音炮现在可以正常工作。

一个简单的测试方法是插入耳机,低音炮不会静音。

答案2

在 freenode 上的 #alsa IRC 频道的帮助下debianuser,我想我可能已经接近目标了。似乎可以使用 hda_verb 工具(alsa-tools 的一部分)设置电源状态,但是似乎没有专门控制的选项power_save_controller,只有。您可以通过运行来获取有关可以设置power state哪些内容的信息parametershda-verb -L

例子获得电源状态设备:

sudo hda-verb /dev/snd/hwC1D0 0x1a GET_POWER POWER_STATE

例子环境电源状态设备:

sudo hda-verb /dev/snd/hwC1D0 0x17 SET_POWER 0x0 POWER_STATE

因此具体来说你需要做的是运行:

sudo hda-verb /dev/snd/hwC1D0 0x17 SET_POWER 0x0
sudo hda-verb /dev/snd/hwC1D0 0x1a SET_POWER 0x0

请注意,以下情况无效:HDA 分析仪正在运行,但之后可以启动它来验证更改是否有效。在我的情况下,它确实将其更改为 D0。

我想知道这是否解决了您的问题?
正如所说,我有同样的电脑,但我不完全确定我的低音炮是否真的关闭了,因为在 Windows 或 Archlinux 中播放时,我听不出与我创建的示例声音文件有什么区别。也许频率(65 hz)太高了?以防其他人想测试它:
http://miyalys.eu.org/files/65hzsine.wav

也许我们可以找到一种方法来禁用常规扬声器,以便只打开低音炮?

编辑:在莱纳布的回答,我创建了这个必须以 root 身份运行的脚本,它只使用 hda-verb 即可完成所有这些操作。不过,不确定音量是否完全正常。(欢迎反馈)并且,插入耳机后低音炮不会静音的问题仍然存在。

#! /usr/bin/env sh

# Run this script as root!

dev="/dev/snd/hwC1D0"

hda-verb $dev 0x17 SET_POWER 0x0
hda-verb $dev 0x1a SET_POWER 0x0
hda-verb $dev 0x03 0x300 0xa055
hda-verb $dev 0x03 0x300 0x9055
hda-verb $dev 0x17 0x300 0xb000
hda-verb $dev 0x17 0x707 0x40
hda-verb $dev 0x1a 0x707 0x25

如果有必要,所有这些步骤也可以不使用 hda-verb,而只使用 python 来完成,但这会使代码不那么干净。

相关内容