#! /bin/bash # i8ktemp # count_zero 2007 # bash script to control the fan speed of inspiron notebooks # depends on i8k kernel module and i8kutils # lo fan will turn off as temp drops below this temp lofanoff=50 # lo fan will turn on if temp rises above this temp lofanon=55 # hi fan turns to lo fan if temp drops below this temp hifanoff=60 # hi fan turn on above this temp hifanon=70 # how often to poll the temp in seconds interval=5 while true do temp=`i8kctl | awk '{ print $4 }'` rpm=`i8kctl | awk '{ print $7 }'` #if temp < $lofanoff (fan always off) if [[ "$temp" -lt "$lofanoff" ]] then i8kctl fan 0 0 #if temp $lofanoff - $lofanon elif [[ "$temp" -gt "$lofanoff" ]] && [[ "$temp" -lt "$lofanon" ]] then #continue with no fan if lo fan not already on if [[ "$rpm" -eq 0 ]] then i8kctl fan 0 0 #continue with lo fan if lo fan already on elif [[ "$rpm" -lt 100000 ]] then i8kctl fan 1 1 fi #if temp $lofanon - $hifanoff elif [[ "$temp" -gt "$lofanon" ]] && [[ "$temp" -lt "$hifanoff" ]] then i8kctl fan 1 1 #if temp $hifanoff - $hifanon elif [[ "$temp" -gt "$hifanoff" ]] && [[ "$temp" -lt "$hifanon" ]] then #continue with lo fan if hi fan not already on if [[ "$rpm" -lt 100000 ]] then i8kctl fan 1 1 #continue with hi fan if hi fan already on elif [[ "$rpm" -gt 100000 ]] then i8kctl fan 2 2 fi #if temp > $hifanon (hi fan always on) elif [[ "$temp" -gt "$hifanon" ]] then i8kctl fan 2 2 fi sleep $interval done