O radeon.hw_i2c = 1 tem alguma coisa a ver com as leituras de temperatura?

2

Eu quero ler a temperatura de uma placa Advanced Micro Devices [AMD] nee ATI RS880 [Radeon HD 4290] se possível. Está integrado em uma placa-mãe ASUS M4A89GTDPRO / USB3.

detecta sensores informa o seguinte:

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

Não há nada relacionado na saída do comando sensors .

O site x.org fornece essa informaçã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.

O parâmetro do módulo hw.i2c é 0 por padrão. A partir da descrição do módulo ( modinfo radeon ) não está claro para mim o que ele faz exatamente. A ativação ajuda a obter as temperaturas?

    
por dash17291 02.03.2014 / 23:45

1 resposta

3

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_i2c0 , 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.

    
por 28.06.2014 / 15:34