mirror of
https://github.com/tigerblue77/Dell_iDRAC_fan_controller_Docker.git
synced 2025-10-23 04:51:57 +00:00
211 lines
8.7 KiB
Markdown
211 lines
8.7 KiB
Markdown
<div id="top"></div>
|
|
|
|
> **Warning** If you update to the latest version, be sure to replace "CPU_TEMPERATURE_TRESHOLD" environment variable with "CPU_TEMPERATURE_T<ins>H</ins>RESHOLD" which was a typo
|
|
|
|
# Dell iDRAC fan controller Docker image
|
|
Download Docker image from :
|
|
- [Docker Hub](https://hub.docker.com/r/tigerblue77/dell_idrac_fan_controller)
|
|
- [GitHub Containers Repository](https://github.com/tigerblue77/Dell_iDRAC_fan_controller_Docker/pkgs/container/dell_idrac_fan_controller)
|
|
|
|
<!-- TABLE OF CONTENTS -->
|
|
<details>
|
|
<summary>Table of Contents</summary>
|
|
<ol>
|
|
<li><a href="#container-console-log-example">Container console log example</a></li>
|
|
<li><a href="#supported-architectures">Supported architectures</a></li>
|
|
<li><a href="#usage">Usage</a></li>
|
|
<li><a href="#parameters">Parameters</a></li>
|
|
<li><a href="#troubleshooting">Troubleshooting</a></li>
|
|
<li><a href="#contributing">Contributing</a></li>
|
|
<li><a href="#license">License</a></li>
|
|
</ol>
|
|
</details>
|
|
|
|
## Container console log example
|
|
|
|

|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
|
|
<!-- PREREQUISITES -->
|
|
## Prerequisites
|
|
### 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
|
|
|
|

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

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

|
|
|
|
4. Test access to IPMI over LAN running the following commands :
|
|
```bash
|
|
apt -y install ipmitool
|
|
ipmitool -I lanplus \
|
|
-H <iDRAC IP address> \
|
|
-U <iDRAC username> \
|
|
-P <iDRAC password> \
|
|
sdr elist all
|
|
```
|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
|
|
<!-- SUPPORTED ARCHITECTURES -->
|
|
## Supported architectures
|
|
|
|
This Docker container is currently built and available for the following CPU architectures :
|
|
- AMD64
|
|
- ARM64
|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
|
|
<!-- USAGE -->
|
|
## Usage
|
|
|
|
1. with local iDRAC:
|
|
|
|
```bash
|
|
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 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
|
|
```
|
|
|
|
2. with LAN iDRAC:
|
|
|
|
```bash
|
|
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 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:
|
|
|
|
```yml
|
|
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>
|
|
- KEEP_THIRD_PARTY_PCIE_CARD_COOLING_RESPONSE_STATE_ON_EXIT=<true or false>
|
|
devices:
|
|
- /dev/ipmi0:/dev/ipmi0:rw
|
|
```
|
|
|
|
2. to use with LAN iDRAC:
|
|
|
|
```yml
|
|
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>
|
|
- KEEP_THIRD_PARTY_PCIE_CARD_COOLING_RESPONSE_STATE_ON_EXIT=<true or false>
|
|
```
|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
|
|
<!-- PARAMETERS -->
|
|
## 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 50(°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.
|
|
- `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.
|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
|
|
<!-- TROUBLESHOOTING -->
|
|
## Troubleshooting
|
|
|
|
If your server frequently switches back to the default Dell fan mode:
|
|
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](https://www.intel.com/content/www/us/en/products/sku/75791/intel-xeon-processor-e52630l-v2-15m-cache-2-40-ghz/specifications.html)) : Tcase = 63°C, I set `CPU_TEMPERATURE_THRESHOLD` to 60(°C).
|
|
2. If it's already good, adapt your `FAN_SPEED` value to increase the airflow and thus further decrease the temperature of your CPU(s)
|
|
3. If neither increasing the fan speed nor increasing the threshold solves your problem, then it may be time to replace your thermal paste
|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
|
|
<!-- CONTRIBUTING -->
|
|
## 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
|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|
|
|
|
<!-- LICENSE -->
|
|
## License
|
|
|
|
Shield: [![CC BY-NC-SA 4.0][cc-by-nc-sa-shield]][cc-by-nc-sa]
|
|
|
|
This work is licensed under a
|
|
[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa]. The full license description can be read [here][link-to-license-file].
|
|
|
|
[![CC BY-NC-SA 4.0][cc-by-nc-sa-image]][cc-by-nc-sa]
|
|
|
|
[cc-by-nc-sa]: http://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
[cc-by-nc-sa-image]: https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png
|
|
[cc-by-nc-sa-shield]: https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg
|
|
[link-to-license-file]: ./LICENSE
|
|
|
|
<p align="right">(<a href="#top">back to top</a>)</p>
|