Страницы

понедельник, 2 января 2017 г.

Asrock FM2A85X-ITX Nuvoton NCT5573D sensors. Напряжения, температуры, вентиляторы в Linux

Отслеживание напряжений, температуры, скоростей вращения вентиляторов в Linux всегда вызывало трудности, даже при наличии программы мониторинга lm_sensors.
Основная проблема - недостаток информации от производителя, о применённой микросхеме SuperIO, о её подключении к датчикам, характеристики применённых резистивных делителей для "высоких" напряжений, схема расположения датчиков температуры на материнской плате.
Одно слово - информация.
Поэтому, приходится её восстанавливать, с помощью всяких ухищрений, поиска спецификаций. И без трассировки по плате может не обойтись, в некоторых случаях.


Итак, lm_sensors - пакет мониторинга напряжений, температур, вентиляторов.

Основной конфигурационный файл: /etc/sensors3.conf

Подопытная плата: Asrock FM2A85X-ITX на сокете FM2 + процессор AMD APU A10-6700 Richland

Конфигурационный файл конкретной системы, обычно помещается в папку /etc/sensors.d/

После выполнения команды sensors-detect, был обнаружен чип мониторинга NCT5573D и был загружен для него драйвер NCT6775 (modprobe nct6775).

Первоначальный вывод команды sensors выглядел так:

nct6776-isa-0290
Adapter: ISA adapter
Vcore:          +0.99 V  (min =  +0.75 V, max =  +1.40 V)
in1:            +0.18 V  (min =  +2.04 V, max =  +2.04 V)  ALARM
AVCC:           +3.44 V  (min =  +2.98 V, max =  +3.63 V)
+3.3V:          +3.42 V  (min =  +2.98 V, max =  +3.63 V)
in4:            +0.53 V  (min =  +2.04 V, max =  +2.04 V)  ALARM
in5:            +1.70 V  (min =  +1.50 V, max =  +1.70 V)
in6:            +1.86 V  (min =  +1.01 V, max =  +1.10 V)  ALARM
3VSB:           +3.44 V  (min =  +2.98 V, max =  +3.63 V)
Vbat:           +3.38 V  (min =  +2.70 V, max =  +3.63 V)
fan1:           849 RPM  (min =  600 RPM)
fan2:          1636 RPM  (min =  600 RPM)
fan3:             0 RPM  (min =    0 RPM)
fan4:             0 RPM  (min =    0 RPM)
fan5:             0 RPM  (min =    0 RPM)
SYSTIN:         +40.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
CPUTIN:         +34.5°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
AUXTIN:         -29.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
PCH_CHIP_TEMP:   +0.0°C  
PCH_CPU_TEMP:    +0.0°C  
PCH_MCH_TEMP:    +0.0°C  
intrusion0:    OK
intrusion1:    OK
beep_enable:   disabled

Невозможно доверять такой информации и принимать осмысленные решения о дальнейшей оптимизации системы.

Самое простое, вентиляторы определились правильно, их значения соответствуют значениям в UEFI BIOS платы Asrock FM2A85X-ITX.

Напряжения не все - их значения - сырые, частично верные - надо разбираться.

Начал с UEFI BIOS и его раздела HW Monitor. Выписал имеющиеся там значения напряжения. Сопоставлял с видимыми в выводе.

Т.к. я уже имею опыт составления конфигурационного файла сенсоров, то шло достаточно быстро, но упёрлось в недостаток информации.
Пришлось искать спецификацию на Nuvoton NCT5573D.
Вместо этого нашлась спецификация на Nuvoton NCT5577D, что меня удовлетворило, на предположении, что чип и его решения недалеко ушли от предка Nuvoton NCT5573D.
Также, нашёл спецификацию на Nuvoton NCT6776D, но там уже есть
отличия.

Чип Nuvoton NCT5573D - это SuperIO контроллер, обслуживающий множество подсистем x86-компьютера.

Итак, чип мониторинга Nuvoton NCT5573D в части мониторинга
содержит 8 аналоговых входов, присоединённых к 8-битному АЦП
Максимальное напряжение на входе АЦП: 2.048 V (256 шагов x 8mV = 2.048V).


4 внешних аналоговых входа обозначенных как (CPUVCORE, VIN0,VIN1, VIN3).
Куда и как разведены VIN0, VIN1, VIN3 на этой конкретной плате, можно только догадываться, но если следвать спецификации и её примерам, то VIN0 - это измерение 12 В линии питания.

4 внутренних аналоговых входа обозначенных как (AVCC, VBAT, 3VSB, 3VCC) и присоединенных через внутренние резистивные делители к источнику питания (а вот куда - это неизвестно). Но имеют осмысленные обозначения, так что их легко понять имея опыт.


