无法获取正确的 CPU 核心温度(Acpi 芯片)

无法获取正确的 CPU 核心温度(Acpi 芯片)

更换主板后,我尝试使其Psensor正常工作,但仍然无法获得适合 CPU 核心温度的正确温度,温度始终为 -127C 度。我安装了lm-sensors检查温度所需的一切,因此运行后:

sudo sensors-detect

我回答了yes所有问题,结果发现:

Driver `f71882fg':
* ISA bus, address 0x295
Chip `Fintek F71882FG/F71883FG Super IO Sensors' (confidence: 9)

我跑了:

sudo service kmod start

当我做:

sudo modprobe f71882fg

我得到:

modprobe: ERROR: could not insert 'f71882fg': Device or resource busy

输出内容dmesg | tail为:

[47593.565779] f71882fg: Found f71882fg chip at 0x290, revision 32
[47593.565857] ACPI Warning: SystemIO range 0x00000290-0x00000297 conflicts with OpRegion 0x00000295-0x00000296 (\IP__) (20140424/utaddress-258)
[47593.565870] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver

我下一步该怎么做?

答案1

正如 Oli 所说,您只需要该coretemp模块即可读取英特尔 CPU 核心温度。

我的w83667hg硬件监视器驱动程序也存在类似的问题。解决方法是添加acpi_enforce_resources=lax到内核命令行。为此

  1. 编辑/etc/default/grub并插入acpi_enforce_resources=lax到的参数字符串中GRUB_CMDLINE_LINUX,例如

    GRUB_CMDLINE_LINUX='acpi_enforce_resources=lax'
    
  2. 然后运行update-grub并重新启动。

答案2

我会跳过lm-sensors并直接阅读/sys/class/thermal/thermal_zone0/temp。这应该会自动注册为 ACPI 芯片。单位是毫摄氏度

$ cat /sys/class/thermal/thermal_zone0/temp 
47000

可能有许多设备。根据我的经验,CPU 通常是第一个(每个核心一个),但我不确定我是否总是依赖这种情况。thermal_zoneN

对于未通过热 sysfs API 注册的其他设备,您将需要lm-sensors或类似的东西。

相关内容