#!/bin/sh BASE_PATH=/sys/class GPIO_PATH="$BASE_PATH"/gpio PWM_PATH="$BASE_PATH"/pwm/pwmchip0 # GPIO pins CPU_FAN=12 HDD_FAN=13 # Values LOW=0 HIGH=1 export_pin() { if [ ! -e $GPIO_PATH/gpio"$1" ]; then echo "$1" >$GPIO_PATH/export fi } unexport_pin() { if [ -e $GPIO_PATH/gpio"$1" ]; then echo "$1" >$GPIO_PATH/unexport fi } set_gpio() { export_pin "$1" echo "out" >$GPIO_PATH/gpio"$1"/direction echo "$2" >$GPIO_PATH/gpio"$1"/value if [ "$3" = "clean" ]; then unexport_pin "$1" fi } enable_pwm_channel() { echo "$1" >$PWM_PATH/export echo 40000 >$PWM_PATH/pwm"$1"/period echo 30000 >$PWM_PATH/pwm"$1"/duty_cycle echo 1 >$PWM_PATH/pwm"$1"/enable } set_pwm() { if [ "$1" = "clean" ]; then echo 1 >$PWM_PATH/unexport else enable_pwm_channel 1 fi } turn_on() { set_gpio $CPU_FAN $HIGH set_gpio $HDD_FAN $HIGH set_pwm } turn_off() { set_gpio $CPU_FAN $LOW clean set_gpio $HDD_FAN $LOW clean set_pwm clean } trap turn_off INT if [ "$1" = "on" ]; then turn_on else turn_off fi exit 0