Для мониторинга напряжений, чьи верхние значения диапазона ниже 2.048 вольт не нужно применять резистивных делителей.
Таким напряжением является напряжение ядра процессора, которое в нашем случае, скорее всего присоединено к выводу CPUCORE чипа мониторинга. Так и есть. Это подтверждается значениями напряжения в BIOS и других средств мониторинга под Windows. Верхняя граница установлена по данным BIOS, нижняя - наименьшее наблюдаемое мною за некоторый период наблюдений. Возможно требует уточнения по спецификации процессора.

AVCC, VBAT, 3VSB, 3VCC - не требуют большого вмешательства. Лишь установление правильных границ в соответствии со спецификацией ATX, в зависимости от версии поддерживаемой блоком питания.



Для мониторинга положительного +12В напряжения, в спецификации на чип мониторинга рекомендуют применять резистивный делитель с номиналами резисторов 10 кОм и 56 кОм. Эти значения попадают в стандартный диапазон сопротивлений.

При определении вывода показывающего напряжение +5V, подбирался множитель, чтобы значение соответствовало напряжению для пяти вольт в BIOS (переписанные ранее значения и их возможные изменения).

Т.е. на данный момент имеются определённые напряжения процессора и основных линий стандарта ATX.
Уже можно останавливатся в поисках.

Замечу, что в моей системе, с нового года, применяется новый тихий блок питания BeQuiet SFX power 300W, который соответствует спецификации "SFX 12V Version 3.2". Данная спецификация задает диапазон изменения питающих напряжений для большей их части, в пределах 5 процентов.

Итак, конфигурационный файл для материнской платы AsRock FM2A85X-ITX, с процессором AMD APU A10-6700 и блоком питания BeQuiet SFX power 300W.

Расположение конфигурационного файла:  /etc/sensors.d/asrock-FM2A85X-ITX.conf

Содержимое:

# Asrock FM2A85X-ITX motherboard sensors
# Процессор: AMD APU A10-6700 Richland
# Блок питания: BeQquit SFX Power 300W (SFX 12V Version 3.2)
# Чип мониторинга: Nuvoton NCT5573D (исп. драйвер NCT6776D, Kernel driver NCT6775)
# Дата: 1 января 2017 года
# сервер: red
# Поместить этот файл в /etc/sensors.d/
# URL: http://gimmor.blogspot.com/2017/01/asrock-fm2a85x-itx-nuvoton-nct5573d.html


# Суженый выбор чипа, для платы Asrock FM2A85X-ITX, после определения sensors-detect
chip "nct6776-isa-0290"

# Неработающие или неиспользуемы выводы

ignore  intrusion1


# temp0 - показывает отрицательное значение
ignore temp0
ignore temp3
ignore temp4
ignore temp5
ignore temp6
ignore temp7
ignore temp8
ignore temp9

# fan3 - не подключен
ignore fan3
ignore fan4
ignore fan5

#ignore in1
#ignore in4

# Описание взято из описания чипа Nuvoton NCT5577D, по аналогии
# Чип мониторинга Nuvoton NCT5573D содержит 8 аналоговых входов, присоединённых к 8-битному АЦП (256 градаций измерений)
# Максимальное напряжение на входе АЦП: 2.048 V (256 шагов x 8mV = 2.048V)
# Диапазон напряжений ATX стандарта в соответствии с SFX 12V Version 3.2 (3.2.1 DC Voltage Regulation)
# 4 внешних входа присоединённых к (CPUVCORE, VIN0,VIN1, VIN3)
    # in0 - Processor core, VDD

    # нижняя граница - опытное наблюдаемое значение, требует уточнения
    label in0 "Processor core, VDD"
    set in0_min 0.75
    set in0_max 1.4
    label in1 "in1?"
    set in1_min 0
    set in1_max 2.048

    label in4 "in4?"
    set in4_min 0
    set in4_max 2.048
    #compute in4 2*@, @/2
    # in5 - Линия питания +5VDC (±5%) (вычислено по совпадениям со значениям BIOS)
    label in5 "+5V ATX power"
    compute in5 3*@, @/3
    set in5_min  4.75
    set in5_max  5.25
    # in6 - Линия питания +12VDC (±5%)
    # Значения резисторов делителя взяты 10 и 56 кОм, из спецификации на чип Nuvoton nct5577D
    label in6 "+12 ATX power"
    compute in6 66/10*@, @/6.6
    set in6_min  11.4
    set in6_max  12.6
   
# 4 внутренних входа присоединённых к питанию (AVCC, VBAT, 3VSB, 3VCC)
# Содержат внутренние резисторы 34 кОм
    label in2 "AVCC"
    set in2_min 3.14
    set in2_max 3.47
