The other question is what fan curve you have. I don’t know what is default, but it could be that they turn on above certain temperature (e.g. above 40 °C – it’s my manual setup on RX 6600XT, below this temperature I have 0RPM).
Could you check your amdfan.yml file with this command:
cat /etc/amdfan.yml
or with this one (she looks to do the same thing):
amdfan --configuration
You should get something like this:
cat /etc/amdfan.yml
#Fan Control Matrix.
# [<Temp in C>,<Fanspeed in %>]
speed_matrix:
- [4, 4]
- [30, 33]
- [45, 50]
- [60, 66]
- [65, 69]
- [70, 75]
- [75, 89]
- [80, 100]
# Current Min supported value is 4 due to driver bug
#
# Optional configuration options
#
# Allows for some leeway +/- temp, as to not constantly change fan speed
# threshold: 4
#
# Frequency will change how often we probe for the temp
# frequency: 5
#
# While frequency and threshold are optional, I highly recommend finding
# settings that work for you. I've included the defaults I use above.
#
# cards:
# can be any card returned from `ls /sys/class/drm | grep "^card[[:digit:]]$"`
# - card0
amdfan --configuration
#Fan Control Matrix.
# [<Temp in C>,<Fanspeed in %>]
speed_matrix:
- [4, 4]
- [30, 33]
- [45, 50]
- [60, 66]
- [65, 69]
- [70, 75]
- [75, 89]
- [80, 100]
# Current Min supported value is 4 due to driver bug
#
# Optional configuration options
#
# Allows for some leeway +/- temp, as to not constantly change fan speed
# threshold: 4
#
# Frequency will change how often we probe for the temp
# frequency: 5
#
# While frequency and threshold are optional, I highly recommend finding
# settings that work for you. I've included the defaults I use above.
#
# cards:
# can be any card returned from `ls /sys/class/drm | grep "^card[[:digit:]]$"`
# - card0
Hum. Just an idea and I think that 's why it doesn’t work.
At first look with amdfan --monitor, I’ve seen that your temperature is 31 °c and according the yaml file amdfan is started to 33 °C
For me it is the reason than amdfan doesn’t work.
then we must modified or find the good parameters for working your graphic card.
I’m not sure to understand why you said 33c and the rapport with corectrl.
Me I have said 33c because you have said to have the same yml file like me and then the second line i.e - [30, 33].
and with amdfan --monitor you have [0, 31].
I think that we must adjust the yaml file for get
Actually, amdfan will run when your graphic card temperature will be at only 33 c and not 31c.
For that you must modified your amdfan.yml file(normally in root, save it) and restart amdfan service with this command.
sudo systemctl restart amdfan
But before we can do something with this ocmmand.
sudo amdfan --manual
Normaly it should ask you
-which card? [card0] said card0
fan speed modified [1,.,100%] or ’ auto’ answer the first
And check again with amdfan --monitor
Sorry but I don’t think I’m getting anywhere with this but thanks for your help anyway. I don’t think this is the correct route to resolve this problem.
For me, amdfan works but your graphic card is not enought hot (31c) to run it because your default file configuration start to 33 C. If amdfan is still running it will work fine alone when your graphic card will reach this temp. And the reason for me why amdfan has worked fine without additionnal work (mine was at 50 °C and now at 35°C)
Anyway, in the future this one will grow/rise up and if you have nothing running you’ll get like me in January a black screen one time (for me it was at 54/56 °C). No display. A bit surprising and annoying
And if you take a look at the github page of amdfan you can modified manually this value (for sample [30, 30] without any danger. After it is your choice and I understand.
Your issue seems to be similar to this one but not exactly the same.
Just a tip. Sometimes, run amdfan --monitor to check your temp.
A last word. You should open an issue asking help to the dev for getting the good value if you are not sure.
Since lm-sensors didn’t display the GPU FAN speed in RPM I decided to calculate the speed from the PWM, the shell bash is - btw I am not a coder so this might be messy
#!/bin/bash
pwm1=$(cat "/sys/class/drm/card0/device/hwmon/hwmon2/pwm1")
rpm_max=3300
pwm_max=255
rpm1=$(echo "$rpm_max/100" | bc -l )
rpm2=$(echo "$pwm1/$pwm_max" | bc -l)
echo "scale=0; $rpm1*$rpm2*100 / 1" | bc
Just a precision. lm_sensors is just a set of sensors that display speeds, temperatures,… The file is created with the sensors-detect command. The problem is, like for me, that it did not detect the fans and all that is associated such as the temperature, the rotation speed… because these were at zero. lm_sensors has a tool that I intentionally omitted, called pwmconfig. This (after testing them) creates a file that is actually corrupt at first sight. This file can be modified by having the correct values. The only big problem is that when you run pwmconfig as root, my fans went from 0 to 3600 rpm for fans without being able to stop them. The 12 attempts that I made still allowed me to discover a lot of things about pwmconfig and lm_sensors. Luckily for me it was live usb.
fan2go allows to regulate this kind of problem but you have to make a configuration file by hand which is not too difficult in itself when you have the right values.
The advantage of amdfan is that it applies a matrix at a given temperature it applies a fan rotation speed.