Вентилятор AMD GPU не работает и не чувствует температуру

Я собрал новый рабочий стол с графическим процессором Radeon RX5700 и системой Ubuntu 18.04. Вентилятор графического процессора вращается только тогда, когда я загружаю компьютер, а затем останавливается. Использование команды датчиков сообщает об ошибке:

$ sensors
amdgpu-pci-2f00
Adapter: PCI adapter
vddgfx:       +0.78 V  
ERROR: Can't get value of subfeature fan1_input: I/O error
fan1:             N/A  (min =    0 RPM, max = 3600 RPM)
edge:             N/A  (crit = +118.0°C, hyst =  +0.0°C)
                       (emerg = +80000.0°C)
junction:         N/A  (crit = +80000.0°C, hyst =  +0.0°C)
                       (emerg = +80000.0°C)
mem:              N/A  (crit = +80000.0°C, hyst =  +0.0°C)
                       (emerg = +80000.0°C)
power1:        8.00 W  (cap = 160.00 W)

Я не уверен, что здесь не так. У кого-нибудь есть решение?

1
задан 8 November 2019 в 06:12

1 ответ

Вам не нужно получать скорость вращения вентилятора. Утилита fancontrol работает очень хорошо без какой-либо информации о текущей скорости вращения вентилятора. Вы можете установить через

sudo apt-get install fancontrol

Мою конфигурацию fancontrol в /etc/fancontrol:

INTERVAL=10
DEVPATH=hwmon2=devices/platform/it87.2608 hwmon3=devices/pci0000:00/0000:00:01.0/0000:01:00.0
DEVNAME=hwmon2=it8728 hwmon3=amdgpu
FCTEMPS=hwmon3/pwm1=hwmon3/temp1_input
FCFANS=hwmon3/pwm1=hwmon2/fan1_input
MINTEMP=hwmon3/pwm1=60
MAXTEMP=hwmon3/pwm1=100
MINSTART=hwmon3/pwm1=60
MINSTOP=hwmon3/pwm1=20
MINPWM=hwmon3/pwm1=0
MAXPWM=hwmon3/pwm1=255

Мой корпус резонирует на некоторых частотах, поэтому я написал скрипт на Python для перехода на эти частоты (Fan RPMS). Это работает очень хорошо для меня. Я запускаю его поверх управления вентилятором ... если он каким-то образом выходит из строя, управление вентилятором берет на себя ... Вот почему time.sleep составляет 0,25 секунды, если срабатывает более длительное управление вентилятором ...

Мой скрипт python:

import os,time
from subprocess import Popen
from subprocess import PIPE

os.system('echo auto > /sys/class/drm/card0/device/power_dpm_force_performance_level')

keepcooling=False
while True:
    time.sleep(0.25)
    with Popen(["cat","/sys/class/drm/card0/device/hwmon/hwmon3/temp1_input"], stdout=PIPE) as proc:
        fantemp=int(proc.stdout.read().decode('ascii'))

    temp=fantemp/1000

    if temp <=45:
        fanpwm=0

    if temp >45 and temp <= 75: 
        fanpwm=temp

    if (temp >75 ) and (temp <=95):
        fanpwm=temp+55

    if temp>95: 
        fanpwm=200
        keepcooling=True; #cool until 80C reached

    if temp>=100: 
        os.system('reboot')

    if temp<=80:
        keepcooling=False

    if keepcooling and temp > 80:
        fanpwm=200



    print('temp',temp,'fanpwm',int(fanpwm)) 
    os.system('echo '+str(int(fanpwm))+' > /sys/class/drm/card0/device/hwmon/hwmon3/pwm1')
   # print('echo '+str(int(fanpwm))+' > /sys/class/drm/card0/device/hwmon/hwmon3/pwm1')

Be тщательно настроить и проверить много раз, если вы хотите использовать его. Мониторить можно через лм-сенсоры и псенсоры... и скорость вентилятора через

cat /sys/class/drm/card0/device/hwmon/hwmon3/pwm1
0
ответ дан 24 March 2020 в 06:08

Другие вопросы по тегам:

Похожие вопросы: