Aller au contenu

Fan Control

os-fanctl · Matériel du boîtier

Lit et enregistre chaque température et chaque ventilateur de l'appliance, et pilote les ventilateurs d'une puce Super I/O que FreeBSD ne sait pas piloter, en les rendant au matériel dès que quelque chose se passe mal.

Dans le menu

  • Avec os-xgs-npu installé : XGS: Fan Control
  • Sans os-xgs-npu : System: Fan Control
Fan Control dans l'interface web
Sa page dans l'interface web, en anglais.

FreeBSD n'offre aucun moyen de régler le rapport cyclique d'un ventilateur sur une puce Super I/O : chaque sysctl enregistré par le pilote ncthwm(4) est en lecture seule. Le plugin fournit un petit utilitaire en C, compilé sur le pare-feu par son propre compilateur, qui écrit les registres de la puce et ne fait rien d'autre.

Il trouve les capteurs de température en demandant au noyau quels nœuds sysctl sont des températures ; il lit donc aussi du matériel sur lequel il n'a jamais été testé. Sur la Sophos XGS 3300, il lit les capteurs de la carte elle-même — le processeur, la puce du coprocesseur et l'air d'admission — ainsi que les deux ventilateurs, par un outil qu'installe os-xgs-npu. Là, les ventilateurs sont surveillés, pas pilotés : la carte ne donne à l'hôte aucun registre pour les régler.

Rien n'est piloté après l'installation. Un canal n'est piloté que si son plancher — le rapport cyclique le plus bas auquel son ventilateur tourne encore — a été mesuré sur cette machine même ou s'il est maintenu fixe à 100 %, et si son ventilateur indique qu'il tourne. Chaque écriture est relue ; en cas de désaccord, les ventilateurs sont rendus au matériel et le plugin s'arrête.

Le pilotage des ventilateurs a été testé sur une seule machine, une ancienne Sophos XG 330 rev 2 avec un Nuvoton NCT6779D, sous OPNsense 26.7.4_1.

Fonctions

  • Chaque capteur

    Les températures sont trouvées à partir des déclarations du noyau lui-même, pas d'une liste de noms de pilotes. La page montre chacune avec son minimum, sa moyenne et son maximum sur la durée choisie, et chaque ventilateur avec sa vitesse.

  • Un relevé, chaque minute

    Le minimum, le maximum et la moyenne pondérée dans le temps sur la dernière heure, le dernier jour, la dernière semaine et le dernier mois, et le temps passé au-dessus de chaque échelon d'une échelle fixe. Un échantillon coûte 1,4 ms et le relevé reste sous 503 KiB.

  • Ce que rapporte plus de ventilation

    À partir de paires avant-après autour de vrais changements de rapport cyclique, il estime combien de degrés rapporte plus de ventilation, et le dit quand l'effet est plus petit que l'arrondi des capteurs.

  • Six conditions avant toute écriture

    La bonne puce, une entrée de la table qui autorise le pilotage, l'état d'origine des ventilateurs enregistré, un plancher mesuré ou un régime fixe à 100 %, un ventilateur qui tourne et des températures lisibles — toutes revérifiées avant chaque décision.

  • Retour au matériel à chaque sortie

    Un arrêt propre, une erreur, un signal, le watchdog, un ventilateur bloqué, une relecture en échec, la température de panique et la suppression du paquet se terminent tous par une restauration.

  • Widget du tableau de bord

    Les ventilateurs et chaque température sur le tableau de bord.

Installer et mettre à jour

Sur une appliance Sophos XGS, il est fourni avec l'image de xgs-image-builder et démarre en mode surveillance seule : il n'écrit sur aucune puce de ventilateurs tant qu'aucune courbe n'est choisie. Ses nouvelles versions s'installent à la main depuis l'onglet Plugins de XGS: Updates ; rien ne se met à jour tout seul. Ailleurs, lancez install/install.sh depuis une copie du dépôt ; le relancer conserve les réglages et les mesures de plancher, et son self-update.py installe une version plus récente. La page est System: Fan Control, ou XGS: Fan Control quand os-xgs-npu est installé.

Limites, et ce qui n'est pas encore testé

  • Le pilotage des ventilateurs n'est autorisé que sur la Sophos XG 330 rev 2, où il a été éprouvé sur la machine. La XGS 136 est en lecture seule pour l'instant, et les autres machines sont lues et signalées jusqu'à ce que leurs planchers soient mesurés (docs/contributing-fans.md).
  • Sur la XGS 3300, les ventilateurs ne peuvent pas être pilotés : la carte garde sa propre courbe, sans aucun registre que l'hôte puisse écrire.

Dépôt

Première version: 2026-10-16

os-fanctl Versions