如何找到温度传感器的十六进制地址?

如何找到温度传感器的十六进制地址?

我正在尝试在我的 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

相关内容