Hola a todos de nuevo, pues como soy un cabezota al final me decidí a montar mi minero en linux con control de frecuencia, voltaje y velocidad de ventilador y lo he conseguido, al final es más fácil de lo que uno se piensa pero claro, si no sabes…
El sistema lo he montado en ubuntu 18.04.3 con el último kernel 5.0, esto es muy importante por que si no, no funciona el invento.
Lo primero que tenemos que hacer es descargar el driver oficial para ubuntu de la web de AMD, descomprimimos el archivo y desde consola nos vamos a la carpeta descomprimida y solo instalamos los driver libres, para eso usamos el comando.
./amdgpu-install -y --opencl=pal,legacy
Aquí están las instrucciones:
Instalación driver
Una vez terminemos el proceso, ahora tenemos que activar overdrive en el kernel, para ello abrimos el grub de linux con este comando:
sudo nano /etc/default/grub
Buscamos la línea donde diga:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
y lo editamos y lo dejamos así:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.ppfeaturemask=0xffffffff"
guardamos y recargamos el grub:
sudo update-grub
y reiniciamos el PC
con eso ya tenemos control sobre nuestras tarjetas AMD, yo uso dos RX580.
Ahora tenemos que averiguar como se llaman nuestras tarjetas dentro de ubuntu y para ello nos vamos a:
cd /sys/class/drm/
y ahí están todas las tarjetas incluida la de la placa base si tiene una, en mi caso aparece la card0, card1 y card2, donde card0 es la de la placa base y las otras dos son las RX580, ahora para configurarlas se hace en un archivo que ha generado el grub al reiniciar que se llama pp_od_clk_voltage ahí dentro estará la frecuencia y el voltaje.
en el caso de las RX580 tiene ocho niveles de frecuencia/voltaje y tres de frecuencia /voltaje de las memorias.
para editar la de la GPU se utiliza la s y para la memoria la m, el comando quedaría así:
echo “s 7 1209 900” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “m 2 1850 850” > /sys/class/drm/card1/device/pp_od_clk_voltage
donde el 7 es el nivel donde queremos ediar, 1209 es la frecuencia y 900 el voltaje en milivoltios que le quieres configurar en tu tarjeta, lo mismo para la memoria
una ves se hayan hecho los cambios los guardamos con este comando:
echo “c” > /sys/class/drm/card1/device/pp_od_clk_voltage
pero antes de nada tememos que pasar a manual el control de la tarjeta con este comando.
echo “manual” > /sys/class/drm/card1/device/power_dpm_force_performance_level
y para cambiar la velocidad de los ventiladores lo primero que hay que hacer es pasar a manual el control, para ello se edita
echo “1” > /sys/class/drm/card1/device/hwmon/hwmon2/pwm1_enable
en el modo automático el valor es 2, y el 1 es para manual así que lo dejamos en 1.
Ahora editamos el porcentaje de velocidad que le queremos dar al ventilador, eso van viendo ustedes cual es el mejor que les convenga yo he puesto este:
echo “128” > /sys/class/drm/card1/device/hwmon/hwmon2/pwm1
Y para hacerlo de manera automática y no estar metiendo los datos uno a uno me he creado un archivo en bash llamado StartGPU.sh donde lo hago todo de un golpe, configuro las dos tarjetas al mismo timpo, eso si, recuerden que cada vez que reinicien el PC estos valores se borran y tendrán que cargar de nuevo el archivo.
si no saben de linux para cargar este archivo desde una consola lo ejecutamos de esta manera:
sudo ./StartGPU.sh
También pueden crear un arranque automático del archivo al arrancar ubuntu pero eso ya no lo he probado así que no sé como es.
el archivo que he creado para el control de mis dos tarjetas es este:
# Configuracion de primera tarjeta AMD RX580 de 8Gb
#!/bin/bash
echo “manual” > /sys/class/drm/card1/device/power_dpm_force_performance_level
echo “s 0 300 750” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “s 1 600 769” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “s 2 918 875” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “s 3 1145 880” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “s 4 1160 885” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “s 5 1180 890” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “s 6 1200 900” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “s 7 1245 900” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “m 0 300 750” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “m 1 1000 800” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “m 2 1900 875” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “c” > /sys/class/drm/card1/device/pp_od_clk_voltage
echo “1” > /sys/class/drm/card1/device/hwmon/hwmon2/pwm1_enable
echo “128” > /sys/class/drm/card1/device/hwmon/hwmon2/pwm1
# Configuración de segunda tarjeta AMD RX580 de 8Gb
echo “manual” > /sys/class/drm/card2/device/power_dpm_force_performance_level
echo “s 0 300 750” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “s 1 600 769” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “s 2 918 875” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “s 3 1145 880” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “s 4 1160 885” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “s 5 1180 890” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “s 6 1200 900” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “s 7 1245 900” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “m 0 300 750” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “m 1 1000 800” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “m 2 1900 875” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “c” > /sys/class/drm/card2/device/pp_od_clk_voltage
echo “1” > /sys/class/drm/card2/device/hwmon/hwmon3/pwm1_enable
echo “128” > /sys/class/drm/card2/device/hwmon/hwmon3/pwm1
Tengo las tarjetas controladas con el software que he comentado más arriba donde los valores que me da de consumo es de unos 114w por tarjeta, una temperatura de unos 60ºC más o menos con una velocidad de 14,87Mh/s por tarjetas minando ravencoin.
Cito las fuentes de donde he sacado la información:
HOWTO_undervolt_the_AMD_RX_4XX_and_RX_5XX_GPUs
How to overclock your AMD GPU on Linux
También hay una herramienta que parece que puede hacer este trabajo pero no la he probado y al parecer solo se puede configurar tarjeta por tarjeta
WattmanGTK
y este el tutorial para instalarla aun que yo prefiero seguir el manual de la fuente original.
WattmanGTK una GUI para el monitoreo y overclock de AMDGPU
Y por último y no sé si habrá alguna otra manera de hacer overclock, alguien ha fabricado un script donde se hace el cambio automático en todas las tarjetas que tengas pero esto tampoco lo he probado, dejo la info por si alguien quiere probarlo
AMDGPU Clock
Al final el que la sigue la consigue 