first commit
This commit is contained in:
51
pwm_fan_control.sh
Executable file
51
pwm_fan_control.sh
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Path to the temperature sensor and PWM control
|
||||
TEMP_SENSOR="/sys/class/hwmon/hwmon1/temp1_input"
|
||||
PWM_CONTROL="/sys/class/hwmon/hwmon2/pwm1" # Adjust this path as needed
|
||||
|
||||
# Function to set fan speed using PWM control
|
||||
set_fan_speed() {
|
||||
local speed=$1
|
||||
echo $speed | sudo tee $PWM_CONTROL
|
||||
}
|
||||
|
||||
# Wait for the hwmon files to be available
|
||||
while [ ! -f "$TEMP_SENSOR" ] || [ ! -f "$PWM_CONTROL" ]; do
|
||||
echo "Waiting for hwmon files..."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "hwmon files found. Starting fan control."
|
||||
|
||||
# Main loop
|
||||
while true; do
|
||||
# Read the current temperature
|
||||
temp=$(cat $TEMP_SENSOR)
|
||||
temp=$((temp / 1000)) # Convert to degrees Celsius
|
||||
|
||||
# Print the current temperature
|
||||
echo "Current temperature: $temp°C"
|
||||
|
||||
# Adjust fan speed based on temperature
|
||||
if [ $temp -lt 50 ]; then
|
||||
set_fan_speed 25 # Approximately 25% speed
|
||||
elif [ $temp -lt 60 ]; then
|
||||
set_fan_speed 45 # Approximately 50% speed
|
||||
elif [ $temp -lt 65 ]; then
|
||||
set_fan_speed 60 # Approximately 75% speed
|
||||
elif [ $temp -lt 75 ]; then
|
||||
set_fan_speed 120 # High speed
|
||||
else
|
||||
set_fan_speed 255 # Maximum speed
|
||||
fi
|
||||
|
||||
# Check for critical temperature
|
||||
if [ $temp -ge 85 ]; then
|
||||
echo "Critical temperature reached: $temp°C" | sudo tee /dev/kmsg
|
||||
set_fan_speed 255 # Ensure fan is at maximum speed
|
||||
fi
|
||||
|
||||
# Sleep for a while before checking again
|
||||
sleep 10
|
||||
done
|
||||
Reference in New Issue
Block a user