2

Я хочу измерить температуру с карты Advanced Micro Devices [AMD] или 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 или новее); не все производители комплектуют термодатчик. Чтобы получить температуру для ASIC, использующих микросхемы i2c, вам необходимо загрузить соответствующий драйвер hwmon для датчика, используемого на вашей плате (lm63, lm64 и т.д.). Drm попытается загрузить соответствующий драйвер hwmon. На платах, которые используют внутренний термодатчик, drm автоматически настроит интерфейс hwmon. Когда соответствующий драйвер загружен, доступ к температуре можно получить с помощью инструментов lm_sensors или через sysfs в /sys /class /hwmon.

Параметр модуля hw.i2c по умолчанию равен 0. Из описания модуля (modinfo radeon) мне не ясно, что именно он делает. Помогает ли это помочь получить температуру?

1 ответ1

3

Я могу считывать температуру с моей карты AMD Radeon HD 8670 / R7 250 (семейство чипсетов OLAND), используя Ubuntu 14.04 с ядром 3.14.

$ 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 или новее); не все производители комплектуют термодатчик. Чтобы получить температуру для ASIC, использующих микросхемы i2c, вам необходимо загрузить соответствующий драйвер hwmon для датчика, используемого на вашей плате (lm63, lm64 и т.д.). Drm попытается загрузить соответствующий драйвер hwmon. На платах, которые используют внутренний термодатчик, drm автоматически настроит интерфейс hwmon. Когда соответствующий драйвер загружен, доступ к температуре можно получить с помощью инструментов lm_sensors или через sysfs в /sys /class /hwmon.

Итог: возможно , датчик температуры на вашей плате подключен через 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

Я могу "разговаривать" с подключенным к HDMI дисплеем через I²C с помощью инструмента ddccontrol , например, для регулировки яркости подсветки. Итак, I²C определенно работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .