NZXT Kraken X52 su Linux

26 Luglio 2017

La famiglia di dissipatori a liquido AIO Kraken si rinnova e guadagna stile e funzionalità. Stile perchè l'effetto "infinito" dei LED RGB a bordo della pompa fa colpo ed è personalizzabile nei colori, negli effetti visivi e nelle transizioni; funzionalità grazie al nuovo software di gestione CAM, che permette, oltre alle personalizzazioni citate in precedenza, di regolare la velocità delle ventole applicando profili predefiniti, oppure creare quello che si adatta meglio alle nostre esigenze. Anche la velocità della pompa è regolabile, sempre in funzione della temperatura della CPU, tramite curve o programmi personalizzati. Tutto molto bello ma: senza il software CAM le ventole sono sempre sparate al 100% e così la pompa (credo, non ho modo di verificare). Non è possibile cambiare colore ai led e tanto meno gestire gli effettivi visivi. Che problema c'è? Basta installare il software...che però è ufficialmente compatibile solo con Windows. Per fortuna la community ha sviluppato un software scritto in python che permette di controllare manualmente la velocità delle ventole e della pompa! Un ottimo punto di partenza dal quale sviluppare qualcosa di automatico, che regoli la velocità delle ventole in base alla temperatura del processore, proprio come il CAM ufficiale. Iniziamo con il primo passo.

Installare camctl


Come descritto nell'introduzione, camctl è un programma scritto in python che permette, invocandolo da terminale, la regolazione della velocità di ventole e pompa per i modelli X42, X52 e X62; i tre modelli hanno lo stesso hardware, ma differiscono solo per la grandezza del radiatore, quindi questo procedimento dovrebbe essere valido per tutti.
Il programma si scarica comodamente dal repository di GitHub dell'autore: leaty/camctl. Come indicato nel file readme, ci sono delle dipendenze da soddisfare per far funzionare camctl: avere l'interprete python installato ed il relativo modulo pyusb. Una volta installato i componenti richiesti, è possibile installarlo utilizzando lo script sh fornito, semplicemente lanciando:
sudo ./install.sh

L'utilizzo è molto semplice: invocando camctl possiamo specificare l'opzione -f per regolare la velocità delle ventole e -p per la pompa. Si indica poi la velocità desiderata con un valore percentuale, da un minimo di 10 ad un massimo di 100. Es.: voglio impostare la velocità delle ventole al 50%.
sudo camctl -f 50

Impostare la velocità delle ventole/pompa in base alla temperatura della CPU


Avere una regolazione manuale è già qualcosa. Almeno le orecchie riposano, visto che a default, senza la regolazione del software CAM originale, le ventole vanno al 100%. Il massimo però è avere una regolazione dinamica e automatica che aumenti o abbassi il regime di rotazione delle ventole (o anche della pompa) in maniera automatica a seconda della temperatura della CPU. Per farlo ho realizzato questo semplice quanto rozzo script sh. Vediamo in dettaglio cosa fa.

while true
do
var=$(sensors | grep Physical | cut -c18-19)
sudo camctl -f $var
sleep 5
done
Un ciclo while, sempre true, ripete ogni 5 secondi (sleep 5) due comandi bash. Il primo invoca il comando sensors, installabile tramite il pacchetto lm-sensors, che ci mostra la temperatura della CPU: grep e cut eliminano tutto il testo non necessario, assegnando alla variabile var il valore numerico di temperatura della CPU (due cifre, senza decimali)
Il secondo comando invoca camctl e imposta la velocità delle ventole, che non è altro che la temperatura della CPU (Sì lo so che sei perplesso. Ne parliamo più sotto).
Per avviare lo script con l'avvio del PC basta solamente inserire questa riga nel crontab:
@reboot /path/dello/script >/dev/null 2>&1


Ottimizzazioni e curve di funzionamento


Ovviamente, OVVIAMENTE, impostare la velocità delle ventole o della pompa uguale alla temperatura della CPU non è un funzionamento ottimale. In questo modo ad un temperatura di 70 °C corrisponderebbe (rapporto 1:1) una velocità delle ventole del 70%, quando invece sarebbe il caso averle al 100%. Si può quindi studiare una curva caratteristica e impostare velocità a range di temperature, anche diversi, semplicemente confrontando le temperature tramite cicli if. Come prima versione il risultato raggiunto è più che ottimo; è sicuramente interessante studiare il caso, per ottimizzare rumore e temperature.


X
THE END