iDrac 7 and 8: Lower fan noise on Dell Servers
I have a Dell R720xd and its default fan curve is… aggressive. Here is how i found to lower the fan speeds so its not a constant vacuum cleaner in my living room.
Set fan speed properties via iDrac
Enable SSH on iDrac. Connect then connect to it and run:
racadm set system.thermalsettings.FanSpeedOffset 255 racadm set system.thermalsettings.ThirdPartyPCIFanResponse 0 racadm set system.thermalsettings.ThermalProfile 2
Note: This sometimes does sometimes not survive an idrac power off or system reboot.
One way to solve this is to have a systemd service that applies this on linux using the racadmin
command. Create a systemd service file in /etc/systemd/system/idrac-fan.service
with the following contents:
[Unit] Description=Fan speeds curve racadm set #Requires= #After= [Service] Type=oneshot ExecStart=racadm set system.thermalsettings.FanSpeedOffset 255 ExecStart=racadm set system.thermalsettings.ThirdPartyPCIFanResponse 0 ExecStart=racadm set system.thermalsettings.ThermalProfile 2 [Install] WantedBy=multi-user.target
Do a systemctl daemon-reload
and then systemctl enable idrac-fan.service
to have it run at startup. Thanks NeWT for the service file!
On windows you can do something similar with the Dell-iDRACTools for you server. you can get them from dells website. Make a scheduled task that runs at startup with the commands:
#/bin/powershell racadm set system.thermalsettings.FanSpeedOffset 255 racadm set system.thermalsettings.ThirdPartyPCIFanResponse 0 racadm set system.thermalsettings.ThermalProfile 2
Note: Make sure to make this file read only after saving it! it also might be a good idea to sign it so nobody tampers with it.
Lastly, if this system is running as an appliance like VMware ESXi, you can have a vm run a cron job or scheduled task that uses ssh to connect and run a command on idrac at reboot. When you do this, you will either need a key pair generated and added to an idrac’s user or use an inline password. the base commands would be
ssh USER@HOST 'racadm set system.thermalsettings.FanSpeedOffset 255' ssh USER@HOST 'racadm set system.thermalsettings.ThirdPartyPCIFanResponse 0' ssh USER@HOST 'racadm set system.thermalsettings.ThermalProfile 2'
Manual fan speed setting
If you want to go full manual, enable IPMI on iDrac. Then use IPMI tool to set the fan speed manually. I would not recommend this though as it could lead to hardware failure.
ipmitool -I lanplus -H SERVERS_IP_HERE -U IDRAC_USERNAME -P 'IDRAC_PASSWORD_HERE' raw 0x30 0x30 0x01 0x0
Now set the fan speed to what you want. Make sure you have applied new thermal paste on the CPU’s so they do not overheat. Also make sure to check thermals on nics, PCH, add-in cards, etc as they rely on the chassis fans for cooling.
#20% ipmitool -I lanplus -H SERVERS_IP_HERE -U IDRAC_USERNAME -P 'IDRAC_PASSWORD_HERE' raw 0x30 0x30 0x02 0xff 0x14 #25% ipmitool -I lanplus -H SERVERS_IP_HERE -U IDRAC_USERNAME -P 'IDRAC_PASSWORD_HERE' raw 0x30 0x30 0x02 0xff 0x19 #30% ipmitool -I lanplus -H SERVERS_IP_HERE -U IDRAC_USERNAME -P 'IDRAC_PASSWORD_HERE' raw 0x30 0x30 0x02 0xff 0x1E #50% ipmitool -I lanplus -H SERVERS_IP_HERE -U IDRAC_USERNAME -P 'IDRAC_PASSWORD_HERE' raw 0x30 0x30 0x02 0xff 0x32
Note about the ThirdPartyPCIFanResponse 0
If you are running pcie cards that do not have active coolers on them, this might not be a good idea to disable. What disabling this does is make it so the system ignore thermal readings from any pcie cards no matter the temperature. Things like network cards, graphics cards, host bus adapters, and RAID cards exhibit weird behavior when the overheat or thermal throttle. I would use a laser thermometer to check the thermals of cards if possible or use something like lm-sensors to check temperatures. My rule is if it gets hotter than 75c it is potentially thermal throttling. Strange behavior includes but is not limited to: packet loss on nics, loss of tcp states, hdd disconnects and smart errors, etc. If you have a gpu installed with no active cooler, do not enable this. To enable fan ramping with pcie cards again run the command racadm set system.thermalsettings.ThirdPartyPCIFanResponse 1
There are some other things you could look at in the bios, like disabling turbo boost can lower fan noise as there is not as much heat, setting the power management settings to balanced power or power saving will also lower fan noise at the expense of performance. Things like memory speed dont really effect thermals. Do you have a better solution? Find something that works better? post it so I can add it to the article.
Works with R720 R720xd R520 R620 R730 R730xd R630 R530 R930 server and a Dell Precision R7910. Had to do this for SEO
The ipmitool commands are not being recognized by my iDrac. Why?
ipmitool is a command in linux to control various IPMI’s.
There is also a Windows version that can be downloaded from Dell.
I just installed ipmitool under Windows using this dell Download:
Dell-iDRACTools-Web-WINX64-11.1.0.0-5294_A00.exe
BTW, thank you for the write up! The ipmitool commands also worked on a Dell PowerEdge r930 server and a Dell Precision r7910 workstation.
You have to enable IPMI over IP, it is a check box near the bottom of the network tab under iDrac Settings.
“racadm set system.thermalsettings” is good, but it resets to default after reboot… Anyone knows why?
Perhaps there is a commit command somewhere? I just have a cronjob do it at boot with a known ssh key
I solved it this way:
[Unit]
Description=Fan speeds curve racadm set
#Requires=
#After=
[Service]
Type=oneshot
ExecStart=racadm set system.thermalsettings.FanSpeedOffset 255
ExecStart=racadm set system.thermalsettings.ThirdPartyPCIFanResponse 0
ExecStart=racadm set system.thermalsettings.ThermalProfile 2
[Install]
WantedBy=multi-user.target
What file did you change?
That is a systemd service file, the service manager on linux. save this in /etc/systemd/system/. name it something like idrac-fan.service, systemctl daemon-reload, then systemctl enable idrac-fan.service.
YOU SAVE MY LIFE!!!!!!
working on T320!
Ryan, could you please let me know where exatly to place this config file? Thnaks
Updated the article to be more clear