This is a fan controller program I wrote. I had trouble working with the popular fan controller "thinkfan", so I decided to write my own controller.
Contrary to having to "think" this is a stupid simple controller. The idea is that if the cpu temperature is within a certain range it will change the fan's level.
You can check out the script here.
There are a few things you have to make sure of before you can depend on this script.
You should be sure that the thinkpad_acpi module is set to allow manual fan control. This can be done by creating a 'sstf.conf' file in the '/etc/modprobe.d/ directory'. And adding the following to the sstf.conf file:
options thinkpad_acpi fan_control=1
Next you should be sure that the script is functioning properly. It grabs the cpu temperature from a list of system thermals and assumes that the first one is the right one. This may not be the case on your system.
And finally you should change the levels around to what works on your system. On my x60s what works best is always running it on level 7 (highest before full-speed) and then when it gets hot enough (80C - 85C is my laptops critical) it will go full-speed until it gets into a better range.
This allows the machine to be relatively quiet. Though it will cool itself down when it needs to. In my personal case this solution made me go from watching cpu temps during intensive tasks, to just not even thinking about it.
Of course though this script just runs once. You will need to put it in some sort of service. You can use crontab. Or just throw it in a while loop with a sleep command.
I think the script itself is pretty trivial, but if licenses matter to you for such a script it is public domain.