Я могу считывать температуру с моей карты 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 определенно работает.