From d2c6a6a0edd7a07b2b2a4c497cb03f8f17b74f23 Mon Sep 17 00:00:00 2001
From: binary <commit@rgoncalves.se>
Date: Fri, 19 Feb 2021 17:20:18 +0100
Subject: restart from scratch

---
 ipmi-fan | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100755 ipmi-fan

(limited to 'ipmi-fan')

diff --git a/ipmi-fan b/ipmi-fan
new file mode 100755
index 0000000..8fb5dbc
--- /dev/null
+++ b/ipmi-fan
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+#   |                            _
+#   |  o                  o     | |
+#   |       _   _  _  _         | |  __,   _  _
+#   |  |  |/ \_/ |/ |/ |  |-----|/  /  |  / |/ |
+#   |  |_/|__/   |  |  |_/|_/   |__/\_/|_/  |  |_/
+#   |    /|                     |\
+#   |    \|                     |/
+#
+# ipmi-fan
+# 
+# controls fan speed for servers and computers using ipmi
+# only supports dell idrac 6 for now (r710 battletested)
+#
+# ~ rgoncalves.se
+
+. ./ipmi.sh
+. ./log.sh
+
+usage() {
+	cat <<-EOF
+	usage: ${0} -s speed
+	EOF
+}
+
+log() {
+	echo "[${0} ] $@"
+}
+
+main() {
+	# parse
+	while getopts "s:" arg; do
+		case "${arg}" in
+			s)
+				speed="${OPTARG}"
+				;;
+			*)
+				usage
+				exit 1
+				;;
+		esac
+	done
+
+	# Check fan speed validity
+	if [ -z ${speed} ]; then
+		log "-s must be a valid fan speend"
+		usage
+		exit 1
+	fi
+
+	# load environment variables for IPMI
+	ipmi_env
+
+	# disable automatic fan control
+	ipmi_cmd raw 0x30 0x30 0x01 0x00 
+	log "automatic fan control disabled"
+
+	# change fan speed
+	ipmi_cmd raw 0x30 0x30 0x02 0xff "0x${speed}"
+	log "set fan control to ${speed}"
+}
+
+main $@
-- 
cgit v1.2.3