i'm trying to finish setting up proper fan control on my system, but corectrl and coolercontrol, while it does detect the sensors and fans, won't control them. the fans on the gpu are spinning, but setting a speed in either software doesn't work.
Videos
Might not be the correct sub for this, but what should i use for controlling my fans since i cannot make fan graphs on bios and i would like to get my jet engine of a graphics card to be quieter during gaming
Seems like you need to be able to create a custom fan curve. Try Corectrl, rather simple and has gui.
just image from internet but corectrl gui
Add PPA
sudo add-apt-repository ppa:ernstp/mesarcUpdate
sudo apt-get updateInstall Corectrl
sudo apt install -y corectrl
If you want to remove the package and the repository
sudo apt remove corectrl
sudo add-apt-repository --remove ppa:ernstp/mesarc
I can also recommend Radeon Profile, but I don’t think it has custom fan curve.
this is radeon profile
Add PPA
sudo add-apt-repository ppa:radeon-profile/stableUpdate
sudo apt-get updateInstall
sudo apt install -y radeon-profile
If you want to remove package and repository
sudo apt remove radeon-profile
sudo add-apt-repository --remove ppa:radeon-profile/stable
Edit: You can get gnome tweaks which is an extended settings package essentially. In it you will be able to set programs to launch at startup easily.
And yes you should also be able to set the fan curve to exactly the same as in windows if you want. I don't know if you can copy directly with a file or anything but just try to set the same fan curve and it will be fine.
You could try a program called LACT. It works really well with AMD GPUs, not so much with nVidia. Image to temperature curve is below.
Link to the program is here: https://github.com/ilya-zlobintsev/LACT

