https://wiki.archlinux.org/api.php?action=feedcontributions&user=Speedyx&feedformat=atomArchWiki - User contributions [en]2024-03-29T08:41:18ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Fan_speed_control&diff=613606Fan speed control2020-05-16T23:50:33Z<p>Speedyx: I changed the prompt for the user shell $ to the one for the su shell #.</p>
<hr />
<div>[[Category:CPU]]<br />
[[Category:Graphics]]<br />
[[it:Fan speed control]]<br />
[[ja:ファンスピード制御]]<br />
[[zh-hans:Fan speed control]]<br />
{{Related articles start}}<br />
{{Related|Lm_sensors}}<br />
{{Related|Undervolting CPU}}<br />
{{Related|PHC}}<br />
{{Related|CPU frequency scaling}}<br />
{{Related articles end}}<br />
<br />
Fan control can bring various benefits to your system, such as quieter working system and power saving by completely stopping fans on low CPU load.<br />
<br />
{{Warning|Configuring or completely stopping fans on high system load might result in permanently damaged hardware.}}<br />
<br />
== Overview ==<br />
<br />
{{Note|Laptop users should be aware about how cooling system works in their hardware. Some laptops have single fan for both CPU and GPU and cools both at the same time. Some laptops have two fans for CPU and GPU, but the first fan cools down CPU and GPU at the same time, while the other one cools CPU only. In some cases, you will not be able to use [[#Fancontrol (lm-sensors)|Fancontrol]] script due to incompatible cooling architecture (e.g. one fan for both GPU and CPU). [https://github.com/daringer/asus-fan/issues/47#issue-232063547 Here] is some more information about this topic.}}<br />
<br />
There are multiple working solutions for fan control for both desktops and notebooks. Depending on your needs:<br />
<br />
* [[#Fancontrol (lm-sensors)|Fancontrol (lm-sensors)]] - Script (written in Bash) to configure fan speeds. Most suitable for desktops and laptops, where fan controls are available via sysfs.<br />
* [[#NBFC|NoteBook Fan Control (NBFC)]] - Cross-platform solution for laptop fan control, written in C# and works under [[Mono]] runtime. Most suitable for latest, unsupported by [[#Fancontrol (lm-sensors)|Fancontrol]] laptops.<br />
* [[#Dell laptops|Dell laptops]] - Alternative fan control daemon for some Dell laptops.<br />
* [[#ThinkPad laptops|ThinkPad laptops]] - Fan configuration for some ThinkPad laptops.<br />
* [[#Asus laptops|Asus laptops]] - Configure some Asus laptops for [[#Fancontrol (lm-sensors)|Fancontrol]] or manual control.<br />
<br />
== Fancontrol (lm-sensors) ==<br />
<br />
{{ic|fancontrol}} is a part of {{Pkg|lm_sensors}}, which can be used to control the speed of CPU/case fans.<br />
<br />
Support for newer motherboards may not yet be in the Linux kernel. Check the official [https://hwmon.wiki.kernel.org/device_support_status lm-sensors devices] table to see if experimental drivers are available for such motherboards.<br />
<br />
=== lm-sensors ===<br />
<br />
The first thing to do is to run<br />
# sensors-detect<br />
<br />
This will detect all of the sensors present and they will be used for fancontrol. After that, run the following to check if it detected the sensors correctly:<br />
<br />
{{hc|$ sensors|2=<br />
coretemp-isa-0000<br />
Adapter: ISA adapter<br />
Core 0: +29.0°C (high = +76.0°C, crit = +100.0°C) <br />
...<br />
it8718-isa-0290<br />
Adapter: ISA adapter<br />
Vcc: +1.14 V (min = +0.00 V, max = +4.08 V) <br />
VTT: +2.08 V (min = +0.00 V, max = +4.08 V) <br />
+3.3V: +3.33 V (min = +0.00 V, max = +4.08 V) <br />
NB Vcore: +0.03 V (min = +0.00 V, max = +4.08 V) <br />
VDRAM: +2.13 V (min = +0.00 V, max = +4.08 V) <br />
fan1: 690 RPM (min = 10 RPM)<br />
temp1: +37.5°C (low = +129.5°C, high = +129.5°C) sensor = thermistor<br />
temp2: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode<br />
}}<br />
<br />
{{Note|If the output does not display an RPM value for the CPU fan, one may need to [[#Increase the fan divisor for sensors]]. If the fan speed is shown and higher than 0, this is fine.}}<br />
<br />
=== Configuration ===<br />
<br />
Once the sensors are properly configured, use {{ic|pwmconfig}} to test and configure fan speed control. Following the guide should create /etc/fancontrol a customized configuration file. In the guide, the default answers are in parenthesis if you press enter without typing anything. Enter "y" for yes, "n" for no.<br />
# pwmconfig<br />
<br />
{{Note|Some users may experience issues when using /sys/class/hwmon/ paths for their configuration file. hwmon class device symlinks points to the absolute paths, and are used to group all of the hwmon sensors together into one folder for easier access. Sometimes, the order of the hwmon devices change from a reboot, causing fancontrol to stop working. Go to [[#Device Paths have Changed in /etc/fancontrol]] for more information on how to fix this.}}<br />
<br />
==== Tweaking ====<br />
<br />
Some users may want to manually tweak the config file after running pwmconfig, usually to fix something. For manually tweaking the {{ic|/etc/fancontrol}} configuration file, see the {{man|8|fancontrol}} manual page for the definitions of the variables.<br />
<br />
Users will probably encounter the hwmon path issues as noted above in [[#Fancontrol (lm-sensors)]]. Look at [[#Device Paths have Changed in /etc/fancontrol]] for more information.<br />
<br />
{{Tip|Use {{ic|MAXPWM}} and {{ic|MINPWM}} options that limit fan speed range. See the {{man|8|fancontrol}} manual page for details.}}<br />
<br />
{{Note|Temperature and fan sensor paths could change as well (usually on a kernel update) (e.g. {{ic|hwmon0/device/temp1_input}} becomes {{ic|hwmon0/temp1_input}}). Check the system log to find out which path is the troublemaker:<br />
# systemctl status fancontrol.service <br />
and correct your config file accordingly.}}<br />
<br />
=== Running Fancontrol ===<br />
<br />
Try to run ''fancontrol'':<br />
<br />
# fancontrol<br />
<br />
A properly configured setup will not output errors and will take control of the system fans. Users should hear system fans starting shortly after executing this command.<br />
<br />
To enable starting ''fancontrol'' automatically on every boot, [[enable]] {{ic|fancontrol.service}}:<br />
# systemctl enable fancontrol.service<br />
<br />
To start it in the background, run<br />
# systemctl start fancontrol.service<br />
For an unofficial GUI [[install]] {{AUR|fancontrol-gui}} or {{AUR|fancontrol-kcm}}.<br />
<br />
== NBFC ==<br />
<br />
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.<br />
<br />
=== Installation ===<br />
<br />
NBFC can be installed as {{AUR|nbfc}} or {{AUR|nbfc-git}}. Also start and enable {{ic|nbfc.service}}.<br />
<br />
=== Configuration ===<br />
<br />
NBFC comes with pre-made profiles. You can find them in {{ic|/opt/nbfc/Configs/}} directory. When applying them, use exact profile name without extension (e.g. {{ic|some profile.xml}} becomes {{ic|"some profile"}}).<br />
<br />
Check if there is anything NBFC can recommend:<br />
$ nbfc config -r<br />
<br />
If there is at least one model, try to apply this profile and see how fan speeds are being handled. For example:<br />
$ nbfc config -a "Asus Zenbook UX430UA"<br />
<br />
{{Note|If you are getting {{ic|File Descriptor does not support writing}}, delete {{ic|StagWare.Plugins.ECSysLinux.dll}} [https://github.com/hirschmann/nbfc/issues/439] and [[restart]] {{ic|nbfc.service}}:<br />
# mv /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll /opt/nbfc/Plugins/StagWare.Plugins.ECSysLinux.dll.old<br />
If above solution did not help, try appending {{ic|1=ec_sys.write_support=1}} to [[kernel parameters]].<br />
}}<br />
<br />
If there are no recommended models, go to [https://github.com/hirschmann/nbfc/tree/master/Configs NBFC git repository] or {{ic|/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.<br />
<br />
Run {{ic|nbfc}} to see all options. More information about configuration is available at [https://github.com/hirschmann/nbfc/wiki/ upstream wiki].<br />
<br />
== Dell laptops ==<br />
<br />
{{ic|i8kutils}} is a daemon to configure fan speed according to CPU temperatures on some Dell Inspiron and Latitude laptops. It uses the {{ic|/proc/i8k}} interface provided by the {{ic|dell_smm_hwmon}} driver (formerly {{ic|i8k}}). Results will vary depending on the exact model of laptop.<br />
<br />
{{Warning|1=i8kutils BIOS system calls stop the kernel for a moment on some systems (confirmed on Dell 9560), this can lead to side effects like audio dropouts, see https://bugzilla.kernel.org/show_bug.cgi?id=201097}}<br />
<br />
=== Installation ===<br />
<br />
{{AUR|i8kutils}} is the main package to control fan speed. Additionally, you might want to install these:<br />
<br />
* {{Pkg|acpi}} - must be installed to use {{ic|i8kmon}}.<br />
* {{Pkg|tcl}} - must be installed in order to run {{ic|i8kmon}} as a background service (using the {{ic|--daemon}} option).<br />
* {{Pkg|tk}} - must be installed together with {{Pkg|tcl}} to run as X11 desktop applet.<br />
* {{AUR|dell-bios-fan-control-git}} - recommended if your BIOS overrides fan control<br />
<br />
=== Configuration ===<br />
<br />
By default, {{ic|i8kmon}} only monitors the CPU temperature and fan speed passively. To enable its fan speed control, either run it with the {{ic|--auto}} option or enable the option permanently in {{ic|/etc/i8kutils/i8kmon.conf}}:<br />
<br />
set config(auto) 1<br />
<br />
The temperature points at which the fan changes speed can be adjusted in the same configuration file. Only three fans speeds are supported (high, low, and off). Look for a section similar to the following:<br />
<br />
set config(0) {{0 0} -1 55 -1 55}<br />
set config(1) {{1 1} 45 75 45 75}<br />
set config(2) {{2 2} 65 128 65 128}<br />
<br />
This example starts the fan at low speed when the CPU temperature reaches 55 °C, switching to high speed at 75 °C. The fan will switch back to low speed once the temperature drops to 65 °C, and turns off completely at 45 °C.<br />
<br />
=== Installation as a service ===<br />
<br />
{{ic|i8kmon}} can be started automatically as a [[systemd]] service:<br />
<br />
# systemctl enable i8kmon<br />
# systemctl start i8kmon<br />
<br />
=== BIOS overriding fan control ===<br />
<br />
Some newer laptops have BIOS fan control in place which will override the OS level fan control. To test if this the case, run {{ic|i8kmon}} with verbose mode in a command line, make sure the CPU is idle, then see if the fan is turned off or turned down accordingly.<br />
<br />
If the BIOS fan control is in place, you can try using {{AUR|dell-bios-fan-control-git}}:<br />
<br />
{{Warning|1=turning off BIOS fan control could result in damage to your hardware. Make sure you have i8kmon properly set up beforehand, or leave the CPU idle while you test this program }}<br />
<br />
To enable BIOS fan control:<br />
<br />
# dell-bios-fan-control 1<br />
<br />
To disable BIOS fan control:<br />
<br />
# dell-bios-fan-control 0<br />
<br />
To automatically disable BIOS fan control via [[systemd]]:<br />
<br />
# systemctl enable dell-bios-fan-control<br />
# systemctl start dell-bios-fan-control<br />
<br />
== ThinkPad laptops ==<br />
<br />
Current fan control daemons available in the [[AUR]] are {{AUR|simpfand-git}} and {{AUR|thinkfan}} (recommended).<br />
<br />
=== Installation ===<br />
<br />
Install {{AUR|thinkfan}} or {{AUR|thinkfan-git}}. Optionally, but recommended, install {{pkg|lm_sensors}}. Then have a look at the files:<br />
<br />
# pacman -Ql thinkfan<br />
<br />
Note that the thinkfan package installs {{ic|/usr/lib/modprobe.d/thinkpad_acpi.conf}}, which contains<br />
<br />
options thinkpad_acpi fan_control=1<br />
<br />
So fan control is enabled by default. Alternatively, you can enable fan control as follows:<br />
<br />
# echo "options thinkpad_acpi fan_control=1" > /etc/modprobe.d/thinkfan.conf<br />
<br />
Now, load the module: <br />
<br />
$ su<br />
# modprobe thinkpad_acpi<br />
# cat /proc/acpi/ibm/fan<br />
<br />
You should see that the fan level is "auto" by default, but you can echo a level command to the same file to control the fan speed manually. The thinkfan daemon will do this automatically.<br />
<br />
Finally, enable the thinkfan systemd service:<br />
<br />
# systemctl enable thinkfan<br />
<br />
To configure the temperature thresholds, you will need to copy one of the example config files (e.g. {{ic|/usr/share/doc/thinkfan/examples/thinkfan.conf.simple}}) to {{ic|/etc/thinkfan.conf}}, and modify to taste. This file specifies which sensors to read, and which interface to use to control the fan. Some systems have {{ic|/proc/acpi/ibm/fan}} and {{ic|/proc/acpi/ibm/thermal}} available; on others, you will need to specify something like:<br />
<br />
hwmon /sys/devices/virtual/thermal/thermal_zone0/temp<br />
<br />
to use generic hwmon sensors instead of thinkpad-specific ones.<br />
<br />
=== Running ===<br />
<br />
You can test your configuration first by running thinkfan manually (as root):<br />
<br />
# thinkfan -n<br />
<br />
and see how it reacts to the load level of whatever other programs you have running.<br />
<br />
When you have it configured correctly, [[start/enable]] {{ic|thinkfan.service}}.<br />
<br />
== Asus laptops ==<br />
<br />
This topic will cover drivers configuration on Asus laptops for [[#Fancontrol_.28lm-sensors.29|Fancontrol (lm-sensors)]].<br />
<br />
=== Kernel modules ===<br />
In configuration files, we are going to use full paths to sysfs files (e.g. {{ic|/sys/devices/platform/asus-nb-wmi/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1}}). This is because hwmon'''1''' might change to any other number after reboot. [[#Fancontrol_.28lm-sensors.29|Fancontrol (lm-sensors)]] is written in [[Bash]], so using these paths in configuration file is completely acceptable. You can find complete {{ic|/etc/fancontrol}} configuration file examples at [[ASUS N550JV#Fan control]].<br />
<br />
==== asus-nb-wmi ====<br />
''asus-nb-wmi'' is a kernel module, which is included in the Linux kernel and is loaded automatically on Asus laptops. It will only allow to control a single fan and if there is a second fan you will not have any controls over it. Note that blacklisting this module will prevent keyboard backlight to work.<br />
<br />
Below are the commands to control it. Check if you have any controls over your fan:<br />
<br />
# echo 255 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1 # Full fan speed (Value: 255)<br />
# echo 0 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1 # Fan is stopped (Value: 0)<br />
# echo 2 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon[<nowiki>[[:print:]]*</nowiki>/pwm1_enable # Change fan mode to automatic<br />
# echo 1 > /sys/devices/platform/asus-nb-wmi/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1_enable # Change fan mode to manual<br />
<br />
If you were able to modify fan speed with above commands, then continue with [[#Generate config file with pwmconfig]].<br />
<br />
==== asus_fan ====<br />
''asus_fan'' is a kernel module, which allows to control both fans on some older Asus laptops. It does not work with the most recent models.<br />
<br />
Install the [[DKMS]] {{Aur|asus-fan-dkms-git}} [[kernel module]], providing {{ic|asus_fan}}:<br />
<br />
# modprobe asus_fan<br />
<br />
Check if you have any control over both fans:<br />
<br />
# echo 255 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1 # Full CPU fan speed (Value: 255)<br />
# echo 0 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1 # CPU fan is stopped (Value: 0)<br />
# echo 255 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm2 # Full GFX fan speed (Value: 255)<br />
# echo 0 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm2 # GFX fan is stopped (Value: 0)<br />
# echo 2 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1_enable # Change CPU fan mode to automatic<br />
# echo 1 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm1_enable # Change CPU fan mode to manual<br />
# echo 2 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm2_enable # Change GFX fan mode to automatic<br />
# echo 1 > /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm2_enable # Change GFX fan mode to manual<br />
# cat /sys/devices/platform/asus_fan/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/temp1_input # Display GFX temperature (will always be 0 when GFX is disabled/unused)<br />
<br />
If everything works, you might want to load this kernel module [[Kernel_module#Automatic module loading with systemd|on boot]]:<br />
<br />
{{hc|/etc/modules-load.d/asus_fan.conf|2=<nowiki><br />
asus_fan<br />
</nowiki>}}<br />
<br />
Continue with [[#Generate config file with pwmconfig]].<br />
<br />
=== Generate config file with pwmconfig ===<br />
<br />
If you get an error {{ic|There are no working fan sensors, all readings are 0}} while generating config file with {{ic|pwmconfig}}, open first console and execute:<br />
<br />
# watch -n 1 "echo 2 > /sys/devices/platform/'''<kernel_module>'''/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm'''1'''_enable"<br />
<br />
If you use {{ic|asus_fan}} kernel module and have 2nd fan, in second console:<br />
<br />
# watch -n 1 "echo 2 > /sys/devices/platform/'''<kernel_module>'''/hwmon/hwmon<nowiki>[[:print:]]*</nowiki>/pwm'''2'''_enable"<br />
<br />
And finally, in the third console:<br />
<br />
# pwmconfig<br />
<br />
Once you are done and the configuration file is generated, you should stop the first and second consoles. Continue with [[#Fancontrol_.28lm-sensors.29|Fancontrol (lm-sensors)]]. After config file is generated, you might need to manually replace PWM values with full sysfs paths as they are used in these steps, because hwmon number values might change after reboot.<br />
<br />
== AMDGPU sysfs fan control ==<br />
[[AMDGPU]] kernel driver offers fan control for graphics cards via hwmon in sysfs.<br />
<br />
=== Configuration of manual control ===<br />
To switch to manual fan control from automatic, run<br />
# echo "1" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable<br />
Set up fan speed to e.g. 50% (100% are 255 PWM cycles, thus calculate desired fan speed percentage by multiplying its value by 2.55):<br />
# echo "128" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1<br />
To reset to automatic fan control, run<br />
# echo "2" > /sys/class/drm/card0/device/hwmon/hwmon0/pwm1_enable<br />
{{Warning|Resetting fan speed to auto may not work due to a driver bug and instead a restart of the driver may be required as a workaround.}}<br />
<br />
=== amdgpu-fan ===<br />
<br />
The {{aur|amdgpu-fan}} package is an automated fan controller for AMDGPU-enabled video cards written in Python. It uses a "speed-matrix" to match the frequency of the fans with the temperature of the GPU, for example:<br />
<br />
{{bc|speed_matrix: # -[temp(*C), speed(0-100%)]<br />
- [0, 0]<br />
- [40, 30]<br />
- [60, 50]<br />
- [80, 100]}}<br />
<br />
Once the package can be installed, it can be run as a service, so you can either run it for the current session:<br />
<br />
# systemctl start amdgpu-fan.service<br />
<br />
or executed at boot<br />
<br />
# systemctl enable amdgpu-fan.service<br />
<br />
=== fancurve script ===<br />
Not just fan controls are offered via hwmon in sysfs, but also GPU temperature reading:<br />
cat /sys/class/drm/card0/device/hwmon/hwmon0/temp1_input<br />
This outputs GPU temperature in °C + three zeroes, e.g. {{ic|33000}} for 33°C.<br />
<br />
The bash script [https://github.com/grmat/amdgpu-fancontrol amdgpu-fancontrol] by grmat offers a fully automatic fan control by using the described sysfs hwmon functionality.<br />
It also allows to comfortably adjust the fancurve's temperature/PWM cycles assignments and a hysteresis by offering abstracted configuration fields at the top of the script.<br />
{{Tip| In order to function correctly, the script needs at least three defined temperature/PWM cycles assignments.}}<br />
<br />
For safety reasons, the script sets fan control again to auto when shutting down. This may cause spinning up of fans, which can be worked around at cost of security by setting {{ic|set_fanmode 1}} in the section {{ic|function reset_on_fail}}.<br />
<br />
==== Setting up fancurve script ====<br />
To start the script, it is recommend to do so via [[systemd]] init system. This way the script's verbose output can be read via [[journalctl]]/systemctl status. For this purpose, a .service configuration file is already included in the GitHub repository.<br />
<br />
It may also be required to restart the script via a [[Power_management#Sleep_hooks|root-resume.service]] after hibernation in order to make it automatically function properly again:<br />
{{hc|/etc/systemd/system/root-resume.service|<nowiki><br />
[Unit]<br />
Description=Local system resume actions<br />
After=suspend.target<br />
<br />
[Service]<br />
Type=simple<br />
ExecStart=/usr/bin/systemctl restart amdgpu-fancontrol.service<br />
<br />
[Install]<br />
WantedBy=suspend.target</nowiki>}}<br />
<br />
== Troubleshooting ==<br />
=== Increase the fan divisor for sensors ===<br />
<br />
If ''sensors'' does not output the CPU fan RPM, it may be necessary to change the fan divisor.<br />
<br />
The first line of the ''sensors'' output is the chipset used by the motherboard for readings of temperatures and voltages. <br />
<br />
Create a file in {{ic|/etc/sensors.d/}}:<br />
<br />
{{hc|/etc/sensors.d/fan-speed-control.conf|chip "''coretemp-isa-''*"<br />
set fan''X''_div 4}}<br />
<br />
Replacing ''coretemp-isa-'' with name of the chipset and ''X'' with the number of the CPU fan to change.<br />
<br />
Save the file, and run as root:<br />
# sensors -s<br />
<br />
which will reload the configuration files.<br />
<br />
Run {{ic|sensors}} again, and check if there is an RPM readout. If not, increase the divisor to 8, 16, or 32. YMMV!<br />
<br />
=== Device Paths have Changed in /etc/fancontrol ===<br />
<br />
The enumerated hwmon symlinks located in /sys/class/hwmon/ might vary in order because the kernel modules do not load in a consistent order per boot. Because of this, it may cause fancontrol to not function correctly.<br />
<br />
==== Solution ====<br />
In {{ic|/etc/conf.d/lm_sensors}}, there are 2 arrays that lists all of the modules detected when you execute {{ic|sensors-detect}}. These get loaded in by fancontrol. If the file does not exist, run {{ic|sensors-detect}} as root, accepting the defaults. Open (or create) {{ic|/etc/modules-load.d/modules.conf}}. Get all of the modules listed from the 2 variables in {{ic|/etc/conf.d/lm_sensors/}} and place them into the {{ic|/etc/modules-load.d/modules.conf}} file, one module per line. Specifying them like this should make a defined order for the modules to load in, which should make the hwmon paths stay where they are and not change orders for every boot. If this doesnt work, I highly recommend finding another program to control your fans. If you cannot find any, then you could try using the alternative solution below.<br />
<br />
==== Alternative Solution: Absolute paths ====<br />
Using absolute file paths in fancontrol does not work by default, as its helper script {{ic|pwmconfig}} is programmed to only use the hwmon paths to get the files. The way it does this is that it detects whether the hwmon path that is provided in its config file {{ic|/etc/fancontrol}} did not change, and uses the variables {{ic|DEVNAME}} and {{ic|DEVPATH}} to determine such change. If your hwmon paths keep changing, this will prevent fancontrol from running no matter what you do. However, one can circumvent this problem. Open {{ic|/usr/bin/fancontrol}}, and comment out this part of the script:<br />
if ! ValidateDevices "$DEVPATH" "$DEVNAME"<br />
then<br />
echo "Configuration appears to be outdated, please run pwmconfig again" >&2<br />
exit 1<br />
fi<br />
<br />
{{Note|Doing this may make fancontrol write into files you gave it in the config file, no matter what the file is. This can corrupt files if you provide the wrong path. Be sure that you are using the correct path for your files.<br />
<br />
Another thing to note is that while doing this workaround, using {{ic|pwmconfig}} to create your script again will overwrite all of your absolute paths that you have configured. Therefore, it is better to manually change the old paths to the new paths if it is needed instead of using pwmconfig.<br />
}}<br />
<br />
Commenting this out should effectively ignore the hwmon validation checks. You can also ignore the variables {{ic|DEVNAME}} and {{ic|DEVPATH}} in the config file as well. After this, replace all of the hwmon paths in the other variables with its absolute path. To make it easier, rerun {{ic|pwmconfig}} to refresh the hwmon devices. The hwmon paths in the config file should now point to the correct absolute paths. For each hwmon path, run the following command:<br />
"#" is the enumeration of the hwmon path<br />
$ readlink -f /sys/class/hwmon/hwmon#/device<br />
<br />
This will give you the absolute path of the device.<br />
<br />
For example, a /etc/fancontrol file lists FCTEMPS as this:<br />
FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input<br />
<br />
Executing {{ic|readlink -f /sys/class/hwmon/hwmon3/device}} can, for example, output {{ic|/sys/devices/platform/coretemp.0/}}. {{ic|cd}} into this directory. If you see a {{ic|/hwmon/hwmon#/}} directory, you have to do this in your fancontrol config file to replace the hwmon# path. From the previous example:<br />
# BEFORE<br />
FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input<br />
# AFTER<br />
FCTEMPS=hwmon2/pwm1=/sys/devices/platform/coretemp.0/hwmon/<nowiki>[[:print:]]*</nowiki>/temp1_input<br />
<br />
Essentially, you must replace the hwmon path with the absolute path, concatenated with {{ic|/hwmon/<nowiki>[[:print:]]*</nowiki>/} so that bash can catch the random enumerated hwmon name.<br />
<br />
If you do not see the {{ic|/hwmon/hwmon#/}} directory, then you do not have to worry about this. This means that the temperature files are in the root of the device folder. Just replace {{ic|hwmon#/}} with the absolute file path. For example:<br />
#BEFORE<br />
FCTEMPS=hwmon2/pwm1=hwmon3/temp1_input<br />
#AFTER<br />
FCTEMPS=hwmon2/pwm1=/sys/devices/platform/coretemp.0/temp1_input<br />
<br />
After replacing all of paths, fancontrol should work fine.</div>Speedyxhttps://wiki.archlinux.org/index.php?title=Talk:Lenovo_ThinkPad_T450(s)&diff=455863Talk:Lenovo ThinkPad T450(s)2016-11-03T06:09:48Z<p>Speedyx: Can I update this guide?</p>
<hr />
<div>Hi,<br />
I use archlinux now since 2011 as my main system even if I use linux since 1999.<br />
I have a Thinkpad 450s sin september 2015 and want to update this guide after my recent reinstall.<br />
Can I update it or is better to make a new guide?</div>Speedyxhttps://wiki.archlinux.org/index.php?title=Talk:PDF_forms&diff=455862Talk:PDF forms2016-11-03T06:07:45Z<p>Speedyx: Can I update this guide?</p>
<hr />
<div>Hi,<br />
I want to update this guide.<br />
I use only linux since 2005 and before that I used linux since 1999 and unix before.<br />
I work everyday with pdf and forms.<br />
This guide isn't practical or useful, maybe is misguiding.<br />
Can I update this guide?</div>Speedyxhttps://wiki.archlinux.org/index.php?title=Talk:Microcode&diff=455344Talk:Microcode2016-10-28T13:53:35Z<p>Speedyx: /* Please remove the following paragraph */ new section</p>
<hr />
<div>== CPU microcode loading support for custom kernel ==<br />
<br />
Is the section [[Microcode#Enabling Intel Early Microcode Loading in Custom Kernels]] still relevant when {{ic|initrd /intel-ucode.img}} is added to the Gummiboot options? -- [[User:Gim|Gim]] ([[User talk:Gim|talk]]) 09:42, 1 November 2014 (UTC)<br />
<br />
== Passing parameters with refind ==<br />
With [https://wiki.archlinux.org/index.php?title=Microcode&diff=next&oldid=356137 this] edit [[User:Vesz]] deleted "/boot/" from parameters. Is this correct? Because in the following paragraph there is explained to use {{ic|1=initrd=/intel-ucode.img}} or {{ic|/boot/intel-ucode.img}} as required.<br />
As you can see, there "/" symbol is used before "intel-ucode.img". — [[User:Agent0|Agent0]] ([[User_talk:Agent0|talk]]|[[Special:Contributions/Agent0|contribs]]) 20:21, 20 February 2015 (UTC)<br />
<br />
:I have only tried using it without a /, and it works. I assume that it might work with a / as well but I haven't confirmed it. Either way it seems that if you have a separate boot partition it's wrong to enter the path in a root-filesystem format. I don't have access to the system in question right now so I can't try with a leading /. [[User:Vesz|Vesz]] 21:09, 20 February 2015 (UTC)<br />
<br />
== Disable microcode updates ==<br />
<br />
Is there any way to disable microcode updates?<br />
We have had trouble with failed microcode updates in VMs so it would be great if it were possible to disable them (for AMD in this case)<br />
<br />
{{unsigned|05:02, 3 January 2016|Marcus039}}<br />
<br />
: The answer to your question is clearly articulated in the main article. [[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 15:18, 3 January 2016 (UTC)<br />
<br />
:: No it is not, the page deals only with enabling, not '''disabling''' microcode updates. For Intel it can be disabled trivially (you just uninstall {{Pkg|intel-ucode}}), but since for AMD the updates are available in {{Pkg|linux-firmware}} and applied automatically, disabling it is not clear at all. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:06, 3 January 2016 (UTC)<br />
<br />
== Please remove the following paragraph ==<br />
<br />
<br />
{{Warning|This file will automatically be overwritten by {{ic|/usr/bin/grub-mkconfig}} during certain updates negating the changes. It is strongly recommended to use the configuration directory in {{ic|/etc/grub.d/}} to manage your GRUB configuration needs.}}<br />
<br />
This paragraph must be removed because grub now recognize the presence of intel_ucode.img in /boot.</div>Speedyxhttps://wiki.archlinux.org/index.php?title=Talk:Reflector&diff=370934Talk:Reflector2015-04-24T07:13:45Z<p>Speedyx: /* About example 4, the script */</p>
<hr />
<div>== About example 4, the script ==<br />
<br />
I don't understand the reason we have in the first line of the script the command<br />
<br />
wget -O /etc/pacman.d/mirrorlist.backup https://www.archlinux.org/mirrorlist/all/<br />
<br />
It seams completely unuseful because reflector download the mirrorlist itself.<br />
<br />
[[User:Speedyx|speedytux]] ([[User talk:Speedyx|talk]]) 07:13, 24 April 2015 (UTC)</div>Speedyxhttps://wiki.archlinux.org/index.php?title=Talk:Reflector&diff=370933Talk:Reflector2015-04-24T07:12:32Z<p>Speedyx: /* About example 4, the script */ new section</p>
<hr />
<div>== About example 4, the script ==<br />
<br />
I don't understand the reason we have in the first line of the script the command<br />
<br />
wget -O /etc/pacman.d/mirrorlist.backup https://www.archlinux.org/mirrorlist/all/<br />
<br />
It seams completely unuseful because reflector download the mirrorlist itself.<br />
<br />
[[User:Speedyx|speedytux]] ([[User talk:Speedyx|talk]]) 07:12, 24 April 2015 (UTC)Speedyx</div>Speedyxhttps://wiki.archlinux.org/index.php?title=Talk:NTFS-3G&diff=219785Talk:NTFS-3G2012-08-26T13:40:24Z<p>Speedyx: /* /etc/fstab and the type parameter */ new section</p>
<hr />
<div>Anyone else having problems accessing punkrockguy's repository?<br />
<br />
== Default behaviour of mount ==<br />
<br />
The page used to claim that `mount` uses `ntfsmount` from the ntfsprogs package when ntfs-3g is not explicitly stated. This appears to be incorrect (probably outdated), as the ntfs-3g package includes a symlink, /sbin/mount.ntfs, which is used by `mount` on default and points to /bin/ntfs-3g. Correct me if i'm wrong.<br />
<br />
: Nope, not gonna correct you, TaylanUB. Just tested an you're right. By default (in Arch) it uses ntfs-3g now. So this is good news. I think the install cd might still but for regular installs, we're good. Thanks for the updated information. Fixing.<br />
<br />
: ''Edit:'' Oop or not fixing. Thanks for doing TaylanUB.<br />
<br />
: --[[User:Gen2ly|Gen2ly]] 18:58, 9 April 2010 (EDT)<br />
<br />
== Unmask option ==<br />
umask: umask is a built-in shell command which automatically sets file permissions on newly created files. For Arch the default umask for root and user is 0022. With 0022 new folders have the directory permissions of 755 and new files have permissions of 644. You can read more about umask permissions here.<br />
<br />
unmask with 0022 is only for root, that means as user you can't create or delete something. The right option for user is 0002.<br />
<br />
== /etc/fstab and the type parameter ==<br />
<br />
Using my home server and its ntfs partition I discovered an issue in the wiki, that you can confirm or not.<br />
If in /etc/fstab I identify the ntfs partition with the 'ntfs-3g' parameter, like in the wiki, the partition is inaccessible and unmounted. The fstab isn't completely processed.<br />
But if I identify that with the 'ntfs' parameter it works perfectly as expected.</div>Speedyx