<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fikin</id>
	<title>ThinkWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.thinkwiki.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fikin"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Fikin"/>
	<updated>2026-05-09T13:58:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28214</id>
		<title>Talk:Code/tp-fancontrol-fc.init</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28214"/>
		<updated>2007-02-13T14:06:53Z</updated>

		<summary type="html">&lt;p&gt;Fikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CodeHeader|&lt;br /&gt;
|filename=tp-fancontrol&lt;br /&gt;
|context=[[ACPI fan control script#Init script example for rh/fedora]]&lt;br /&gt;
|author=Nikolay Fiykov&lt;br /&gt;
|license=GPL v2&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Code/tp-fancontrol-fc.init&amp;diff=28213</id>
		<title>Code/tp-fancontrol-fc.init</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Code/tp-fancontrol-fc.init&amp;diff=28213"/>
		<updated>2007-02-13T14:04:56Z</updated>

		<summary type="html">&lt;p&gt;Fikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# tp-fancontrol&lt;br /&gt;
#&lt;br /&gt;
# nikolay fiykov (fikin@sf.net)&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 2345 45 57&lt;br /&gt;
# description: Thinkpad fan controll utility&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: $fan-control&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
NAME=tp-fancontrold&lt;br /&gt;
APP=/sbin/${NAME}&lt;br /&gt;
&lt;br /&gt;
[ -f ${APP} ] || exit 0&lt;br /&gt;
&lt;br /&gt;
# Source config&lt;br /&gt;
# source config file; edit that file to configure this script&lt;br /&gt;
TEMP_SHIFT=0&lt;br /&gt;
LOG_SYSLOG=1&lt;br /&gt;
QUIET=1&lt;br /&gt;
if [ -e /etc/tp-fancontrol.conf ]; then&lt;br /&gt;
  . /etc/tp-fancontrol.conf&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RETVAL=0&lt;br /&gt;
&lt;br /&gt;
umask 077&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
 	echo -n $&amp;quot;Starting Thinkpad CPU fan control ... &amp;quot;&lt;br /&gt;
&lt;br /&gt;
	PARAMS=&amp;quot;-d &amp;quot;&lt;br /&gt;
	if [ &amp;quot;${TEMP_SHIFT}&amp;quot; != &amp;quot;0&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		PARAMS=${PARAMS}&amp;quot; -s ${TEMP_SHIFT}&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ &amp;quot;${LOG_SYSLOG}&amp;quot; = &amp;quot;1&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		PARAMS=${PARAMS}&amp;quot; -l&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		if [ &amp;quot;${QUIET}&amp;quot; = &amp;quot;1&amp;quot; ]&lt;br /&gt;
		then&lt;br /&gt;
			PARAMS=${PARAMS}&amp;quot; -q&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
	PARAMS=${PARAMS}&lt;br /&gt;
	&lt;br /&gt;
	# load ibm acpi module (requires acpi daemon first)&lt;br /&gt;
	modprobe ibm_acpi experimental=1 hotkey=enable,0xffef&lt;br /&gt;
	&lt;br /&gt;
	daemon ${APP} ${PARAMS}&lt;br /&gt;
	RETVAL=$?&lt;br /&gt;
	echo&lt;br /&gt;
	[ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/${NAME}&lt;br /&gt;
	return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
	echo -n $&amp;quot;Shutting down Thinkpad CPU fan control: &amp;quot;&lt;br /&gt;
	killproc  ${APP}&lt;br /&gt;
	RETVAL=$?&lt;br /&gt;
	echo&lt;br /&gt;
	[ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f /var/lock/subsys/${NAME}&lt;br /&gt;
	return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
rhstatus() {&lt;br /&gt;
	status ${APP}&lt;br /&gt;
}&lt;br /&gt;
restart() {&lt;br /&gt;
	stop&lt;br /&gt;
	start&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
  	start&lt;br /&gt;
	;;&lt;br /&gt;
  stop)&lt;br /&gt;
  	stop&lt;br /&gt;
	;;&lt;br /&gt;
  status)&lt;br /&gt;
  	rhstatus&lt;br /&gt;
	;;&lt;br /&gt;
  restart|reload)&lt;br /&gt;
  	restart&lt;br /&gt;
	;;&lt;br /&gt;
  condrestart)&lt;br /&gt;
  	[ -f /var/lock/subsys/${NAME} ] &amp;amp;&amp;amp; restart || :&lt;br /&gt;
	;;&lt;br /&gt;
  *)&lt;br /&gt;
	echo $&amp;quot;Usage: $0 {start|stop|status|restart|condrestart}&amp;quot;&lt;br /&gt;
	exit 1&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28212</id>
		<title>Talk:Code/tp-fancontrol-fc.init</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28212"/>
		<updated>2007-02-13T14:04:11Z</updated>

		<summary type="html">&lt;p&gt;Fikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CodeHeader|&lt;br /&gt;
|filename=tp-fancontrol-fc&lt;br /&gt;
|context=[[ACPI fan control script#Init script example for rh/fedora]]&lt;br /&gt;
|author=Nikolay Fiykov&lt;br /&gt;
|license=GPL v2&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28211</id>
		<title>Talk:Code/tp-fancontrol-fc.init</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28211"/>
		<updated>2007-02-13T13:41:53Z</updated>

		<summary type="html">&lt;p&gt;Fikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28210</id>
		<title>Fan control scripts</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28210"/>
		<updated>2007-02-13T13:35:37Z</updated>

		<summary type="html">&lt;p&gt;Fikin: /* Init script example for rh/fedora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page provides several scripts for controlling the ThinkPad's system fan according the its [[thermal sensors]] (overriding the embedded controller), in order to reduce [[problem with fan noise|fan noise]] and decrease [[how to reduce power consumption|power consumption]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|These scripts rely on undocumented hardware features and override nominal hardware behavior. They may thus cause arbitrary damage to your laptop or data. Watch your temperatures!}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variable speed control scripts==&lt;br /&gt;
The following scripts sets the fan speed according to the system's [[thermal sensors]]. In addition, they include a hack for preventing the annoying fan pulsing that occurs on some systems. Note that the fan levels, thresholds and anti-pulsing hacks are system-specific, so you may need to adjust them.&lt;br /&gt;
&lt;br /&gt;
===Comprehensive &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed===&lt;br /&gt;
This script works with any recent Linux kernel (2.6.14 and higher). It requires the [[ibm-acpi]] module to be loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter (e.g., {{cmdroot|1=modprobe ibm_acpi experimental=1}}). &lt;br /&gt;
&lt;br /&gt;
The code lets you define a temperature range for each [[thermal sensors|thermal sensor]]. The script computes the fan level needed by each sensor based on the configured range, and then sets the the actual fan level to the slowest that will satisfy all sensors (plus some hysteresis to avoid fluctiations). It also includes a workaround for the [[Problem with fan noise|pulsing noise]] problem. The scipt provides an (optional) daemon mode and logging to syslog. The method of controlling fan speed is documented [[How to control fan speed|here]]. &lt;br /&gt;
&lt;br /&gt;
The system hard disk temperature is monitored as well, using the hard disk's internal sensor. This works only on certain Hitachi disks and requires kernel &amp;gt;= 2.6.19-rc1 or the ide driver, since it uses a [[Thermal Sensors#Hitachi_harddisks_SENSE_CONDITION_temperature_sensor|non-standard method]] for reading the temperature without causing a head unload or spinup.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
* {{CodeRef|tp-fancontrol}}&lt;br /&gt;
&lt;br /&gt;
Current options:&lt;br /&gt;
&lt;br /&gt;
 Usage: ./tp-fancontrol [OPTION]...&lt;br /&gt;
 &lt;br /&gt;
 Available options:&lt;br /&gt;
   -s N   Shift up the min temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler).&lt;br /&gt;
          Max temperature thresholds are not affected.&lt;br /&gt;
   -S N   Shift up the max temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler). DANGEROUS.&lt;br /&gt;
   -t     Test mode&lt;br /&gt;
   -q     Quiet mode&lt;br /&gt;
   -d     Daemon mode, go into background (implies -q)&lt;br /&gt;
   -l     Log to syslog&lt;br /&gt;
   -k     Kill already-running daemon&lt;br /&gt;
   -u     Tell already-running daemon that the system is being suspended&lt;br /&gt;
   -p     Pid file location for daemon mode&lt;br /&gt;
{{WARN|The list of temperature ranges used in this script is much more liberal than the rules used by the embedded controller firmware, and is derived mostly from anecdotal evidence, hunches and wishful thinking. It is also model-specific - see [[thermal sensors]].}}&lt;br /&gt;
&lt;br /&gt;
====init script for the comprehensive script====&lt;br /&gt;
&lt;br /&gt;
This is optional. It assumes that the above &amp;lt;tt&amp;gt;tp-fancontrol&amp;lt;/tt&amp;gt; script is saved at {{path|/usr/bin/tp-fancontrol}}.&lt;br /&gt;
* Init script: {{CodeRef|tp-fancontrol.init}} (save as {{path|/etc/init.d/tp-fancontrol}})&lt;br /&gt;
* Configuration file for init script: {{CodeRef|tp-fancontrol.conf}} (save as {{path|/etc/tp-fancontrol.conf}})&lt;br /&gt;
&lt;br /&gt;
===Simple &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (requires kernel patch)===&lt;br /&gt;
The following is a simpler patch (without extra features like daemon mode and logging). It requires the [[patch for controlling fan speed]].&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-basic}}&lt;br /&gt;
&lt;br /&gt;
==Fan enable/disable scripts==&lt;br /&gt;
The following scripts were written before it was known [[patch for controlling fan speed|how to control the fan speed]], so they only toggle between fan disabled and default (noisy) fan behavior. In some models, they also do not monitor all available [[thermal sensors]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script example===&lt;br /&gt;
{{CodeRef|fan-enable-basic}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with more features===&lt;br /&gt;
{{CodeRef|fan-enable-extended}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with extra safety functionality===&lt;br /&gt;
ibm_acpi usually works well. But to rely on it completely, this script provides some extra safety functionality:&lt;br /&gt;
# It catches various signals and turns the fan on before it quits.&lt;br /&gt;
# It turns off the fan under very strict conditions, leaving it on when unexpected errors occur.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable-safe}}&lt;br /&gt;
&lt;br /&gt;
==Init scripts==&lt;br /&gt;
&lt;br /&gt;
===Init script example===&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for gentoo===&lt;br /&gt;
Assume one of the above control scripts is {{path|/usr/sbin/ibm-fancontrold}}, for gentoo use the following init script in /etc/init.d/ibm-fancontrol.&lt;br /&gt;
Copy the script to {{path|/etc/init.d/ibm-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # rc-update add ibm-fancontrol default&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|ibm-fancontrol.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for rh/fedora===&lt;br /&gt;
Assume one of the above control scripts is {{path|/sbin/tp-fancontrold}},&lt;br /&gt;
copy the script to {{path|/etc/init.d/tp-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # chkconfig --add tp-fancontrol&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-fc.init}}&lt;br /&gt;
&lt;br /&gt;
You'd have to install also &amp;quot;kernel-module-ibm-acpi&amp;quot; package.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===fanctrld===&lt;br /&gt;
[http://log.does-not-exist.org/archives/2005/08/13/2043_t_43_fan_control_daemon.html fanctrld] is a daemon (written in C) that controls the Thinkpad's fan. The basic approach is to monitor both temperature and fan speed. The fan is enabled when a certain temperature is exceeded, and disabled when the BIOS slows down the fan below a certain speed.&lt;br /&gt;
&lt;br /&gt;
==Ideas for improvement==&lt;br /&gt;
* Use the [[HDAPS]] sensor to automatically lower the temperature thresholds when the laptop is moving. Prolonged movement usually happens when the laptop is on the user's lap (see [[Problem with hot surfaces]] for implications), or when in a moving vehicle where fan noise is typically overshadowed by vehicle noise.&lt;br /&gt;
* Use a [http://en.wikipedia.org/wiki/PID_controller PID controller] feedback loop instead of simple thresholds.&lt;br /&gt;
* Monitor the UltraBay disk temperature too.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to control fan speed]]&lt;br /&gt;
* Shimodax's ThinkPad fan control tool for a Windows offers functionality similar to these scripts; see the [http://forum.thinkpads.com/viewtopic.php?t=17715 forum discussion] at thinkpads.com.&lt;br /&gt;
* Yury Polyanskiy has a [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030697.html kernel patch] for automatic fan control in kernelspace (only enable/disable based on maximum temperature).&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28209</id>
		<title>Fan control scripts</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28209"/>
		<updated>2007-02-13T13:35:02Z</updated>

		<summary type="html">&lt;p&gt;Fikin: /* Init script example for rh/fedora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page provides several scripts for controlling the ThinkPad's system fan according the its [[thermal sensors]] (overriding the embedded controller), in order to reduce [[problem with fan noise|fan noise]] and decrease [[how to reduce power consumption|power consumption]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|These scripts rely on undocumented hardware features and override nominal hardware behavior. They may thus cause arbitrary damage to your laptop or data. Watch your temperatures!}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variable speed control scripts==&lt;br /&gt;
The following scripts sets the fan speed according to the system's [[thermal sensors]]. In addition, they include a hack for preventing the annoying fan pulsing that occurs on some systems. Note that the fan levels, thresholds and anti-pulsing hacks are system-specific, so you may need to adjust them.&lt;br /&gt;
&lt;br /&gt;
===Comprehensive &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed===&lt;br /&gt;
This script works with any recent Linux kernel (2.6.14 and higher). It requires the [[ibm-acpi]] module to be loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter (e.g., {{cmdroot|1=modprobe ibm_acpi experimental=1}}). &lt;br /&gt;
&lt;br /&gt;
The code lets you define a temperature range for each [[thermal sensors|thermal sensor]]. The script computes the fan level needed by each sensor based on the configured range, and then sets the the actual fan level to the slowest that will satisfy all sensors (plus some hysteresis to avoid fluctiations). It also includes a workaround for the [[Problem with fan noise|pulsing noise]] problem. The scipt provides an (optional) daemon mode and logging to syslog. The method of controlling fan speed is documented [[How to control fan speed|here]]. &lt;br /&gt;
&lt;br /&gt;
The system hard disk temperature is monitored as well, using the hard disk's internal sensor. This works only on certain Hitachi disks and requires kernel &amp;gt;= 2.6.19-rc1 or the ide driver, since it uses a [[Thermal Sensors#Hitachi_harddisks_SENSE_CONDITION_temperature_sensor|non-standard method]] for reading the temperature without causing a head unload or spinup.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
* {{CodeRef|tp-fancontrol}}&lt;br /&gt;
&lt;br /&gt;
Current options:&lt;br /&gt;
&lt;br /&gt;
 Usage: ./tp-fancontrol [OPTION]...&lt;br /&gt;
 &lt;br /&gt;
 Available options:&lt;br /&gt;
   -s N   Shift up the min temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler).&lt;br /&gt;
          Max temperature thresholds are not affected.&lt;br /&gt;
   -S N   Shift up the max temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler). DANGEROUS.&lt;br /&gt;
   -t     Test mode&lt;br /&gt;
   -q     Quiet mode&lt;br /&gt;
   -d     Daemon mode, go into background (implies -q)&lt;br /&gt;
   -l     Log to syslog&lt;br /&gt;
   -k     Kill already-running daemon&lt;br /&gt;
   -u     Tell already-running daemon that the system is being suspended&lt;br /&gt;
   -p     Pid file location for daemon mode&lt;br /&gt;
{{WARN|The list of temperature ranges used in this script is much more liberal than the rules used by the embedded controller firmware, and is derived mostly from anecdotal evidence, hunches and wishful thinking. It is also model-specific - see [[thermal sensors]].}}&lt;br /&gt;
&lt;br /&gt;
====init script for the comprehensive script====&lt;br /&gt;
&lt;br /&gt;
This is optional. It assumes that the above &amp;lt;tt&amp;gt;tp-fancontrol&amp;lt;/tt&amp;gt; script is saved at {{path|/usr/bin/tp-fancontrol}}.&lt;br /&gt;
* Init script: {{CodeRef|tp-fancontrol.init}} (save as {{path|/etc/init.d/tp-fancontrol}})&lt;br /&gt;
* Configuration file for init script: {{CodeRef|tp-fancontrol.conf}} (save as {{path|/etc/tp-fancontrol.conf}})&lt;br /&gt;
&lt;br /&gt;
===Simple &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (requires kernel patch)===&lt;br /&gt;
The following is a simpler patch (without extra features like daemon mode and logging). It requires the [[patch for controlling fan speed]].&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-basic}}&lt;br /&gt;
&lt;br /&gt;
==Fan enable/disable scripts==&lt;br /&gt;
The following scripts were written before it was known [[patch for controlling fan speed|how to control the fan speed]], so they only toggle between fan disabled and default (noisy) fan behavior. In some models, they also do not monitor all available [[thermal sensors]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script example===&lt;br /&gt;
{{CodeRef|fan-enable-basic}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with more features===&lt;br /&gt;
{{CodeRef|fan-enable-extended}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with extra safety functionality===&lt;br /&gt;
ibm_acpi usually works well. But to rely on it completely, this script provides some extra safety functionality:&lt;br /&gt;
# It catches various signals and turns the fan on before it quits.&lt;br /&gt;
# It turns off the fan under very strict conditions, leaving it on when unexpected errors occur.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable-safe}}&lt;br /&gt;
&lt;br /&gt;
==Init scripts==&lt;br /&gt;
&lt;br /&gt;
===Init script example===&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for gentoo===&lt;br /&gt;
Assume one of the above control scripts is {{path|/usr/sbin/ibm-fancontrold}}, for gentoo use the following init script in /etc/init.d/ibm-fancontrol.&lt;br /&gt;
Copy the script to {{path|/etc/init.d/ibm-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # rc-update add ibm-fancontrol default&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|ibm-fancontrol.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for rh/fedora===&lt;br /&gt;
Assume one of the above control scripts is {{path|/sbin/tp-fancontrold}},&lt;br /&gt;
copy the script to {{path|/etc/init.d/tp-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # chkconfig --add tp-fancontrol&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-fc.init}}&lt;br /&gt;
&lt;br /&gt;
You'd have to install also &amp;quot;kernel-module-ibm-acpi&amp;quot; and &amp;quot;ibm-acpi&amp;quot; packages.&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===fanctrld===&lt;br /&gt;
[http://log.does-not-exist.org/archives/2005/08/13/2043_t_43_fan_control_daemon.html fanctrld] is a daemon (written in C) that controls the Thinkpad's fan. The basic approach is to monitor both temperature and fan speed. The fan is enabled when a certain temperature is exceeded, and disabled when the BIOS slows down the fan below a certain speed.&lt;br /&gt;
&lt;br /&gt;
==Ideas for improvement==&lt;br /&gt;
* Use the [[HDAPS]] sensor to automatically lower the temperature thresholds when the laptop is moving. Prolonged movement usually happens when the laptop is on the user's lap (see [[Problem with hot surfaces]] for implications), or when in a moving vehicle where fan noise is typically overshadowed by vehicle noise.&lt;br /&gt;
* Use a [http://en.wikipedia.org/wiki/PID_controller PID controller] feedback loop instead of simple thresholds.&lt;br /&gt;
* Monitor the UltraBay disk temperature too.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to control fan speed]]&lt;br /&gt;
* Shimodax's ThinkPad fan control tool for a Windows offers functionality similar to these scripts; see the [http://forum.thinkpads.com/viewtopic.php?t=17715 forum discussion] at thinkpads.com.&lt;br /&gt;
* Yury Polyanskiy has a [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030697.html kernel patch] for automatic fan control in kernelspace (only enable/disable based on maximum temperature).&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28208</id>
		<title>Talk:Code/tp-fancontrol-fc.init</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Code/tp-fancontrol-fc.init&amp;diff=28208"/>
		<updated>2007-02-13T13:32:53Z</updated>

		<summary type="html">&lt;p&gt;Fikin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# tp-fancontrol&lt;br /&gt;
#&lt;br /&gt;
# nikolay fiykov (fikin@sf.net)&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: 2345 45 57&lt;br /&gt;
# description: Thinkpad fan controll utility&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides: $fan-control&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
# Source function library.&lt;br /&gt;
. /etc/init.d/functions&lt;br /&gt;
&lt;br /&gt;
NAME=tp-fancontrold&lt;br /&gt;
APP=/sbin/${NAME}&lt;br /&gt;
&lt;br /&gt;
[ -f ${APP} ] || exit 0&lt;br /&gt;
&lt;br /&gt;
# Source config&lt;br /&gt;
# source config file; edit that file to configure this script&lt;br /&gt;
TEMP_SHIFT=0&lt;br /&gt;
LOG_SYSLOG=1&lt;br /&gt;
QUIET=1&lt;br /&gt;
if [ -e /etc/tp-fancontrol.conf ]; then&lt;br /&gt;
  . /etc/tp-fancontrol.conf&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RETVAL=0&lt;br /&gt;
&lt;br /&gt;
umask 077&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
 	echo -n $&amp;quot;Starting Thinkpad CPU fan control ... &amp;quot;&lt;br /&gt;
&lt;br /&gt;
	PARAMS=&amp;quot;-d &amp;quot;&lt;br /&gt;
	if [ &amp;quot;${TEMP_SHIFT}&amp;quot; != &amp;quot;0&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		PARAMS=${PARAMS}&amp;quot; -s ${TEMP_SHIFT}&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
	if [ &amp;quot;${LOG_SYSLOG}&amp;quot; = &amp;quot;1&amp;quot; ]&lt;br /&gt;
	then&lt;br /&gt;
		PARAMS=${PARAMS}&amp;quot; -l&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		if [ &amp;quot;${QUIET}&amp;quot; = &amp;quot;1&amp;quot; ]&lt;br /&gt;
		then&lt;br /&gt;
			PARAMS=${PARAMS}&amp;quot; -q&amp;quot;&lt;br /&gt;
		fi&lt;br /&gt;
	fi&lt;br /&gt;
	PARAMS=${PARAMS}&lt;br /&gt;
	&lt;br /&gt;
	# load ibm acpi module (requires acpi daemon first)&lt;br /&gt;
	modprobe ibm_acpi experimental=1 hotkey=enable,0xffef&lt;br /&gt;
	&lt;br /&gt;
	daemon ${APP} ${PARAMS}&lt;br /&gt;
	RETVAL=$?&lt;br /&gt;
	echo&lt;br /&gt;
	[ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/${NAME}&lt;br /&gt;
	return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
	echo -n $&amp;quot;Shutting down Thinkpad CPU fan control: &amp;quot;&lt;br /&gt;
	killproc  ${APP}&lt;br /&gt;
	RETVAL=$?&lt;br /&gt;
	echo&lt;br /&gt;
	[ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f /var/lock/subsys/${NAME}&lt;br /&gt;
	return $RETVAL&lt;br /&gt;
}&lt;br /&gt;
rhstatus() {&lt;br /&gt;
	status ${APP}&lt;br /&gt;
}&lt;br /&gt;
restart() {&lt;br /&gt;
	stop&lt;br /&gt;
	start&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
  	start&lt;br /&gt;
	;;&lt;br /&gt;
  stop)&lt;br /&gt;
  	stop&lt;br /&gt;
	;;&lt;br /&gt;
  status)&lt;br /&gt;
  	rhstatus&lt;br /&gt;
	;;&lt;br /&gt;
  restart|reload)&lt;br /&gt;
  	restart&lt;br /&gt;
	;;&lt;br /&gt;
  condrestart)&lt;br /&gt;
  	[ -f /var/lock/subsys/${NAME} ] &amp;amp;&amp;amp; restart || :&lt;br /&gt;
	;;&lt;br /&gt;
  *)&lt;br /&gt;
	echo $&amp;quot;Usage: $0 {start|stop|status|restart|condrestart}&amp;quot;&lt;br /&gt;
	exit 1&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28207</id>
		<title>Fan control scripts</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28207"/>
		<updated>2007-02-13T13:32:20Z</updated>

		<summary type="html">&lt;p&gt;Fikin: /* Init script example for rh/fedora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page provides several scripts for controlling the ThinkPad's system fan according the its [[thermal sensors]] (overriding the embedded controller), in order to reduce [[problem with fan noise|fan noise]] and decrease [[how to reduce power consumption|power consumption]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|These scripts rely on undocumented hardware features and override nominal hardware behavior. They may thus cause arbitrary damage to your laptop or data. Watch your temperatures!}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variable speed control scripts==&lt;br /&gt;
The following scripts sets the fan speed according to the system's [[thermal sensors]]. In addition, they include a hack for preventing the annoying fan pulsing that occurs on some systems. Note that the fan levels, thresholds and anti-pulsing hacks are system-specific, so you may need to adjust them.&lt;br /&gt;
&lt;br /&gt;
===Comprehensive &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed===&lt;br /&gt;
This script works with any recent Linux kernel (2.6.14 and higher). It requires the [[ibm-acpi]] module to be loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter (e.g., {{cmdroot|1=modprobe ibm_acpi experimental=1}}). &lt;br /&gt;
&lt;br /&gt;
The code lets you define a temperature range for each [[thermal sensors|thermal sensor]]. The script computes the fan level needed by each sensor based on the configured range, and then sets the the actual fan level to the slowest that will satisfy all sensors (plus some hysteresis to avoid fluctiations). It also includes a workaround for the [[Problem with fan noise|pulsing noise]] problem. The scipt provides an (optional) daemon mode and logging to syslog. The method of controlling fan speed is documented [[How to control fan speed|here]]. &lt;br /&gt;
&lt;br /&gt;
The system hard disk temperature is monitored as well, using the hard disk's internal sensor. This works only on certain Hitachi disks and requires kernel &amp;gt;= 2.6.19-rc1 or the ide driver, since it uses a [[Thermal Sensors#Hitachi_harddisks_SENSE_CONDITION_temperature_sensor|non-standard method]] for reading the temperature without causing a head unload or spinup.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
* {{CodeRef|tp-fancontrol}}&lt;br /&gt;
&lt;br /&gt;
Current options:&lt;br /&gt;
&lt;br /&gt;
 Usage: ./tp-fancontrol [OPTION]...&lt;br /&gt;
 &lt;br /&gt;
 Available options:&lt;br /&gt;
   -s N   Shift up the min temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler).&lt;br /&gt;
          Max temperature thresholds are not affected.&lt;br /&gt;
   -S N   Shift up the max temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler). DANGEROUS.&lt;br /&gt;
   -t     Test mode&lt;br /&gt;
   -q     Quiet mode&lt;br /&gt;
   -d     Daemon mode, go into background (implies -q)&lt;br /&gt;
   -l     Log to syslog&lt;br /&gt;
   -k     Kill already-running daemon&lt;br /&gt;
   -u     Tell already-running daemon that the system is being suspended&lt;br /&gt;
   -p     Pid file location for daemon mode&lt;br /&gt;
{{WARN|The list of temperature ranges used in this script is much more liberal than the rules used by the embedded controller firmware, and is derived mostly from anecdotal evidence, hunches and wishful thinking. It is also model-specific - see [[thermal sensors]].}}&lt;br /&gt;
&lt;br /&gt;
====init script for the comprehensive script====&lt;br /&gt;
&lt;br /&gt;
This is optional. It assumes that the above &amp;lt;tt&amp;gt;tp-fancontrol&amp;lt;/tt&amp;gt; script is saved at {{path|/usr/bin/tp-fancontrol}}.&lt;br /&gt;
* Init script: {{CodeRef|tp-fancontrol.init}} (save as {{path|/etc/init.d/tp-fancontrol}})&lt;br /&gt;
* Configuration file for init script: {{CodeRef|tp-fancontrol.conf}} (save as {{path|/etc/tp-fancontrol.conf}})&lt;br /&gt;
&lt;br /&gt;
===Simple &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (requires kernel patch)===&lt;br /&gt;
The following is a simpler patch (without extra features like daemon mode and logging). It requires the [[patch for controlling fan speed]].&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-basic}}&lt;br /&gt;
&lt;br /&gt;
==Fan enable/disable scripts==&lt;br /&gt;
The following scripts were written before it was known [[patch for controlling fan speed|how to control the fan speed]], so they only toggle between fan disabled and default (noisy) fan behavior. In some models, they also do not monitor all available [[thermal sensors]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script example===&lt;br /&gt;
{{CodeRef|fan-enable-basic}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with more features===&lt;br /&gt;
{{CodeRef|fan-enable-extended}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with extra safety functionality===&lt;br /&gt;
ibm_acpi usually works well. But to rely on it completely, this script provides some extra safety functionality:&lt;br /&gt;
# It catches various signals and turns the fan on before it quits.&lt;br /&gt;
# It turns off the fan under very strict conditions, leaving it on when unexpected errors occur.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable-safe}}&lt;br /&gt;
&lt;br /&gt;
==Init scripts==&lt;br /&gt;
&lt;br /&gt;
===Init script example===&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for gentoo===&lt;br /&gt;
Assume one of the above control scripts is {{path|/usr/sbin/ibm-fancontrold}}, for gentoo use the following init script in /etc/init.d/ibm-fancontrol.&lt;br /&gt;
Copy the script to {{path|/etc/init.d/ibm-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # rc-update add ibm-fancontrol default&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|ibm-fancontrol.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for rh/fedora===&lt;br /&gt;
Assume one of the above control scripts is {{path|/sbin/tp-fancontrold}},&lt;br /&gt;
copy the script to {{path|/etc/init.d/tp-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # chkconfig --add tp-fancontrol&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-fc.init}}&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===fanctrld===&lt;br /&gt;
[http://log.does-not-exist.org/archives/2005/08/13/2043_t_43_fan_control_daemon.html fanctrld] is a daemon (written in C) that controls the Thinkpad's fan. The basic approach is to monitor both temperature and fan speed. The fan is enabled when a certain temperature is exceeded, and disabled when the BIOS slows down the fan below a certain speed.&lt;br /&gt;
&lt;br /&gt;
==Ideas for improvement==&lt;br /&gt;
* Use the [[HDAPS]] sensor to automatically lower the temperature thresholds when the laptop is moving. Prolonged movement usually happens when the laptop is on the user's lap (see [[Problem with hot surfaces]] for implications), or when in a moving vehicle where fan noise is typically overshadowed by vehicle noise.&lt;br /&gt;
* Use a [http://en.wikipedia.org/wiki/PID_controller PID controller] feedback loop instead of simple thresholds.&lt;br /&gt;
* Monitor the UltraBay disk temperature too.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to control fan speed]]&lt;br /&gt;
* Shimodax's ThinkPad fan control tool for a Windows offers functionality similar to these scripts; see the [http://forum.thinkpads.com/viewtopic.php?t=17715 forum discussion] at thinkpads.com.&lt;br /&gt;
* Yury Polyanskiy has a [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030697.html kernel patch] for automatic fan control in kernelspace (only enable/disable based on maximum temperature).&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28206</id>
		<title>Fan control scripts</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28206"/>
		<updated>2007-02-13T13:31:18Z</updated>

		<summary type="html">&lt;p&gt;Fikin: /* Init script example for rh/fedora */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page provides several scripts for controlling the ThinkPad's system fan according the its [[thermal sensors]] (overriding the embedded controller), in order to reduce [[problem with fan noise|fan noise]] and decrease [[how to reduce power consumption|power consumption]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|These scripts rely on undocumented hardware features and override nominal hardware behavior. They may thus cause arbitrary damage to your laptop or data. Watch your temperatures!}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variable speed control scripts==&lt;br /&gt;
The following scripts sets the fan speed according to the system's [[thermal sensors]]. In addition, they include a hack for preventing the annoying fan pulsing that occurs on some systems. Note that the fan levels, thresholds and anti-pulsing hacks are system-specific, so you may need to adjust them.&lt;br /&gt;
&lt;br /&gt;
===Comprehensive &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed===&lt;br /&gt;
This script works with any recent Linux kernel (2.6.14 and higher). It requires the [[ibm-acpi]] module to be loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter (e.g., {{cmdroot|1=modprobe ibm_acpi experimental=1}}). &lt;br /&gt;
&lt;br /&gt;
The code lets you define a temperature range for each [[thermal sensors|thermal sensor]]. The script computes the fan level needed by each sensor based on the configured range, and then sets the the actual fan level to the slowest that will satisfy all sensors (plus some hysteresis to avoid fluctiations). It also includes a workaround for the [[Problem with fan noise|pulsing noise]] problem. The scipt provides an (optional) daemon mode and logging to syslog. The method of controlling fan speed is documented [[How to control fan speed|here]]. &lt;br /&gt;
&lt;br /&gt;
The system hard disk temperature is monitored as well, using the hard disk's internal sensor. This works only on certain Hitachi disks and requires kernel &amp;gt;= 2.6.19-rc1 or the ide driver, since it uses a [[Thermal Sensors#Hitachi_harddisks_SENSE_CONDITION_temperature_sensor|non-standard method]] for reading the temperature without causing a head unload or spinup.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
* {{CodeRef|tp-fancontrol}}&lt;br /&gt;
&lt;br /&gt;
Current options:&lt;br /&gt;
&lt;br /&gt;
 Usage: ./tp-fancontrol [OPTION]...&lt;br /&gt;
 &lt;br /&gt;
 Available options:&lt;br /&gt;
   -s N   Shift up the min temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler).&lt;br /&gt;
          Max temperature thresholds are not affected.&lt;br /&gt;
   -S N   Shift up the max temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler). DANGEROUS.&lt;br /&gt;
   -t     Test mode&lt;br /&gt;
   -q     Quiet mode&lt;br /&gt;
   -d     Daemon mode, go into background (implies -q)&lt;br /&gt;
   -l     Log to syslog&lt;br /&gt;
   -k     Kill already-running daemon&lt;br /&gt;
   -u     Tell already-running daemon that the system is being suspended&lt;br /&gt;
   -p     Pid file location for daemon mode&lt;br /&gt;
{{WARN|The list of temperature ranges used in this script is much more liberal than the rules used by the embedded controller firmware, and is derived mostly from anecdotal evidence, hunches and wishful thinking. It is also model-specific - see [[thermal sensors]].}}&lt;br /&gt;
&lt;br /&gt;
====init script for the comprehensive script====&lt;br /&gt;
&lt;br /&gt;
This is optional. It assumes that the above &amp;lt;tt&amp;gt;tp-fancontrol&amp;lt;/tt&amp;gt; script is saved at {{path|/usr/bin/tp-fancontrol}}.&lt;br /&gt;
* Init script: {{CodeRef|tp-fancontrol.init}} (save as {{path|/etc/init.d/tp-fancontrol}})&lt;br /&gt;
* Configuration file for init script: {{CodeRef|tp-fancontrol.conf}} (save as {{path|/etc/tp-fancontrol.conf}})&lt;br /&gt;
&lt;br /&gt;
===Simple &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (requires kernel patch)===&lt;br /&gt;
The following is a simpler patch (without extra features like daemon mode and logging). It requires the [[patch for controlling fan speed]].&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-basic}}&lt;br /&gt;
&lt;br /&gt;
==Fan enable/disable scripts==&lt;br /&gt;
The following scripts were written before it was known [[patch for controlling fan speed|how to control the fan speed]], so they only toggle between fan disabled and default (noisy) fan behavior. In some models, they also do not monitor all available [[thermal sensors]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script example===&lt;br /&gt;
{{CodeRef|fan-enable-basic}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with more features===&lt;br /&gt;
{{CodeRef|fan-enable-extended}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with extra safety functionality===&lt;br /&gt;
ibm_acpi usually works well. But to rely on it completely, this script provides some extra safety functionality:&lt;br /&gt;
# It catches various signals and turns the fan on before it quits.&lt;br /&gt;
# It turns off the fan under very strict conditions, leaving it on when unexpected errors occur.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable-safe}}&lt;br /&gt;
&lt;br /&gt;
==Init scripts==&lt;br /&gt;
&lt;br /&gt;
===Init script example===&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for gentoo===&lt;br /&gt;
Assume one of the above control scripts is {{path|/usr/sbin/ibm-fancontrold}}, for gentoo use the following init script in /etc/init.d/ibm-fancontrol.&lt;br /&gt;
Copy the script to {{path|/etc/init.d/ibm-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # rc-update add ibm-fancontrol default&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|ibm-fancontrol.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for rh/fedora===&lt;br /&gt;
Assume one of the above control scripts is {{path|/sbin/tp-fancontrold}},&lt;br /&gt;
copy the script to {{path|/etc/init.d/tp-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # chkconfig --add tp-fancontrol&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol.init}}&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===fanctrld===&lt;br /&gt;
[http://log.does-not-exist.org/archives/2005/08/13/2043_t_43_fan_control_daemon.html fanctrld] is a daemon (written in C) that controls the Thinkpad's fan. The basic approach is to monitor both temperature and fan speed. The fan is enabled when a certain temperature is exceeded, and disabled when the BIOS slows down the fan below a certain speed.&lt;br /&gt;
&lt;br /&gt;
==Ideas for improvement==&lt;br /&gt;
* Use the [[HDAPS]] sensor to automatically lower the temperature thresholds when the laptop is moving. Prolonged movement usually happens when the laptop is on the user's lap (see [[Problem with hot surfaces]] for implications), or when in a moving vehicle where fan noise is typically overshadowed by vehicle noise.&lt;br /&gt;
* Use a [http://en.wikipedia.org/wiki/PID_controller PID controller] feedback loop instead of simple thresholds.&lt;br /&gt;
* Monitor the UltraBay disk temperature too.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to control fan speed]]&lt;br /&gt;
* Shimodax's ThinkPad fan control tool for a Windows offers functionality similar to these scripts; see the [http://forum.thinkpads.com/viewtopic.php?t=17715 forum discussion] at thinkpads.com.&lt;br /&gt;
* Yury Polyanskiy has a [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030697.html kernel patch] for automatic fan control in kernelspace (only enable/disable based on maximum temperature).&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28205</id>
		<title>Fan control scripts</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=28205"/>
		<updated>2007-02-13T13:28:47Z</updated>

		<summary type="html">&lt;p&gt;Fikin: /* Init scripts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top;padding-right:20px;width:10px;white-space:nowrap;&amp;quot; | __TOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
This page provides several scripts for controlling the ThinkPad's system fan according the its [[thermal sensors]] (overriding the embedded controller), in order to reduce [[problem with fan noise|fan noise]] and decrease [[how to reduce power consumption|power consumption]].&lt;br /&gt;
&lt;br /&gt;
{{WARN|These scripts rely on undocumented hardware features and override nominal hardware behavior. They may thus cause arbitrary damage to your laptop or data. Watch your temperatures!}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Variable speed control scripts==&lt;br /&gt;
The following scripts sets the fan speed according to the system's [[thermal sensors]]. In addition, they include a hack for preventing the annoying fan pulsing that occurs on some systems. Note that the fan levels, thresholds and anti-pulsing hacks are system-specific, so you may need to adjust them.&lt;br /&gt;
&lt;br /&gt;
===Comprehensive &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed===&lt;br /&gt;
This script works with any recent Linux kernel (2.6.14 and higher). It requires the [[ibm-acpi]] module to be loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter (e.g., {{cmdroot|1=modprobe ibm_acpi experimental=1}}). &lt;br /&gt;
&lt;br /&gt;
The code lets you define a temperature range for each [[thermal sensors|thermal sensor]]. The script computes the fan level needed by each sensor based on the configured range, and then sets the the actual fan level to the slowest that will satisfy all sensors (plus some hysteresis to avoid fluctiations). It also includes a workaround for the [[Problem with fan noise|pulsing noise]] problem. The scipt provides an (optional) daemon mode and logging to syslog. The method of controlling fan speed is documented [[How to control fan speed|here]]. &lt;br /&gt;
&lt;br /&gt;
The system hard disk temperature is monitored as well, using the hard disk's internal sensor. This works only on certain Hitachi disks and requires kernel &amp;gt;= 2.6.19-rc1 or the ide driver, since it uses a [[Thermal Sensors#Hitachi_harddisks_SENSE_CONDITION_temperature_sensor|non-standard method]] for reading the temperature without causing a head unload or spinup.&lt;br /&gt;
&lt;br /&gt;
The code:&lt;br /&gt;
* {{CodeRef|tp-fancontrol}}&lt;br /&gt;
&lt;br /&gt;
Current options:&lt;br /&gt;
&lt;br /&gt;
 Usage: ./tp-fancontrol [OPTION]...&lt;br /&gt;
 &lt;br /&gt;
 Available options:&lt;br /&gt;
   -s N   Shift up the min temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler).&lt;br /&gt;
          Max temperature thresholds are not affected.&lt;br /&gt;
   -S N   Shift up the max temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler). DANGEROUS.&lt;br /&gt;
   -t     Test mode&lt;br /&gt;
   -q     Quiet mode&lt;br /&gt;
   -d     Daemon mode, go into background (implies -q)&lt;br /&gt;
   -l     Log to syslog&lt;br /&gt;
   -k     Kill already-running daemon&lt;br /&gt;
   -u     Tell already-running daemon that the system is being suspended&lt;br /&gt;
   -p     Pid file location for daemon mode&lt;br /&gt;
{{WARN|The list of temperature ranges used in this script is much more liberal than the rules used by the embedded controller firmware, and is derived mostly from anecdotal evidence, hunches and wishful thinking. It is also model-specific - see [[thermal sensors]].}}&lt;br /&gt;
&lt;br /&gt;
====init script for the comprehensive script====&lt;br /&gt;
&lt;br /&gt;
This is optional. It assumes that the above &amp;lt;tt&amp;gt;tp-fancontrol&amp;lt;/tt&amp;gt; script is saved at {{path|/usr/bin/tp-fancontrol}}.&lt;br /&gt;
* Init script: {{CodeRef|tp-fancontrol.init}} (save as {{path|/etc/init.d/tp-fancontrol}})&lt;br /&gt;
* Configuration file for init script: {{CodeRef|tp-fancontrol.conf}} (save as {{path|/etc/tp-fancontrol.conf}})&lt;br /&gt;
&lt;br /&gt;
===Simple &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (requires kernel patch)===&lt;br /&gt;
The following is a simpler patch (without extra features like daemon mode and logging). It requires the [[patch for controlling fan speed]].&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol-basic}}&lt;br /&gt;
&lt;br /&gt;
==Fan enable/disable scripts==&lt;br /&gt;
The following scripts were written before it was known [[patch for controlling fan speed|how to control the fan speed]], so they only toggle between fan disabled and default (noisy) fan behavior. In some models, they also do not monitor all available [[thermal sensors]].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script example===&lt;br /&gt;
{{CodeRef|fan-enable-basic}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with more features===&lt;br /&gt;
{{CodeRef|fan-enable-extended}}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with extra safety functionality===&lt;br /&gt;
ibm_acpi usually works well. But to rely on it completely, this script provides some extra safety functionality:&lt;br /&gt;
# It catches various signals and turns the fan on before it quits.&lt;br /&gt;
# It turns off the fan under very strict conditions, leaving it on when unexpected errors occur.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable-safe}}&lt;br /&gt;
&lt;br /&gt;
==Init scripts==&lt;br /&gt;
&lt;br /&gt;
===Init script example===&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|fan-enable.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for gentoo===&lt;br /&gt;
Assume one of the above control scripts is {{path|/usr/sbin/ibm-fancontrold}}, for gentoo use the following init script in /etc/init.d/ibm-fancontrol.&lt;br /&gt;
Copy the script to {{path|/etc/init.d/ibm-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # rc-update add ibm-fancontrol default&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|ibm-fancontrol.init}}&lt;br /&gt;
&lt;br /&gt;
===Init script example for rh/fedora===&lt;br /&gt;
Assume one of the above control scripts is {{path|/usr/local/bin/tp-fancontrold}},&lt;br /&gt;
copy the script to {{path|/etc/init.d/tp-fancontrol}}, then do &lt;br /&gt;
&lt;br /&gt;
 # chkconfig --add tp-fancontrol&lt;br /&gt;
&lt;br /&gt;
This will add the init script to the default runlevel.&lt;br /&gt;
&lt;br /&gt;
{{CodeRef|tp-fancontrol.init}}&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===fanctrld===&lt;br /&gt;
[http://log.does-not-exist.org/archives/2005/08/13/2043_t_43_fan_control_daemon.html fanctrld] is a daemon (written in C) that controls the Thinkpad's fan. The basic approach is to monitor both temperature and fan speed. The fan is enabled when a certain temperature is exceeded, and disabled when the BIOS slows down the fan below a certain speed.&lt;br /&gt;
&lt;br /&gt;
==Ideas for improvement==&lt;br /&gt;
* Use the [[HDAPS]] sensor to automatically lower the temperature thresholds when the laptop is moving. Prolonged movement usually happens when the laptop is on the user's lap (see [[Problem with hot surfaces]] for implications), or when in a moving vehicle where fan noise is typically overshadowed by vehicle noise.&lt;br /&gt;
* Use a [http://en.wikipedia.org/wiki/PID_controller PID controller] feedback loop instead of simple thresholds.&lt;br /&gt;
* Monitor the UltraBay disk temperature too.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to control fan speed]]&lt;br /&gt;
* Shimodax's ThinkPad fan control tool for a Windows offers functionality similar to these scripts; see the [http://forum.thinkpads.com/viewtopic.php?t=17715 forum discussion] at thinkpads.com.&lt;br /&gt;
* Yury Polyanskiy has a [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030697.html kernel patch] for automatic fan control in kernelspace (only enable/disable based on maximum temperature).&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>Fikin</name></author>
		
	</entry>
</feed>