I have Ubuntu 22.04 with oem kernel (Linux luca-desktop 5.17.0-1018-oem #19-Ubuntu SMP PREEMPT Wed Sep 21 09:54:58 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux) and Kisak mesa (OpenGL version string: 4.6 (Compatibility Profile) Mesa 22.2.0 - kisak-mesa PPA) with a Radeon rx6750xt.
I have enabled the root execution of CoreCtrl and the kernel parameter to expose the AMD settings, but in any of the 4 possible settings (Curve, Fixed, Automatic, Do not control) the fan always shows 0 rpm even if after some gaming I have 80C on Temperature and 100C on Junction.
Can you help, please?
---UPDATE---
It turns out to be a problem of:
lm-sensors values (I guess they are the same that are printed in corectrl as they seem to match). While /sys/class/drm/card0/device/hwmon/hwmon0/pwm1 shows values bigger than 0 lm-sensors reports 0% fan speed while the fans are actually spinning. The biggest value I have seen up until now is 1%.
Note before starting:
This functionality depends on both your hardware and software. If your hardware doesn't support fan speed controls, or doesn't show them to the OS, it is very likely that you could not use this solution. If it does, but the software (aka kernel) doesn't know how to control it, you are without luck.
Install the lm-sensors and fancontrol packages.
Configure lm-sensors as follows:
In terminal type
sudo sensors-detectand answer YES to all YES/no questions.
(Potentially, this can damage your system or cause system crash. For a lot of systems, it is safe. There is no guarantee that this process will not damage your system permanently, I just think that chance of such critical failure is really really low. Saving all your work for eventual crashes/freezes/restarts before handling system configuration is always good idea. If you feel unsure, read the comments and try to search a web and get some high-level overview before YES-ing everything, maybe being selective with your YES-es will still be enough)At the end of sensors-detect, a list of modules that need to be loaded will be displayed. Type "yes" to have sensors-detect insert those modules into /etc/modules, or edit /etc/modules yourself.
Run
sudo service kmod startThis will read the changes you made to/etc/modulesin step 2, and insert the new modules into the kernel.
Note: If you're running Ubuntu 12.04 or lower, this 3rd step command should be replaced bysudo service module-init-tools restart
Configure fancontrol
- In terminal type
sudo pwmconfig. This script will stop each fan for 5 seconds to find out which fans can be controlled by which PWM handle. After script loops through all fans, you can configure which fan corresponds to which temperature. - You will have to specify what sensors to use. This is a bit tricky. If you have just one fan, make sure to use a temperature sensor for your core to base the fancontrol speed on.
- Run through the prompts and save the changes to the default location.
- Make adjustments to fine-tune
/etc/fancontroland usesudo service fancontrol restartto apply your changes. (In my case I set interval to 2 seconds.)
- In terminal type
Set up fancontrol service
- Run
sudo service fancontrol start. This will also make the fancontrol service run automatically at system startup.
- Run
In my case /etc/fancontrol for CPU I used:
Settings for hwmon0/device/pwm2:
(Depends on hwmon0/device/temp2_input)
(Controls hwmon0/device/fan2_input)
INTERVAL=2
MINTEMP=40
MAXTEMP=60
MINSTART=150
MINSTOP=0
MINPWM=0
MAXPWM=255
and on a different system it is:
INTERVAL=10
DEVPATH=hwmon1=devices/platform/coretemp.0 hwmon2=devices/platform/nct6775.2608
DEVNAME=hwmon1=coretemp hwmon2=nct6779
FCTEMPS=hwmon2/pwm2=hwmon1/temp2_input
FCFANS=hwmon2/pwm2=hwmon2/fan2_input
MINTEMP=hwmon2/pwm2=49
MAXTEMP=hwmon2/pwm2=83
MINSTART=hwmon2/pwm2=150
MINSTOP=hwmon2/pwm2=15
MINPWM=hwmon2/pwm2=14
MAXPWM=hwmon2/pwm2=255
This man page gives some useful info on the settings and what they really do.
If you own a ThinkPad, there's a piece of software called thinkfan that does exactly this. As the name obviously suggests, it is specifically made for ThinkPads (thinkpad_acpi).
The thinkfan software is available in the standard ubuntu software repositories, but it does require a few steps to configure.
Here is an easy step-by-step guide, which is basically a translated version of this German guide.
Relevant Information from Post
Install the thinkfan software and the sensors:
sudo apt-get install thinkfan lm-sensorsMake sure that the daemon controls the fan by editing the
thinkpad.conffile:sudo nano /etc/modprobe.d/thinkfan.confby adding the following line:
options thinkpad_acpi fan_control=1Make the daemon load automatically at start-up by editing the file:
sudo nano /etc/default/thinkfanmaking sure that the START key is set to yes, i.e., there should be a line that says:
START=yesDetect your laptop's sensors:
sudo sensors-detectand just choose the default answers whenever you're prompted by hitting Enter.
Load the new modules. From Ubuntu 13.10 this done by:
sudo service kmod startwhile for previous versions like 13.04 you instead will need to do:
sudo service module-init-tools startFigure out which sensors are in use:
sensors(the ones that indicate 0 degrees are not in use, I don't know why those are "detected" too). Remember which ones are in use.
Find out the full paths of these sensors:
find /sys/devices -type f -name "temp*_input"The output should be a list of paths like /sys/devices/...
Copy-paste the paths to the sensors into the configuration file
/etc/thinkpad.conf. To do this, first open up the file:sudo nano /etc/thinkfan.confThere should already be a line like
#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)(the #-symbol means that that line is commented out). Add a line starting with sensor (without the #-symbol) and copy-paste you first sensor. Repeat this if you have more than one sensor. For example, on my machine, the output in step 7 yields
/sys/devices/virtual/hwmon/hwmon0/temp1_input /sys/devices/platform/thinkpad_hwmon/temp3_input /sys/devices/platform/thinkpad_hwmon/temp4_input /sys/devices/platform/thinkpad_hwmon/temp5_input /sys/devices/platform/thinkpad_hwmon/temp6_input /sys/devices/platform/thinkpad_hwmon/temp7_input /sys/devices/platform/thinkpad_hwmon/temp1_input /sys/devices/platform/thinkpad_hwmon/temp8_input /sys/devices/platform/thinkpad_hwmon/temp2_input /sys/devices/platform/coretemp.0/temp4_input /sys/devices/platform/coretemp.0/temp2_inputThe ones that are in use in my machine are the ones in the first and the last two lines, so I added the three lines:
sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input sensor /sys/devices/platform/coretemp.0/temp4_input sensor /sys/devices/platform/coretemp.0/temp2_inputFinally, we can set the fan speed levels in the configuration file. Open the
/etc/thinkpad.conffile if it wasn't open already.sudo nano /etc/thinkfan.confThe fan levels I use on my ThinkPad x201 are:
(0, 0, 51) (1, 50, 52) (2, 51, 55) (3, 54, 58) (4, 56, 63) (5, 60, 70) (6, 66, 79) (7, 74, 92) (127, 85, 32767)The last line ensures full fan speed (127 = "disengaged" i.e. unregulated). You can fiddle with these levels to fit your needs/wishes, but PLEASE BE CAREFUL!
Reboot. Everything should work now. In order to check whether thinkpad is running correctly, use:
sudo thinkfan -nWhich starts thinkfan in verbose mode. You might want to stop the thinkfan daemon first:
sudo /etc/init.d/thinkfan stopIf you want to start the thinkfan daemon again, type:
sudo /etc/init.d/thinkfan start
Just to be complete, my /etc/thinkfan.conf configuration file is:
# IMPORTANT:
#
# To keep your HD from overheating, you have to specify a correction value for
# the sensor that has the HD's temperature. You need to do this because
# thinkfan uses only the highest temperature it can find in the system, and
# that'll most likely never be your HD, as most HDs are already out of spec
# when they reach 55 °C.
# Correction values are applied from left to right in the same order as the
# temperatures are read from the file.
#
# For example:
# sensor /proc/acpi/ibm/thermal (0, 0, 10)
# will add a fixed value of 10 °C the 3rd value read from that file. Check out
# http://www.thinkwiki.org/wiki/Thermal_Sensors to find out how much you may
# want to add to certain temperatures.
# Syntax:
# (LEVEL, LOW, HIGH)
# LEVEL is the fan level to use (0-7 with thinkpad_acpi)
# LOW is the temperature at which to step down to the previous level
# HIGH is the temperature at which to step up to the next level
# All numbers are integers.
#
# I use this on my T61p:
#sensor /proc/acpi/ibm/thermal (0, 10, 15, 2, 10, 5, 0, 3, 0, 3)
#(0, 0, 55)
#(1, 48, 60)
#(2, 50, 61)
#(3, 52, 63)
#(4, 56, 65)
#(5, 59, 66)
#(7, 63, 32767)
# My settings for my ThinkPad X201: (kris)
sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
sensor /sys/devices/platform/coretemp.0/temp4_input
sensor /sys/devices/platform/coretemp.0/temp2_input
(0, 0, 51)
(1, 50, 52)
(2, 51, 55)
(3, 54, 58)
(4, 56, 63)
(5, 60, 70)
(6, 66, 79)
(7, 74, 92)
(127, 85, 32767)