Eu sou capaz de ler a temperatura da minha placa AMD Radeon HD 8670 / R7 250 (família de chipsets OLAND) usando o Ubuntu 14.04 com o kernel 3.14.
$ sensors
[…]
radeon-pci-0100
Adapter: PCI adapter
temp1: +50.0°C (crit = +120.0°C, hyst = +90.0°C)
[…]
No entanto, sensors-detect
não detecta o sensor de temperatura da placa Radeon. sensors
"vê" o sensor ainda porque ele é acessível através da interface hwmon do kernel, ou seja, o driver radeon
ativamente "expõe" o sensor ao sistema.
No diretório /sys/class/hwmon
, você encontrará uma lista de todas as interfaces 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/
Conclusão provisória: Para ler a temperatura do seu cartão Radeon, não importa se o I²C funciona ou não.
De acordo com o link , o sensor de temperatura é suportado nos cartões HD4290 e no meu cartão (HD8670). No entanto, a documentação diz "chip i2c ou sensor interno" (nota de rodapé 28).
No mesmo site, você pode encontrar a seguinte citação:
Thermal sensors are implemented via external i2c chips or via the internal thermal sensor (rv6xx-evergreen only; supported in 2.6.36 or newer); not all OEMs implement a thermal sensor. To get the temperature on asics that use i2c chips, you need to load the appropriate hwmon driver for the sensor used on your board (lm63, lm64, etc.). The drm will attempt to load the appropriate hwmon driver. On boards that use the internal thermal sensor, the drm will set up the hwmon interface automatically. When the appropriate driver is loaded, the temperatures can be accessed via lm_sensors tools or via sysfs in /sys/class/hwmon.
Resumindo: poderia ser que o sensor de temperatura da sua placa esteja conectado via I²C. Nesse caso, sensors-detect
deve ser capaz de encontrá-lo. No entanto, também é possível que sua placa gráfica não tenha um sensor de temperatura.
Postscript
Para mim, parece que a semântica do parâmetro hw_i2c
é 0 = disable e 1 = enable:
$ modinfo -p radeon
[…]
hw_i2c:hw i2c engine enable (0 = disable) (int)
[…]
No meu sistema, cat /sys/module/radeon/parameters/hw_i2c
dá 0
, ainda tenho 8 barramentos I²C todos originados do driver 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
Eu posso "falar" com meu monitor conectado via HDMI usando a ferramenta ddccontrol
, por exemplo. para ajustar o brilho da luz de fundo. Então, o I²C definitivamente funciona.