我正在尝试在我的 Acer Aspire One 笔记本电脑版本中使用脚本(我相信是 acerfand)来控制风扇在特定温度下的开/关。为了正常工作,它需要温度传感器的值。如何找到温度传感器的十六进制地址?我尝试过 dmidecode,但我什至不知道它是否是搜索它的正确位置。
sub get_temp
{
initialize_ioports();
my $r = hex("xxx"); # Temperature
my $temp = read_ec($r);
close_ioports();
return $temp;
}
编辑:不知何故我找到了它!以防万一有人要搜索这个号码,对于 acer aspire one 722 来说,它是:hex(“0xB0”)。
答案1
确保您已安装 lm-sensors 软件包。其中包含许多有用的命令行实用程序,可以返回该信息,包括该软件包中的 isadump 和 Sensors-Detect。
答案2
假设传感器已通过 PCI 总线连接。
首先使用其驱动程序(内核模块)名称找到传感器目录:
grep DRIVER /sys/bus/pci/devices/*/uevent
你会看到一批像这样的行:
/sys/bus/pci/devices/0000:00:02.0/uevent:DRIVER=pcieport
/sys/bus/pci/devices/0000:00:04.0/uevent:DRIVER=pcieport
/sys/bus/pci/devices/0000:00:11.0/uevent:DRIVER=ahci
/sys/bus/pci/devices/0000:00:12.0/uevent:DRIVER=ohci-pci
/sys/bus/pci/devices/0000:00:12.2/uevent:DRIVER=ehci-pci
/sys/bus/pci/devices/0000:00:13.0/uevent:DRIVER=ohci-pci
/sys/bus/pci/devices/0000:00:13.2/uevent:DRIVER=ehci-pci
/sys/bus/pci/devices/0000:00:14.0/uevent:DRIVER=piix4_smbus
/sys/bus/pci/devices/0000:00:14.1/uevent:DRIVER=pata_atiixp
/sys/bus/pci/devices/0000:00:14.2/uevent:DRIVER=snd_hda_intel
/sys/bus/pci/devices/0000:00:14.5/uevent:DRIVER=ohci-pci
/sys/bus/pci/devices/0000:00:16.0/uevent:DRIVER=ohci-pci
/sys/bus/pci/devices/0000:00:16.2/uevent:DRIVER=ehci-pci
/sys/bus/pci/devices/0000:00:18.3/uevent:DRIVER=k10temp
/sys/bus/pci/devices/0000:01:00.0/uevent:DRIVER=nvidia
/sys/bus/pci/devices/0000:01:00.1/uevent:DRIVER=snd_hda_intel
/sys/bus/pci/devices/0000:02:00.0/uevent:DRIVER=r8169
其中一行将包含传感器内核模块的名称 - 在上面的示例中k10temp
,相应的行是:
/sys/bus/pci/devices/0000:00:18.3/uevent:DRIVER=k10temp
因此,现在我们知道传感器的目录 - 在示例中该目录是:
/sys/bus/pci/devices/0000:00:18.3/
目录中的文件device
包含传感器的十六进制地址,因此执行(对于上面的示例):
cat /sys/bus/pci/devices/0000:00:18.3/device
输出将是这样的:
0x1703
如果您无法识别传感器内核模块的名称,只需安装lm-sensors
、执行sudo sensors-detect
,然后sensors
即可 - 您将轻松找到内核模块的名称,因为您将看到其中一个传感器的类似以下内容:
k10temp-pci-00c3