Since the Dell Servers are in a rack behind me, I wanted to better manage the fan speeds. Dell has an Error temperature, a Warning temperature, and the Ambient temperature. Basically where Dell tries to keep the server temperature. Errors are 2C lower and 47C higher, Warning is 8C lower and 42C higher, and Ambient is 25C. Of course, this means the fans change speed up and down throughout the day. This can be a little annoying if you’re trying to work π As such I did some hunting on line and found how I can manually manage the speeds.
First off, you need to have ipmitool installed. This lets you communicate with the Dell IPMI controller. Next up you need to enable IPMI in the Dell DRAC. It’s in the iDRAC under iDRAC Settings, Network/Security. Check the checkbox to Enable IPMI Over LAN and Apply.
It takes your iDRAC credentials and you then use ipmitool to first get the current temperature, then using hex, set the fan speeds you desire. I have two systems, the Dell R710 and a Dell R410. The options are slightly different between the two.
# /bin/ipmitool -I lanplus -H [R710 ip address] -U [user] \
-P [password] sensor reading 'Ambient Temp'
Ambient Temp | 27
For the R410, you can’t query the line on the ipmitool line. You have to grep it out. Plus three entries are returned in my case but the last one is the important one.
# /bin/ipmitool -I lan -H [R410 ip address] -U [user]
-P [password] sensor | grep 'Ambient Temp' | tail -1
Ambient Temp | 25.000 | degrees C | ok | na | 3.000 | 8.000 | 42.000 | 47.000 | na
I’m really only modifying the fan speeds so the following table will let you make the necessary setting change. I basically don’t want the speeds to get above 50% of max so I didn’t figure out the rest. Maybe later π
R710 Fan speed settings
Speed Setting
13.0k = 100% - 0110:0100 0x64
11.7k = 90% - 0101:1010 0x5A
10.4k = 80% - 0101:0000 0x50
9.1k = 70% - 0100:0110 0x46
7.8k = 60% - 0011:1100 0x3C
6.5k = 50% - 0011:0010 0x32 30C
5.2k = 40% - 0010:1000 0x28 28C
3.9k = 30% - 0001:1110 0x1e 25C
2.6k = 20% - 0001:0100 0x14 22C
1.3k = 10% - 0000:1010 0x0a 12C
0k = 0% - 0000:0000 0x00 10C
For the R410, the fans run a bit faster but use the same settings and percentages.
R410 fan speeds
Speed Setting
18,720 = 100% = 0110:0100 0x64
16,848 = 90% = 0101:1010 0x5A
14,976 = 80% = 0101:0000 0x50
13,104 = 70% = 0100:0110 0x46
11,232 = 60% = 0011:1100 0x3C
9,360 = 50% = 0011:0010 0x32 30C
7,488 = 40% = 0010:1000 0x28 28C
5,616 = 30% = 0001:1110 0x1E 25C
3,744 = 20% = 0001:0100 0x14 22C
1,872 = 10% = 0000:1010 0x0A 12C
0k = 0% = 0000:0000 0x00 10C
I have a script I use to manage the fan speeds throughout a working day or basically when I’m at the desktop practicing stuff, playing a game or whatever. First I take manual control of the IPMI configuration on the servers. Then make the appropriate fan change when servers reach certain temperatures. At 28C or higher, I kick the fans to 40%. At 24C or lower, I drop the fans to 20%. In between I keep the fan speeds at 30%. This is the same regardless of which system I’m running the script against.
In addition, between 8pm and 7am, I revert back to automatic management of the fans. This lets the server manage the temperatures mainly because I’m likely not at my desk.
First, get the current temperature. I showed you this above. Next, take over control of the fans.
$ /bin/ipmitool -I lanplus -H [R710 ip address] -U [user] \
-P [password] raw 0x30 0x30 0x01 0x00
Then set the fan speed based on the temperature as noted above.
/bin/ipmitool -I lanplus -H [R710 ip address] -U [user] \
-P [password] raw 0x30 0x30 0x02 0xff [speed]
Fan speed is in hex as displayed in the above table. 0x28 for 40%, 0x1E for 30% and 0x14 for 20%.
When you want to enable automatic management of the fans, the 8pm to 7am setting.
/bin/ipmitool -I lanplus -H [R710 ip address] -U [user] \
-P [password] raw 0x30 0x30 0x01 0x01
And that’s it. The R710 uses lan instead of lanplus but works the same in all other ways. And of course you can script out whatever works best for your fan speed desires and piece of mind (and sanity π ).