- Notifications
You must be signed in to change notification settings - Fork0
The minimalist fan control program
License
bhundven/thinkfan
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Thinkfan is a simple, lightweight fan control program.
There's only very basic sanity checking on the configuration (semanticplausibility). You can set the temperature limits as insane as you like.
Any change to fan behaviour that results in higher temperatures in some partsof the system will shorten your system's lifetime and/or cause weird hardwarebugs that'll make you pull out your hair.
No warranties whatsoever
If this program steals your car, kills your horse, smokes your dope or peeson your carpet... too bad, you're on your own.
To compile thinkfan, you will need to have the following things installed:
- A recent C++ compiler (GCC >= 4.8 or clang)
- pkgconfig or an equivalent (pkgconf or pkg-config)
- cmake (and optionally a cmake GUI if you want to configure interactively)
- optional: libyaml-cpp for YAML support (the -dev or -devel package)
E.g. on a debian-based system that usually boils down to:
sudo apt install -y cmake-curses-gui build-essential cmake g++ libyaml-cpp-dev pkgconfig libsensors-dev
on EL/Fedora based system, usually :
sudo dnf install -y cmake g++ pkgconfig yaml-cpp-devel lm_sensors-devel
In the thinkfan main directory, do
mkdir build&&cd build
Then configure your build, either interactively:
ccmake ..
Or set your build options from the command line. E.g. to configure a buildwith full debugging support:
cmake -D CMAKE_BUILD_TYPE:STRING=Debug ..
CMAKE_BUILD_TYPE:STRING
can also beRelease
, which produces a fullyoptimized binary, orRelWithDebInfo
, which is also optimized but canstill be debugged with gdb.Other options are:
USE_NVML:BOOL
(default:ON
)Allows thinkfan to read GPU temperatures from the proprietary nVidiadriver. The interface library is loaded dynamically, so it does notneed to be installed when compiling.USE_ATASMART:BOOL
(default:OFF
)Enable libatasmart to read temperatures directly from hard disks. Usethis only when you really need it, since libatasmart is unreasonablyCPU-intensive.USE_LM_SENSORS:BOOL
(default:ON
)Use LM sensors to read temperatures directly from Linux drivers.Thelibsensors
library needs to be installed for this feature, probablywith required headers and development files (e.g.,libsensors-dev
).USE_YAML:BOOL
(default:ON
)Support config file in the new, more flexible YAML format. The oldconfig format will be deprecated after the thinkfan 1.0 release. Newfeatures will be supported in YAML configs only. Seeexamples/thinkfan.conf.yaml. Requires libyaml-cpp.To compile simply run:
make
If you did not change
CMAKE_INSTALL_PREFIX
, thinkfan will be installedunder/usr/local
by doing:sudo make install
CMake will detect whether you use OpenRC or systemd and install someappropriate service files. With systemd, you can edit the commandlinearguments of the thinkfan service with
systemctl edit thinkfan
.With OpenRC, we install only a plain initscript (edit/etc/init.d/thinkfan
to change options).
- Run
thinkfan -h
- Manpages:
thinkfan(1)
,thinkfan.conf(5)
- Example configs:https://github.com/vmatare/thinkfan/tree/master/examples
- Linux kernel hwmon doc:https://www.kernel.org/doc/html/latest/hwmon/sysfs-interface.html
- Linux kernel thinkpad_acpi doc:https://www.kernel.org/doc/html/latest/admin-guide/laptops/thinkpad-acpi.html
- If all fails:https://github.com/vmatare/thinkfan/issues