Fan Threshold
Identity
Host
Network
Resources
Depends On
NoneDepended On By
NoneA systemd oneshot service on jack that sets Noctua-safe fan thresholds in the SuperMicro BMC at boot. This prevents the BMC from interpreting Noctua's low RPM as a fan failure and cycling all fans between 100% and idle.
The Problem
SuperMicro server boards expect high-RPM server fans (3,000–10,000+ RPM). Noctua fans are designed for silence and typically idle at 280–500 RPM. When a fan's RPM drops below the BMC's Lower Critical threshold, the BMC interprets it as a stalled fan and ramps everything to 100% duty. Once at full speed the fans exceed the threshold, the BMC backs off, the fans slow down, and the cycle repeats — every few seconds, indefinitely.
On the M12SWA-TF, the default Lower Critical threshold is 280 RPM. The Noctua NF-A9 92mm fans (FANA/FANB) idle right at that boundary, triggering constant critical events.
The Fix
The fan-threshold.service runs at boot and uses ipmitool to lower the Lower Critical threshold from 280 RPM to 50 RPM on all six active fan sensors. It also clears the IPMI System Event Log (SEL) to prevent overflow — a full SEL can cause the BMC to lock fans at 100% duty even after thresholds are corrected.
[Unit]
Description=Set Noctua-safe fan thresholds in IPMI BMC
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/ipmitool sensor thresh FAN1 lcr 50
ExecStart=/usr/bin/ipmitool sensor thresh FAN2 lcr 50
ExecStart=/usr/bin/ipmitool sensor thresh FAN4 lcr 50
ExecStart=/usr/bin/ipmitool sensor thresh FAN6 lcr 50
ExecStart=/usr/bin/ipmitool sensor thresh FANA lcr 50
ExecStart=/usr/bin/ipmitool sensor thresh FANB lcr 50
ExecStart=/usr/bin/ipmitool sel clear
RemainAfterExit=yes
[Install]
WantedBy=multi-user.targetBoard-Specific Notes
The M12SWA-TF only supports setting the Lower Critical (lcr) threshold — the Lower Non-Recoverable and Lower Non-Critical thresholds are not available on this board. The BMC displays the 50 RPM setting as 0.000 due to sensor granularity rounding, but it works correctly.
The BMC runs in Optimal fan mode (0x02), which adjusts duty cycle proportionally based on temperature. With lowered thresholds, fans idle at 280–420 RPM and the BMC drives duty cycles around 20–30% at normal operating temperatures.
SEL Overflow Issue
During initial setup, the fan cycling generated thousands of assert/deassert events that filled the SEL (4,096 entry limit). The overflowed SEL caused the BMC to lock all fans at 100% duty even after thresholds were corrected. Clearing the SEL and performing a BMC warm reset (ipmitool bmc reset warm) resolved this. The service now clears the SEL at every boot as a preventive measure.

