Power supply units (PSUs) serve as the fundamental energy conversion layer within high density computing environments; however, the management of their thermal profiles is often overlooked. Power supply fan curves represent the programmed mapping between internal component temperatures or load percentages and the resulting rotational speed of the cooling fan. In modern data center architecture, where thermal-inertia determines the efficiency of the cooling stack, these curves are critical. A poorly configured curve leads to either premature hardware degradation due to heat soak or unnecessary acoustic pollution and power overhead. The implementation of semi-passive modes, or “Zero RPM” states, allows fans to remain stationary during low-utilization periods. This reduces dust ingress and mechanical wear but requires precise threshold data to prevent localized heat pockets. This manual details the audit and configuration of these parameters to ensure maximum throughput and system longevity within the broader infrastructure.
Technical Specifications
| Requirement | Default Port/Operating Range | Protocol/Standard | Impact Level (1-10) | Recommended Resources |
| :— | :— | :— | :— | :— |
| PMBus Connectivity | I2C Address 0x50 – 0x5E | PMBus 1.3 / SMBus | 8 | I2C-capable BMC |
| Thermal Threshold | 35C to 105C range | IEEE 802.3 / NEC | 9 | Industrial Grade Capacitors |
| PWM Signal Duty | 0% to 100% (25kHz) | Proprietary/Intel PSDG | 7 | 4-Pin PWM Controller |
| Hysteresis Window | 2C to 8C Variance | Control Logic Fixed | 6 | Non-volatile Flash |
| MTBF Rating | 100,000+ Hours | MIL-HDBK-217F | 10 | N+1 Redundancy |
The Configuration Protocol
Environment Prerequisites:
Before modifying power supply fan curves, the administrator must ensure the system meets the following requirements:
1. Access to the Baseboard Management Controller (BMC) via IPMI 2.0 or Redfish API.
2. Installation of the i2c-tools and lm-sensors packages on the host operating system.
3. Firmware support for PMBus version 1.2 or higher to ensure command compatibility.
4. Root or Administrator level permissions for modifying kernel parameters in /sys/class/hwmon/.
5. A verified backup of the current EEPROM state to allow for idempotent recovery in case of register corruption.
Section A: Implementation Logic:
The engineering logic behind power supply fan curves rests on the principle of balancing thermal-inertia against mechanical airflow. In a semi-passive configuration, the PWM controller remains at a 0% duty cycle until a specific threshold, typically 40% load or 50C internal temperature, is reached. The encapsulation of this data within the PMBus protocol allows the system to communicate real-time power draw and thermal status to the OS. The primary goal is to minimize the latency between a temperature spike and fan acceleration while avoiding “hunting” behaviors. Hunting occurs when the fan rapidly oscillates between on and off states; this is mitigated through the implementation of a hysteresis loop, where the “turn-off” temperature is significantly lower than the “turn-on” temperature.
Step-By-Step Execution
1. Identify the PSU I2C Bus Address
Determine the hardware path for the power supply unit by scanning the available I2C buses.
i2detect -y 1
System Note: This command queries the I2C-bus controller to map attached devices. This action allows the kernel to identify the specific addressable payload location for the power supply digital controller.
2. Load Necessary Kernel Modules
Ensure the kernel has the required drivers to interface with the power management bus.
modprobe i2c-dev && modprobe pmbus
System Note: These modules provide the user-space interface needed to communicate with the physical asset. Loading these drivers creates the necessary device nodes in /dev/i2c-* for direct register manipulation.
3. Query Real-Time Thermal and Fan Data
Extract the current operating parameters to establish a baseline for the fan curve.
sensors
System Note: This tool parses the sysfs attributes provided by the hwmon driver. It displays the RPM, voltage, and thermal sensor readouts. If the fan is in a semi-passive state, the RPM should read 0 while temperatures remain below the threshold.
4. Define the Semi-Passive Threshold
Modify the fan start-up threshold by writing to the specific PMBus register.
i2cset -y 1 0x58 0x3B 0x4B w
System Note: This command sets the FAN_CONFIG_1_2 register. The payload transmitted changes the hardware-level logic for when the fan initiates rotation. Incorrect values here can lead to thermal shutdown if the threshold is set above the component safety limits.
5. Configure the Fan Slope Logic
Set the ramp-up speed per degree of temperature increase above the baseline.
echo 1 > /sys/class/hwmon/hwmon2/pwm1_enable
echo 150 > /sys/class/hwmon/hwmon2/pwm1
System Note: Manual override of the PWM signal allows for testing the fan responsiveness. Setting pwm1_enable to “1” switches the controller from autonomous firmware logic to manual software-defined logic; this permits precise tuning of the curve’s gradient.
6. Verify Hysteresis and Stability
Monitor the system under load to ensure the fan does not cycle rapidly.
watch -n 1 “sensors”
System Note: Observation of the thermal delta during stress tests is vital. We are looking for a smooth transition as the fan engages. Any sign of signal-attenuation in the PWM line will manifest as erratic RPM fluctuations in the log output.
Section B: Dependency Fault-Lines:
Configurations and modifications to power supply fan curves are susceptible to several technical bottlenecks. A common failure point is the mismatch between PMBus revisions; newer version 1.3 units may not interpret commands from older version 1.1 controllers correctly. Furthermore, mechanical bottlenecks such as high static pressure resistance in the chassis can render a low-RPM curve ineffective, leading to rapid heat accumulation. Logic-level conflicts also occur when the BMC and the local OS both attempt to control the same fan registers simultaneously. This concurrency issue results in unpredictable fan behavior and potential “packet-loss” within the SMBus architecture, requiring a clear hierarchy of control to be established in the system bios.
THE TROUBLESHOOTING MATRIX
Section C: Logs & Debugging:
When a power supply fan fails to follow the assigned curve, the first point of audit is the dmesg output. Search for strings such as “SMBus timeout” or “I2C write failed”. Physical fault codes are often indicated by the PSU’s rear LED; a blinking amber light typically denotes a fan speed out of range error.
For deep log analysis, inspect /var/log/syslog or use journalctl -u ipmievd. Look for events related to “Threshold Crossing”. If the sensor readout shows 0C or 255C, this indicates a sensor disconnection or a failure in the encapsulation of the thermal data packet. In such cases, check the physical 4-pin PWM connector for pin-out continuity. If the fan spins at 100% regardless of the curve, the PWM signal wire likely has high signal-attenuation or is grounded, causing the controller to default to a fail-safe maximum cooling mode.
OPTIMIZATION & HARDENING
Performance Tuning:
To maximize thermal efficiency, the fan curve should be tuned to match the ambient intake temperature of the data center. By reducing the RPM gradient during the first 10 degrees above the semi-passive threshold, administrators can decrease the secondary power draw of the fans, improving the overall PUE (Power Usage Effectiveness) of the rack. Using a PID (Proportional-Integral-Derivative) control loop instead of a simple linear slope can further reduce thermal oscillation.
Security Hardening:
The interface for power supply fan curves, specifically the IPMI and I2C paths, must be secured. Ensure that the IPMI over LAN is disabled or protected by a strong password and isolated on a management VLAN. This prevents malicious actors from setting the fan thresholds to 0 under high load, which would lead to a physical denial of service through component meltdown. Furthermore, the sysfs paths for fan control should have restricted permissions, typically chmod 600, to prevent non-privileged users from manipulating thermal limits.
Scaling Logic:
In large-scale deployments, managing power supply fan curves individually is not feasible. Use orchestration tools like Ansible or SaltStack to push idempotent configuration files to the Baseboard Management Controllers. This ensures that every PSU in an N+1 or N+N redundant cluster operates with identical thermal characteristics, preventing uneven heat distribution across the chassis and ensuring consistent throughput in the cooling aisles.
THE ADMIN DESK
How do I reset my PSU fan curve to factory defaults?
Drain all residual power by unplugging the unit for 60 seconds or use the ipmitool raw 0x06 0x02 command to trigger a hard reset of the BMC and its associated thermal registers.
Why does my fan stay at 0 RPM even under 50% load?
Check the semi-passive threshold data in the firmware. The unit may have a high thermal-inertia rating; if internal temperatures haven’t hit the “trigger” point, the fan will remain stationary to save energy.
Can I monitor PSU fan curves without an OS installed?
Yes; use a dedicated IPMI management console or a hardware-level bus pirate connected to the I2C pins on the motherboard. This allows for out-of-band monitoring of the PMBus payload data.
What is the risk of a steep fan curve?
A steep curve causes high mechanical stress. The sudden torque required to jump from 0 to 3000 RPM can lead to bearing failure. Use a gradual ramp-up to preserve the fan’s motor.
Does fan speed affect the efficiency of the power conversion?
Indirectly, yes. Higher heat increases the internal resistance of the copper windings and capacitors, leading to higher overhead. Maintaining a stable, moderate temperature via a well-tuned curve optimizes conversion efficiency.


