Important
This project provides scripts to control the fan speeds of a Dell PowerEdge R730 server based on GPU and CPU temperatures. It uses IPMI commands to adjust fan speeds dynamically.
- Prerequisites
- Configuration
- Scripts
- Setup as a System Service
- How It Works
- Example Commands
- View Logs
- Troubleshooting
- License
ipmitool
: Install withsudo apt install ipmitool
nvidia-smi
: Comes with NVIDIA drivers orsudo apt install nvidia-utils-xxx
Edit the ipmi_config.cfg
file to set your IPMI host, user, password, and temperature thresholds.
# DELL IPMI Configuration
IPMI_HOST=192.168.1.xxx
IPMI_USER=root
IPMI_PASSWORD=your-password
IPMI_YKEY=0000000000000000000000000000000000000000
# Temperature thresholds (in °C)
VERY_LOW_TEMP_THRESHOLD=30
LOW_TEMP_THRESHOLD=40
MID_TEMP_THRESHOLD=60
HIGH_TEMP_THRESHOLD=75
VERY_HIGH_TEMP_THRESHOLD=85
# Fan speed settings (in percentage)
VERY_LOW_FAN_SPEED=20
LOW_FAN_SPEED=30
MID_FAN_SPEED=50
HIGH_FAN_SPEED=75
VERY_HIGH_FAN_SPEED=100
fan-control.sh
This script continuously monitors the temperatures of the GPUs and CPUs and adjusts the fan speeds accordingly.
reset.sh
This script resets the fan control to automatic mode.
status.sh
This script displays the current temperatures of the GPUs and CPUs.
Tip
To set up the fan control script as a systemd service, follow these steps:
- Install the Service - Run the
install-system-service.sh
script to install the service.
chmod +x install-system-service.sh
sudo ./install-system-service.sh
- Uninstall the Service - If you need to uninstall the service, run the
uninstall-service.sh
script.
chmod +x uninstall-service.sh
sudo ./uninstall-service.sh
- Configuration Loading
- Each script loads the configuration from
ipmi_config.cfg
- Each script loads the configuration from
- Temperature Monitoring
- The
fan-control.sh
script usesnvidia-smi
to get GPU temperatures andipmitool
to get CPU temperatures
- The
- Fan Speed Adjustment
- Based on the highest temperature detected, the script sets the fan speed using IPMI commands.
- Service Management
- The
install-system-service.sh
script sets up thefan-control.sh
script as asystemd
service, ensuring it starts on boot and restarts if it fails.
- The
- Check Service Status
sudo systemctl status fan-control.service
- Start Service
sudo systemctl start fan-control.service
- Stop Service
sudo systemctl stop fan-control.service
Important
sudo tail -f /var/log/fan-control.log
- Fix folder structure
- Run logs & output debug lines to
systemd
- still need to learn how that works
- Ensure all required packages are installed.
- Verify the IPMI configuration in
ipmi_config.cfg
. - Check the logs at
/var/log/fan-control.log
for any errors.
This project is licensed under the MIT License.