尽管 /sys/module/snd_hda_intel/parameters/power_save 为 0,laptop-mode-tools 仍会导致 intel HDA 声卡上的省电行为

尽管 /sys/module/snd_hda_intel/parameters/power_save 为 0,laptop-mode-tools 仍会导致 intel HDA 声卡上的省电行为

我遇到了一个特殊的问题。让我描述一下:(请阅读 EDIT2,因为它给出了情况中最重要的部分)

  1. 启动时,我从 GRUB 传递参数
    snd_hda_intel.power_save=0 snd_hda_intel.power_save_controller=N
  2. 笔记本电脑模式工具启动,snd_hda_intel 的省电功能被禁用:

    请参阅以下位置的文本文件https://pastebin.com/R6SMzTAT

  3. /sys/module/snd_hda_intel/parameters/power_save设置为 0,但系统仍然显示省电行为 - 停止声音播放后一段时间后耳机会发出喀哒声,以及卡开机时开始发声时再次发出喀哒声。

  4. 如果我使用 powertop,请转到“可调参数”,它显示音频编解码器电源管理已关闭。现在,如果在这里按打开Enter然后关闭电源管理,问题就解决了,不再省电。我很困惑为什么需要这样做。另外,也许我很傻,但 powertop 声称它运行命令

    echo '' > '/sys/module/snd_hda_intel/parameters/power_save';

    将其关闭。但是从终端运行它会出现错误

    bash: echo: write error: Invalid argument
    

    我可以

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

    但该参数据说已设置为 0,并且此命令无法解决问题。我需要在 powertop 中启用和禁用。

对此有什么解释以及如何修复它而不必在每次启动后执行 powertop 技巧吗?为什么 powertop 声称运行的命令在我尝试 top 执行时会出错?为什么当 power_save 参数为 0(并且 power_save_controller=N 时)会进行省电?

更多信息:

Linux gentoo 4.19.1-gentoo #1 SMP Mon Nov 5 21:27:35 CET 2018 x86_64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz GenuineIntel GNU/Linux

声卡:

00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller (rev 31)

编辑:还有一个有趣的事实 - 如果我执行 powertop 操作,然后停止笔记本电脑模式工具:

systemctl stop laptop-mode

这会导致省电行为恢复,并且需要 powertop 技巧。显然,笔记本电脑模式工具在这里做了一些奇怪的事情。在禁用笔记本电脑模式工具的情况下启动系统也可以让一切正常 - 声卡上不会出现烦人的省电情况。

EDIT2:好的,我不知道为什么 powertop 声称要执行 echo '',因为在研究了源代码之后,它显然确实如此

ofstream file;
file.open("/sys/module/snd_hda_intel/parameters/power_save", ios::out);
file << 0;
file.close()

所以它的作用并没有什么特别的。正如预期的那样,运行此代码不会执行任何操作,因为它与 echo '0' 相同。解决问题并禁用节能的方法是“翻转” power_save 参数的值。所以:

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

作品。笔记本电脑模式工具一定在做一些奇怪的事情,但总的来说,这一定是驱动程序中的一个错误,我是对的吗?

相关内容