在Linux中设置一个ACPI字段
我有一个上网本,为了我的喜好早点运行这个风扇。我发现了一个只有Windows的解决方案来减少风扇噪音,但我在这台电脑上使用了Ubuntu。在Linux中设置一个ACPI字段
在Windows解决方案中,这个家伙正在使用一个名为笔记本硬件控制(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)
我会说实话,我是在我的脑袋上这一点,但如果有人可以轻移我在正确的方向,我会非常感谢!
Reflector说NHC.exe是一个托管程序集,它包含提供ACPI.FIELD.Write()
和ACPI.FIELD.Read()
等的类。 NHC的作者在chm文件中描述了如何编写自己的类,包括对这些东西的调用,特定的硬件类型,像插件模型。
不过,您可以将实际的C#代码放入一个特殊的文件夹中,而不是放在.DLL中。显然,nhc.exe在nhc.exe启动时动态编译并运行此代码。如果所有这一切都是真的,你应该可以编写你自己的应用程序,它使用ACPI.FIELD.Read
和Write
调用,将它编译成exe文件,指定nhc.exe作为参考。
不过,踢球者是nhc.exe被混淆了,并且所有这些类都不可见。所以你不能简单地运行csc.exe
并引用nhc.exe。我并不确定,但在我看来,只能在nhc.exe的上下文中运行该代码,然后执行特殊编译来处理它。
另一个坏消息是,NHC的发展似乎已经停止;论坛网站已经死了,最后一次更新是从2007年开始的。
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
读完后,该值将被清除,因此如果您想稍后重新使用,请务必将输出保存在某处。
我已经测试过lm_sensors,但很遗憾,我的电脑没有显示任何粉丝,它也不允许我设置trip_points。敖从我收集lm_sensors不会帮助,可悲:(谢谢你的建议! – gaqzi 2010-05-03 18:28:40