Last Updated on 2019-01-17.
[:en]Dell servers in general are optimized for high performance and not to be quiet.
However, in silent office environments, the fan noise can be annoying, especially the ones in 1U cases.
Even if you do not need the server’s full power all the time, the fans run way too fast in my opinion.
Possible Solutions
Replacing or even removing the OEM fan hardware is not recommended. The current fans, e.g. in an R430, must have 6 pins, so cannot be replaced by other fans in a simple way, and the server logs and dashboards would be full of critical errors. In many cases you would also lose warranty etc.
A safer way would be to optimize the fans via software.
The official recommended steps would be to connect to your iDRAC controller’s web interface and set a temperature profile which reduces the fan’s RPM.
Unfortunately, the minimum % RPM via web interface is limited to 11 % upwards, which might still be too high.
“Raw” solution
We want to set the fan RPM to 1 %, which can only be done via IPMI.
The setting is not saved permanently and has to be re-set after restarting iDRAC.
- Download Dell OM BMC Utility (Windows) which contains IPMITool.
- Extract it to e.g. c:\OpenManage, then run BMC setup from there. Note: You do not have to install it on your server, you can also use any server which is connected to your LAN (same LAN where your server’s LAN port and iDRAC port reside)
- Open an Admin CMD window and change to ipmitool.exe folder, e.g. c:\program files (x86)\dell\sysmgmt.
- First, activate manual fan control:
-
ipmitool -I lanplus -H yourIdracIp -U root -P yourIdracPw raw 0x30 0x30 0x01 0x00
-
- Then reduce the fan’s RPM value to e.g. 1 %:
-
ipmitool -I lanplus -H yourIdracIp -U root -P yourIdracPw raw 0x30 0x30 0x02 0xff 0x01
The last value is a hexadecimal value for the RPM in percent. E.g. if you use 0x0f, you will hear the fan noise increase.
-
If you encounter error messages:
- Make sure you have enabled IPMI remote management within your iDRAC config.
- Make sure you can ping your iDRAC IP.
- Check your iDRAC login credentials, especially special characters can be error-prone.
Note: Always check the temperature behavior after manually controlling the fans!
There are also some scripts available to simplify this.
Update: Added a simple PowerShell script which can be run via Task Scheduler to check temperature and fans:
$sensorName="Exhaust Temp" $tempThreshold="34" $ipmiExe = 'C:\Program Files (x86)\Dell\SysMgt\bmc\ipmitool.exe' $ipmiParams = @("-Ilanplus", "-H10.1.2.34", "-UfanControl", "-PpwFanControl") $ipmiGet = @("sdr", "type", "temperature") $ipmiSet = @("raw", "0x30", "0x30") $ipmiSetManual = @("0x01", "0x00") $ipmiSetLow = @("0x02", "0xff", "0x26"); $ipmiSetHigh = @("0x02", "0xff", "0x64"); #https://www.hexadecimaldictionary.com/ #20% = 0x14 #30% = 0x1e #32% = 0x20 #37% = 0x25 #100% = 0x64 "Checking server temperature..." $val = & $ipmiExe $ipmiParams $ipmiGet $val = $val | Select-String $sensorName $val = "" + $val #tostring $val = $val.Split('|')[4] $val = $val.Trim().Split(' ')[0] "Current degrees: " + $val & $ipmiExe $ipmiParams $ipmiSet $ipmiSetManual if ($val -gt $tempThreshold) { "too high -> increasing fan rpm"; & $ipmiExe $ipmiParams $ipmiSet $ipmiSetHigh } else { "OK -> using low fan rpm" & $ipmiExe $ipmiParams $ipmiSet $ipmiSetLow }
To create a scheduled Windows task for the script, use “powershell” as command and e.g. “-f c:\fans.ps1” as argument, and run it every 5 – 15 minutes.
Other matters
In my case, one of the ~6 server fans (FAN1 port) indeed had to be replaced, it just made a more annoying noise than the other fans like CPU/RAM fans, even with same RPM. For testing, you can simply swap the identically constructed fans within the unit to see which one is faulty.
Replacement
In my case, the fans still were too loud, so I replaced them.[:]