diff --git a/hosts/srv-core/hardware.nix b/hosts/srv-core/hardware.nix index b418ddc..3b0c9c8 100644 --- a/hosts/srv-core/hardware.nix +++ b/hosts/srv-core/hardware.nix @@ -42,4 +42,33 @@ }; }; }; + + # Ensure pwm2_enable is set to 2 (automatic) before fancontrol starts, + # because the IT8613E can't transition 0 -> 1 (manual) directly, + # but can do 2 -> 1 which fancontrol requires. + systemd.services.fancontrol-pwm-init = { + description = "Initialize IT8613E PWM mode for fancontrol"; + before = [ "fancontrol.service" ]; + requiredBy = [ "fancontrol.service" ]; + serviceConfig.Type = "oneshot"; + script = "echo 2 > /sys/devices/platform/it87.2608/hwmon/hwmon*/pwm2_enable"; + unitConfig.ConditionPathExists = "/sys/devices/platform/it87.2608"; + }; + + hardware.fancontrol = { + enable = true; + config = '' + INTERVAL=5 + DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/it87.2608 + DEVNAME=hwmon1=coretemp hwmon2=it8613 + FCTEMPS=hwmon2/pwm2=hwmon1/temp1_input + FCFANS=hwmon2/pwm2=hwmon2/fan2_input + MINTEMP=hwmon2/pwm2=70 + MAXTEMP=hwmon2/pwm2=100 + MINSTART=hwmon2/pwm2=35 + MINSTOP=hwmon2/pwm2=25 + MINPWM=hwmon2/pwm2=0 + MAXPWM=hwmon2/pwm2=255 + ''; + }; }