123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/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;
|