aboutsummaryrefslogtreecommitdiff
path: root/scripts/change_fan.sh
diff options
context:
space:
mode:
authorbenj <benj@rse8.com>2019-09-09 15:22:07 -0700
committerbenj <benj@rse8.com>2019-09-09 15:22:07 -0700
commit29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52 (patch)
tree3d5647c6708af07fd34c88054eb9f94bf28d1451 /scripts/change_fan.sh
parentdd8097084fe0d159f0a357f426fca986895e5ef4 (diff)
downloadsetup-29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52.tar
setup-29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52.tar.gz
setup-29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52.tar.bz2
setup-29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52.tar.lz
setup-29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52.tar.xz
setup-29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52.tar.zst
setup-29358b8d15ec1ddd8d2c11e2f2f6964ec49edc52.zip
basic i3 setup
Diffstat (limited to '')
-rwxr-xr-xscripts/change_fan.sh79
1 files changed, 79 insertions, 0 deletions
diff --git a/scripts/change_fan.sh b/scripts/change_fan.sh
new file mode 100755
index 0000000..b290700
--- /dev/null
+++ b/scripts/change_fan.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+
+## It would be nice to check the system and dynamically figure out which fan controller
+## is being used...but I don't need that right now.
+
+# echo "1" > /sys/devices/platform/applesmc.768/fan1_manual
+# echo "9000" > /sys/devices/platform/applesmc.768/fan1_output
+# cat /sys/devices/platform/applesmc.768/fan1_output
+
+FAN_DIR=/sys/devices/platform/applesmc.768
+FAN_OUT=$FAN_DIR/fan1_output
+FAN_MANUAL=$FAN_DIR/fan1_manual
+MAX_FAN=$(cat $FAN_DIR/fan1_max)
+MIN_FAN=$(cat $FAN_DIR/fan1_min)
+
+function toggle_mbpfan() {
+ SHOULD_DEACTIVE=$1
+ IS_ACTIVE=$(systemctl is-active mbpfan)
+ if [[ "$SHOULD_DEACTIVE" == "false" ]]; then
+ echo "force deactive!"
+ echo "0" > "$FAN_MANUAL"
+ sudo systemctl start mbpfan
+ return
+ elif [[ "$IS_ACTIVE" == "active" || "$SHOULD_DEACTIVE" == "true" ]]; then
+ sudo systemctl stop mbpfan
+ echo "force active!"
+ echo "1" > "$FAN_MANUAL"
+ return
+ else
+ echo "force deactive and start mbpfan"
+ echo "there!"
+ echo "0" > "$FAN_MANUAL"
+ sudo systemctl start mbpfan
+ return
+ fi
+}
+
+function increase_fan() {
+ CURR_SPEED=$(cat $FAN_DIR/fan1_output)
+ NEXT_SPEED=$(echo - | awk -v curr="$CURR_SPEED" '{printf "%1.0f", (curr + 500)}')
+
+ # deactivate mbpfan
+ toggle_mbpfan "true"
+
+ if [[ $NEXT_SPEED -lt $MAX_FAN ]]; then
+ echo $NEXT_SPEED > "$FAN_OUT"
+ else
+ echo $MAX_FAN > "$FAN_OUT"
+ fi
+}
+
+function decrease_fan() {
+ CURR_SPEED=$(cat $FAN_DIR/fan1_output)
+ NEXT_SPEED=$(echo - | awk -v curr="$CURR_SPEED" '{printf "%1.0f", (curr - 500)}')
+
+ # deactivate mbpfan
+ toggle_mbpfan "true"
+
+ if [[ $NEXT_SPEED -gt $MIN_FAN ]]; then
+ echo $NEXT_SPEED > "$FAN_OUT"
+ else
+ # no reason to ever this low.
+ # let the system take back over, since the user probably forgot
+ toggle_mbpfan "false"
+ fi
+}
+
+while getopts ":idt" opt; do
+ case ${opt} in
+ t) toggle_mbpfan
+ ;;
+ i) increase_fan
+ ;;
+ d) decrease_fan
+ ;;
+ \? )
+ ;;
+ esac
+done