Skip to content

Docker image to control your Dell PowerEdge fans via IPMI wih line interpolation profile for fans speed

License

Notifications You must be signed in to change notification settings

7Adrian/Dell_iDRAC_fan_controller_Docker_with_line_interpolation

 
 

Repository files navigation

Dell iDRAC fan controller Docker image

Table of contents

  1. Container console log example
  2. Requirements
  3. Supported architectures
  4. Download Docker image
  5. Usage
  6. Parameters
  7. Troubleshooting
  8. Contributing
  9. License

Container console log example

image

(back to top)

Requirements

iDRAC version

This Docker container only works on Dell PowerEdge servers that support IPMI commands, i.e. < iDRAC 9 firmware 3.30.30.30.

To access iDRAC over LAN (not needed in "local" mode) :

  1. Log into your iDRAC web console

001

  1. In the left side menu, expand "iDRAC settings", click "Network" then click "IPMI Settings" link at the top of the web page.

002

  1. Check the "Enable IPMI over LAN" checkbox then click "Apply" button.

003

  1. Test access to IPMI over LAN running the following commands :
apt -y install ipmitool
ipmitool -I lanplus \
  -H <iDRAC IP address> \
  -U <iDRAC username> \
  -P <iDRAC password> \
  sdr elist all

(back to top)

Supported architectures

This Docker container is currently built and available for the following CPU architectures :

  • AMD64
  • ARM64

(back to top)

Download Docker image

(back to top)

Usage

  1. with local iDRAC:
docker run -d \
  --name Dell_iDRAC_fan_controller \
  --restart=unless-stopped \
  -e IDRAC_HOST=local \
  -e FAN_SPEED=<decimal or hexadecimal fan speed> \
  -e CPU_TEMPERATURE_THRESHOLD=<decimal temperature threshold> \
  -e CHECK_INTERVAL=<seconds between each check> \
  -e DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE=<true or false> \
  -e CPU_TEMPERATURE_THRESHOLD_FOR_FAN_SPEED_INTERPOLATION=<decimal temperature lower threshold> \
  -e HIGH_FAN_SPEED=<decimal or hexadecimal fan speed> \
  -e KEEP_THIRD_PARTY_PCIE_CARD_COOLING_RESPONSE_STATE_ON_EXIT=<true or false> \
  --device=/dev/ipmi0:/dev/ipmi0:rw \
  tigerblue77/dell_idrac_fan_controller:latest
  1. with LAN iDRAC:
docker run -d \
  --name Dell_iDRAC_fan_controller \
  --restart=unless-stopped \
  -e IDRAC_HOST=<iDRAC IP address> \
  -e IDRAC_USERNAME=<iDRAC username> \
  -e IDRAC_PASSWORD=<iDRAC password> \
  -e FAN_SPEED=<decimal or hexadecimal fan speed> \
  -e CPU_TEMPERATURE_THRESHOLD=<decimal temperature threshold> \
  -e CHECK_INTERVAL=<seconds between each check> \
  -e DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE=<true or false> \
  -e CPU_TEMPERATURE_THRESHOLD_FOR_FAN_SPEED_INTERPOLATION=<decimal temperature lower threshold> \
  -e HIGH_FAN_SPEED=<decimal or hexadecimal fan speed> \
  -e KEEP_THIRD_PARTY_PCIE_CARD_COOLING_RESPONSE_STATE_ON_EXIT=<true or false> \
  tigerblue77/dell_idrac_fan_controller:latest

docker-compose.yml examples:

  1. to use with local iDRAC:
version: '3.8'

services:
  Dell_iDRAC_fan_controller:
    image: tigerblue77/dell_idrac_fan_controller:latest
    container_name: Dell_iDRAC_fan_controller
    restart: unless-stopped
    environment:
      - IDRAC_HOST=local
      - FAN_SPEED=<decimal or hexadecimal fan speed>
      - CPU_TEMPERATURE_THRESHOLD=<decimal temperature threshold>
      - CHECK_INTERVAL=<seconds between each check>
      - DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE=<true or false>
      - CPU_TEMPERATURE_THRESHOLD_FOR_FAN_SPEED_INTERPOLATION=<decimal temperature lower threshold>
      - HIGH_FAN_SPEED=<decimal or hexadecimal fan speed>
      - KEEP_THIRD_PARTY_PCIE_CARD_COOLING_RESPONSE_STATE_ON_EXIT=<true or false>
    devices:
      - /dev/ipmi0:/dev/ipmi0:rw
  1. to use with LAN iDRAC:
version: '3.8'

