如果可能的话,我想从 Advanced Micro Devices [AMD] nee ATI RS880 [Radeon HD 4290] 卡中读取温度。它集成在 ASUS M4A89GTDPRO/USB3 主板上。
传感器检测报告以下内容:
Do you want to probe the I2C/SMBus adapters now? (YES/no):
Using driver `i2c-piix4' for device 0000:00:14.0: ATI Technologies Inc SB600/SB700/SB800 SMBus
Module i2c-dev loaded successfully.
Next adapter: Radeon i2c bit bus 0x90 (i2c-0)
Do you want to scan it? (yes/NO/selectively): yes
Next adapter: Radeon i2c bit bus 0x91 (i2c-1)
Do you want to scan it? (yes/NO/selectively): yes
Next adapter: Radeon i2c bit bus 0x92 (i2c-2)
Do you want to scan it? (yes/NO/selectively): yes
Next adapter: Radeon i2c bit bus 0x93 (i2c-3)
Do you want to scan it? (yes/NO/selectively): yes
Next adapter: Radeon i2c bit bus 0x14 (i2c-4)
Do you want to scan it? (yes/NO/selectively): yes
命令输出中没有任何相关内容sensors
。
这x.org 网站提供以下信息:
热传感器通过外部 i2c 芯片或内部热传感器(仅 rv6xx-evergreen;2.6.36 或更新版本支持)实现;并非所有 OEM 都实现热传感器。要获取使用 i2c 芯片的 asics 的温度,您需要为主板上使用的传感器(lm63、lm64 等)加载适当的 hwmon 驱动程序。drm 将尝试加载适当的 hwmon 驱动程序。在使用内部热传感器的主板上,drm 将自动设置 hwmon 接口。加载适当的驱动程序后,可以通过 lm_sensors 工具或 /sys/class/hwmon 中的 sysfs 访问温度。
hw.i2c 模块参数默认为 0。从模块描述 ( modinfo radeon
) 中,我不清楚它到底是做什么的。启用它有助于获取温度吗?
答案1
我能够使用内核为 3.14 的 Ubuntu 14.04 读取我的 AMD Radeon HD 8670 / R7 250 卡(OLAND 芯片组系列)的温度。
$ sensors
[…]
radeon-pci-0100
Adapter: PCI adapter
temp1: +50.0°C (crit = +120.0°C, hyst = +90.0°C)
[…]
但是,sensors-detect
没有检测到 Radeon 卡的温度传感器。sensors
仍然“看到”传感器,因为它可以通过内核的 hwmon 接口访问,即radeon
驱动程序主动将传感器“暴露”给系统。
您将在目录中/sys/class/hwmon
找到所有 hwmon 接口的列表:
$ ls -l /sys/class/hwmon/
total 0
drwxr-xr-x 2 root root 0 Jun 28 15:02 ./
drwxr-xr-x 56 root root 0 Jun 28 15:02 ../
lrwxrwxrwx 1 root root 0 Jun 28 15:02 hwmon0 -> ../../devices/virtual/hwmon/hwmon0/
lrwxrwxrwx 1 root root 0 Jun 28 15:02 hwmon1 -> ../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/hwmon/hwmon1/
lrwxrwxrwx 1 root root 0 Jun 28 15:02 hwmon2 -> ../../devices/platform/coretemp.0/hwmon/hwmon2/
lrwxrwxrwx 1 root root 0 Jun 28 15:02 hwmon3 -> ../../devices/platform/nct6775.2560/hwmon/hwmon3/
中期结论:为了读取 Radeon 卡的温度,I²C 是否工作并不重要。
根据http://xorg.freedesktop.org/wiki/RadeonFeature/HD4290 卡支持温度传感器,就像我的卡 (HD8670) 一样。但是,文档中说的是“i2c 芯片或内部传感器”(脚注 28)。
在同一网站上,您还可以找到以下引文:
热传感器通过外部 i2c 芯片或内部热传感器(仅 rv6xx-evergreen;2.6.36 或更新版本支持)实现;并非所有 OEM 都实现热传感器。要获取使用 i2c 芯片的 asics 的温度,您需要为主板上使用的传感器(lm63、lm64 等)加载适当的 hwmon 驱动程序。drm 将尝试加载适当的 hwmon 驱动程序。在使用内部热传感器的主板上,drm 将自动设置 hwmon 接口。加载适当的驱动程序后,可以通过 lm_sensors 工具或 /sys/class/hwmon 中的 sysfs 访问温度。
底线:它可以您的主板上的温度传感器是通过 I²C 连接的。在这种情况下,sensors-detect
应该能够找到它。不过,您的显卡也可能没有温度传感器。
后记
对我来说,该参数的语义似乎hw_i2c
是 0=禁用和 1=启用:
$ modinfo -p radeon
[…]
hw_i2c:hw i2c engine enable (0 = disable) (int)
[…]
在我的系统上,cat /sys/module/radeon/parameters/hw_i2c
仍然0
有 8 个 I²C 总线,它们全部来自 Radeon 驱动程序:
$ ls -l /sys/bus/i2c/devices/
total 0
drwxr-xr-x 2 root root 0 Jun 28 14:31 ./
drwxr-xr-x 4 root root 0 Jun 28 14:31 ../
lrwxrwxrwx 1 root root 0 Jun 28 14:31 i2c-0 -> ../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/i2c-0/
lrwxrwxrwx 1 root root 0 Jun 28 14:31 i2c-1 -> ../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/i2c-1/
lrwxrwxrwx 1 root root 0 Jun 28 14:31 i2c-2 -> ../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/i2c-2/
[…]
lrwxrwxrwx 1 root root 0 Jun 28 14:31 i2c-7 -> ../../../devices/pci0000:00/0000:00:01.0/0000:01:00.0/i2c-7/
$ grep . /sys/bus/i2c/devices/i2c-*/name
/sys/bus/i2c/devices/i2c-0/name:Radeon i2c bit bus 0x90
/sys/bus/i2c/devices/i2c-1/name:Radeon i2c bit bus 0x91
/sys/bus/i2c/devices/i2c-2/name:Radeon i2c bit bus 0x92
/sys/bus/i2c/devices/i2c-3/name:Radeon i2c bit bus 0x93
/sys/bus/i2c/devices/i2c-4/name:Radeon i2c bit bus 0x94
/sys/bus/i2c/devices/i2c-5/name:Radeon i2c bit bus 0x95
/sys/bus/i2c/devices/i2c-6/name:Radeon i2c bit bus 0x96
/sys/bus/i2c/devices/i2c-7/name:Radeon i2c bit bus 0x97
我能够使用该ddccontrol
工具通过 I²C 与 HDMI 连接的显示器“对话”,例如调整背光亮度。因此,I²C 绝对有效。