我有一台上网本可以让我的爱好早一点运行。我找到了一个仅限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)
我会说实话,我对此很满意,但如果有人能够朝着正确的方向推动我,我将非常感激!
答案 0 :(得分:5)
Michal Kottman创建了一个内核模块,允许您执行此类ACPI命令。它专为调用命令切换视频卡而设计,但也可用于其他目的。它可以从Github获得,安装说明如下:
获取源代码并构建它
git clone git://github.com/mkottman/acpi_call.git
cd acpi_call
make
加载模块:
/sbin/insmod acpi_call.ko
如果一切顺利,您现在应该有一个/proc/acpi/call
“文件”。
要执行命令,请将其写入/proc/acpi/call
。我猜您使用_SP
输了一个拼写错误,因此将其替换为\_SB
:
echo '\_SB.PCIO.SBRG.ECO.CTPM' > /proc/acpi/call
要获取此命令的结果,请检查内核日志(dmesg
)或阅读结果:
cat /proc/acpi/call
读取后,该值将被清除,因此如果您想稍后重新使用,请务必将输出保存在某处。
答案 1 :(得分:0)
不确定它是否正是您想要的,但是您是否考虑过lm_sensors? 它们支持使用内核驱动程序进行单一的monoriting,但提供了一个用户空间库。
答案 2 :(得分:-2)
Reflector表示NHC.exe是托管程序集,它包含提供ACPI.FIELD.Write()
和ACPI.FIELD.Read()
等的类。 NHC的作者在chm文件中描述了如何编写自己的类,包括对这些东西的调用,特定的硬件类型,如插件模型。
ACPI.FIELD.Read
和Write
调用,将其编译为exe,指定nhc.exe作为参考。
尽管如此,nhc.exe是混淆的,并且所有这些类都不可见。所以你不能简单地运行csc.exe
并引用nhc.exe。我不确定,但在我看来,只能在nhc.exe的上下文中运行该代码,nhc.exe执行特殊的编译来处理它。
另一个坏消息是NHC的发展似乎已经停止;论坛网站已经死了,最后一次更新是从2007年开始的。