【问题标题】:Setting an ACPI field in Linux在 Linux 中设置 ACPI 字段
【发布时间】:2010-05-03 16:08:54
【问题描述】:

根据我的喜好,我有一个上网本,它的风扇有点早。我找到了一个仅适用于 Windows 的解决方案来降低风扇噪音,但我在这台计算机上使用的是 Ubuntu。

在 Windows 解决方案中,这个人使用了一个名为 Notebook Hardware Control (NHC) 的程序,据我所知,该程序正在读取和设置 ACPI 值。 (http://hpmini110c.siteboard.eu/f3t31-lueftersteuerung-fuer-den-mini.html,7z文件中的相关源码,里面的.cs文件是一个C#文件,里面有设置风扇的逻辑)

我想找到一种在 Linux 环境中复制的方法是:

# Where the value is being set
write = ACPI.FIELD.Write("_SP.PCIO.SBRG.ECO.CTPM", 40);
# Reading the temperature
int temp1 = 0;
bool _tmp = APCI.FIELD.Read("_SB.PCIO.SBRG.ECO.TPM1", ref temp1)

老实说,我对此感到不知所措,但如果有人能将我推向正确的方向,我将不胜感激!

【问题讨论】:

    标签: linux acpi


    【解决方案1】:

    Michal Kottman 创建了一个内核模块,允许您执行此类 ACPI 命令。它是为调用命令来切换视频卡而设计的,但也可以用于其他目的。可从Github 获得,安装说明如下:

    1. 安装与当前内核匹配的内核头文件
    2. 获取源代码并构建它

      git clone git://github.com/mkottman/acpi_call.git
      cd acpi_call
      make
      
    3. 加载模块:

      /sbin/insmod acpi_call.ko
      

      如果一切顺利,您现在应该有一个/proc/acpi/call“文件”。

    4. 要执行命令,请将其写入/proc/acpi/call。我猜你打错了_SP,因此用\_SB替换它:

      echo '\_SB.PCIO.SBRG.ECO.CTPM' > /proc/acpi/call
      
    5. 要获取此命令的结果,请检查您的内核日志 (dmesg) 或阅读结果:

      cat /proc/acpi/call
      

      读取后,该值将被清除,因此如果您想稍后重复使用,请务必将输出保存在某处。

    【讨论】:

      【解决方案2】:

      不确定这是否正是您想要的,但您是否查看过lm_sensors? 它们支持使用内核驱动程序进行 hw monoriting,但提供了用户空间库。

      【讨论】:

      • 我之前测试过 lm_sensors,但遗憾的是我的电脑没有显示任何风扇,也不允许我设置 trip_points。很遗憾,我收集到的 lm_sensors 无济于事:( 感谢您的建议!
      【解决方案3】:

      Reflector 表示 NHC.exe 是一个托管程序集,它包含提供 ACPI.FIELD.Write()ACPI.FIELD.Read() 等的类。 NHC 的作者在 chm 文件中描述了如何为特定的硬件类型(例如插件模型)编写包含对这些事物的调用的您自己的类。

      不过,您可以将实际的 C# 代码放入一个特殊的文件夹中,而不是放入 .DLL;显然 nhc.exe 在 nhc.exe 启动时动态编译并运行此代码。如果所有这些都是真的,您应该能够编写自己的应用程序,使用ACPI.FIELD.ReadWrite 调用,将其编译成exe,指定nhc.exe 作为参考。

      不过,问题在于 nhc.exe 被混淆了,所有这些类都是不可见的。所以你不能简单地运行csc.exe 并引用nhc.exe。我不确定,但在我看来,只能在 nhc.exe 的上下文中运行该代码,它会进行特殊的编译来处理它。

      另一个坏消息是 NHC 的发展似乎已经停止。论坛网站已经死了,最后一次更新是从 2007 年开始的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多