|
@@ -0,0 +1,109 @@
|
|
|
|
+#!/usr/bin/env bash
|
|
|
|
+#####################################
|
|
|
|
+# AMDGPU-PRO LINUX UTILITIES SUITE #
|
|
|
|
+######################################
|
|
|
|
+# Utility Name: AMDGPU-PRO-FANS
|
|
|
|
+# Version: 0.1.5
|
|
|
|
+# Version Name: MahiMahi
|
|
|
|
+# https://github.com/DominiLux/amdgpu-pro-fans
|
|
|
|
+
|
|
|
|
+# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
+# you may not use this file except in compliance with the License.
|
|
|
|
+# You may obtain a copy of the License at
|
|
|
|
+
|
|
|
|
+# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
+
|
|
|
|
+# Unless required by applicable law or agreed to in writing, software
|
|
|
|
+# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
+# See the License for the specific language governing permissions and
|
|
|
|
+# limitations under the License.
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#####################################################################
|
|
|
|
+# *** IMPORTANT *** #
|
|
|
|
+# DO NOT MODIFY PAST THIS POINT IF YOU DONT KNOW WHAT YOUR DOING!!! #
|
|
|
|
+#####################################################################
|
|
|
|
+
|
|
|
|
+############################
|
|
|
|
+# COMMAND PARSED VARIABLES #
|
|
|
|
+############################
|
|
|
|
+adapter="all"
|
|
|
|
+targettemp=""
|
|
|
|
+fanpercent=""
|
|
|
|
+arguments="$@"
|
|
|
|
+##################
|
|
|
|
+# USAGE FUNCTION #
|
|
|
|
+##################
|
|
|
|
+usage ()
|
|
|
|
+{
|
|
|
|
+ echo "* AMDGPU-PRO-FANS *"
|
|
|
|
+ echo "error: invalid arguments"
|
|
|
|
+ echo "usage: $0 [-h] for help..."
|
|
|
|
+ exit
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+###########################
|
|
|
|
+# SET FAN SPEED FUNCTIONS #
|
|
|
|
+###########################
|
|
|
|
+
|
|
|
|
+set_all_fan_speeds ()
|
|
|
|
+{
|
|
|
|
+ cardcount="0";
|
|
|
|
+ for CurrentCard in /sys/class/drm/card?/ ; do
|
|
|
|
+ for CurrentMonitor in "$CurrentCard"device/hwmon/hwmon?/ ; do
|
|
|
|
+ cd $CurrentMonitor # &>/dev/null
|
|
|
|
+ workingdir="`pwd`"
|
|
|
|
+ fanmax=$(head -1 "$workingdir"/pwm1_max)
|
|
|
|
+ if [ $fanmax -gt 0 ] ; then
|
|
|
|
+ speed=$(( fanmax * fanpercent ))
|
|
|
|
+ speed=$(( speed / 100 ))
|
|
|
|
+ sudo chown $USER "$workingdir"/pwm1_enable
|
|
|
|
+ sudo chown $USER "$workingdir"/pwm1
|
|
|
|
+ sudo echo -n "1" >> $workingdir/pwm1_enable # &>/dev/null
|
|
|
|
+ sudo echo -n "$speed" >> $workingdir/pwm1 # &>/dev/null
|
|
|
|
+ speedresults=$(head -1 "$workingdir"/pwm1)
|
|
|
|
+ if [ $(( speedresults - speed )) -gt 6 ] ; then
|
|
|
|
+ echo "Error Setting Speed For Card$cardcount!"
|
|
|
|
+ else
|
|
|
|
+ echo "Card$cardcount Speed Set To $fanpercent %"
|
|
|
|
+ fi
|
|
|
|
+ else
|
|
|
|
+ echo "Error: Unable To Determine Maximum Fan Speed For Card$cardcount!"
|
|
|
|
+ fi
|
|
|
|
+ done
|
|
|
|
+ cardcount="$(($cardcount + 1))"
|
|
|
|
+ done
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+set_fans_requested ()
|
|
|
|
+{
|
|
|
|
+ if [ "$adapter"="all" ] ; then
|
|
|
|
+ set_all_fan_speeds
|
|
|
|
+ fi
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+#################################
|
|
|
|
+# PARSE COMMAND LINE PARAMETERS #
|
|
|
|
+#################################
|
|
|
|
+command_line_parser ()
|
|
|
|
+{
|
|
|
|
+ parseline=`getopt -s bash -u -o a:s: -n '$0' -- "$arguments"`
|
|
|
|
+ eval set -- "$parseline"
|
|
|
|
+ while true ; do
|
|
|
|
+ case "$1" in
|
|
|
|
+ -a ) adapter="$2" ; shift 2 ;;
|
|
|
|
+ -s ) fanpercent="$2" ; set_fans_requested ; break ;;
|
|
|
|
+ --) break ;;
|
|
|
|
+ *) usage ; exit 1 ;;
|
|
|
|
+ esac
|
|
|
|
+ done
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#################
|
|
|
|
+# Home Function #
|
|
|
|
+#################
|
|
|
|
+
|
|
|
|
+command_line_parser
|
|
|
|
+exit;
|