#    label in8 "RTC battery"
    label in7 "3VSB"
    set in7_min 3.14
    set in7_max 3.47
    # in3 - Линия питания +3.3VDC (±5%)
    label in3 "+3.3V ATX power"
    set in3_min  3.14
    set in3_max  3.47


# Напряжение часовой батареи (RTC), обычно CR2032 li-Ion
# Номинальное напряжение 3В
# Напряжение разряженной батареи 2В
# Диапазон 2-3.6 В
    label   in8            "3V CR2032 RTC Battery, VccRTC"
    set     in8_min        2
    set     in8_max        3.6

# Температуры
# AMD APU A10-6700 Maximum operating temperature: 71.3 °C
# AMD APU A10-6700 HTC Temperature Limit (TctlMax): 70 °C

# С температурами сложно, т.к. неизвестно где установлены датчики

    label temp2 "CPU Socket area temperature"
    set   temp2_max      85
    set   temp2_max_hyst  80
    label temp1 "Motherboard area temperature"
    set   temp1_max      85
    set   temp1_max_hyst  80

    label temp3 "AUXTIN"


# Системные вентиляторы

    # Системный вентилятор
    label   fan1           "4-pin system fan"
    set     fan1_min       600
    # Процессорный вентилятор
    label   fan2       "4-pin processor fan"
    set     fan2_min       600


# k10temp-pci-00c3

# Интерпретация может быть неверна
# Опытная корректировка температуры процессора
# Исхожу из предположения, что показано значение Thermal Margin
chip "k10temp-pci-00c3"
label temp1 "CPU Tctl value"
#compute temp1 70-@, 70-@


# Опытная корректировка температуры графического ядра гибридного процессора

# Интерпретация может быть неверна
# Тип сенсора - thermal diode, по данным AIDA64 Extreme
chip "radeon-pci-0008"
label temp1 "Graphic core thermal value"



Как видно, некоторые выводы (in1, in4) не определены до сих пор. Т.е. непонятно куда подключены и какие делители применены и какие в результате множители.


Границы напряжений пятипроцентные.
Границы напряжения батареи резервного питания часов установлены как для Li-ION (по данным википедии).
Если границы неверно определяются даже после команды sensors -s, то возможно подправить файл /etc/sensors3.conf в части чипа мониторинга. Там закомментировать старые границы.



С температурами было просто - названия почти соответствуют
CPUTIN - CPU Temp Input
SYSTIN - System Temp Input
Соответствуют значения в BIOS CPU temperature и M/B temperature.
С границами температур сложно.Установил из предположения, что разъём процессора и материнская плата (в каком месте?) могут нагреваться до высоких значений, превышающих максимальную температуру процессора в 70 градусов.
Типы сенсоров - термисторы по умолчанию, т.к. неизвестна конкретная реализация на плате AsRock FM2A85X-ITX.

Вентиляторы аналогично. Их значения чётко соответствуют значениям в BIOS. И что есть что, легко сопоставить.


Также в качестве примера добавлены сенсоры K10temp-pci-00c3 и radeon-pci-0008.
Однако их интерпретация не закончена.
Известно только одно - выдаваемые значения как-то связаны с температурным режимом процессора и графического ядра.

Полученный вывод команды sensors:
nct6776-isa-0290
Adapter: ISA adapter
Processor core, VDD:            +0.98 V  (min =  +0.75 V, max =  +1.40 V)
in1?:                           +0.18 V  (min =  +0.00 V, max =  +2.04 V)
AVCC:                           +3.44 V  (min =  +3.14 V, max =  +3.47 V)
+3.3V ATX power:                +3.42 V  (min =  +3.14 V, max =  +3.47 V)
in4?:                           +0.52 V  (min =  +0.00 V, max =  +2.04 V)
+5V ATX power:                  +5.09 V  (min =  +4.75 V, max =  +5.26 V)
+12 ATX power:                 +12.25 V  (min = +11.40 V, max = +12.62 V)
3VSB:                           +3.44 V  (min =  +3.14 V, max =  +3.47 V)
3V CR2032 RTC Battery, VccRTC:  +3.38 V  (min =  +2.00 V, max =  +3.60 V)
4-pin system fan:               631 RPM  (min =  600 RPM)
4-pin processor fan:           1640 RPM  (min =  600 RPM)
Motherboard area temperature:   +37.0°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
CPU Socket area temperature:    +33.5°C  (high = +85.0°C, hyst = +80.0°C)  sensor = thermistor
intrusion0:                    OK
beep_enable:                   disabled

radeon-pci-0008
Adapter: PCI adapter
Graphic core thermal value:   +4.0°C  (crit = +120.0°C, hyst = +90.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
CPU Tctl value:   +4.6°C  (high = +70.0°C)
                          (crit = +70.0°C, hyst = +69.0°C)



По результатам, выводимым данным я могу доверять (с некоторой степенью).

※※※





Комментариев нет: