ice

Il controllo della ventola è una funzionalità esposta dal kernel, non un hack. Serve solo sapere che esiste.
Stai girando un modello LLM locale. Il processore sale di temperatura, il firmware attiva il throttling, le frequenze scendono. Il lavoro pesante viene fatto più lentamente proprio quando ti serve il massimo.
La soluzione è forzare la ventola al massimo per tutta la sessione. Su Linux il kernel lo permette già — basta sapere dove mettere le mani.
Il file che controlla tutto#
Il modulo thinkpad_acpi espone il controllo della ventola in un file:
/proc/acpi/ibm/fan
Leggerlo mostra lo stato attuale:
cat /proc/acpi/ibm/fan
status: enabled
speed: 2156
level: auto
commands: level <level> (<level> is 0-7, auto, disengaged, full-speed)
Scriverci cambia il comportamento. Il livello disengaged toglie il controllo al firmware e porta la ventola a piena velocità — circa 800 RPM in più rispetto al massimo controllato. Su sessioni AI sostenute, quei giri fanno la differenza: la temperatura si stabilizza invece di salire lentamente.
Il problema del crash ogni 120 secondi#
Se provi a impostare level disengaged e lasciarlo lì, su Ubuntu il sistema va giù ogni ~120 secondi.
Il BIOS del T480 ha un watchdog termico: se non riceve segnali di vita dal modulo entro ~120 secondi, interpreta il silenzio come un guasto e forza un reset del subsistema thermal.
La soluzione è un loop che rinnova il comando ogni 60 secondi — abbastanza frequente da tenere vivo il watchdog.
La soluzione#
Tre righe:
echo "level disengaged" | sudo tee /proc/acpi/ibm/fan
while true; do
echo "level disengaged" | sudo tee /proc/acpi/ibm/fan > /dev/null
sleep 60
done
Per fermare e ripristinare il controllo automatico:
echo "level auto" | sudo tee /proc/acpi/ibm/fan
Versione comoda — il comando ice#
Per non riscrivere ogni volta, questa funzione va aggiunta al ~/.bashrc:
ice() {
echo "level disengaged" | sudo tee /proc/acpi/ibm/fan > /dev/null
echo "Ventola al massimo — premi Esc per fermare"
while true; do
echo "level disengaged" | sudo tee /proc/acpi/ibm/fan > /dev/null
if read -r -s -n 1 -t 60 key && [[ "$key" == $'\x1b' ]]; then
break
fi
done
echo "level auto" | sudo tee /proc/acpi/ibm/fan > /dev/null
echo "Ventola → auto"
}
# Aggiunge la funzione e ricarica la configurazione
cat ice_alias.sh >> ~/.bashrc && source ~/.bashrc
Da quel momento:
ice— ventola al massimo, refresh automatico ogni 60sEsc— ripristinoauto, sessione terminata
Prerequisito: fan_control=1#
Per funzionare, il modulo thinkpad_acpi deve essere caricato con fan_control=1. Verifica:
cat /sys/module/thinkpad_acpi/parameters/fan_control
Se risponde Y sei a posto. Se risponde N:
# Configurazione permanente
echo "options thinkpad_acpi fan_control=1" | sudo tee /etc/modprobe.d/thinkpad.conf
# Ricarica il modulo nella sessione corrente
sudo rmmod thinkpad_acpi && sudo modprobe thinkpad_acpi fan_control=1
Se rmmod fallisce per dipendenze, basta riavviare — al prossimo boot il modulo si carica già con il parametro corretto.