Dell R720xd fan speed control

I run R720xd in my home lab setup. The very first thing was to resolve fan speed crisis, as default +16k rpm results in unlivable conditions.

This might also be suitable for other 12th-generation Dell PowerEdge servers, like:
T620, R220, R320, R420, R520, R620, R720, R820, R920, M420, M520, M620, M820, C6220.

This can be relatively easily achieved via IPMI control.
For this, you will need to set up IDRAC:

  • Enable IDRAC passthrough to OS - This will allow you to connect to Idrac from within the operating system.
    Overview -> iDRAC Settings -> Network -> OS to iDRAC Pass-through enable USB NIC
  • You should now have a new network interface in your operating system. For me, it was auto-detected and I did not need to tinker with it.
idrac: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.0.2  netmask 255.255.255.0  broadcast 169.254.0.255
        inet6 fe80::7a45:c4ff:fef4:1e56  prefixlen 64  scopeid 0x20<link>
        ether 78:45:c4:f4:1e:56  txqueuelen 1000  (Ethernet)
        RX packets 15861  bytes 8876316 (8.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16563  bytes 5894357 (5.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

For fan control, you will need to send 2 commands,

  • The first one is to enable manual fan control,
  • The second is to set the fan speed.

  • Setting fans to manual control:
ipmitool -I lanplus -H 169.254.0.1 -U root -P yourpasswordhere raw 0x30 0x30 0x01 0x00
  • Set fan speed
ipmitool -I lanplus -H 169.254.0.1 -U root -P yourpasswordhere raw 0x30 0x30 0x02 0xff {FAN_SPEED_BYTE}

Where FAN_SPEED_BYTE is hex byte from 0x00 to 0x40 or decimal value from 0 to 64.

Example: Set the fan speed to value 16 (0x10 in hex) or about 10%

ipmitool -I lanplus -H 169.254.0.1 -U root -P yourpasswordhere raw 0x30 0x30 0x02 0xff 0x10

Example: Set the fan speed to 32 (0x20 in hex), or about 50%

ipmitool -I lanplus -H 169.254.0.1 -U root -P yourpasswordhere raw 0x30 0x30 0x02 0xff 0x20

Fan speed after power loss

In case of power loss, if your server is configured to boot up automatically, the default fan behavior will be re-enabled.

If you want to avoid these situations, you can set up automatic fan speed configuration on OS boot.

For this, I have a simple script /usr/local/bin/idrac-setfans :

#!/bin/bash

ipmitool -I lanplus -H 169.254.0.1 -U root -P yourpasswordhere raw 0x30 0x30 0x01 0x00 >/dev/null 2>&1
ipmitool -I lanplus -H 169.254.0.1 -U root -P yourpasswordhere raw 0x30 0x30 0x02 0xff 0x${1:-10} >/dev/null 2>&1

Note: This script takes in 1 parameter, whose value should be from 0 to 64.
For example: idrac-setfans 16

Add execute permission to this script

chmod +x /usr/local/bin/idrac-setfans

Set it to run once on boot by adding crontab entry on @reboot to any user.

@reboot /usr/local/bin/idrac-setfans 16

All done 🙂