From: bugzilla-daemon@bugzilla.kernel.org
To: dri-devel@lists.freedesktop.org
Subject: [Bug 201539] AMDGPU R9 390 automatic fan speed control in Linux 4.19/4.20/5.0
Date: Fri, 06 Dec 2019 03:22:25 +0000 [thread overview]
Message-ID: <bug-201539-2300-fv02bblGv8@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-201539-2300@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=201539
--- Comment #38 from muncrief (rmuncrief@humanavance.com) ---
(In reply to MasterCATZ from comment #37)
> well its neither of those modules
> I should have looked at the files after I scanned for files containing 104000
>
>
> I can not even force run the cards in performance mode anymore with 100% fan
> speed stuck on
>
> if i could just find the setting to tell amdgpu / hwmon / powerplay what
> temp I call hot this would be solved
Here is a slightly modified version of a fan control script, along with the
service to run it, from the Arch Wiki. I don't know what distribution you use
but hopefully this will at least get you started. Unfortunately it doesn't seem
like the kernel devs are interested in fixing this, so after a long time I just
had to use this kludgey solution.
1. Create a file with the following contents named "amdgpu-fancontrol" in
"/usr/local/bin" and make it executable.
--------------- Start amdgpu-fancontrol ---------------
#!/bin/bash
HYSTERESIS=6000 # in mK
SLEEP_INTERVAL=1 # in s
DEBUG=true
# set temps (in degrees C * 1000) and corresponding pwm values in ascending
order and with the same amount of values
TEMPS=( 40000 50000 65000 75000 80000 90000 )
PWMS=( 0 100 140 190 200 255 )
# hwmon paths, hardcoded for one amdgpu card, adjust as needed
HWMON=$(ls /sys/class/drm/card0/device/hwmon)
FILE_PWM=$(echo /sys/class/drm/card0/device/hwmon/$HWMON/pwm1)
FILE_FANMODE=$(echo /sys/class/drm/card0/device/hwmon/$HWMON/pwm1_enable)
FILE_TEMP=$(echo /sys/class/drm/card0/device/hwmon/$HWMON/temp1_input)
# might want to use this later
#FILE_TEMP_CRIT=$(echo /sys/class/hwmon/hwmon?/temp1_crit_hyst)
[[ -f "$FILE_PWM" && -f "$FILE_FANMODE" && -f "$FILE_TEMP" ]] || { echo
"invalid hwmon files" ; exit 1; }
# load configuration file if present
[ -f /etc/amdgpu-fancontrol.cfg ] && . /etc/amdgpu-fancontrol.cfg
# check if amount of temps and pwm values match
if [ "${#TEMPS[@]}" -ne "${#PWMS[@]}" ]
then
echo "Amount of temperature and pwm values does not match"
exit 1
fi
# checking for privileges
if [ $UID -ne 0 ]
then
echo "Writing to sysfs requires privileges, relaunch as root"
exit 1
fi
function debug {
if $DEBUG; then
echo $1
fi
}
# set fan mode to max(0), manual(1) or auto(2)
function set_fanmode {
echo "setting fan mode to $1"
echo "$1" > "$FILE_FANMODE"
}
function set_pwm {
NEW_PWM=$1
OLD_PWM=$(cat $FILE_PWM)
echo "current pwm: $OLD_PWM, requested to set pwm to $NEW_PWM"
debug "current pwm: $OLD_PWM, requested to set pwm to $NEW_PWM"
if [ $(cat ${FILE_FANMODE}) -ne 1 ]
then
echo "Fanmode not set to manual."
set_fanmode 1
fi
if [ "$NEW_PWM" -gt "$OLD_PWM" ] || [ -z "$TEMP_AT_LAST_PWM_CHANGE" ] || [
$(($(cat $FILE_TEMP) + HYSTERESIS)) -le "$TEMP_AT_LAST_PWM_CHANGE" ]; then
$DEBUG || echo "current temp: $TEMP"
echo "temp at last change was $TEMP_AT_LAST_PWM_CHANGE"
echo "changing pwm to $NEW_PWM"
echo "$NEW_PWM" > "$FILE_PWM"
TEMP_AT_LAST_PWM_CHANGE=$(cat $FILE_TEMP)
else
debug "not changing pwm, we just did at $TEMP_AT_LAST_PWM_CHANGE, next
change when below $((TEMP_AT_LAST_PWM_CHANGE - HYSTERESIS))"
fi
}
function interpolate_pwm {
i=0
TEMP=$(cat $FILE_TEMP)
debug "current temp: $TEMP"
if [[ $TEMP -le ${TEMPS[0]} ]]; then
# below first point in list, set to min speed
set_pwm "${PWMS[i]}"
return
fi
for i in "${!TEMPS[@]}"; do
if [[ $i -eq $((${#TEMPS[@]}-1)) ]]; then
# hit last point in list, set to max speed
set_pwm "${PWMS[i]}"
return
elif [[ $TEMP -gt ${TEMPS[$i]} ]]; then
continue
fi
# interpolate linearly
LOWERTEMP=${TEMPS[i-1]}
HIGHERTEMP=${TEMPS[i]}
LOWERPWM=${PWMS[i-1]}
HIGHERPWM=${PWMS[i]}
PWM=$(echo "( ( $TEMP - $LOWERTEMP ) * ( $HIGHERPWM - $LOWERPWM ) / (
$HIGHERTEMP - $LOWERTEMP ) ) + $LOWERPWM" | bc)
debug "interpolated pwm value for temperature $TEMP is: $PWM"
set_pwm "$PWM"
return
done
}
function reset_on_fail {
echo "exiting, resetting fan to auto control..."
set_fanmode 2
exit 1
}
# always try to reset fans on exit
trap "reset_on_fail" SIGINT SIGTERM
function run_daemon {
while :; do
interpolate_pwm
debug
sleep $SLEEP_INTERVAL
done
}
# set fan control to manual
set_fanmode 1
# finally start the loop
run_daemon
--------------- End amdgpu-fancontrol ---------------
2. Create a file with the following contents named "amdgpu-fancontrol.service"
in /etc/systemd/system.
--------------- Start amdgpu-fancontrol.service ---------------
[Unit]
Description=amdgpu-fancontrol
[Service]
Type=simple
ExecStart=/usr/local/bin/amdgpu-fancontrol
[Install]
WantedBy=multi-user.target
--------------- End amdgpu-fancontrol.service ---------------
3. Here's how to enable, disable, and get the status of the fan control
service:
sudo systemctl enable amdgpu-fancontrol
sudo systemctl start amdgpu-fancontrol
sudo systemctl status amdgpu-fancontrol
--
You are receiving this mail because:
You are watching the assignee of the bug.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2019-12-06 3:22 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-27 12:32 [Bug 201539] New: AMDGPU R9 390 automatic fan speed control in Linux 4.19 bugzilla-daemon
2018-10-27 12:34 ` [Bug 201539] " bugzilla-daemon
2018-10-27 12:35 ` bugzilla-daemon
2018-10-27 12:45 ` bugzilla-daemon
2018-12-08 7:59 ` bugzilla-daemon
2018-12-21 1:30 ` bugzilla-daemon
2018-12-21 2:16 ` bugzilla-daemon
2018-12-21 15:06 ` bugzilla-daemon
2018-12-21 15:56 ` bugzilla-daemon
2018-12-24 11:55 ` [Bug 201539] AMDGPU R9 390 automatic fan speed control in Linux 4.19/4.20 bugzilla-daemon
2018-12-24 11:55 ` bugzilla-daemon
2018-12-31 9:06 ` bugzilla-daemon
2019-01-05 13:41 ` bugzilla-daemon
2019-03-04 2:17 ` [Bug 201539] AMDGPU R9 390 automatic fan speed control in Linux 4.19/4.20/5.0 bugzilla-daemon
2019-03-09 2:44 ` bugzilla-daemon
2019-04-17 10:37 ` bugzilla-daemon
2019-06-06 11:18 ` bugzilla-daemon
2019-06-06 11:44 ` bugzilla-daemon
2019-06-06 12:18 ` bugzilla-daemon
2019-06-07 1:41 ` bugzilla-daemon
2019-06-18 17:42 ` bugzilla-daemon
2019-06-24 2:18 ` bugzilla-daemon
2019-10-05 13:19 ` bugzilla-daemon
2019-11-03 4:08 ` bugzilla-daemon
2019-11-03 4:16 ` bugzilla-daemon
2019-11-03 4:29 ` bugzilla-daemon
2019-11-03 4:37 ` bugzilla-daemon
2019-11-05 23:47 ` bugzilla-daemon
2019-11-06 9:35 ` bugzilla-daemon
2019-11-16 0:42 ` bugzilla-daemon
2019-11-16 0:57 ` bugzilla-daemon
2019-11-16 12:07 ` bugzilla-daemon
2019-11-16 13:36 ` bugzilla-daemon
2019-11-16 14:15 ` bugzilla-daemon
2019-11-16 22:35 ` bugzilla-daemon
2019-11-17 0:43 ` bugzilla-daemon
2019-11-17 7:46 ` bugzilla-daemon
2019-12-05 17:00 ` bugzilla-daemon
2019-12-06 2:58 ` bugzilla-daemon
2019-12-06 3:04 ` bugzilla-daemon
2019-12-06 3:22 ` bugzilla-daemon [this message]
2019-12-06 4:30 ` bugzilla-daemon
2019-12-06 4:32 ` bugzilla-daemon
2019-12-06 4:45 ` bugzilla-daemon
2019-12-06 5:01 ` bugzilla-daemon
2019-12-06 5:52 ` bugzilla-daemon
2019-12-06 5:56 ` bugzilla-daemon
2019-12-07 19:48 ` bugzilla-daemon
2019-12-07 20:05 ` bugzilla-daemon
2019-12-07 20:20 ` bugzilla-daemon
2019-12-07 20:46 ` bugzilla-daemon
2019-12-07 21:04 ` bugzilla-daemon
2019-12-09 0:33 ` bugzilla-daemon
2019-12-09 0:55 ` bugzilla-daemon
2019-12-09 21:26 ` bugzilla-daemon
2019-12-10 1:03 ` bugzilla-daemon
2020-05-21 15:31 ` bugzilla-daemon
2020-06-03 8:26 ` bugzilla-daemon
2020-08-10 0:26 ` bugzilla-daemon
2020-12-01 21:54 ` bugzilla-daemon
2020-12-01 21:57 ` bugzilla-daemon
2020-12-01 22:47 ` bugzilla-daemon
2020-12-01 23:01 ` bugzilla-daemon
2020-12-02 1:33 ` bugzilla-daemon
2020-12-02 3:30 ` bugzilla-daemon
2020-12-02 3:34 ` bugzilla-daemon
2020-12-02 8:38 ` bugzilla-daemon
2020-12-02 9:57 ` bugzilla-daemon
2020-12-02 16:21 ` bugzilla-daemon
2020-12-02 19:31 ` bugzilla-daemon
2020-12-02 20:16 ` bugzilla-daemon
2020-12-02 21:11 ` bugzilla-daemon
2020-12-03 1:04 ` bugzilla-daemon
2020-12-13 23:56 ` bugzilla-daemon
2020-12-14 23:05 ` bugzilla-daemon
2020-12-14 23:26 ` bugzilla-daemon
2020-12-14 23:44 ` bugzilla-daemon
2021-02-06 5:34 ` bugzilla-daemon
2022-02-05 21:59 ` bugzilla-daemon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bug-201539-2300-fv02bblGv8@https.bugzilla.kernel.org/ \
--to=bugzilla-daemon@bugzilla.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.