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

About: Ryan Parker

I'm a former captain of the Cyber Defense team, Current Infrastructure Security Specialist. I also have a side job helping small to medium business with anything technology doing everything imaginable. One of my hobbies is building out infrastructures for myself, friends, and clients. I current maintain a homelab with about 2TB of RAM, 180+ TB of storage, tons of CPU cores, and 100gbit networking backbone.


13 thoughts on “iDrac 7 and 8: Lower fan noise on Dell Servers”

      1. 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.

    1. Perhaps there is a commit command somewhere? I just have a cronjob do it at boot with a known ssh key

      1. 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

          1. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *