🛠 Surveillance thermique et fréquence CPU
Objetivos
Instrumentar el ODROID-C4 para un servicio 24/7: leer las zonas térmicas del kernel mainline, observar los niveles OPP reales del S905X3 (la tabla SM1 se detiene en 1,908 GHz, no en los 2,0 GHz del marketing), ajustar el governor y verificar la frecuencia realmente alcanzada por su imagen — algunas limitan la placa a 1,5 GHz por defecto. Consumo de referencia: ≈ 1,8 W en reposo, ≈ 3,64 W bajo estrés de CPU con el disipador pasivo incluido.
Material
- ODROID-C4 con el disipador pasivo original (40×32×10 mm), obligatorio bajo carga
- Caja cerrada: prever un flujo de aire (el umbral oficial de throttling no está documentado)
- Armbian current;
sudo apt install -y linux-cpupower stress-ng - Riel VDDCPU: regulador PWM MP8756GD, 0,721–1,022 V — nunca forzar un OPP más allá sin adaptar el regulador
Código completo
#!/usr/bin/env bash
# suivi_c4.sh : temperature + frequence, echantillon / 2 s
sudo apt install -y linux-cpupower stress-ng
list { for z in /sys/class/thermal/thermal_zone*/temp; do
printf '%s %d °C\n' "$(dirname $z | xargs basename)" \
$(( $(cat $z) / 1000 )); done; }
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
# -> 1000000 1200000 1404000 1500000 1608000 1704000 1800000 1908000
sudo cpupower frequency-set -g performance
stress-ng --cpu 4 --timeout 120s &
for i in $(seq 1 30); do
list | tr '\n' ' '
echo "| $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) Hz"
sleep 2
done
wait
cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state # temps par palier
Verificación esperada
Durante el estrés de 120 s, la frecuencia actual sube hacia el nivel superior disponible (1,908 GHz en una imagen mainline completa, 1,5 GHz si la imagen está limitada — el archivo time_in_state lo demuestra). La temperatura sube y luego se estabiliza con el disipador; no hay apagados ni reinicios. En reposo, scaling_cur_freq vuelve hacia 1,0 GHz con el governor powersave, en coherencia con la medición de consumo a ≈ 1,8 W.
Errores frecuentes
- Añadir un OPP « 2,0 GHz » copiado de Internet: los OPP mainline se detienen en 1,908 GHz @ 950 mV; más allá, sin subir la tensión del regulador, se producen reinicios inmediatos.
- Dejar el governor
performanceen verano dentro de una caja cerrada: para un box silencioso,powersave(oschedutil) es suficiente para el uso diario. - Confundir las zonas térmicas (SoC vs regulador): listar
thermal_zone*/typepara identificar cada sonda. - Probar sin disipador: la placa se calienta rápidamente bajo carga multinúcleo; la refrigeración pasiva es el diseño original.
- >
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.pyPythonbouton-gpio.pyPythoncapteur-i2c.shBashsurveillance-temperature.shBashcapteur-dht11.pyPythonservo-pwm-sysfs.shBash