This project allows you to automatically control your Dell PowerEdge fan speeds using IPMI tools determined by a customisable temperature range.
- Python 3.8
- Python pip3
- IPMI Tools (https://github.com/ipmitool/ipmitool)
After installing the projects prerequisites, you will need to install the projects python dependencies using pip3
- Install Python dependencies using pip3
pip3 install -r requirements.txt
This project depends on several environment variables being available to the script, these are described below
Variable | Default | Description |
---|---|---|
IDRAC_HOST |
null |
IP address of your iDRAC host |
IDRAC_USERNAME |
null |
Username of your iDRAC host |
IDRAC_PASSWORD |
null |
Password of your iDRAC host |
TEMP_RANGES |
null |
Pipe-separated list of temperature ranges, see below for more details |
The temperature ranges environment variable allows you to define a range of temperatures and your desired fan speed (as a percentage). This is set using a pipe-separated string provided as an environment variable (TEMP_RANGES
).
Format:
[start of range], [end of range], [fan speed percentage]|[start of range], [end of range], [fan speed percentage]
For example:
30, 40, 5|40, 45, 8|45, 50, 10|50, 55, 20|55, 100, static
This will be parsed as:
Temperature | Fan speed |
---|---|
30c to 40c | 5% |
40c to 45c | 8% |
45c to 50c | 10% |
50c to 55c | 20% |
55c to 100c | static |
static
fan speed mode will turn off manual fan control and allow iDRAC to determine what speed the fans should be for the current temperature (default behaviour).
If there isn't a temperature range configured, this tool will use the closest temperature range based on the highest temperature sensor.
To run the project locally, execute the controller.py
file
python3 controller.py
You can run this project using docker by pulling and running the pre-build image using the following command
docker run -d \
--name iDRAC_IPMI_fan_controller \
--restart=unless-stopped \
-e IDRAC_HOST=<iDRAC host> \
-e IDRAC_USERNAME=<iDRAC username> \
-e IDRAC_PASSWORD=<iDRAC password> \
-e TEMP_RANGES=<pipe seperated list of temp ranges> \
jamiesage123/idrac_ipmi_fan_controller:latest
Contributions 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 to improve this, please fork the repo and create a pull request. You can also open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Use this project at your own risk and responsibility. Overriding default behaviour may cause irreversible damage to hardware. Always monitor and ensure your hardware is running at safe temperatures.
This project is released under the MIT License.