Linux mint 风扇控制软件
https://wiki.archlinux.org/index.php/Fan_speed_control
fancontrol
is a part of lm_sensors, which can be used to control the speed of CPU/case fans.
Support for newer motherboards may not yet be in the Linux kernel. Check the official lm-sensors devices table to see if experimental drivers are available for such motherboards.
It is recommended not to use lm_sensors.service
to load the needed modules for fancontrol. Instead, manually place them in /etc/modules-load.d/load_these.conf
since the order in which these modules are loaded dictate the order in which the needed symlinks for hwmon get created. In other words, using the lm_sensors.service
causes inconsistencies boot-to-boot which will render the configuration file for fan control worthless for a consistency point of view. To avoid this problem:
In /etc/conf.d/lm_sensors
you find the modules. If not there, run as root sensors-detect
accepting the defaults. In the modules-load.d
file place one module name per line. Specifying them like this will create a reproducible order. Another alternative is to use absolute device names in the configuration file.[1]
lm-sensors
Set up lm_sensors.
$ sensors
coretemp-isa-0000 Adapter: ISA adapter Core 0: +29.0°C (high = +76.0°C, crit = +100.0°C) [...] it8718-isa-0290 Adapter: ISA adapter Vcc: +1.14 V (min = +0.00 V, max = +4.08 V) VTT: +2.08 V (min = +0.00 V, max = +4.08 V) +3.3V: +3.33 V (min = +0.00 V, max = +4.08 V) NB Vcore: +0.03 V (min = +0.00 V, max = +4.08 V) VDRAM: +2.13 V (min = +0.00 V, max = +4.08 V) fan1: 690 RPM (min = 10 RPM) temp1: +37.5°C (low = +129.5°C, high = +129.5°C) sensor = thermistor temp2: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode
If the output does not display an RPM value for the CPU fan, one may need to increase the fan divisor. If fan speed is shown and higher than 0, skip the next step.
Increasing fan_div
The first line of the sensors output is the chipset used by the motherboard for readings of temperatures and voltages.
Create a file in /etc/sensors.d/
:
/etc/sensors.d/fan-speed-control.conf
chip "coretemp-isa-*" set fanX_div 4
Replacing coretemp-isa- with name of the chipset and X with the number of the CPU fan to change.
Save the file, and run as root:
# sensors -s
which will reload the configuration files.
Run sensors
again, and check if there is an RPM readout. If not, increase the divisor to 8, 16, or 32. YMMV!
Configuration
/etc/fancontrol
on their own, which also saves them from hearing all of the fans at full speed.Once sensors are properly configured, use pwmconfig
to test and configure fan speed control. The default configuration options should create /etc/fancontrol
configuration file:
# pwmconfig
Tweaking
Users wishing more control may need to tweak the generated configuration. Here is a sample configuration file:
INTERVAL=10 DEVPATH=hwmon0=devices/platform/coretemp.0 hwmon2=devices/platform/w83627ehf.656 DEVNAME=hwmon0=coretemp hwmon2=w83627dhg FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp1_input FCFANS= hwmon0/device/pwm1=hwmon0/device/fan1_input MINTEMP=hwmon0/device/pwm1=20 MAXTEMP=hwmon0/device/pwm1=55 MINSTART=hwmon0/device/pwm1=150 MINSTOP=hwmon0/device/pwm1=105
INTERVAL
: how often the daemon should poll CPU temps and adjust fan speeds. INTERVAL is in seconds.
The rest of the configuration file is split into (at least) two values per configuration option. Each configuration option first points to a PWM device which is written to which sets the fan speed. The second "field" is the actual value to set. This allows monitoring and controlling multiple fans and temperatures.
FCTEMPS
: The temperature input device to read for CPU temperature. The above example corresponds to/sys/class/hwmon/hwmon0/device/temp1_input
.FCFANS
: The current fan speed, which can be read (like the temperature) in/sys/class/hwmon/hwmon0/device/fan1_input
MINTEMP
: The temperature (°C) at which to SHUT OFF the CPU fan. Efficient CPUs often will not need a fan while idling. Be sure to set this to a temperature that you know is safe. Setting this to 0 is not recommended and may ruin your hardware!MAXTEMP
: The temperature (°C) at which to spin the fan at its MAXIMUM speed. This should be probably be set to perhaps 10 or 20 degrees (°C) below your CPU's critical/shutdown temperature. Setting it closer to MINTEMP will result in higher fan speeds overall.MINSTOP
: The PWM value at which your fan stops spinning. Each fan is a little different. Power tweakers canecho
different values (between 0 and 255) to/sys/class/hwmon/hwmon0/device/pwm1
and then watch the CPU fan. When the CPU fan stops, use this value.MINSTART
: The PWM value at which your fan starts to spin again. This is often a higher value than MINSTOP as more voltage is required to overcome inertia.
There are also two settings fancontrol needs to verify the configuration file is still up to date. The lines start with the setting name and an equality sign, followed by groups of hwmon-class-device=setting, separated by spaces. You need to specify each setting for each hwmon class device you use anywhere in the config, or fancontrol will not work.
DEVPATH
: Sets the physical device. You can determine this by executing the command
readlink -f /sys/class/hwmon/[your-hwmon-device]/device | sed -e 's/^\/sys\///'
DEVNAME
: Sets the name of the device. Try:
$ sed -e 's/[[:space:]=]/_/g' /sys/class/hwmon/[your-hwmon-device]/device/name
MAXPWM
and MINPWM
options that limit fan speed range. See fancontrol manual page for details.DEVPATH
may change on reboot due to different timing of module loading, but also e.g. the temperature sensor paths (hwmon0/device/temp1_input becomes hwmon0/temp1_input). This usually happens on a kernel update. Check the system log to find out which is the troublemaker:
# systemctl status fancontrol.serviceand correct your config file accordingly.
fancontrol
fancontrol
may result in an error regarding changed device paths. This issue may be fixed by running sensors-detect
again and restarting the system.Try to run fancontrol:
# /usr/bin/fancontrol
A properly configured setup will not error out and will take control of system fans. Users should hear system fans slowing shortly after executing this command.
To enable starting fancontrol automatically on every boot, enable fancontrol.service
.
For an unofficial GUI install fancontrol-guiAUR or fancontrol-kcmAUR.
NBFC
NBFC is a cross-platform fan control solution for notebooks. It comes with a powerful configuration system, which allows to adjust it to many different notebook models, including some of the latest ones.
Installation
NBFC can be installed as nbfcAUR or nbfc-gitAUR. Also start and enable nbfc.service
.
Configuration
NBFC comes with pre-made profiles. You can find them in /opt/nbfc/Configs/
directory. When applying them, use exact profile name without extension (e.g. some profile.xml
becomes "some profile"
).
Check if there is anything NBFC can recommend:
$ nbfc config -r
If there is at least one model, try to apply this profile and see how fan speeds are being handled. For example:
$ nbfc config -a "Asus Zenbook UX430UA"
File Descriptor does not support writing
, delete StagWare.Plugins.ECSysLinux.dll
[2] and restart nbfc.service
:
# mv /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll.old
If above solution did not help, try appending ec_sys.write_support=1
to kernel parameters.
If there are no recommended models, go to NBFC git repository or /opt/nbfc/Configs/
and check if there are any similar models available from the same manufacturer. For example, on Asus Zenbook UX430UQ, the configuration Asus Zenbook UX430UA did not work well (fans completelly stopped all the time), but Asus Zenbook UX410UQ worked fantastically.
Run nbfc
to see all options. More information about configuration is available at upstream wiki.