Control del ventilador: Adapta el ODROID-XU4 a tu Entorno Perfecto

El ODROID-XU4 soporta 3 niveles de refrigeración para el ajustar el control térmico: 0, 1, 2. El nivel 0 es el nivel más bajo para el control térmico y hace girar al ventilado a la velocidad más baja. El nivel 2 es el nivel más alto y hace girar el ventilador a la máxima velocidad, tal y como se muestra en la siguiente tabla:

Esta tabla muestra los valores por defecto de cómo se comporta el ventilador. Cuando la temperatura alcance los 60 °C, el valor de giro objetivo cambiará al nivel 1 y el ventilador comenzará a funcionar a un valor de 120 PWM (0 ~ 255). La misma condición se cumple cuando el valor de giro objetivo pasa al nivel 3, el ventilador funciona a 240 PWM cuando la temperatura alcanza los 80 ° C. Puedes ajustar los valores objetivos y la velocidad de tu ventilador para que sean los que quieras. Incluso puede configurar la velocidad del ventilador para que ésta sea constante.

Modificar los valores de giro

Puede verificar los valores de giro actuales del siguiente modo:

$ cat /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/trip_point_{0,1,2}_temp
# results
60000
70000
80000
60000
70000
80000
60000
70000
80000
60000
70000
80000
Sí, son otros valores de giro llamados 3, 4, 5. Pero puedes ignorarlos ya que no los usamos. Lo mismo con thermal_zone4. Como podemos ver, cada valor objetivo en cada zona térmica tiene el mismo valor 60000, 70000, 80000. Eso significa que en cada valor objetivo se activa a 60 ° C, 70 ° C, 80 ° C. Cada valor de giro es editable escribiendo un valor personalizado para cada archivo de valor objetivo. Por ejemplo, si desea configurar el valor objetivo 1 para que se active a los 30 ° C, puedes escribir un valor para éste.
$ echo 30000 | sudo tee /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/trip_point_0_temp
$ cat /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/trip_point_0_temp
# results
30000
30000
30000
30000
A continuación, el ventilador empezará a girar a 30 °C. Si deseas hacerlo automáticamente, tendrás que escribir algo de código en el archivo /etc/rc.local. Copia y pega el siguiente código:
# Target temperature: 30°C, 50°C, 70°C
TRIP_POINT_0=30000
TRIP_POINT_1=50000
TRIP_POINT_2=70000
 
echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone1/trip_point_0_temp
echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone2/trip_point_0_temp
echo $TRIP_POINT_0 > /sys/devices/virtual/thermal/thermal_zone3/trip_point_0_temp
 
echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp
echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone1/trip_point_1_temp
echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone2/trip_point_1_temp
echo $TRIP_POINT_1 > /sys/devices/virtual/thermal/thermal_zone3/trip_point_1_temp
 
echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_2_temp
echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone1/trip_point_2_temp
echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone2/trip_point_2_temp
echo $TRIP_POINT_2 > /sys/devices/virtual/thermal/thermal_zone3/trip_point_2_temp
Reinicia y comprueba que los cambios se hayan aplicado.

Modificar la velocidad del ventilador

Puedes comprobar la escala de la velocidad actual del ventilador con el siguiente comando:

$ cat /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed
# results
0 120 180 240
Puedes ajustar estos valores escribiendo un valor fijo en el archivo. Si quieres que tu ventilador sea más agresivo, puede usar el siguiente comando:
$ echo "0 204 220 240" | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed
# results
0 204 220 240
Esto hace que un ventilador gire al 80% (204 == 80 * 255 * 0.01) cuando la temperatura alcance el valor objetivo 0. Cuando la velocidad del ventilador se ajuste nuevamente, aparecerá un mensaje del kernel, puedes averiguarlo usando el comando dmesg:
$ dmesg
# results
...
[ 1998.019631] hwmon hwmon0: fan_speeds : set_fan_speed [0 204 220 240]
Si deseas hacerlo automáticamente, copia y pega las siguientes líneas en el archivo /etc/rc.local:
# Target fan speed (PWM): 0, 204, 220, 240
echo "0 204 220 240" > /sys/devices/platform/pwm-fan/hwmon/hwmon0/fan_speed
Reinicie y comprueba si los cambios se han aplicado.

Emular la temperatura

No tienes por qué poner al límite tu ODROID para probar la nueva configuración. La configuración del ventilador se puede verificar con estos archivos.

$ ls -l /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/emul_temp
# results
--w------- 1 root root 4096 Apr 11 01:55 /sys/devices/virtual/thermal/thermal_zone0/emul_temp
--w------- 1 root root 4096 Apr 11 02:05 /sys/devices/virtual/thermal/thermal_zone1/emul_temp
--w------- 1 root root 4096 Apr 11 02:05 /sys/devices/virtual/thermal/thermal_zone2/emul_temp
--w------- 1 root root 4096 Apr 11 02:05 /sys/devices/virtual/thermal/thermal_zone3/emul_temp
Estos archivos modificables nos permiten simular cualquier valor de temperatura para fingir la temperatura real de la placa y finalmente hacer que el ventilador responda según la configuración. Si quiere configurarla a 85 °C, simplemente escríbelo.
$ echo 85000 | sudo tee /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/emul_temp
# results
85000
Verifica si los cambios han tenido efecto:
$ cat /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/temp
# results
85000
85000
85000
85000
Si quieres volver a la normalidad, escribe 0:
$ echo 0 | sudo tee /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/emul_temp
# results
0 
$ cat /sys/devices/virtual/thermal/thermal_zone{0,1,2,3}/temp
# results
30000
30000
30000
29000
Esto es muy útil para que compruebes la nueva velocidad del ventilador y la configuración del valor objetivo que acaba de fijar.

Modo totalmente manual de controlar la velocidad del ventilador

Este es el método más sistemático para ajustar la velocidad del ventilador de forma manual:

# Set fan to manual mode
$ echo 0 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/automatic
 
# Set speed to 100%
$ echo 255 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/pwm1
El ventilador ignora los archivos con las escalas (valores objetivos y velocidad del ventilador) y se ejecuta constantemente a la misma velocidad, también puedes hacerlo automáticamente. Edita el archivo /etc/rc.local y reinicia para comprobar si se han aplicado los cambios. El siguiente ejemplo hace que el ventilador siempre se ejecute a máxima velocidad:
# Fix fan speed
echo 0 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/automatic
echo 255 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon0/pwm1
Además, puedes escribir una aplicación usando el ventilador.

Ejemplos de scripts para controlar el ventilador

Hay algunos ejemplos de script muy buenos que deberías consultar. https://forum.odroid.com/viewtopic.php?f=77&t=30743 https://forum.odroid.com/viewtopic.php?f=146&t=30745

Referencias

https://forum.odroid.com/viewtopic.php?f=52&t=16308 https://forum.odroid.com/viewtopic.php?f=99&t=30675

El texto original lo puedes encontrar en la página wiki de ODROID y así poder controlar manualmente el ventilador del ODROID-XU4, https://wiki.odroid.com/odroid-xu4/application_note/manually_control_the_fan#fully_manual_way_to_control_the_fan_speed.

Be the first to comment

Leave a Reply