Skip to content
Victor Mataré edited this page Oct 13, 2015 · 2 revisions

thinkfan 0.99

This is the 1.0 branch and a complete rewrite in C++. It works surprisingly well already, but I need to wait for more feedback and testing, also because I don't use on my own laptop anymore. A nice new feature (I think) is the support for temperature sensors on nVidia graphic chips via NVML. It belongs to the proprietary nVidia driver, but it's loaded dynamically so we don't end up with a link-time dependency on the nVidia driver. Please people of Github, test it and send pull requests ;-)

thinkfan 0.9.1

This is a minor update which adds a small but useful feature:

On receipt of a SIGUSR1, thinkfan will now print the current known temperatures. See the manpage for details. This is the only change in functionality over the previously released 0.9_beta2.

thinkfan 0.9

This took a while, and it comes with lots of changes, so brace yourself.

  1. S.M.A.R.T via libatasmart

Thinkfan can now read temperatures directly from hard disks via libatasmart. To enable it, you need to compile with -DUSE_ATASMART.

  1. cmake

I've switched to cmake. Don't ask me why, I think it's just more convenient. Details are in the README.

  1. Multiple sensor inputs

When using libatasmart, you obviously want to have other temperature inputs as well. Thus, thinkfan now allows temperature inputs (i.e. legacy thinkpad_acpi procfs, sysfs hwmon and atasmart) to be arbitrarily combined. In order to clean up the config syntax, the "sensor" and "fan" keywords have been deprecated in favor of other, interface-specific keywords. See README and example configs for details.

  1. Various bugfixes

The depulsing hack is now only applied if the fan is actually running (thx yuszuv). Various sysfs bugs have been fixed and a rare race condition when resuming from suspend can now be worked around with DANGEROUS mode.

thinkfan 0.8

  1. Complex Temperature Limits

Thinkfan now allows you to specify temperature limits for each sensor individually. Configuring this requires more tweaking and experimentation, but's definitely worth the effort, since it allows you much more fine-grained control over your fan's behaviour. See README and the example configs for details.

  1. Arbitrary Strings as Fan Levels

Now you can specify arbitrary strings as fan levels. This allows you to use things like "level auto" or "level disengaged" in certain temperature ranges. The sanity checks will filter out anything that isn't a known sensible string, but as usual, you can use dangerous mode to disable them.

thinkfan 0.7

  1. Correction Values

Temperatures that are perfectly fine for your CPU may already be dangerous for most hard disks.

For simplicity's sake, thinkfan uses only the highest temperature found in the system, but that'll most likely never be your harddisk. Thus you can now specify a correction value for any sensor. This value is added to the actual temperature and can be used to give that sensor a greater chance of being considered in the fan speed decision. I know this is quite unintuitive, but it's the least intrusive way of handling this (for now). In a later release, I might extend the config syntax to allow for sensor-specific temperature limits.

So please do check out the updated README and example configs, and modify your config to save your harddisk from premature death. :-/

  1. Config Syntax

Thinkfan now has a shiny new (as in cheesy, but better than scanf) parser for the config files. It was actually already used in 0.6.5. However in this release it was changed to be much tighter on the config syntax. In all previous releases, it just skipped anything it didn't reconize. You could thus have arbitrary garbage in your config file and thinkfan would just ignore it. These times are over. Thinkfan now rejects anything that isn't a proper statement or a comment. You can get the old behaviour back by using the -D (DANGEROUS) option.

Clone this wiki locally