services:
  Dell_iDRAC_fan_controller:
    image: tigerblue77/dell_idrac_fan_controller:latest
    container_name: Dell_iDRAC_fan_controller
    restart: unless-stopped
    environment:
      - IDRAC_HOST=<iDRAC IP address>
      - IDRAC_USERNAME=<iDRAC username>
      - IDRAC_PASSWORD=<iDRAC password>
      - FAN_SPEED=<decimal or hexadecimal fan speed>
      - CPU_TEMPERATURE_THRESHOLD=<decimal temperature threshold>
      - CHECK_INTERVAL=<seconds between each check>
      - DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE=<true or false>
      - CPU_TEMPERATURE_THRESHOLD_FOR_FAN_SPEED_INTERPOLATION=<decimal temperature lower threshold>
      - HIGH_FAN_SPEED=<decimal or hexadecimal fan speed when interpolation enabled>
      - KEEP_THIRD_PARTY_PCIE_CARD_COOLING_RESPONSE_STATE_ON_EXIT=<true or false>

(back to top)

Parameters

All parameters are optional as they have default values (including default iDRAC username and password).

  • IDRAC_HOST parameter can be set to "local" or to your distant iDRAC's IP address. Default value is "local".
  • IDRAC_USERNAME parameter is only necessary if you're adressing a distant iDRAC. Default value is "root".
  • IDRAC_PASSWORD parameter is only necessary if you're adressing a distant iDRAC. Default value is "calvin".
  • FAN_SPEED parameter can be set as a decimal (from 0 to 100%) or hexadecimaladecimal value (from 0x00 to 0x64) you want to set the fans to. Default value is 5(%).
  • CPU_TEMPERATURE_THRESHOLD parameter is the T°junction (junction temperature) threshold beyond which the Dell fan mode defined in your BIOS will become active again (to protect the server hardware against overheat). Default value is 60(°C).
  • CHECK_INTERVAL parameter is the time (in seconds) between each temperature check and potential profile change. Default value is 60(s).
  • DISABLE_THIRD_PARTY_PCIE_CARD_DELL_DEFAULT_COOLING_RESPONSE parameter is a boolean that allows to disable third-party PCIe card Dell default cooling response. Default value is false.

If you want to enable fan speed interpolation, add the following parameters :

  • CPU_TEMPERATURE_THRESHOLD_FOR_FAN_SPEED_INTERPOLATION parameter enables fan speed interpolation once exceeded. Fan speed interpolation will increase your fan speed proportionally to HIGH_FAN_SPEED until CPU_TEMPERATURE_THRESHOLD is reached. This parameter must be less or equal to CPU_TEMPERATURE_THRESHOLD. Default value is 50(°C).
  • HIGH_FAN_SPEED parameter is the fan speed that will be set at CPU_TEMPERATURE_THRESHOLD when interpolation mode is enabled. In other words, it defines maximum fan speed before swiching back to the Dell default dynamic fan control profile (see CPU_TEMPERATURE_THRESHOLD parameter). Default value is 40(%).

Example of how interpolation works:

  • FAN_SPEED = 10
  • HIGH_FAN_SPEED = 50
  • CPU_TEMPERATURE_THRESHOLD_FOR_FAN_SPEED_INTERPOLATION = 30
  • CPU_TEMPERATURE_THRESHOLD = 70
CPU temperature Fan speed
15 °C 10 %
30 °C 10 %
35 °C 15 %
50 °C 30 %
69 °C 49 %
70 °C Dell default dynamic fan control profile
80 °C Dell default dynamic fan control profile

When using fan speed interpolation, we recommend decreasing CHECK_INTERVAL, for example "3" (seconds), to avoid the noise nuisance associated with a sudden increase in fan speed.

  • KEEP_THIRD_PARTY_PCIE_CARD_COOLING_RESPONSE_STATE_ON_EXIT parameter is a boolean that allows to keep the third-party PCIe card Dell default cooling response state upon exit. Default value is false, so that it resets the third-party PCIe card Dell default cooling response to Dell default.

(back to top)

Troubleshooting

If your server frequently switches back to the default Dell default dynamic fan control profile:

  1. Check Tcase (case temperature) of your CPU on Intel Ark website and then set CPU_TEMPERATURE_THRESHOLD to a slightly lower value. Example with my CPUs (Intel Xeon E5-2630L v2) : Tcase = 63°C, I set CPU_TEMPERATURE_THRESHOLD to 60(°C).
  2. If it's already good, either :
    • adapt your FAN_SPEED value to increase the airflow and thus further decrease the temperature of your CPU(s)
    • enable and experiment fan speed interpolation mode
  3. If neither increasing the fan speed nor increasing the threshold solves your problem, then it may be time to replace your thermal paste

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Shield: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. The full license description can be read here.

CC BY-NC-SA 4.0

(back to top)

About

Docker image to control your Dell PowerEdge fans via IPMI wih line interpolation profile for fans speed

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 96.2%
  • Dockerfile 3.8%