<?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=Micampe</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=Micampe"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Micampe"/>
	<updated>2026-04-30T18:01:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Code/tp_power_monitor.py&amp;diff=24558</id>
		<title>Code/tp power monitor.py</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Code/tp_power_monitor.py&amp;diff=24558"/>
		<updated>2006-09-09T06:21:07Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
# COPYRIGHT (C) 2006 Matthew Garman&lt;br /&gt;
# matthew (dot) garman (at) gmail (dot) com&lt;br /&gt;
# License: MIT &amp;lt;http://www.opensource.org/licenses/mit-license.php&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import sys, time, getopt, os, re&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class tpPowerMonitorDataSource:&lt;br /&gt;
&lt;br /&gt;
    # The name of the file to parse for needed data (data_source_file) OR&lt;br /&gt;
    # the name of a command whose output will be read as a file&lt;br /&gt;
    # (os.popen(shell_command)).&lt;br /&gt;
    #&lt;br /&gt;
    # Typically, data_source_file will be something from /proc (or&lt;br /&gt;
    # possibly /sys), and shell_command will be a utility+arguments such&lt;br /&gt;
    # as &amp;quot;iwconfig eth1 power&amp;quot;.&lt;br /&gt;
    #&lt;br /&gt;
    # Note that you should set EITHER data_source_file OR shell_command,&lt;br /&gt;
    # but not both.&lt;br /&gt;
    data_source_file    = None&lt;br /&gt;
    shell_command       = None&lt;br /&gt;
&lt;br /&gt;
    # The line number of the data file containing our data OR the string&lt;br /&gt;
    # that marks the beginning of the line in which we're interested&lt;br /&gt;
    # (startswith_string) OR a regular expression to key the data for&lt;br /&gt;
    # which we're looking (regexp_pattern).&lt;br /&gt;
    line_number         = None&lt;br /&gt;
    startswith_string   = None&lt;br /&gt;
    regexp_pattern      = None&lt;br /&gt;
&lt;br /&gt;
    # The string that delimits the line containing our data.  This will be&lt;br /&gt;
    # used as the parameter to split().  Note that you can leave this as&lt;br /&gt;
    # None to split on whitespace.&lt;br /&gt;
    split_string        = None&lt;br /&gt;
&lt;br /&gt;
    # A mapping of data names to indices in the split string.&lt;br /&gt;
    name_index_map      = dict()&lt;br /&gt;
&lt;br /&gt;
    def __init__(self, file, cmd, line, swstr, pat, splstr, map):&lt;br /&gt;
        self.data_source_file    = file&lt;br /&gt;
        self.shell_command       = cmd&lt;br /&gt;
        self.line_number         = line&lt;br /&gt;
        self.startswith_string   = swstr&lt;br /&gt;
        self.regexp_pattern      = pat&lt;br /&gt;
        self.split_string        = splstr&lt;br /&gt;
        self.name_index_map      = map&lt;br /&gt;
&lt;br /&gt;
    def printMembers(self):&lt;br /&gt;
        print &amp;quot;\t&amp;quot; + 'self.data_source_file = ' + str(self.data_source_file)&lt;br /&gt;
        print &amp;quot;\t&amp;quot; + 'self.shell_command = ' + str(self.shell_command)&lt;br /&gt;
        print &amp;quot;\t&amp;quot; + 'self.line_number = ' + str(self.line_number)&lt;br /&gt;
        print &amp;quot;\t&amp;quot; + 'self.startswith_string = ' + str(self.startswith_string)&lt;br /&gt;
        print &amp;quot;\t&amp;quot; + 'self.regexp_pattern = ' + str(self.regexp_pattern)&lt;br /&gt;
        print &amp;quot;\t&amp;quot; + 'self.split_string = ' + str(self.split_string)&lt;br /&gt;
        print &amp;quot;\t&amp;quot; + 'self.name_index_map = ' + str(self.name_index_map)&lt;br /&gt;
&lt;br /&gt;
    def readData(self, d):&lt;br /&gt;
        # open the data source file or run the command that will produce&lt;br /&gt;
        # the data&lt;br /&gt;
        file = None&lt;br /&gt;
        if self.data_source_file:&lt;br /&gt;
            file = open(self.data_source_file, 'r')&lt;br /&gt;
        elif self.shell_command:&lt;br /&gt;
            file = os.popen(self.shell_command)&lt;br /&gt;
        else:&lt;br /&gt;
            print 'error: no data source defined'&lt;br /&gt;
            self.printMembers()&lt;br /&gt;
        # read the contents of the file into a list and close the file&lt;br /&gt;
        lines = None&lt;br /&gt;
        if file:&lt;br /&gt;
            lines = file.readlines()&lt;br /&gt;
            file.close()&lt;br /&gt;
        else:&lt;br /&gt;
            print 'error: data file not opened'&lt;br /&gt;
            self.printMembers()&lt;br /&gt;
        # now get the line in the file with our data&lt;br /&gt;
        line = None&lt;br /&gt;
        if lines:&lt;br /&gt;
            if None != self.line_number:&lt;br /&gt;
                line = lines[self.line_number]&lt;br /&gt;
            elif self.startswith_string:&lt;br /&gt;
                for l in lines:&lt;br /&gt;
                    if l.startswith(self.startswith_string):&lt;br /&gt;
                        line = l&lt;br /&gt;
                        break&lt;br /&gt;
            elif self.regexp_pattern:&lt;br /&gt;
                for l in lines:&lt;br /&gt;
                    if re.compile(self.regexp_pattern).match(l):&lt;br /&gt;
                        line = l&lt;br /&gt;
                        break&lt;br /&gt;
        else:&lt;br /&gt;
            print 'error: no lines in data file'&lt;br /&gt;
            self.printMembers()&lt;br /&gt;
        # now get the data we want from the line itself&lt;br /&gt;
        if line:&lt;br /&gt;
            fields = line.split(self.split_string)&lt;br /&gt;
            for key in self.name_index_map.keys():&lt;br /&gt;
                d[key] = fields[self.name_index_map[key]].strip()&lt;br /&gt;
        else:&lt;br /&gt;
            print 'error: could not find line with data in file'&lt;br /&gt;
            self.printMembers()&lt;br /&gt;
&lt;br /&gt;
# END --- class tpPowerMonitorDataSource&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tp_data_sources = [&lt;br /&gt;
&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        '/proc/cpuinfo',             # data file&lt;br /&gt;
        None,                        # shell command&lt;br /&gt;
        None,                        # line index&lt;br /&gt;
        'cpu MHz',                   # startswith() string&lt;br /&gt;
        None,                        # regexp pattern&lt;br /&gt;
        ':',                         # split string&lt;br /&gt;
        {'proc_cpuinfo_cpu_mhz': 1}  # name-to-index map&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    # http://thinkwiki.org/wiki/Ipw2200#Power_Management&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        None,                          # data file&lt;br /&gt;
        '/sbin/iwpriv eth1 get_power', # shell command&lt;br /&gt;
        0,                             # line index&lt;br /&gt;
        None,                          # startswith() string&lt;br /&gt;
        None,                          # regexp pattern&lt;br /&gt;
        ':',                           # split string&lt;br /&gt;
        {'iwpriv_get_power': 2}        # name-to-index map&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    # http://forums.gentoo.org/viewtopic-t-447841.html&lt;br /&gt;
    # see post from ruben on Wed Mar 29, 2006 4:09 am&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        None,&lt;br /&gt;
        '/usr/bin/sudo /sbin/hdparm -C /dev/sda',&lt;br /&gt;
        None,&lt;br /&gt;
        ' drive state is',&lt;br /&gt;
        None,&lt;br /&gt;
        ':',&lt;br /&gt;
        {'hard_drive_power_state': 1}&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    # http://thinkwiki.org/wiki/Thermal_sensors&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        '/proc/acpi/ibm/thermal',&lt;br /&gt;
        None,&lt;br /&gt;
        0,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        {'ibm_thermal_cpu':     1,&lt;br /&gt;
         'ibm_thermal_hdaps':   2,&lt;br /&gt;
         'ibm_thermal_pmcia':   3,&lt;br /&gt;
         'ibm_thermal_gpu':     4,&lt;br /&gt;
         'ibm_thermal_batt_fl': 5,&lt;br /&gt;
         'ibm_thermal_batt_br': 7 }&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    # http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2006-July/034738.html&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        '/proc/acpi/processor/CPU/power',&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        'bus master activity',&lt;br /&gt;
        None,&lt;br /&gt;
        ':',&lt;br /&gt;
        {'bus_master_activity': 1}&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        '/proc/acpi/battery/BAT0/state',&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        'present rate:',&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        {'battery0_state_present_rate': 2}&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        None,&lt;br /&gt;
        '/usr/bin/sudo /usr/sbin/radeontool dac',&lt;br /&gt;
        0,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        {'radeontool_dac_ext_vga': -1}&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        None,&lt;br /&gt;
        '/usr/bin/sudo /usr/sbin/radeontool light',&lt;br /&gt;
        0,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        {'radeontool_light_lcd': -1}&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    # http://forums.gentoo.org/viewtopic-t-343029-highlight-rovclock.html&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        None,&lt;br /&gt;
        '/usr/bin/sudo /usr/sbin/rovclock -i',&lt;br /&gt;
        None,&lt;br /&gt;
        'Core: ',&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        {'rovclock_gpu_clock': 1,&lt;br /&gt;
         'rovclock_mem_clock': 4 }&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        None,&lt;br /&gt;
        '/sbin/iwconfig eth1',&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        '.*Power Management.*',&lt;br /&gt;
        ':',&lt;br /&gt;
        {'wireless_power_mgmt_state': 1}&lt;br /&gt;
    ),&lt;br /&gt;
&lt;br /&gt;
    tpPowerMonitorDataSource(&lt;br /&gt;
        '/proc/loadavg',&lt;br /&gt;
        None,&lt;br /&gt;
        0,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        None,&lt;br /&gt;
        {'proc_loadavg_1min': 0,&lt;br /&gt;
         'proc_loadavg_5min': 1,&lt;br /&gt;
         'proc_loadavg_15min': 2 }&lt;br /&gt;
    ),&lt;br /&gt;
]&lt;br /&gt;
log_data = list()&lt;br /&gt;
poll_freq_hz = 1&lt;br /&gt;
run_time_sec = 60*60&lt;br /&gt;
logfile = None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def collectPowerData():&lt;br /&gt;
    global run_time_sec&lt;br /&gt;
    global poll_freq_hz&lt;br /&gt;
    global log_data&lt;br /&gt;
    global logfile&lt;br /&gt;
    global tp_data_sources&lt;br /&gt;
&lt;br /&gt;
    log = None&lt;br /&gt;
    if logfile:&lt;br /&gt;
        log = open(logfile, 'w')&lt;br /&gt;
        log.write(&amp;quot;time, data\n&amp;quot;)&lt;br /&gt;
    end_t = time.time()+run_time_sec&lt;br /&gt;
    while time.time() &amp;lt; end_t:&lt;br /&gt;
        datum = dict()&lt;br /&gt;
        for dsrc in tp_data_sources:&lt;br /&gt;
            dsrc.readData(datum)&lt;br /&gt;
        log_data.append(datum)&lt;br /&gt;
        if log: log.write(str(time.time()) + ', ' + str(datum) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        time.sleep(1.0/float(poll_freq_hz))&lt;br /&gt;
    if log: log.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def createStats():&lt;br /&gt;
    global log_data&lt;br /&gt;
    global logfile&lt;br /&gt;
    log = None&lt;br /&gt;
    if logfile:&lt;br /&gt;
        log = open(logfile, 'a')&lt;br /&gt;
    if log: log.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def usage():&lt;br /&gt;
    print 'Usage: ' + sys.argv[0] + \&lt;br /&gt;
        '[-h] [-f freq_hz] [-t time_min] [-l logfile]'&lt;br /&gt;
    print &amp;quot;\t-h            Display this help&amp;quot;&lt;br /&gt;
    print &amp;quot;\t-f freq_hz    The polling frequency in Hertz, default=&amp;quot; \&lt;br /&gt;
        + str(poll_freq_hz)&lt;br /&gt;
    print &amp;quot;\t-t time_min   Total poll time in minutes, default=&amp;quot; \&lt;br /&gt;
        + str(run_time_sec/60)&lt;br /&gt;
    print &amp;quot;\t-l logfile    Write poll data to indicated log file&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    global poll_freq_hz&lt;br /&gt;
    global run_time_sec&lt;br /&gt;
    global logfile&lt;br /&gt;
&lt;br /&gt;
    # parse options&lt;br /&gt;
    # see: http://docs.python.org/lib/module-getopt.html&lt;br /&gt;
    try:&lt;br /&gt;
        opts, args = getopt.getopt(sys.argv[1:], &amp;quot;hf:t:l:&amp;quot;)&lt;br /&gt;
    except getopt.GetoptError:&lt;br /&gt;
        usage()&lt;br /&gt;
        sys.exit(2)&lt;br /&gt;
    for o, a in opts:&lt;br /&gt;
        if '-h' == o:&lt;br /&gt;
            usage()&lt;br /&gt;
            sys.exit()&lt;br /&gt;
        if '-f' == o:&lt;br /&gt;
            poll_freq_hz = int(a)&lt;br /&gt;
        if '-t' == o:&lt;br /&gt;
            run_time_sec = int(a)*60&lt;br /&gt;
        if '-l' == o:&lt;br /&gt;
            logfile = a&lt;br /&gt;
&lt;br /&gt;
    # do stuff&lt;br /&gt;
    print 'running for ' + str(run_time_sec/60) + ' minutes'&lt;br /&gt;
    print 'poll rate:  ' + str(poll_freq_hz) + ' Hz'&lt;br /&gt;
    print 'logfile:    ' + str(logfile)&lt;br /&gt;
    collectPowerData()&lt;br /&gt;
    print '...done!'&lt;br /&gt;
    print 'Data points collected: ' + str(len(log_data))&lt;br /&gt;
    sum = 0&lt;br /&gt;
    for d in log_data:&lt;br /&gt;
        sum += int(d['battery0_state_present_rate'])&lt;br /&gt;
    avg = float(sum) / float(len(log_data))&lt;br /&gt;
    print 'Average power draw:    ' + str(avg)&lt;br /&gt;
    if logfile:     log = open(logfile, 'a')&lt;br /&gt;
    if log:&lt;br /&gt;
        log.write('Average power draw:    ' + str(avg))&lt;br /&gt;
        log.close()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=22618</id>
		<title>HDAPS</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=22618"/>
		<updated>2006-06-04T09:24:43Z</updated>

		<summary type="html">&lt;p&gt;Micampe: switch workspace by smacking your laptop&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;
=== HDAPS - IBM Active Protection System Linux Driver ===&lt;br /&gt;
This is the Linux driver for monitoring the acceleratometer known as [[Active Protection System|IBM Active Protection System]].&lt;br /&gt;
&lt;br /&gt;
The driver only enables reading of the acceleration data. It does '''not''' perform [[#Harddisk Protection|automatic disk head parking]]. But there are already some other useful [[#Applications|applications]] for HDAPS, using the {{path|/sys}} interface it provides.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*provides accelerometer values via sysfs&lt;br /&gt;
*provides a joystick type input device&lt;br /&gt;
&lt;br /&gt;
=== Project Homepage / Availability ===&lt;br /&gt;
*[http://hdaps.sourceforge.net/ Project Homepage]&lt;br /&gt;
*The driver is included in the 2.6-mm series of kernels since August, 26th 2005.&lt;br /&gt;
*The driver is now in the mainline (2.6.14). (use as modul if you want use tp_smapi, Gentoo and X41)&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
A driver is included in recent Linux kernels and is actively maintained. &lt;br /&gt;
&lt;br /&gt;
=== How to install the driver ===&lt;br /&gt;
If you are using a version of the Linux kernel &amp;lt; 2.6.14, please upgrade. I struggled long and hard to get the driver working with an old version of the kernel, and it was a mess. I gave up, upgraded my kernel, and one recompile later, HDAPS was working.&lt;br /&gt;
&lt;br /&gt;
=== Harddisk Protection ===&lt;br /&gt;
As mentioned above, the hdaps kernel driver is only responsible for reading the accelerometer data and exporting it through the sysfs interface. In order to use this information to protect the disk, some additional steps are required.&lt;br /&gt;
&lt;br /&gt;
See [[How to protect the harddisk through APS]].&lt;br /&gt;
&lt;br /&gt;
=== Input device support ===&lt;br /&gt;
The hdaps driver in the lastest kernels (2.6.14 and later?) also exports a joystick type input device, which can be used by games.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
====Disk head parking====&lt;br /&gt;
* Kernel patch (apply using 'patch -p1 -l &amp;lt; hdaps_xx.patch')&lt;br /&gt;
**[http://lwn.net/Articles/154923/ disk park patch] &amp;lt;tt&amp;gt;an experimental patch for parking the disk (Linux 2.6.14 for 2.6.15 see below)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.14.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.14 *([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://jenster.dyndns.org/files/blk_freeze-01-nodetection-for-2.6.15.patch disk park patch adapted for the t41p model] &amp;lt;tt&amp;gt; kernel 2.6.15 *([http://sourceforge.net/mailarchive/message.php?msg_id=13214288 capability detection disabled], no libata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.dresco.co.uk/hdaps/hdaps_protect.20060118.patch sata/ide disk protection patch for 2.6.15]&lt;br /&gt;
**[http://www.dresco.co.uk/hdaps/hdaps_protect.20060430.patch Latest sata/ide disk protection patch for 2.6.16]&lt;br /&gt;
**[http://whoopie.gmxhome.de/linux/patches/2.6.16-tj/05-hdaps_protect-20060430-for-2.6.16-tj.patch Latest sata/ide disk protection patch for use with the experimental hotplug patches] - See [[How_to_hotswap_UltraBay_devices]]&lt;br /&gt;
*Userspace daemon&lt;br /&gt;
**[http://www.dresco.co.uk/hdaps/hdapsd-20060409.c Latest userspace parking daemon]&lt;br /&gt;
*GUI monitoring&lt;br /&gt;
**[http://www.oakcourt.dyndns.org/projects/khdapsmon/ khdapsmon] &amp;lt;tt&amp;gt;KDE System Tray app similar to the Windows one (also at [http://www.kde-apps.org/content/show.php?content=34134 kde-apps.org])&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.dresco.co.uk/hdaps/gnome-hdaps-applet-20060120.tar.gz gnome-hdaps-applet] &amp;lt;tt&amp;gt;visual display of disk protection status in gnome panel&amp;lt;/tt&amp;gt;&lt;br /&gt;
See [[How to protect the harddisk through APS]] for more information.&lt;br /&gt;
&lt;br /&gt;
====Security &amp;amp; safety====&lt;br /&gt;
*[[Script for theft alarm using HDAPS]]&lt;br /&gt;
&lt;br /&gt;
====Tilt monitoring====&lt;br /&gt;
*[http://www.mulliner.org/collin/gkibm-acpi.php gkhdaps] &amp;lt;tt&amp;gt;a GKrellM applet displaying tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://rlove.org/log/2005082203.html gnome-tilt] &amp;lt;tt&amp;gt;a gnome applet showing tilt data&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Visualisation (of ThinkPad orientation)====&lt;br /&gt;
*[http://rlove.org/log/2005082401.html hdaps-gl] &amp;lt;tt&amp;gt;a little app animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 hdapsgl-applet] &amp;lt;tt&amp;gt; a GNOME applet animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[https://sourceforge.net/project/showfiles.php?group_id=138242 wmadhps] &amp;lt;tt&amp;gt;a WindowMaker DockApp animating a 3D-ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.cs.cmu.edu/~ecc/gyro.tar.gz OpenGL gyroscope hack] &amp;lt;tt&amp;gt;keeps your display levelled when tilting the ThinkPad&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Games====&lt;br /&gt;
*Robert Love mentions a [http://icculus.org/neverball/ Neverball] patch on [http://rlove.org/log/2005100302.html his blog] to keep the display aligned. However, the link there seems broken.&lt;br /&gt;
*Turn your ThinkPad into a Jedi Weapon (hey, it [http://isnoop.net/blog/2006/05/20/macsaber-turn-your-mac-into-a-jedi-weapon works for Mac laptops])&lt;br /&gt;
&lt;br /&gt;
====Other====&lt;br /&gt;
&lt;br /&gt;
*[http://micampe.it/2006/06/04/here-comes-the-smackpad smack.py] - switch workspace by smacking your laptop, inspired by the [http://blog.medallia.com/2006/05/smacbook_pro.html SmackBook]&lt;br /&gt;
&lt;br /&gt;
=== Interesting links related to this project ===&lt;br /&gt;
* [https://lists.sourceforge.net/lists/listinfo/hdaps-devel HDAPS mailinglist and its archive]&lt;br /&gt;
* #hdaps channel on irc.freenode.org&lt;br /&gt;
* [https://sourceforge.net/projects/hdaps/ hdaps projects] overview of userspace programs using hdaps&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=TPAD-HDFIRM IBM ThinkPads hardware drive firmware site]&lt;br /&gt;
* [http://www.paul.sladen.org/thinkpad-r31/accelerometer.html http://www.paul.sladen.org/thinkpad-r31/accelerometer/]&lt;br /&gt;
* http://bugs.gentoo.org/show_bug.cgi?id=119845 Gentoo ebuild for hdaps driver and daemon including a initscript&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:R50]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:T60]] [[Category:T60p]] [[Category:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:X60]] [[Category:X60s]] [[Category:Z60m]] [[Category:Z60t]] [[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:ThinkWiki&amp;diff=14532</id>
		<title>Talk:ThinkWiki</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:ThinkWiki&amp;diff=14532"/>
		<updated>2006-01-07T17:01:24Z</updated>

		<summary type="html">&lt;p&gt;Micampe: reverted spam&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are at least two different forms of date notation used on the main page. &lt;br /&gt;
One way should be picked. I would suggest ISO standard YYYY-MM-DD&lt;br /&gt;
http://www.cl.cam.ac.uk/~mgk25/iso-time.html&lt;br /&gt;
-David Mattli &lt;br /&gt;
&lt;br /&gt;
The main page of ThinkWiki is not protected, so feel free to edit it. But do it with caution - it's the primary connection to the all content of our '''ThinkWiki''' ;-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 00:11, 25 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
I added to wikipedia-like templates. To edit them go to Template:ThinkWiki_Preamble and Template:ThinkWiki_News.&lt;br /&gt;
Shall we put the other parts of the page in templates, too? If we do so, we could have that nice block design from wikipedia on our mainpage.&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 11:37, 25 Sep 2004 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I think this is too much color. Makes it less readable, takes longer to orientate than the plain list style layout.&lt;br /&gt;
&lt;br /&gt;
Liked it with only the two blocks in the beginning.&lt;br /&gt;
&lt;br /&gt;
If we want to use blocks for everything, please stick to fewer colors. I think the yellow of the first block is not bad, and else i'd suggest light grey, maybe light blue.&lt;br /&gt;
&lt;br /&gt;
However, if we stick to having all in blocks, how about [[User:Wyrfel/mainlayouttest | this color scheme]]?&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 16:35, 25 Sep 2004 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Made [[User:Wyrfel/mainlayouttest-LTP | another Mainpage layout sketch]]. This tries to resemble the Tux and IBM logo colors and therefor looks quite &amp;quot;fresh&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 18:59, 25 Sep 2004 (CEST)&lt;br /&gt;
&lt;br /&gt;
: Too colorful for my taste, I think the other one is better --[[User:Nomeata|Nomeata]] 19:46, 28 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
'''Important change:''' Moved Main_Page to ThinkWiki for cosmetical reasons..&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 16:54, 26 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Needed: older ThinkPad specs... ==&lt;br /&gt;
&lt;br /&gt;
As you can tell by my userid here, I've got a 600E. There are a whole lot of them out there thanks to the fact it was the current model during the Dot-Com era. We should cover the older ThinkPads and their quirks as well as the later models. &lt;br /&gt;
&lt;br /&gt;
I also had a 365X, which is now living with a friend in the UK.&lt;br /&gt;
&lt;br /&gt;
Yes, the next ThinkPad I'll probably score is a T4x, they are really kewl machines and inspire technolust in this geek. But until then, I love my 600E and I'm looking forward to some upgrades this weekend. &lt;br /&gt;
&lt;br /&gt;
I will make copious notes on the upgrade process, which will include the installation of a 40GB hard drive and using the stock 10GB drive as extra Windows storage space. I have a hard drive bay module so the stock drive can be reused. The vast majority of the HD will be given over to an install of Debian Linux, with a 7GB Windows 2K partition because the University I will be attending a year from now demands it. (Yeah, I know, sucks, doesn't it.)&lt;br /&gt;
&lt;br /&gt;
ThinkPad different,&lt;br /&gt;
Michelle&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I totally agree.&lt;br /&gt;
&lt;br /&gt;
All specs of all models can be found on the IBM support pages, we just need volunteers to transfer the infos into internal pages.&lt;br /&gt;
&lt;br /&gt;
Since this is not the most interesting thing to do and hence it would be best if people using older ThinkPads transfer the specs for their models themselves. The same goes for other articles as installation infos, problems or whatever. I had a 570 once and loved it even though T30s where available at the same time...and i'd like to see more about these machines here, which everyone of them had some special characteristics and ideas behind them. So please show up, proud owners of Thinkpad 730TEs. 701s, 360Ps, Transnotes etc. ... ! ;)&lt;br /&gt;
&lt;br /&gt;
Owners of the newer machines should take care of writing their articles (especially when creating new pages or sections) in a way that they are open for older models as well...i.e. make clear in the page or section title that its a specific topic for newer models.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 00:45, 29 Sep 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
I just inserted [[Special:Benchmarks|Benchmarks]] into the main menu.&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 14:07, 15 Oct 2004 (CEST)&lt;br /&gt;
----&lt;br /&gt;
I replaced the old logo with the great new one crafted by [[User:Wyrfel|Wyrfel]]&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 14:22, 1 Mar 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
:The new logo is too large to fit the sidebar. I can only see the yellow center with the ThinkWiki text and the left foot of Tux. I am using 1024x768 resolution and Opera.  --[[User:137.226.40.2|137.226.40.2]] 14:37, 1 Mar 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In Firefox the rest of the logo appears overlaid over the page frame. Interesting, that Opera doesn't do this.&lt;br /&gt;
&lt;br /&gt;
However, we'll fix this soon.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 19:57, 1 Mar 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
:Well, I am using Firefox and I only see half of Tux without any overlay. I guess I'll wait for the fix :-) --[[User:80.146.81.192|80.146.81.192]] 21:33, 1 Mar 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
Strange, it works with firefox and epiphany for me. I'll fix it.&lt;br /&gt;
----&lt;br /&gt;
Ok, now the smaller logo image is online. Looks nice for me :-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 22:15, 1 Mar 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
=== Main Page now protected ===&lt;br /&gt;
I had to protect the mainpage from editing because of vandalism.&lt;br /&gt;
Everyone who wants to add something to the mainpage is asked to post it here, the admins ([[User:Akw|akw]],&lt;br /&gt;
[[User:Wyrfel|Wyrfel]]) will insert it into the mainpage. You can also [[ThinkWiki:Contact|contact us]] to make your suggestions!&lt;br /&gt;
&lt;br /&gt;
We're sorry for inconvenience. :-(&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 10:20, 2 Mar 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hei Arno,&lt;br /&gt;
&lt;br /&gt;
i tried to do some stuff with templates, but it seems like templates in this version of MediaWiki are lacking some features and also seem a bit buggy (or i want too much). Is it troublesome to update to 1.4rc1? Shell we wait for the stable?&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 01:09, 14 Mar 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Updates todo ===&lt;br /&gt;
&lt;br /&gt;
== MediaWiki Update ==&lt;br /&gt;
&lt;br /&gt;
I updated the thinkwiki software to version mediawiki 1.4.4. I hope this update will not be too painful.&lt;br /&gt;
There is still a problem with URL rewriting, so I had to deactivate the .htaccess file. Because of this, we got this ugly URLS with this '''index.php''' before the entry. The problem seems to be with the wiki config file '''LocalSettings.php''' and/or the '''.htaccess''' file.&lt;br /&gt;
I hope I get it fixed soon.&lt;br /&gt;
&lt;br /&gt;
== Thinkpad and Apple Cinema 20' ==&lt;br /&gt;
&lt;br /&gt;
I have a thinkpad R50. I have det required docking station with DVI.&lt;br /&gt;
If i try to boot my computer from the docking station nothing happends - it seems that it freezes up.&lt;br /&gt;
The only way i can get the monitor to work is:&lt;br /&gt;
1. boot the computer disconnected from the docking.&lt;br /&gt;
2. when the computer has booted i place it on the docking station. Then i works!!!&lt;br /&gt;
&lt;br /&gt;
Do you know how to solve the problem. &lt;br /&gt;
&lt;br /&gt;
Hope to hear from you.&lt;br /&gt;
----&lt;br /&gt;
Try changing the bootup display settings in the BIOS. Are you talking about Linux or Windows?&lt;br /&gt;
== Spelling: HOWTOs ==&lt;br /&gt;
Could anyone be so kind to correct &amp;quot;Howto's&amp;quot; to &amp;quot;Howtos&amp;quot;?&lt;br /&gt;
----&lt;br /&gt;
Done. [[User:Wyrfel|Wyrfel]] 12:00, 2 Aug 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== ThinkPad Buyers guide ==&lt;br /&gt;
&lt;br /&gt;
It would be cool is there was a buyer guide to 2nd hand think pads.&lt;br /&gt;
 - For people wishing to join in by gettine there own thingpad!!&lt;br /&gt;
----&lt;br /&gt;
This is a bit hard to accomplish. Remember that ThinkWiki is a site with international scope. What makes sense (in my opinion) is a page that has some notes and hints about what to care for, what are weak parts etc. . But it wouldn't make much sense to create a list of sites where to get them. Or maybe that's just what you meant. ;-) I'll look into creating some infrastructure for that on occasion.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 03:02, 11 Aug 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== T43 and Embedded Visual C++ ==&lt;br /&gt;
&lt;br /&gt;
Hi&lt;br /&gt;
&lt;br /&gt;
Has anyone successfully gotten T34 and Embedded Visual C++ to work?&lt;br /&gt;
I could install the necessary softwares but when test is done using the 'Hello World!' program, the system just restarts itself.&lt;br /&gt;
&lt;br /&gt;
regards,&lt;br /&gt;
Ponce&lt;br /&gt;
&lt;br /&gt;
== This is a great general resource for ANY Thinkpad user ==&lt;br /&gt;
&lt;br /&gt;
The promoted Linux-centricity is a minus, IMO.  Regardless of the density of Linux content currently extant, the Linux focus seems exclusionary and probably drives away a lot of thinkpad users with useful content to add.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
IBM probably has the best support website in the industry (albeit somewhat difficult to navigate), therefore ANY ThinkPad user may find general information there. The good thing about ThinkWiki is that it caters to a specific need, namely the (often difficult) task of installing the linux operating system on ThinkPad notebooks.&lt;br /&gt;
--[[User:MJK|MJK]] 14:54, 14 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I have to agree with MJK. ThinkWikis clear focus is Linux on ThinkPads. IBM provides pretty good support for Windows users, i.e. it wouldn't make sense to double driver listings and such here, since what IBM provides in this area is sufficient. What we can do, however, and what we are already doing here, is to provide additional information for Windows users as well. That's why we introduced Windows as one of our listed distributions and that's also why you find Windows related information scattered around the place. Linux users are searching Windows related ThinkPad sites for information that might be useful for their Linux installations. Let Windows users do the same the other way around. I'll add a little hint to the main page, but we won't change the primary focus. At least not now.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 19:24, 15 Sep 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== TODO and FIXME templates? ==&lt;br /&gt;
&lt;br /&gt;
Could a special way to add TODOs and FIXMEs to pages (maybe a template or whatever - I'm not to familiair with Wiki technologies) be considered? I'd like to add some TODOs and FIXMEs but would like to do that in a standardized way ...&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] 22:42, 29 Sep 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Good point, i'll create templates. [[User:Wyrfel|Wyrfel]] 00:25, 30 Sep 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Ok, did some of it. There are Stub, Todo and Fixme templates now. Also, pages tagged with these templates will be categorized in [[:Category:NeedsEditing]]. Todo and Fixme should be used within sections and take one parameter, which should be a job description. Stub should only be used at the very beginning of a page.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 01:52, 30 Sep 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Nitpicking ==&lt;br /&gt;
Navigation bar: please s/\(Think\)p\(ad\)/\1P\2/g&lt;br /&gt;
&lt;br /&gt;
Search bar: either drop Go or drop Search (they are equal, aren't they?)&lt;br /&gt;
&lt;br /&gt;
How to read ThinkWiki seems to be better of as a normal entry in the first (upper left) table (and not as a &amp;quot;minor&amp;quot; item in the HOWTOs table).&lt;br /&gt;
&lt;br /&gt;
I would suggest to make ThinkPad models (now a &amp;quot;minor&amp;quot; item in Hardware) the first entry in Hardware.&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] 21:13, 8 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Hi, I am looking for some t series users for our beta program.  Plese contact mtippett@ati.com.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A Forum?==&lt;br /&gt;
&lt;br /&gt;
I'm just curious if the idea of a public forum (using phpBB, SMF, whatever) has ever been considered. I think this would be excellent add-on to complement the Wiki. It'd make asking questions for guests and member's alike easier, and possibly afterwards the answers could be contributed into the article. Just an idea. --[[User:DuffDudeX1|DuffDudeX1]] 20:45, 31 Oct 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
There are ThinkPad Forums already, i.e. look at the [[Links]] page.&lt;br /&gt;
&lt;br /&gt;
Moreover, there's the linux-thinkpad [[Mailinglists|mailinglist]] that serves this purpose. ThinkWiki's role is rather to complement that mailing list with a more static way of gathering information and to be found more easily.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 23:54, 31 Oct 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Oh, thanks for pointing that out, I didn't even notice the links page, I'll have to take a look.&lt;br /&gt;
&lt;br /&gt;
--[[User:DuffDudeX1|DuffDudeX1]] 00:04, 1 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== Nice skin, folks... ==&lt;br /&gt;
&lt;br /&gt;
We'd like to steal it, for our geographically local wiki, if no one minds.  What pieces would we need for that?&amp;lt;br&amp;gt;--baylink@wp, etc; jra@baylink.com&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just customize your main.css in your monobook folder.&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 10:00, 28 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Wiki ToDo List ==&lt;br /&gt;
&lt;br /&gt;
Hi, I just setup a [[User:Akw/ToDo|ToDo List]] regarding the wiki for me on [[User:Akw/ToDo]].&lt;br /&gt;
&lt;br /&gt;
This is for server admininstration tasks. Feel free to add some points if I forgot something more or less important.&lt;br /&gt;
I am going to work on the topic in the beginning of next year. I am offline now until 2006/01/06, so I wish a happy good year to all of you (except for the spammers and vandals, of course) ;-)&lt;br /&gt;
&lt;br /&gt;
--[[User:Akw|akw]] 10:31, 29 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Embedded_Security_Subsystem&amp;diff=15813</id>
		<title>Embedded Security Subsystem</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Embedded_Security_Subsystem&amp;diff=15813"/>
		<updated>2005-12-20T13:59:32Z</updated>

		<summary type="html">&lt;p&gt;Micampe: reverted vandalism and fixed link&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;&amp;quot; | [[Image:ESS.jpg|IBM Embedded Security Subsystem]] __NOTOC__&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== The Embedded Security Subsystem ===&lt;br /&gt;
The Embedded Security Subsystem is nothing but a chip installed on the Thinkpads mainboard that can take care of certain security related tasks conforming to the TCPA standard. It was first introduced among the T23 models and is now under the name Embedded Security Subsystem 2.0 an integral part of most of the modern Thinkpads. The functions of the chip are bound to three main groups:&lt;br /&gt;
* public key functions&lt;br /&gt;
* trusted boot functions&lt;br /&gt;
* initialization and management functions&lt;br /&gt;
&lt;br /&gt;
The purpose of the whole thing is to keep the user's sensitive data out of range from software based attacks (like viruses, internet attacks etc.). One way the chip offers to achieve this is by providing storage for keys along with the neccessary functions to handle them within itself, so that a i.e. a private key never has to leave the chip (can't be seen by any piece of software). Besides this there are more complex topics covered by the functionality of the chip. If you want to find out more about it you can find good documents on the [http://www.research.ibm.com/gsal/tcpa/ IBM Research TCPA resources page].&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Trusted or Treacherous?==&lt;br /&gt;
&lt;br /&gt;
TC - Trusted Computing - will be the biggest change of the information landscape since decades. Besides positive features like a more secure hardware storage for cryptographic keys, an analysis of the proposed TCG-standards shows some problematic properties. &amp;lt;br /&amp;gt;&lt;br /&gt;
As ThinkPads of recent generations following the ThinkPad {{T23}} ([[Embedded Security Subsystem#Models featuring this Technology|see the complete list of models]]) are equipped with this disputed TCG-/TCPA-Technology, it can be interesting, which promises of the TCG are fulfilled inside your ThinkPad and which parts of the TCG-specifications still seem to be a privacy issue for every user of digital devices like a MP3-player or a ThinkPad - so please read [[TCPA/TCG - Trusted or Treacherous|this article]] for more details.&lt;br /&gt;
&lt;br /&gt;
==Linux Support==&lt;br /&gt;
Two linux drivers are available, a [[tpm|classical one]] and a [[tpmdd|newer one]].&lt;br /&gt;
Coverage of functionality of the first is unknown so far, the second is part of a bigger project aiming to provide a usable security framework.&lt;br /&gt;
&lt;br /&gt;
David Stafford (one of the developers of the tpm code at IBM) on March 10, 2005 sent me the most recent version of the tpm-kml code. With his permission, I quote his email:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I am attaching our latest driver and library.&lt;br /&gt;
This version is in the process of kernel mailing list review, and&lt;br /&gt;
will hopefully be accepted into the official kernel. It works&lt;br /&gt;
much better across various 2.6 kernels. Note that this builds&lt;br /&gt;
three modules tpm, tpm_atmel, and tpm_nsc. You modprobe the&lt;br /&gt;
tpm_atmel (for all current shipping atmel based systems), or&lt;br /&gt;
tpm_nsc (for the coming national based systems).&lt;br /&gt;
&lt;br /&gt;
Also note that there is a conflict with the snd-intel8x0&lt;br /&gt;
kernel module (they each try to grab the LPC bus). You can&lt;br /&gt;
either: load the tpm modules first (such as in initrd or&lt;br /&gt;
rc.sysinit, before sound), or recompile the snd-intel8x0, turning&lt;br /&gt;
off the MIDI and JOYSTICK support. The latest 2.6.11 version&lt;br /&gt;
of snd-intel8x0 also reportedly fixes things.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Compiling this library was easy. Compiling the driver on my 2.6.8-686 (debian testing) laptop failed. But the library works with the driver I compiled from the tpm-2.0 package IBM made available on its pages (see the links below).&lt;br /&gt;
&lt;br /&gt;
Gijs&lt;br /&gt;
&lt;br /&gt;
The T43 requires a patch posted to the LKML by Kylene Jo Hall: [http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=111884603309146&amp;amp;w=2 LKML posting]. An updated patch for linux 2.6.12 is available [http://shamrock.dyndns.org/~ln/linux/tpm_2.6.12.diff here].&lt;br /&gt;
&lt;br /&gt;
The atmel driver comes with 2.6.12.&lt;br /&gt;
&lt;br /&gt;
==Versions &amp;amp; Features==&lt;br /&gt;
=== Embedded Security Chip ===&lt;br /&gt;
IBM introduced it's TCPA/TCG features with some of the [[:Category:T23|T23]] models. The earlier of them didn't yet have the Embedded Security Subsystem, but a kind of pre 1.0 version called the Embedded Security Chip. This chip had the following capabilities:&lt;br /&gt;
*Data communications authentication and encryption&lt;br /&gt;
*Storage of encrypted passwords&lt;br /&gt;
&lt;br /&gt;
=== Embedded Security Subsystem (1.0) ===&lt;br /&gt;
The original Embedded Security Subsystem (in IBM documents there is no use of the additive version-number 1.0) claims to be compliant with TCG specs, but apparently did not fully implement any specific TCG spec.&lt;br /&gt;
&lt;br /&gt;
The Embedded Security Subsystem has the following features:&lt;br /&gt;
*hardware key storage&lt;br /&gt;
*multi-factor authentication&lt;br /&gt;
*local file encryption&lt;br /&gt;
*enhances VPN security&lt;br /&gt;
&lt;br /&gt;
=== Embedded Security Subsystem 2.0 ===&lt;br /&gt;
The Embedded Security Subsystem 2.0 conforms to the TCG TPM 1.1b specification, with a TPM manufactured by either Atmel or National Semiconductor.&lt;br /&gt;
&lt;br /&gt;
The Embedded Security Subsystem 2.0 has the following features:&lt;br /&gt;
*hardware key storage&lt;br /&gt;
*multi-factor authentication&lt;br /&gt;
*local file encryption&lt;br /&gt;
*enhances VPN security&lt;br /&gt;
*TCG compliant&lt;br /&gt;
&lt;br /&gt;
==Models featuring this Technology==&lt;br /&gt;
===IBM Embedded Security Chip===&lt;br /&gt;
*ThinkPad {{T23}}&lt;br /&gt;
===IBM Embedded Security Subsystem===&lt;br /&gt;
*ThinkPad {{A30p}}&lt;br /&gt;
*ThinkPad {{R31}}&lt;br /&gt;
*ThinkPad {{T23}}, {{T30}}, {{T41}}&lt;br /&gt;
*ThinkPad {{X22}}, {{X23}}, {{X24}}&lt;br /&gt;
&lt;br /&gt;
===IBM Embedded Security Subsystem 2.0===&lt;br /&gt;
*ThinkPad {{R32}}, {{R40}}, {{R50}}, {{R50p}}, {{R51}}, {{R52}}&lt;br /&gt;
*ThinkPad {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}}&lt;br /&gt;
*ThinkPad {{X30}}, {{X31}}, {{X32}}, {{X40}}, {{X41}}, {{X41T}}&lt;br /&gt;
*ThinkPad {{Z60m}}, {{Z60t}}&lt;br /&gt;
[[Category:Glossary]]&lt;br /&gt;
&lt;br /&gt;
==TCPA/TCG clean models==&lt;br /&gt;
*all models produced before 2000&lt;br /&gt;
*all i Series models&lt;br /&gt;
*ThinkPad [[:Category:240X|240X]]&lt;br /&gt;
*ThinkPad [[:Category:A20m|A20m]], [[:Category:A20p|A20p]], [[:Category:A21e|A21e]], [[:Category:A21m|A21m]], [[:Category:A21p|A21p]], [[:Category:A22e|A22e]], [[:Category:A22m|A22m]], [[:Category:A22p|A22p]], [[:Category:A30|A30]]&lt;br /&gt;
*ThinkPad [[:Category:T20|T20]], [[:Category:T21|T21]]&lt;br /&gt;
*ThinkPad [[:Category:X20|X20]], [[:Category:X21|X21]], [[:Category:X22|X22]]&lt;br /&gt;
*ThinkPad [[:Category:TransNote|TransNote]]&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
*[http://www.pc.ibm.com/us/think/thinkvantagetech/security.html IBMs ThinkVantage&amp;lt;sup&amp;gt;TM&amp;lt;/sup&amp;gt; Technologies Embedded Security Subsystem page]&lt;br /&gt;
*[http://www.pc.ibm.com/presentations/us/thinkvantage/56/index.html?shortcut=ess&amp;amp; IBMs ThinkVantage&amp;lt;sup&amp;gt;TM&amp;lt;/sup&amp;gt; Technologies Flash presentation - Embedded Security Subsystem]&lt;br /&gt;
*[http://www.research.ibm.com/gsal/tcpa/ IBM Research TCPA resources page]&lt;br /&gt;
*[http://www.prosec.rub.de/trusted_grub.html Trusted Grub]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_save_memory&amp;diff=13688</id>
		<title>How to save memory</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_save_memory&amp;diff=13688"/>
		<updated>2005-12-15T17:26:29Z</updated>

		<summary type="html">&lt;p&gt;Micampe: /* Window Manager */ fixed typo and added wmx&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; |This page is meant as a collection of information on how to save memory to make Linux work reasonable on older system with limited amount of RAM.&lt;br /&gt;
&lt;br /&gt;
Most distributions nowadays don't take much care about it anymore, so there are a lot of things you can do to save memory. To get a smoothly working linux environment on a low memory machine you will need to conciously choose a lot of aspects of your system, most importantly the graphical environment, desktop environment and applications. This page provides detailed information about these various optimization possibilities.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alternative graphical environments==&lt;br /&gt;
{{Todo|...}}&lt;br /&gt;
&lt;br /&gt;
==Streamlining the desktop environment==&lt;br /&gt;
The common Desktop environments GNOME and KDE are, in their modern state, focused more on features, integration, and beauty rather than on resource saving. Understandable, but running Linux on an older ThinkPad with limited RAM requires conscious and sensitive resource usage more than anything else. The good thing about Linux is that a lot of things stay adjustable and customizable. So lets see what we can do about desktops.&lt;br /&gt;
&lt;br /&gt;
One of the most important things is to decide for one graphical widget library and stick with that when you are choosing your desktop environment and applications. Having several toolkits in use means more libraries being loaded and hence more memory being used by those. Possibilities are:&lt;br /&gt;
* [http://www.fltk.org/ FLTK]&lt;br /&gt;
* [http://www.fox-toolkit.org/ FOX toolkit]&lt;br /&gt;
* [http://www.gnustep.org GNUstep toolkit]&lt;br /&gt;
* [http://www.gtk.org/ GTK] &amp;lt;tt&amp;gt;(not recommended, use GTK 2 if possible)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [http://www.gtk.org/ GTK 2]&lt;br /&gt;
* [http://www.lesstif.org/ Lesstif] / [http://www.openmotif.org/ OpenMotif]&lt;br /&gt;
* [http://www.trolltech.com/products/qt/index.html QT]&lt;br /&gt;
* [http://www.windowmaker.org/development-wings.html WINGs] &amp;lt;tt&amp;gt;(kind of a lightweight GNUstep toolkit, provided by the WindowMaker developers)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [http://www.x.org/ X Toolkit]&lt;br /&gt;
&lt;br /&gt;
Of those, at current state, there are enough applications for the X Toolkit, GTK, GTK 2 and QT to provide you with a solution for every task you should want.&lt;br /&gt;
&lt;br /&gt;
===GNOME===&lt;br /&gt;
It's like with humans, the worst feature is in most cases also the best one. For GNOME it is probably the many little parts it consists of. Makes it hard to install, but enables one to customize the installation. So, the first thing you should do to streamline GNOME is not to launch it. Sound stupid? Well, lets have a look.&lt;br /&gt;
&lt;br /&gt;
GNOME is basically a set of libraries built around the GTK+ libs and extending its functionality. Add some nice little applications, a session manager, a panel, beautiful icons, and some other stuff and you have GNOME as you know it. Reversing those additions is what you can do to use GNOME applications on a machine that this desktop environment would normally take your nerves on.&lt;br /&gt;
&lt;br /&gt;
The GNOME panel, the session manager, the desktop manager and the window manager are all parts of GNOME that eat a lot of memory for something that others can do in a maybe little less beautiful but much more resource saving way.&lt;br /&gt;
So first off configure your login manager not to launch gnome-session at login. If you are using GDM this is quite straight forward, you just need to add a different session script, launching your favorite window manager. See the list below and pick one, lets say i.e. WindowMaker. WindowMaker uses a desktop menu, a dock and a notification area to provide you with an organized way of launching applications and iconfying running ones. So we don't need a panel anymore. Also, think if you really need icons on your desktop. If you do, think about using something like ROX filer instead of nautilus for that. In any case, tell nautilus not to manage the desktop by default by unchecking the according setting within gconf-editor. To keep GNOME applications happy we would need to have gconf and gnome-settings-manager running at every session start. One way to do this is to either include them in your new session script. They both need to be running to make GNOME applications realize their settings properly.&lt;br /&gt;
&lt;br /&gt;
===KDE===&lt;br /&gt;
{{Todo|...}}&lt;br /&gt;
&lt;br /&gt;
===Alternative Desktop Environments===&lt;br /&gt;
First of all, it is important to notice that GNOME and KDE are not the only Desktop Environments around.&lt;br /&gt;
Other complete (featuring most of: window management, session management, desktop management, file management and panel) desktop environments are:&lt;br /&gt;
*[http://xfce.org/ XFCE] &amp;lt;tt&amp;gt;uses GTK 2&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://ede.sourceforge.net Equinox Desktop Environment] &amp;lt;tt&amp;gt;uses eFLTK, a modified version of FLTK&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.nongnu.org/antiright/ AntiRight Desktop Environment] &amp;lt;tt&amp;gt;uses LessTif / OpenMotif&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://foxdesktop.sourceforge.net/ FOX Desktop Environment] &amp;lt;tt&amp;gt;uses FOX Toolkit&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.gnustep.org/ GNUstep] &amp;lt;tt&amp;gt;provides it's own toolkit&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But also, some Window Managers exceed the task of managing windows towards providing a functional workbench. See below for a list.&lt;br /&gt;
&lt;br /&gt;
===Building your own Desktop===&lt;br /&gt;
&lt;br /&gt;
====Window Manager====&lt;br /&gt;
If you want to build your own customized desktop, a good start is choosing the window manager of your liking.&lt;br /&gt;
&lt;br /&gt;
Here's a list of some of them:&lt;br /&gt;
*including basic Desktop Environment functionality&lt;br /&gt;
**the [[Wikipedia:NextStep|NextStep]] alike ones&lt;br /&gt;
***[http://www.windowmaker.org/ WindowMaker] &amp;lt;tt&amp;gt;(probably the most widespread NextStep like WM)&amp;lt;/tt&amp;gt;&lt;br /&gt;
***[http://www.afterstep.org/ AfterStep] &amp;lt;tt&amp;gt;(another one of those)&amp;lt;/tt&amp;gt;&lt;br /&gt;
***[http://blackboxwm.sourceforge.net/ BlackBox]&lt;br /&gt;
***[http://fluxbox.sourceforge.net/ FluxBox] &amp;lt;tt&amp;gt;(tabbed windows, lighweight)&amp;lt;/tt&amp;gt;&lt;br /&gt;
***[http://www.pekwm.org PekWM] &amp;lt;tt&amp;gt;(kind of a one man show, but feature rich and extremely customizable)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**others&lt;br /&gt;
***[http://www.icewm.org/ IceWM] &amp;lt;tt&amp;gt;(lightweight, widespread)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*pure WindowManagers &lt;br /&gt;
**[http://golem.sourceforge.net/ Golem]&lt;br /&gt;
**[http://home.earthlink.net/~lab1701/larswm/ LarsWM] &amp;lt;tt&amp;gt;(unique tiling Window Manager)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.nongnu.org/ratpoison/ ratpoison] &amp;lt;tt&amp;gt;(modeled after gnu screen)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://fvwm.org/ fvwm] &amp;lt;tt&amp;gt;(small but powerful)&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.all-day-breakfast.com/wm2/ wm2] &amp;lt;tt&amp;gt;really small Window Manager&amp;lt;/tt&amp;gt;&lt;br /&gt;
**[http://www.all-day-breakfast.com/wmx/ wmx] &amp;lt;tt&amp;gt;slightly more featureful version of wm2&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Taskbar/Panel====&lt;br /&gt;
Another thing that especially users coming to Linux from the Windows world would probably like is a Panel or Taskbar.&lt;br /&gt;
&lt;br /&gt;
Here's a collection of independant low resource panels:&lt;br /&gt;
*[http://www.chatjunkies.org/fspanel/ F***ing Small Panel] &amp;lt;tt&amp;gt;(doesn't use any toolkit)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://freshmeat.net/projects/hpanel/ HPanel] &amp;lt;tt&amp;gt;(doesn't use any toolkit)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://fbpanel.sourceforge.net/ fbpanel] &amp;lt;tt&amp;gt;(depends on GTK 2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://jodrell.net/projects/perlpanel Perl Panel] &amp;lt;tt&amp;gt;(depends on GTK 2, gnomevfs, perl)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.gkrellm.net/ GKrellM] &amp;lt;tt&amp;gt;(depends on GTK 2, flexible plugin based skinable vertical panel)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Desktop Pinboard====&lt;br /&gt;
Then, the next thing you might be looking for is how to get icons onto your desktop. Usually this is done by the file manager who displays the content of a special directory as icons on the desktop. See the File Manager section to follow this approach.&lt;br /&gt;
&lt;br /&gt;
However, you might decide for a really lightwight file manager which doesn't offer this feature. In that case all hope is not lost, for there are also special programs specialized in desktop icon management. Such are:&lt;br /&gt;
* [http://idesk.sourceforge.net/ iDesk] &amp;lt;tt&amp;gt;(recent versions need imlib2 only)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====File Manager====&lt;br /&gt;
File Managers are the fourth really important compontent of a desktop environment. There are plenty out their ranging from resource hugs to really lightweight and slim ones.&lt;br /&gt;
&lt;br /&gt;
File Managers come with three distinct general user interface approaches: the two pane gui, the spacial and the browser gui. The browser gui is the one the Windows Explorer starting from Windows 2000 uses as well as earlier versions of Nautilus. The spacial view is the one known from Windows 95 and more recent versions of Nautilus. The two pane view is know to many from Norten Commander, Directory Opus or your favorite FTP client.&lt;br /&gt;
&lt;br /&gt;
The following list provides an overview.&lt;br /&gt;
*FLTK&lt;br /&gt;
** [http://www.oksid.ch/flfm/ Fast Light File Manager] &amp;lt;tt&amp;gt;(spacial gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* FOX toolkit&lt;br /&gt;
** [http://roland65.free.fr/xfe/ X File Explorer] &amp;lt;tt&amp;gt;(browser and two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*GTK&lt;br /&gt;
** [http://www.kaisersite.de/dfm/ Desktop File Manager] &amp;lt;tt&amp;gt;(spacial gui, incl. desktop icon management)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://www.uwyn.com/projects/fm/ FM] &amp;lt;tt&amp;gt;(spacial, MAC OS 9 like gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://radekc.regnet.cz/ Seksi Commander] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*GTK 2&lt;br /&gt;
** [http://rox.sourceforge.net/ ROX Filer] &amp;lt;tt&amp;gt;(highly productive spacial gui, incl. panel and desktop icon management)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://blog.perldude.de/projects/filer/ Filer] &amp;lt;tt&amp;gt;(browser and two pane gui, requires Perl)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://xffm.sourceforge.net/ XFFM] &amp;lt;tt&amp;gt;(browser and spacial gui, requires some XFCE libs)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://logicaldesktop.sourceforge.net/ Logical Desktop] &amp;lt;tt&amp;gt;(browser gui, actually a very special approach)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://tuxcmd.sourceforge.net/ Tux Commander] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://emelfm2.net/emelFM2/ emelFM2] &amp;lt;tt&amp;gt;(two pane gui with full customizable menu and toolbar, the best for power users)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://thunar.xfce.org/index.xhtml Thunar] &amp;lt;tt&amp;gt;(requires some XFCE libs)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* OpenMotif&lt;br /&gt;
** [http://www.musikwissenschaft.uni-mainz.de/~ag/xplore/xplore.php Xplore] &amp;lt;tt&amp;gt;(browser gui with productive 4 pane concept)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* QT 2&lt;br /&gt;
** [http://www.hi-net.cz/blaza/bfcommander/en/index.html BF-Commander] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Tcl/Tk&lt;br /&gt;
** [http://users.tkk.fi/~mkivinie/X-Files/ X-Files] &amp;lt;tt&amp;gt;(two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*X Toolkit&lt;br /&gt;
** [http://www.musikwissenschaft.uni-mainz.de/~ag/xfm/ X File Manager] &amp;lt;tt&amp;gt;(spacial gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://www.boomerangsworld.de/worker/ Worker] &amp;lt;tt&amp;gt;(two pane gui, highly productive and configurable)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://xnc.dubna.su/ X Northern Captain] &amp;lt;tt&amp;gt;(interesting flexible two pane gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*3D Filemanagers&lt;br /&gt;
** [http://www.determinate.net/webdata/seg/tdfsb.html TDFSB] &amp;lt;tt&amp;gt;(3D gui, the most impressing 3D file browser so far)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://www.forchheimer.se/bfm/ Brutal File Manager] &amp;lt;tt&amp;gt;(3D gui more for fun than productivity)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://turma.sourceforge.net/software/3dfile/ 3DFile] &amp;lt;tt&amp;gt;(3D gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
** [http://orbis.sourceforge.net/ Orbis] &amp;lt;tt&amp;gt;(3D gui)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Choosing applications==&lt;br /&gt;
===Web Browser===&lt;br /&gt;
This is highly dependend on the way you use your browser, it's often worth it to try out all and just track general&lt;br /&gt;
memory usage. Remember that &amp;lt;tt&amp;gt;top&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;ps&amp;lt;/tt&amp;gt; don't report correct memory usage, track totals only.&lt;br /&gt;
&lt;br /&gt;
====Firefox====&lt;br /&gt;
Firefox is graphical web browser. One can install features like AdBlock and FlashClicktoplay which will decrease memory  and&lt;br /&gt;
processor usage by hiding Flash and Java -adverts.&lt;br /&gt;
&lt;br /&gt;
====Opera====&lt;br /&gt;
Opera is graphical web browser. You can easily enable/disable plug-ins and java (press F12) and decrease memory usage.&lt;br /&gt;
Opera uses QT as toolkit, so you may shave off some Mbytes off memory usage by using dynamically linked version if you use KDE.&lt;br /&gt;
&lt;br /&gt;
====Konqueror====&lt;br /&gt;
Konqueror is graphical web browser. It's integrated with KDE and has several advanced features (esp. ca. KDE 3.5).&lt;br /&gt;
You may save some megabytes by using it instead of other browsers when using KDE.&lt;br /&gt;
It's not necessarily heavy even when used without running KDE.&lt;br /&gt;
&lt;br /&gt;
====Dillo====&lt;br /&gt;
Dillo is minimalistic and very small graphical web browser. &lt;br /&gt;
&lt;br /&gt;
====Elinks/Lynx====&lt;br /&gt;
elinks/lynx are both text mode web browsers. &amp;lt;tt&amp;gt;elinks&amp;lt;/tt&amp;gt; handles tables and formatting much nicer than &amp;lt;tt&amp;gt;lynx&amp;lt;/tt&amp;gt;.&lt;br /&gt;
Both go very easy on memory footprint.&lt;br /&gt;
&lt;br /&gt;
{{Todo|...}}&lt;br /&gt;
&lt;br /&gt;
==Disabling unneeded system deamons==&lt;br /&gt;
Another thing you can do to improve performance is to get rid of unneaded system daemons launched from your init scripts. Disable them by using the according configuration interface of your distro or by deleting links in the according runlevel directories (usually in &amp;lt;code&amp;gt;/etc/rc.d/&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Daemons you usually don't need:&lt;br /&gt;
* httpd &amp;lt;tt&amp;gt;(Apache web server)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* mysqld &amp;lt;tt&amp;gt;(MySQL database server)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* smbd &amp;lt;tt&amp;gt;(SMB windows filesharing server)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* pppd &amp;lt;tt&amp;gt;(PPP server for connections through modems and serial lines)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Adjusting filesystems==&lt;br /&gt;
You can also try to optimize memory usage by making sure that you have as little as possible of your filesystem residing in RAM. To do this make sure that the following mount points are set to reside on your harddisk in {{path|/etc/fstab}}.&lt;br /&gt;
* /dev (not possible if you use udev)&lt;br /&gt;
* /tmp&lt;br /&gt;
&lt;br /&gt;
==Other tips==&lt;br /&gt;
===Disk space===&lt;br /&gt;
When using Debian/Ubuntu/other derivative, use &amp;lt;tt&amp;gt;aptitude&amp;lt;/tt&amp;gt; as package manager, and use it as soon as possible. Use it and only it to install and remove packages.&lt;br /&gt;
&lt;br /&gt;
One of it's most usefull features is that it tracks packages you install and marks packages installed via dependency as such, so when you remove a package that is no longer used, or package updates and doesn't use a library anymore, that dependency will get uninstalled.&lt;br /&gt;
&lt;br /&gt;
You can mark packages installed as automatically installed by hitting 'M' (uppercase m), it will be marked for deinstallation if it's not longer required.&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Fglrx&amp;diff=17405</id>
		<title>Talk:Fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Fglrx&amp;diff=17405"/>
		<updated>2005-12-14T20:39:52Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So, I'm searching up and down and there seems to be no way to enable the TV output without an ad-hoc xorg.conf. So my question is, what is ''fireglcontrolpanel'' useful for?&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 21:39, 14 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Category:Models&amp;diff=14723</id>
		<title>Category:Models</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Category:Models&amp;diff=14723"/>
		<updated>2005-12-14T12:12:17Z</updated>

		<summary type="html">&lt;p&gt;Micampe: reverted&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== ThinkPad Models ===&lt;br /&gt;
This page offers information about the various models published throughout the [[ThinkPad History|history of ThinkPad computers]].&amp;lt;br /&amp;gt;&lt;br /&gt;
You can also read about the [[ThinkPad|origin of the ThinkPad branch]].&amp;lt;br /&amp;gt;&lt;br /&gt;
If you need more specific information about a precise model, try to find it within the [[Hardware Specifications]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The following is a list of various [[Thinkpad series|series of Thinkpad computers]]:&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13164</id>
		<title>Talk:SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13164"/>
		<updated>2005-12-13T08:33:24Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Great, great work! Really! This completely rocks. I just stopped my battery from charging at 77% and restarted charging a bit later, no problems whatsoever. BTW, this is on kernel 2.6.14.3.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:25, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
None of the fuctions is working on my T40, kernel 2.6.14-mm2.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lammic|lammic]], 2005.12.05&lt;br /&gt;
&lt;br /&gt;
Works for me on a T41 running 2.6.12-10-686 (Ubuntu 5.10).&lt;br /&gt;
&lt;br /&gt;
--[[User:berndtnm|berndtnm]], 2005.12.06&lt;br /&gt;
&lt;br /&gt;
Including stop_charge_thresh? That one seems to be missing on the T42p.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:46, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
tp_smapi works just fine on an R52 with Ubuntu Breezy stock kernel.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:52, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''To set the thresholds for starting and stopping battery charging (in percent of current capacity):''&lt;br /&gt;
&lt;br /&gt;
'''current''' really? That'd be weird, I'd expect it to be percent of '''total''' capacity.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 14:39, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Current full charge capacity&amp;quot;, as opposed to &amp;quot;current remaining capacity&amp;quot; or &amp;quot;designed full charge capacity&amp;quot;...&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 15:05, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Battery features don't work with my T41p. I can't check this with windows. Can anybody try these features?&lt;br /&gt;
&lt;br /&gt;
-- Nils, 7 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nils, does cdrom_speed work for you on the T41p? Could you provide the details requested in the README (dmesg etc.)?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:57, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
CDRom Speed seems to work. (I see no warnings, but I have to do a speed test.) Now, I've send all outputs to the email-address in the readme.&lt;br /&gt;
&lt;br /&gt;
-- Nils, 8 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Changing the CD speed when the CD is being accessed will hang your computer==&lt;br /&gt;
&lt;br /&gt;
I don't have this problem on my T40p. CDROM is mounted and file on CD is opened. Change speed do '''not''' hang my system.&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
An open file looks fine if you're not reading/writing at that point. But my T43 does hangs on this:&lt;br /&gt;
 # dd if=/dev/scd0 of=/dev/null &amp;amp;&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/smapi/cdrom_speed&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:41, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
OK, sorry. I was to fast. My system hangs on this commands, too. :(&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
&lt;br /&gt;
Works well. Great.&lt;br /&gt;
&lt;br /&gt;
T42 2373-8zh. Working :cdrom_speed and start_charge_thresh. Untest : inhibit_charge_minutes.&lt;br /&gt;
&lt;br /&gt;
-- Haifeng Chen&lt;br /&gt;
&lt;br /&gt;
cdrom_speed works on my T40.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Lammic|lammic]], 2005.12.09&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;thinkpad&amp;quot; module kernel compatibility ==&lt;br /&gt;
&lt;br /&gt;
Ajunge, how do you compile the &amp;quot;thinkpad&amp;quot; module compile on kernel &amp;gt;=2.6.9? The latest thinkpad version (5.8) still uses &amp;quot;get_cpu_ptr&amp;quot; and &amp;quot;set_cpu_ptr&amp;quot;, which were removed in 2.6.9.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 13:53, 10 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Feature support matrix ==&lt;br /&gt;
I think it would be a good idea to reflect the supported fetures on each machine in a matrix. The listing is really complex.&lt;br /&gt;
&lt;br /&gt;
--[[User:StefanSchmidt|StefanSchmidt]]&lt;br /&gt;
&lt;br /&gt;
Something like that:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+Feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! &amp;amp;times; !! start_charge_thresh !! stop_charge_thresh !!  inhbit_charge_minutes !! cdrom_speed !! battery status&lt;br /&gt;
|-&lt;br /&gt;
! G41&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || bgcolor=green|working || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R40&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R50p&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R51&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R52&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T40&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T40p&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T41&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T41p&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T42&lt;br /&gt;
| bgcolor=green|working || unknown  || unknown || bgcolor=green|working || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T42p&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T43&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working&lt;br /&gt;
|-&lt;br /&gt;
! T43p&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X31&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X32&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X40&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X41&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || unknown || unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Good idea. Care to help converting the current data? While at it, we need a new &amp;quot;battery status&amp;quot; column for the new features in tp_smapi 0.09.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 01:47, 13 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Should we have a &amp;quot;Kernel version&amp;quot; column too?&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 09:33, 13 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13162</id>
		<title>Talk:SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13162"/>
		<updated>2005-12-13T08:32:29Z</updated>

		<summary type="html">&lt;p&gt;Micampe: updated table with real data. please check.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Great, great work! Really! This completely rocks. I just stopped my battery from charging at 77% and restarted charging a bit later, no problems whatsoever. BTW, this is on kernel 2.6.14.3.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:25, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
None of the fuctions is working on my T40, kernel 2.6.14-mm2.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lammic|lammic]], 2005.12.05&lt;br /&gt;
&lt;br /&gt;
Works for me on a T41 running 2.6.12-10-686 (Ubuntu 5.10).&lt;br /&gt;
&lt;br /&gt;
--[[User:berndtnm|berndtnm]], 2005.12.06&lt;br /&gt;
&lt;br /&gt;
Including stop_charge_thresh? That one seems to be missing on the T42p.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:46, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
tp_smapi works just fine on an R52 with Ubuntu Breezy stock kernel.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:52, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''To set the thresholds for starting and stopping battery charging (in percent of current capacity):''&lt;br /&gt;
&lt;br /&gt;
'''current''' really? That'd be weird, I'd expect it to be percent of '''total''' capacity.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 14:39, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Current full charge capacity&amp;quot;, as opposed to &amp;quot;current remaining capacity&amp;quot; or &amp;quot;designed full charge capacity&amp;quot;...&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 15:05, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Battery features don't work with my T41p. I can't check this with windows. Can anybody try these features?&lt;br /&gt;
&lt;br /&gt;
-- Nils, 7 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nils, does cdrom_speed work for you on the T41p? Could you provide the details requested in the README (dmesg etc.)?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 21:57, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
CDRom Speed seems to work. (I see no warnings, but I have to do a speed test.) Now, I've send all outputs to the email-address in the readme.&lt;br /&gt;
&lt;br /&gt;
-- Nils, 8 Dec 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Changing the CD speed when the CD is being accessed will hang your computer==&lt;br /&gt;
&lt;br /&gt;
I don't have this problem on my T40p. CDROM is mounted and file on CD is opened. Change speed do '''not''' hang my system.&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
An open file looks fine if you're not reading/writing at that point. But my T43 does hangs on this:&lt;br /&gt;
 # dd if=/dev/scd0 of=/dev/null &amp;amp;&lt;br /&gt;
 # echo 1 &amp;gt; /sys/devices/platform/smapi/cdrom_speed&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:41, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
OK, sorry. I was to fast. My system hangs on this commands, too. :(&lt;br /&gt;
&lt;br /&gt;
-- Stefan Schmidt&lt;br /&gt;
&lt;br /&gt;
Works well. Great.&lt;br /&gt;
&lt;br /&gt;
T42 2373-8zh. Working :cdrom_speed and start_charge_thresh. Untest : inhibit_charge_minutes.&lt;br /&gt;
&lt;br /&gt;
-- Haifeng Chen&lt;br /&gt;
&lt;br /&gt;
cdrom_speed works on my T40.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Lammic|lammic]], 2005.12.09&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;thinkpad&amp;quot; module kernel compatibility ==&lt;br /&gt;
&lt;br /&gt;
Ajunge, how do you compile the &amp;quot;thinkpad&amp;quot; module compile on kernel &amp;gt;=2.6.9? The latest thinkpad version (5.8) still uses &amp;quot;get_cpu_ptr&amp;quot; and &amp;quot;set_cpu_ptr&amp;quot;, which were removed in 2.6.9.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 13:53, 10 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Feature support matrix ==&lt;br /&gt;
I think it would be a good idea to reflect the supported fetures on each machine in a matrix. The listing is really complex.&lt;br /&gt;
&lt;br /&gt;
--[[User:StefanSchmidt|StefanSchmidt]]&lt;br /&gt;
&lt;br /&gt;
Something like that:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+Feature support matrix&lt;br /&gt;
|-&lt;br /&gt;
! &amp;amp;times; !! start_charge_thresh !! stop_charge_thresh !!  inhbit_charge_minutes !! cdrom_speed !! battery status&lt;br /&gt;
|-&lt;br /&gt;
! G41&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || bgcolor=green|working || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R40&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R50p&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R51&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! R52&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T40&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T40p&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T41&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T41p&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T42&lt;br /&gt;
| bgcolor=green|working || unknown  || unknown || bgcolor=green|working || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T42p&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! T43&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working&lt;br /&gt;
|-&lt;br /&gt;
! T43p&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X31&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X32&lt;br /&gt;
| bgcolor=red|not working  || bgcolor=red|not working  || bgcolor=red|not working  || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X40&lt;br /&gt;
| bgcolor=green|working || bgcolor=red|not working  || bgcolor=green|working || unknown || unknown&lt;br /&gt;
|-&lt;br /&gt;
! X41&lt;br /&gt;
| bgcolor=green|working  || bgcolor=green|working  || bgcolor=green|working  || unknown || unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Good idea. Care to help converting the current data? While at it, we need a new &amp;quot;battery status&amp;quot; column for the new features in tp_smapi 0.09.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 01:47, 13 Dec 2005 (CET)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Ordering_Recovery_CDs&amp;diff=13214</id>
		<title>Ordering Recovery CDs</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Ordering_Recovery_CDs&amp;diff=13214"/>
		<updated>2005-12-10T00:06:47Z</updated>

		<summary type="html">&lt;p&gt;Micampe: vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information on getting Recovery CDs from IBM.&lt;br /&gt;
&lt;br /&gt;
The information on this page is unofficial. It is gathered from personal experiences. It is here to raise your chances of success when you give it a try yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Recovery CDs==&lt;br /&gt;
Recovery CDs enable you to reproduce the original software state on your ThinkPad. Until the beginning of 2001 IBM delivered recovery CDs with the ThinkPads, but starting with the A30/T23/X22 models ThinkPads have a [[Predesktop Area]], which's purpose is to make Recovery CDs obsolete. However, this is flawed logic, since you will lose both the installed OS AND the [[Predesktop Area]] upon failure of the hard drive. Also, if you buy a drive upgrade the [[Predesktop Area]] will not be on the new drive. Furthermore, spyware and viruses are lately being designed to infiltrate recovery partitions, so if you restore the system from such, you will restore the invading malware along with it. For the time being, Recovery CDs are available on request.&lt;br /&gt;
&lt;br /&gt;
Recovery CDs are localized, meaning that there are specific versions for each language. The language you will get depends on the language of the OS that was shipped with your ThinkPad. There's usually no way to get CDs in a different language from IBM.&lt;br /&gt;
&lt;br /&gt;
==How to get them==&lt;br /&gt;
&lt;br /&gt;
===Creating Recovery CDs from the preinstalled O/S===&lt;br /&gt;
In some Thinkpads IBM supplies a utility to create the recovery CDs.  You'll find a utility called &amp;quot;Create Recovery Discs&amp;quot; in the &amp;quot;ACCESS IBM&amp;quot; folder of the Start Menu.  To create the Recovery discs, you'll need a CD/DVD writer and blank media.  The Product Recovery discs set consist of one Rescue and Recovery disc and one or more Product recovery discs. (2 DVDRs should suffice for the entire set)&lt;br /&gt;
&lt;br /&gt;
===From IBM===&lt;br /&gt;
Should you fail to create a set of recovery discs before your harddrive fails, you may try to contact IBM service and request for a set.&lt;br /&gt;
This can be done by eMail or phone.&lt;br /&gt;
[http://www.ibm.com/support/ Support phone numbers] are available online.&lt;br /&gt;
They are officially called ''Recovery CD service parts.''&lt;br /&gt;
If you actually get them, or not, seems to be more a personal decision of the service person dealing with you than following fixed rules. Also it seems to depend on your country (see below).&lt;br /&gt;
&lt;br /&gt;
They will usually expect you to tell them a good reason for your request (see below).&lt;br /&gt;
As with every service request, you'll also have to provide your model and serial number to verify the warranty state.&lt;br /&gt;
The warranty for your Thinkpad is usually quite long though (3 years in my case), and you can&lt;br /&gt;
[http://www-307.ibm.com/pc/support/site.wss/ check online] if your warranty is still in force.&lt;br /&gt;
The model number is also used to determine which CDs you will get.&lt;br /&gt;
&lt;br /&gt;
Orders placed during the first month after purchase have proven to be the most successful. Note some people needed to pay a $45.00 fee, plus shipping and tax, for the CDs, regardless of when ordering them. Again, this seems to depend on the mood of the service rep that handles your case.&lt;br /&gt;
&lt;br /&gt;
Note that Recovery CDs are only available for Windows XP Professional for the X24, as per the Customer Service Center in Atlanta, GA. All other operating systems (Windows 2000, 98SE, OS/2, etc...) are no longer available. XP Home was apparently never available for the X24.&lt;br /&gt;
&lt;br /&gt;
====Good reasons to tell====&lt;br /&gt;
*You replaced (or will be replacing) your hard drive.&lt;br /&gt;
*You installed Linux or some other OS and accidentally removed/destroyed the [[Predesktop Area]].&lt;br /&gt;
&lt;br /&gt;
====What happens then====&lt;br /&gt;
Once it's decided that you get the CDs, they usually get shipped very fast. Times from 16h to 3 days have been reported, 3 days being the time to expect. The shipping can even happen without prior confirmation of your request, so don't be worried if you hear nothing within this time.&lt;br /&gt;
&lt;br /&gt;
A Dutch IBM customer reported next-day delivery of recovery CDs, on three different occasions. A customer in Belgium had to wait 8 days, so sometimes delivery is not that fast.&lt;br /&gt;
&lt;br /&gt;
====Country overview====&lt;br /&gt;
Please put an entry for your country into this table if it's missing and you made a try to get the Recovery CDs.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#cfefcf;&amp;quot; | CDs received in&lt;br /&gt;
! style=&amp;quot;vertical-align:top;background-color:#ffcfbc;&amp;quot; | CDs were denied in &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#e9f9e9;&amp;quot; |&lt;br /&gt;
*Argentina&lt;br /&gt;
*Austria&lt;br /&gt;
*Australia (depends on the service rep &amp;amp; reason)&lt;br /&gt;
*Belgium&lt;br /&gt;
*Canada&lt;br /&gt;
*Denmark&lt;br /&gt;
*Finland&lt;br /&gt;
*France&lt;br /&gt;
*Germany (cost: 39,90 Euro (+VAT) if device is out of warranty), otherwise is free&lt;br /&gt;
*Italy&lt;br /&gt;
*The Netherlands&lt;br /&gt;
*Norway&lt;br /&gt;
*Philippines&lt;br /&gt;
*Spain&lt;br /&gt;
*Sweden&lt;br /&gt;
*Switzerland&lt;br /&gt;
*UK&lt;br /&gt;
*USA&lt;br /&gt;
*Turkey&lt;br /&gt;
| style=&amp;quot;vertical-align:top;background-color:#fff0e0;&amp;quot; |&lt;br /&gt;
*Israel but received after calling IBM Europe&lt;br /&gt;
*Australia, payment was requested&lt;br /&gt;
*India, just a plain &amp;quot;not possible&amp;quot;&lt;br /&gt;
*Russia, service reps claim that these CDs are not for end-users&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows]] [[Category:A30]] [[Category:A30p]] [[Category:A31]] [[Category:A31p]] [[Category:G40]] [[Category:G41]] [[Category:R30]] [[Category:R31]] [[Category:R32]][[Category:R40]] [[Category:R40e]] [[Category:R50]] [[Category:R50e]] [[Category:R50p]] [[Category:R51]] [[Category:R52]] [[Category:T23]] [[Category:T30]] [[Category:T40]] [[Category:T40p]] [[Category:T41]] [[Category:T41p]] [[Category:T42]] [[Category:T42p]] [[Category:T43]] [[Category:T43p]] [[Category:X22]] [[Category:X23]] [[Category:X24]] [[Category:X30]] [[Category:X31]] [[Category:X32]] [[Category:X40]] [[Category:X41]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Predesktop_Area&amp;diff=13081</id>
		<title>Talk:Predesktop Area</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Predesktop_Area&amp;diff=13081"/>
		<updated>2005-12-09T16:39:01Z</updated>

		<summary type="html">&lt;p&gt;Micampe: How to get the AccessIBM to work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Use the HPA for GNU/Linux?==&lt;br /&gt;
More interesting than removing the HPA (which includes a.o. Acces IBM Predesktop Area, some other tools and a backup of the pre-installed OS) would be to use this area for GNU/Linux too. At least, removing the HPA only saves 3,5 GB on my 60 GB hard disk. It would be worth a try to see whether the backup of the pre-installed OS on the largest PSA could be replaced by a backup of your favourite GNU/Linux distribution.&lt;br /&gt;
&lt;br /&gt;
Elaborating on my ideas a few days later, I'd guess the following could be tried:&lt;br /&gt;
* see whether GRUB can be made to boot the Access IBM Predekstop Area (I guess by &amp;quot;chainloading&amp;quot; the bootsector of its PSA). Right now GRUB refuses to load sectors outside the partioned area. I've got absolutely no idea if it's possible to write a hack to overcome that restriction. Need to contact the GRUB people about that ...&lt;br /&gt;
* write a HPA or SPA driver. That driver should provide something like &amp;quot;/dev/hpa&amp;quot;, &amp;quot;/dev/hpa0&amp;quot;, etc or &amp;quot;/dev/spa&amp;quot;, &amp;quot;/dev/spa0&amp;quot;, whatever. The idea here is that it allows you to simply mount (ro!) the Hidden Protected Area (given the correct BIOS settings). Probably just an addaption of the current drivers for (IDE?) harddisks. (This might mean &amp;quot;/dev/hda&amp;quot; and &amp;quot;/dev/hpa&amp;quot; overlap: dangerous?) That would probably need - way - more coding skills than I have ...&lt;br /&gt;
* write some userspace tools for the HPA/the SPAs (things like: dumpbeer, printDoS).&lt;br /&gt;
&lt;br /&gt;
It should be clear these are basically random ideas. Still feedback would be appreciated ...&lt;br /&gt;
----&lt;br /&gt;
Hei,&lt;br /&gt;
&lt;br /&gt;
interesting ideas, but i'd only see a point in it if one could keep Win and Linux rescue stuff in the HPA. That means it would need to be expandable or fit the stuff for both systems.&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 20:03, 15 Mar 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
Thanks.&lt;br /&gt;
&lt;br /&gt;
Short answer: that should be possible.&lt;br /&gt;
&lt;br /&gt;
Long answer: I see little in the specs (as I understand them now) to stop one from adding (say) an extra 3 GB GNU/Linux-rescue PSA or something like that. We might try to do that first by changing the BEER and DoS manually. (Not sure whether Phoenix added some proprietary stuff to keep you from booting it. The PSA should always be accesable with the proper BIOS setting.) It might be mandatory to put it on a FAT filesystem. The hard part probably is to have it show up in the Access IBM Predesktop Area. (My guess is you need to regenerate the FirstSight &amp;quot;graphical shell&amp;quot;. If that's correct we probably only can use the FirstWare tools &amp;quot;hidden&amp;quot; on their little PSA. That's no fun. Well it might a little fun if we try FreeDOS). &lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle (not logged in)]]&lt;br /&gt;
----&lt;br /&gt;
Update: a trivial patch to grub allows it to also work outside the partioned area:&lt;br /&gt;
&lt;br /&gt;
 --- /var/tmp/rpm/BUILD/grub-0.95/stage2/disk_io.c.oud   2004-05-23 18:35:24.000000000 +0200&lt;br /&gt;
 +++ /var/tmp/rpm/BUILD/grub-0.95/stage2/disk_io.c       2005-03-18 22:38:30.050907408 +0100&lt;br /&gt;
 @@ -297,8 +297,8 @@&lt;br /&gt;
     *  Check partition boundaries&lt;br /&gt;
     */&lt;br /&gt;
    if (sector &amp;lt; 0&lt;br /&gt;
 -      || ((sector + ((byte_offset + byte_len - 1) &amp;gt;&amp;gt; SECTOR_BITS))&lt;br /&gt;
 -         &amp;gt;= part_length))&lt;br /&gt;
 +      /*|| ((sector + ((byte_offset + byte_len - 1) &amp;gt;&amp;gt; SECTOR_BITS))&lt;br /&gt;
 +         &amp;gt;= part_length)*/)&lt;br /&gt;
      {&lt;br /&gt;
        errnum = ERR_OUTSIDE_PART;&lt;br /&gt;
        return 0;&lt;br /&gt;
&lt;br /&gt;
I made a grub CD with a grub patched with the above. Now I can &amp;quot;cat&amp;quot; the bootsector of the Predesktop Area from the grub shell (when booting of that grub CD). But I haven't yet managed to boot the Predesktop Area (dangerous stuff!) To be continued ...&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] Fri Mar 18 22:42:43 CET 2005&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I've been playing around with the predesktop area tonight.  I was simply trying to just leave the diagnostics stuff and remove the windows part.  I wrote some programs to read/write the BEER data and stuff, but I wasn't able to get the system to boot it, it kept erroring &amp;quot;Authentication of System Services failed&amp;quot; (or something along those lines).  I will play around with this some more later&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Invisi|Tim Nordell]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A quick look with a hexeditor gave me two instances of &amp;quot;Application authentication has failed!&amp;quot; in the FirstSight application. Does that sound familair? &lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] Fri Apr 1 19:35:30 CEST 2005&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Actually it wasn't that.  I did a search of that too, the message itself was not in the predesktop area at all.  What also is interesting is the fw*.exe utilities for manipulating the predesktop area, contains the string &amp;quot;MD5&amp;quot; which makes me wonder if there is an md5 hash of each &amp;quot;predesktop&amp;quot; partition.  I know on the IBM whitepaper it states there being a signature so that non-signed applications can not be run.  Could a simple &amp;quot;md5&amp;quot; be the signature?&lt;br /&gt;
&lt;br /&gt;
[[User:Invisi|Tim Nordell]] 12:01, 3 Apr 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*What is it that you were trying to do (what did trigger the error you saw)?&lt;br /&gt;
&lt;br /&gt;
*About ten of the fw*.exe utilities contain the phrase &amp;quot;MD5 Checksums do not match&amp;quot;. So they could very well be using MD5 sums for some sort of validation. But they could use the MD5 sums in a lot of ways actually, so I won't yet speculate ...&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] Sun Apr  3 15:11:10 CEST 2005&lt;br /&gt;
&lt;br /&gt;
== Predesktop Area ==&lt;br /&gt;
&lt;br /&gt;
I made a program that takes the BEER record at the end, parses it out to a &amp;quot;.cfg&amp;quot; file, lets you modify it, recalibrate the start spots for the records, and write it out to disk again.  It doesn't directly access hda, 'cept for reading the original beer record.  It makes a script file to go with the files you have, to read in the HPA data, and to write it out again with the new record.&lt;br /&gt;
&lt;br /&gt;
Anyways, I tried simply removing the last record from the BEER, which is the windows recovery partition.  It didn't like that.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Did you update the two's complement checksum at the end of the BEER?&lt;br /&gt;
&lt;br /&gt;
[[user:Pebolle|Paul Bolle]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Yep, I updated that.  If I don't update that, it doesn't even say that failed message.  I also made a seperate program to update the checksum so you can also modify the beer record by hand with a hex editor and have valid checksums.&lt;br /&gt;
&lt;br /&gt;
== Linux kernel support ==&lt;br /&gt;
{{Todo|research and add to article}}&lt;br /&gt;
* Add a section on dmesg and hdparm -I output:&lt;br /&gt;
 (...)&lt;br /&gt;
 Commands/features:&lt;br /&gt;
        Enabled Supported:&lt;br /&gt;
 (...)&lt;br /&gt;
           *    Host Protected Area feature set&lt;br /&gt;
 (...)&lt;br /&gt;
                SET MAX security extension&lt;br /&gt;
                Address Offset Reserved Area Boot&lt;br /&gt;
 (...)&lt;br /&gt;
&lt;br /&gt;
* Check boot parameters: is hda=stroke still valid?&lt;br /&gt;
 Kernel command line: ro root=LABEL=/ acpi=off hda=stroke&lt;br /&gt;
 ide_setup: hda=stroke -- BAD OPTION&lt;br /&gt;
&lt;br /&gt;
* Recent (2.6.10 and up?) kernels disable HPAs automatically (in drivers/ide/ide-disk.c). Dmesg example:&lt;br /&gt;
&lt;br /&gt;
 hda: Host Protected Area detected.&lt;br /&gt;
        current capacity is 110194034 sectors (56419 MB)&lt;br /&gt;
         native  capacity is 117210240 sectors (60011 MB)&lt;br /&gt;
 hda: Host Protected Area disabled.&lt;br /&gt;
&lt;br /&gt;
This should be (further researched and) added to this section (maybe with some pointers to the unexpected consequences of this new approach ...)&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] 22:06, 6 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
* SRCMOS24.EXE&lt;br /&gt;
&lt;br /&gt;
In the PSA used by the Predesktop Area I found a &amp;quot;hidden&amp;quot; executable: SRCMOS24.EXE (it is not mentioned in the FAT). This executable can capture and update CMOS data. It might only be used by the FirstSight program to display (part of) the BIOS info. It might be nice to see what it can do and if similar things are possible under GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] 22:01, 7 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Newer thinkpads don't use Phoenix Firstware? ==&lt;br /&gt;
&lt;br /&gt;
On my T42 that arrived yesterday, the predesktop area looks a lot like MS Windows. The widget set, the fonts, even the boot sequence looks exactly like Windows 2000. Debian-installer indentified it as &amp;quot;Microsoft Windows NT/2000/XP&amp;quot;, while it identified my XP partition as &amp;quot;Microsoft Windows XP Professional&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Has Lenovo/IBM changed their system, or is this Phoenix stuff really just Windows?&lt;br /&gt;
&lt;br /&gt;
-- [[Evan.Heidtmann]]&lt;br /&gt;
&lt;br /&gt;
Evan,&lt;br /&gt;
&lt;br /&gt;
Could it be that you're talking about the preinstalled version of Windows here? As far as I know (using information to be found on the internet, not personal research) the preinstalled OS will reformat its partition from FAT32 to NTFS at first boot. That could explain the difference in the identification by the Debian installer (which I never really used).&lt;br /&gt;
&lt;br /&gt;
Moreover the Predesktop Area is part of the HPA and the HPA is not an partition. It seems unlikely that the Debain installer notices the HPA. As far as I know there are at present no GNU/Linux tools with a (useful) support of HPAs.&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] 15:43, 4 Aug 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
My T42P (model 2373HSG) is using a cut-down version of Windows XP as the pre-desktop area.  I'm not sure whether it's a special IBM thing or just a [http://www.microsoft.com/licensing/programs/sa/benefits/winpe.mspx Windows PE] (preinstallation environment) setup.  It includes Java and Python, which are used by some of the IBM tools, and the Opera web browser.&lt;br /&gt;
&lt;br /&gt;
It's no longer an HPA but a 487MB hidden FAT32 called IBM_SERVICE located at the end of the disk.&lt;br /&gt;
&lt;br /&gt;
--[[User:Korourke|Korourke]]&lt;br /&gt;
&lt;br /&gt;
== Rescue and Recovery via grub? ==&lt;br /&gt;
&lt;br /&gt;
Did anyone get the Rescue and Recovery partition to boot via grub on recent models? On a T43 with&lt;br /&gt;
 rootnoverify (hd0,1)&lt;br /&gt;
 chainloader +1&lt;br /&gt;
the Rescue and Recovery partition starts booting nicely and then, a few seconds in the R&amp;amp;R loading sequence, chokes with a &lt;br /&gt;
 STOP: c000021a {Fatal System Error}&lt;br /&gt;
 The Session Manager Initialization system process terminated unexpectedly with a status of 0xc000003a (0x00000000 0x00000000).&lt;br /&gt;
 The system has been shut down. &lt;br /&gt;
The problem started right after installing grub into the MBR (I couldn't get the preinstalled MBR to boot grub from an active primary partition). It seems oblivious to the Predesktop BIOS setting.&lt;br /&gt;
&lt;br /&gt;
The same problem has been reported by others with other models (for example [http://forums.fedoraforum.org/archive/index.php/t-19433.html here] for a T42).&lt;br /&gt;
&lt;br /&gt;
[[User:Thinker|Thinker]] 11:35, 30 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
Your &amp;quot;Rescue and Recovery partition&amp;quot; seems not to be a HPA (which isn't a partition). Maybe we should open a new page for that system.&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] 21:54, 30 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
It may very well not be an HPA , but the BIOS stil calls it a &amp;quot;Predesktop Area&amp;quot;. Anyway, the partition is actually a VFAT partition (even though it has type 0x12, &amp;quot;Compaq Diagnostics&amp;quot;). It seems to boot into PC-DOS (using {{path|NTDETECT.EXE}} so it looks like Windows startup) and then its {{path|AUTOEXEC.BAT}} runs a fancy GUI.&lt;br /&gt;
--[[User:Thinker|Thinker]] 23:31, 30 Sep 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
Right, there has been a lot of confusion about this, we should have a separate page. Introduced an edit link (called Rescue and Recovery) on the [[ThinkPad Technologies]] page for that purpose.&lt;br /&gt;
&lt;br /&gt;
== Suggestions for projects ==&lt;br /&gt;
&lt;br /&gt;
I'd guess it would be rather nice to have GNU/Linux tools (like sfdisk and parted) HPA aware. The most urgent change would be to have those programs at least recognize and respect a HPA (e.g.: do not write in or otherwise use the HPA area; unless the user gives a --force option or something similar).&lt;br /&gt;
&lt;br /&gt;
As for now, I realize I caused this error: ENOPATCH.&lt;br /&gt;
&lt;br /&gt;
[[User:Pebolle|Paul Bolle]] 22:56, 5 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== Keeping functionality of the blue AccessIBM button ==&lt;br /&gt;
&lt;br /&gt;
Somebody figured out [http://sharadware.com/2005/07/11/suse-linux-winxp-access-ibm-on-the-thinkpad-t43/|how to keep the AccessIBM functionality] when installing Linux, quite easy fix. How come nobody thought about it before? :)&lt;br /&gt;
(link got from [[Installing_Ubuntu_5.04_on_a_ThinkPad_T43_%281875%29|here]])&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 17:39, 9 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Thermal_Sensors&amp;diff=13084</id>
		<title>Thermal Sensors</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Thermal_Sensors&amp;diff=13084"/>
		<updated>2005-12-09T13:59:43Z</updated>

		<summary type="html">&lt;p&gt;Micampe: /* ThinkPad {{R51}} */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page aims to summarize known information about the locations and properties of thermal sensors on ThinkPad laptops. &lt;br /&gt;
&lt;br /&gt;
==Accessing the sensors==&lt;br /&gt;
The primary means of accessing the thermal sensors is through the [[ibm-acpi]] module, which provides up to 11 thermal sensors (some of which may be inactive) when loaded with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; option. Up to eight thermal sensors are exposed at {{path|/proc/acpi/ibm/thermal}}:&lt;br /&gt;
&lt;br /&gt;
 # cat /proc/acpi/ibm/thermal;  &lt;br /&gt;
 temperatures:   44 41 33 42 33 -128 30 -128&lt;br /&gt;
&lt;br /&gt;
On some models there are three additional sensors at Embedded Controller offsets 0xC0 to 0xC2, which can be read by parsing {{path|/proc/acpi/ibm/ecdump}}:&lt;br /&gt;
&lt;br /&gt;
 # perl -ne 'm/^EC 0xc0: .(..) .(..) .(..) / or next; print hex($1).&amp;quot; &amp;quot;.hex($2).&amp;quot; &amp;quot;.hex($3).&amp;quot;\n&amp;quot;' &amp;lt; /proc/acpi/ibm/ecdump&lt;br /&gt;
 40 48 43&lt;br /&gt;
&lt;br /&gt;
The [[Active Protection System]] accelerometer also reports a temperature (but it is not certain that the sensor location is inside the HDAPS chip):&lt;br /&gt;
&lt;br /&gt;
 # cat /sys/bus/platform/drivers/hdaps/hdaps/temp1&lt;br /&gt;
 41&lt;br /&gt;
&lt;br /&gt;
Finally, the hard disk temperature can be read through the SMART interface:&lt;br /&gt;
&lt;br /&gt;
 # smartctl -A /dev/hda | grep Temperature&lt;br /&gt;
 194 Temperature_Celsius     0x0022   145   097   000    Old_age   Always       -       31&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensor locations==&lt;br /&gt;
&lt;br /&gt;
This information is model specific.&lt;br /&gt;
&lt;br /&gt;
===ThinkPad {{T43}}===&lt;br /&gt;
&lt;br /&gt;
The following image, prepared by Shmidoax, summarizes the results of his experiments using cooling spray to cool down components and observe the effect on the sensors.&lt;br /&gt;
&lt;br /&gt;
[[Image:T43-thermal-sensors.jpg|ThinkPad T43 thermal sensors|600px]] (click to enlarge)&lt;br /&gt;
 &lt;br /&gt;
[[Image:T43-2668-thermal-sensors-zoom.jpg|ThinkPad T43 thermal sensors - zoom|500px]] (click to enlarge)&lt;br /&gt;
&lt;br /&gt;
Summary:&lt;br /&gt;
&lt;br /&gt;
 EC offset   Index in &amp;quot;thermal&amp;quot;   Location (estimated)&lt;br /&gt;
 0x78        1                    CPU&lt;br /&gt;
 0x79        2                    Between PCMCIA slot and CPU (same as HDAPS module)&lt;br /&gt;
 0x7A        3                    PCMCIA slot&lt;br /&gt;
 0x7B        4                    GPU&lt;br /&gt;
 0x7C        5                    Battery (front left)&lt;br /&gt;
 0x7D        6                    n/a&lt;br /&gt;
 0x7E        7                    Battery (rear right)&lt;br /&gt;
 0x7F        8                    n/a&lt;br /&gt;
 0xC0        none                 Bus between Northbridge and DRAM&lt;br /&gt;
 0xC1        none                 Southbridge (under Mini-PCI card, under touchpad)&lt;br /&gt;
 0xC2        none                 Power circuitry, on underside of system board under F2 key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ThinkPad {{T40}}===&lt;br /&gt;
&lt;br /&gt;
The location of one of the sensors is identified [http://forum.thinkpads.com/viewtopic.php?t=11574 here].&lt;br /&gt;
&lt;br /&gt;
 EC offset   Index in &amp;quot;thermal&amp;quot;   Location (estimated)&lt;br /&gt;
 0x78        1                    CPU&lt;br /&gt;
 0x79        2                    System board under rear left corner of Mini-PCI module&lt;br /&gt;
 0x7A        3                    ?&lt;br /&gt;
 0x7B        4                    GPU&lt;br /&gt;
 0x7C        5                    Battery&lt;br /&gt;
 0x7D        6                    n/a&lt;br /&gt;
 0x7E        7                    Battery&lt;br /&gt;
 0x7F        8                    n/a&lt;br /&gt;
 0xC0        none                 n/a&lt;br /&gt;
 0xC1        none                 n/a&lt;br /&gt;
 0xC2        none                 n/a&lt;br /&gt;
&lt;br /&gt;
===ThinkPad {{R51}}===&lt;br /&gt;
&lt;br /&gt;
The [[ibm-acpi]] documentation includes the report by Thomas Gruber:&lt;br /&gt;
&lt;br /&gt;
 EC offset   Index in &amp;quot;thermal&amp;quot;   Location (estimated)&lt;br /&gt;
 0x78        1                    CPU&lt;br /&gt;
 0x79        2                    Mini-PCI&lt;br /&gt;
 0x7A        3                    HDD&lt;br /&gt;
 0x7B        4                    GPU&lt;br /&gt;
 0x7C        5                    Battery&lt;br /&gt;
 0x7D        6                    n/a&lt;br /&gt;
 0x7E        7                    Battery&lt;br /&gt;
 0x7F        8                    n/a&lt;br /&gt;
 0xC0        none                 ?&lt;br /&gt;
 0xC1        none                 ?&lt;br /&gt;
 0xC2        none                 ?&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=File:T43-2686-DGU-CDC.jpg&amp;diff=17337</id>
		<title>File:T43-2686-DGU-CDC.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=File:T43-2686-DGU-CDC.jpg&amp;diff=17337"/>
		<updated>2005-12-07T15:26:17Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ThinkPad T43 2686-DGU internal photo: [[CDC slot]] with [[IBM Integrated 56K Modem (MDC-2)]]. At the front of the picture you can see the three antenna wires (white, black, light gray) coming in from the LCD - two wires for the WiFi antennas and one for the BlueTooth antenna (which just goes around the CDC and is taped underneath it, since this one doesn't have Bluetooth).&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Fan_control_scripts&amp;diff=13768</id>
		<title>Talk:Fan control scripts</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Fan_control_scripts&amp;diff=13768"/>
		<updated>2005-12-07T15:19:55Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wyrfel, are you sure the recent (19:54, 27 Oct 2005) cosmetic change was a good idea? The extensive chunks of code make it hard to grok the structure of the article in the absense of separator lines (which &amp;quot;===&amp;quot; doesn't have). --[[User:Thinker|Thinker]] 22:10, 27 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
We can discuss this. From my point of view, the chunks of code distinguish themselves from each other quite well, because they are each in one code block.&lt;br /&gt;
&lt;br /&gt;
I do not like the &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; section level - and so far we avoided them on all pages - because&lt;br /&gt;
* it generates H1 headings, which is the same as the page heading,&lt;br /&gt;
* having more than one level with the hbars is confusing/less readable, because they are not very well distinguishable. This way i.e. the &amp;quot;Other&amp;quot; section looked like a separate empty secion.&lt;br /&gt;
&lt;br /&gt;
I think the way it's now, the separator lines make it possible to easily distinguish the different main sections, while when you have both levels with separator lines, an additional task of distinguishing H1 and H2 separators is necessary.&lt;br /&gt;
&lt;br /&gt;
However, i see your point as well and would like to hear more opinions/arguments.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 22:31, 27 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (for unpatched kernels)===&lt;br /&gt;
Moved to the [[ACPI fan control script|article page]], after joint development by [[User:Spiney|Spiney]] and [[User:Thinker|Thinker]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''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;
I think it'd probably be nice to have a table of the suggested values here. Those in the &amp;quot;unpatched kernels&amp;quot; script seems to work fine on my R52, but the other scripts all have different values.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 08:19, 12 Nov 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== Sensor-specific variable-speed script ==&lt;br /&gt;
&lt;br /&gt;
Here's a new variable-speed control script that lets you define the temperature range separately for each sensor. To keep things simple, it auto-computes the trip points (unlike the current script). Works well on a {{T43}}, and (just barely) keeps the fan off most of the time with CPU undervolting and  [[fglrx]] set to maximum power saving. Feedback on other machines would be appreciated.&lt;br /&gt;
&lt;br /&gt;
Any idea what are the sensors at EC offsets 0x79, 0x7A, 0xC0, 0xC1, 0xC2? On the T43, 0x79 seems to be the same as the HDAPS sensor (it never deviates by more than one degree from what the HDAPS sensor tells directly), but I don't know where it's located. Sensor 0x7A is uncorrelated with disk temperature and activity, so it can't be HDD like reported ofor R52. Sensor 0xC1 seems to be under the palm-rest (see discussion in [[Talk:Problem_with_fan_noise]]).&lt;br /&gt;
&lt;br /&gt;
This version also lets the EC read the RPM sensor every few minutes even when the anti-pulsing hack (which normally prevents this) is in use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Script moved to the [[ACPI fan control script#Variable speed control scripts|article page]]&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
{{HINT|If you followed a link here looking for thermal sensor information, see the [[ACPI fan control script#Variable speed control scripts|article page]].}}&lt;br /&gt;
&lt;br /&gt;
Feedback very much welcome.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 23:08, 27 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Fan enable/disable scripts ==&lt;br /&gt;
&lt;br /&gt;
We currently have two types of scripts -- the old ones which only enable/disable the fan, and the new ones which control the fan speed. Do the latter supercede the former, or do we know of models on which only enable/disable works? Maybe eventually the enable/disable scripts should be &amp;quot;archived&amp;quot; in the talk page to reduce clutter in the article?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:08, 28 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Things seem pretty stable for the variable-speed script and the [[Patch_for_controlling_fan_speed#Models_on_which_this_patch_works|list of working models]] looks good. Since it is superior to the enable/disable scripts in regard to both the annoyance and the impact on hardware, I'll change the organization of the page to put that script first (unless someone objects)..&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:07, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I don't see the point in having the enable/disable scripts when the variable speed one works fine. I'd vote for moving the old scripts here and only keep the better ones in the article, unless somebody has a sane use case for which those are bettere than the new scripts.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 16:19, 7 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13010</id>
		<title>Talk:SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13010"/>
		<updated>2005-12-07T13:39:59Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Great, great work! Really! This completely rocks. I just stopped my battery from charging at 77% and restarted charging a bit later, no problems whatsoever. BTW, this is on kernel 2.6.14.3.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:25, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
None of the fuctions is working on my T40, kernel 2.6.14-mm2.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lammic|lammic]], 2005.12.05&lt;br /&gt;
&lt;br /&gt;
Works for me on a T41 running 2.6.12-10-686 (Ubuntu 5.10).&lt;br /&gt;
&lt;br /&gt;
--[[User:berndtnm|berndtnm]], 2005.12.06&lt;br /&gt;
&lt;br /&gt;
Including stop_charge_thresh? That one seems to be missing on the T42p.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:46, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
tp_smapi works just fine on an R52 with Ubuntu Breezy stock kernel.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:52, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''To set the thresholds for starting and stopping battery charging (in percent of current capacity):''&lt;br /&gt;
&lt;br /&gt;
'''current''' really? That'd be weird, I'd expect it to be percent of '''total''' capacity.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 14:39, 7 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Problem_with_fan_noise&amp;diff=13006</id>
		<title>Talk:Problem with fan noise</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Problem_with_fan_noise&amp;diff=13006"/>
		<updated>2005-12-07T11:56:49Z</updated>

		<summary type="html">&lt;p&gt;Micampe: /* Fan speed control? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem with fan noise on R51 1829 L7G (ATI M9) ==&lt;br /&gt;
&lt;br /&gt;
On my R51 the fan is behaving like this:&lt;br /&gt;
&lt;br /&gt;
* &amp;gt; 45C -&amp;gt; fan on;&lt;br /&gt;
* &amp;lt; 38C -&amp;gt; fan off.&lt;br /&gt;
&lt;br /&gt;
By using cpufreq + laptop_mode + Xorg DynamicClocks + WiFi power management, I get the fan stopped time to time, but only for 3 minutes time (transition from 38 C -&amp;gt; 45 C). The cooling down cycle is taking 20 minutes in the best case.&lt;br /&gt;
&lt;br /&gt;
I knew about the 'ibm_acpi experimental=1' trick, but in my opinion this is not very useful since nobody can guarantee that a temperature greater then 45 C will not damage the laptop and in the same time the transition time is very short (the laptop gets hot fast without fan).&lt;br /&gt;
&lt;br /&gt;
== Thinkpad T42 Radeon Mobility M7 ==&lt;br /&gt;
&lt;br /&gt;
When Xorg is running, the fan is always on and pretty loud !&lt;br /&gt;
Setting DynamicClocks does not help&lt;br /&gt;
&lt;br /&gt;
it's clear that the GPU is the problem on the thinkpad :&lt;br /&gt;
&lt;br /&gt;
after 10minutes with the fan off&lt;br /&gt;
temperatures:   44 47 33 52 32 -128 24 -128&lt;br /&gt;
&lt;br /&gt;
1:  CPU&lt;br /&gt;
2:  Mini PCI Module&lt;br /&gt;
3:  HDD&lt;br /&gt;
4:  GPU&lt;br /&gt;
5:  Battery&lt;br /&gt;
6:  N/A&lt;br /&gt;
7:  Battery&lt;br /&gt;
8:  N/A&lt;br /&gt;
&lt;br /&gt;
Controlling the fan speed would be really cool !&lt;br /&gt;
&lt;br /&gt;
What is the maximum temperature not to cross ?&lt;br /&gt;
----&lt;br /&gt;
Word on the 'net is that 85 degrees is the max operating temp for most of the Intel chips.  I've seen some high 70's all the time (just put it on carpet for awhile and play some quake3 :).  I wouldn't let your processor get much higher than 85...&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Older versions of xorg (i.e. 6.7.0) don't seem to be able to use the DynamicClocks option although it's set in the xorg.conf. Search the log to find out if it's really used.&lt;br /&gt;
&lt;br /&gt;
== Thinkpad R32 with Radeon Mobility M6 ==&lt;br /&gt;
&lt;br /&gt;
Updating xorg-x11 from 6.7.0 to 6.8.2 and using Speedstep (with the ondemand module in this case) helped cooling the system down significantly:&lt;br /&gt;
&lt;br /&gt;
* before updating the CPU was ~62 C in idle state, and got very near the critical temperature (72 C) during heavy load - I even got some freezes because of the heat ;)&lt;br /&gt;
* after the update the CPU is ~54 C in idle state, and still gets to about 68 C while under heavy load&lt;br /&gt;
&lt;br /&gt;
The second sensor (which may be the GPU) is somehow fixed to 50 C (maybe a bug?)&lt;br /&gt;
&lt;br /&gt;
The fan on the R32 is behaving like this:&lt;br /&gt;
&lt;br /&gt;
* &amp;gt; 61 -&amp;gt; fan in state 2 (quite noisy)&lt;br /&gt;
* &amp;lt; 55 -&amp;gt; fan in state 1 (less noisy :) )&lt;br /&gt;
&lt;br /&gt;
But I remember using my old SuSE distribution with kernel 2.4.16, apm and some old x11 version the fan actually stopped completely from time to time.&lt;br /&gt;
&lt;br /&gt;
Concerning the maximum temperature of the CPU, I found that the critical temperature on the R32 for the CPU sensor is 72 C&lt;br /&gt;
(using {{cmdroot|cat /proc/acpi/thermal_zone/THM0/trip_points }} )&lt;br /&gt;
&lt;br /&gt;
== Fan Control script: more safe version ==&lt;br /&gt;
&lt;br /&gt;
ibm_acpi works well on my R50 and R51.  But to rely on it completely, I modified the script in two ways:&lt;br /&gt;
&lt;br /&gt;
1. It catches verious signals and turns the fan on before it quits&lt;br /&gt;
&lt;br /&gt;
2. It turns off the fan under very strict conditions, leaving it on when unexpected errors occur.&lt;br /&gt;
&lt;br /&gt;
Here is my script:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # july 2005 Erik Groeneveld, erik@cq2.nl&lt;br /&gt;
 # More conservatiev and saver version&lt;br /&gt;
 # It make sure the fan is on in case of errors&lt;br /&gt;
 # and only turns it off when all temps are ok.&lt;br /&gt;
 &lt;br /&gt;
 IBM_ACPI=/proc/acpi/ibm&lt;br /&gt;
 THERMOMETER=$IBM_ACPI/thermal&lt;br /&gt;
 FAN=$IBM_ACPI/fan&lt;br /&gt;
 MAXTRIPPOINT=65&lt;br /&gt;
 MINTRIPPOINT=60&lt;br /&gt;
 TRIPPOINT=$MINTRIPPOINT&lt;br /&gt;
 &lt;br /&gt;
 echo fancontrol: Thermometer: $THERMOMETER, Fan: $FAN&lt;br /&gt;
 echo fancontrol: Current `cat $THERMOMETER`&lt;br /&gt;
 echo fancontrol: Controlling temperatures between $MINTRIPPOINT and $MAXTRIPPOINT degrees.&lt;br /&gt;
 &lt;br /&gt;
 # Make sure the fan is turned on when the script crashes or is killed&lt;br /&gt;
 trap &amp;quot;echo enable &amp;gt; $FAN; exit 0&amp;quot; HUP KILL INT ABRT STOP QUIT SEGV TERM&lt;br /&gt;
 &lt;br /&gt;
 while [ 1 ];&lt;br /&gt;
 do&lt;br /&gt;
        command=enable&lt;br /&gt;
        temperatures=`sed s/temperatures:// &amp;lt; $THERMOMETER`&lt;br /&gt;
        result=&lt;br /&gt;
        for temp in $temperatures&lt;br /&gt;
        do&lt;br /&gt;
                test $temp -le $TRIPPOINT &amp;amp;&amp;amp; result=$result.Ok&lt;br /&gt;
        done&lt;br /&gt;
        if [ &amp;quot;$result&amp;quot; = &amp;quot;.Ok.Ok.Ok.Ok.Ok.Ok.Ok.Ok&amp;quot; ]; then&lt;br /&gt;
                command=disable&lt;br /&gt;
                TRIPPOINT=$MAXTRIPPOINT&lt;br /&gt;
        else&lt;br /&gt;
                command=enable&lt;br /&gt;
                TRIPPOINT=$MINTRIPPOINT&lt;br /&gt;
        fi&lt;br /&gt;
        echo $command &amp;gt; $FAN&lt;br /&gt;
        # Temperature ramps up quickly, so pick this not too large:&lt;br /&gt;
        sleep 5&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I added this script to the other ones. Don't wander about my talk edits, i didn't realize i was on the talk page. [[User:Wyrfel|Wyrfel]] 01:48, 13 Aug 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== X41 ==&lt;br /&gt;
&lt;br /&gt;
Same fan problem here on the X41. Once it starts it won't stop (unless it is _very_ cold outside). Undervolting the CPU doesn't help - still the same problem.&lt;br /&gt;
&lt;br /&gt;
== Fan speed control? ==&lt;br /&gt;
&lt;br /&gt;
Only the X31 and X40 have an ACPI method for controlling the FAN speed (this is why ibm_acpi provides this functionality just for these models).&lt;br /&gt;
&lt;br /&gt;
What will happen if we take the &amp;quot;FANS&amp;quot; method from the  [http://acpi.sourceforge.net/dsdt/view.php?id=219 X40 DSDT], paste it into a iasl-disassembled DSDT of (say) a T43, recompile it and [http://gaugusch.at/kernel.shtml tell the kernel] to use the patched DSDT? ibm_acpi will present the functionality, but it may or may not work.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:16, 28 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
Any risk of damaging the hardware when doing this? E.g. what does occur if the system overheats - will the CPU be destroyed are does it automatically switch of? As I've just bought a new X41 I don't want to take any stupid risks - but otherwise I'd say let's try it out.&lt;br /&gt;
&lt;br /&gt;
--gst Thu Sep 29 18:14:13 CEST 2005&lt;br /&gt;
&lt;br /&gt;
I think Intel CPUs have some built-in thermal protection, but I'd hate to test it. And of course, any fiddling with the hardware at this level might damage it. That said, when the CPU is mostly idle it keeps a reasonable temperature even when the fan is disabled, so as long as you keep an eye on both the CPU usage meter and /proc/acpi/ibm/thermal, things should be pretty safe temperature-wise. For extra safety you can force the CPU to its lowest speed via {{path|/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq}}.&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:33, 29 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Anybody tried to slow down the fan and have it running at ~1000-1500rpm? That would make it almost silent and you could have it always running (like Apple does on Macs).&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:56, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
== Further discussion ==&lt;br /&gt;
&lt;br /&gt;
I've just found a very interesting thread regarding the same issue on HP notebooks. IMO it provides many insight information about heat/fan problems in general, the URL is: http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=853249&lt;br /&gt;
Especially the posts by the HP engineer &amp;quot;Andy Fisher&amp;quot; are very interesting. IBM should be able to provide the same BIOS fix as HP did (maybe I should have bought an HP notebook instead of a Thinkpad?).&lt;br /&gt;
&lt;br /&gt;
I've also contacted IBM/Lenovo support via the website about the fan issue. Maybe it helps when others do this as well (especially people who bought larger quantities) so that this issue is taken serious by Lenovo. Is there already any official response to this problem?&lt;br /&gt;
&lt;br /&gt;
--gst Thu Sep 29 19:40:34 CEST 2005&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Two of the changes mentioned by the HP engineer make perfect sense here: raise the low trip points and make speed transition gradual. Oh, and get rid of the annoying beat pattern (a brief speed pulse every few seconds) it sometimes gets into!&lt;br /&gt;
&lt;br /&gt;
But from our perspective, what would probably be best is to do the whole thing in software, providing the flexibility for personal preferences and smart decisions. The hardware would only enforce emergency override or throttle/shutdown for extreme temperatures. Then we could do cute things like having a software daemon lower the thresholds in a noisy environment (as judged using the built-in microphone) or when the laptop is on the user's lap (as judged by the built-in accelometers).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:47, 30 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
I noticed that on my T43 the fan is usually in one of two modes, low speed (around 3300 RPM, triggered around CPU=47deg) and medium speed (around 4100 RPM, can't figure out the trip condition). The former is nearly inaudible, but the latter is quite noticable in the absense of strong background noises.&lt;br /&gt;
&lt;br /&gt;
Now, the problem is that once it has tripped into medium speed, it usually never comes back to low speed until the next reboot. So once it happens, to quiet things down I can only run one of the fan-disabling scripts given here. But with a disabled fan the T43 is not thermally stable, so it will spend its time moving back and forth between the hysteresis thresholds, i.e., toggling between 4100 RPM and 0 RPM every few minutes. This is quite silly and annoying, when staying at low speed would be both more stable and more quiet.&lt;br /&gt;
&lt;br /&gt;
I hope someone will find a way to control the fan speed, or at least to reset the embedded controller's hysteresis state.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 10:29, 6 Oct 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
When you do changes to e.g. the Energy Schema in Windows or you eject the Thinkpad of the Docking Station it seems that the controllers state is rest. At least on the X41 the fan does stop until it reaches the threshold to start some minutes later. So it should be doable. --85.124.171.70&lt;br /&gt;
&lt;br /&gt;
That's good. But just like a bunch of other functions (e.g., controlling the battery charge threshold), it probably uses low-level undocumented proprietary interfaces which are very hard to figure out without the help of IBM/Lenovo, who are in denial about the whole thing. --[[User:Thinker|Thinker]] 01:40, 16 Oct 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Works fine with APM instead of ACPI? ==&lt;br /&gt;
&lt;br /&gt;
On my X41 the fan starts after about 10 minutes of use and doesn't stop (until it is rather cold in my room - and even then it runs most of the time ;) A friend of mine who has a X41 too (though another model) and who does use NetBSD and APM doesn't experience this problem. He claims that the fan only comes up if the system is not idle. So either it is colder in his room, the X41 model which he has doesn't have this flaw or APM does use different tresholds than ACPI.&lt;br /&gt;
&lt;br /&gt;
* Then why not just try the {{bootparm|acpi|off}} kernel parameter and see what happens? --[[User:Thinker|Thinker]] 18:14, 30 Sep 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
I currently don't have physical access to the X41. Will try in a few days.&lt;br /&gt;
&lt;br /&gt;
== Rewiring the fan? ==&lt;br /&gt;
&lt;br /&gt;
Since IBM/Lenovo shows no intention of fixing their embedded controller firmware or releasing its specs, how about getting the embedded controller out of the loop? I'd be happy as a clam if my fan was hard-wired to work at a constant 3000RPM, with temperatures kept at bay in software through CPU frequenty control.&lt;br /&gt;
&lt;br /&gt;
Assuming the fan has the standard 3-wire connector, we can probaby keep the sensor and ground wires untouched, and rewire the positive wire to some nearby current source of appropriate voltage (through a resistor, for fine-tuning). The trick would be to find an easily tappable source that can handle an extra 2W and has the appropriate voltage (i.e., just slightly higher than what the fan needs to rotate at that RPM, so we don't waste too much energy in the resistor). Any idea what are the typical fan voltages and what would be an appropriate hookup point?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 01:59, 16 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Secret sensor and the cause of fan always on ==&lt;br /&gt;
&lt;br /&gt;
On my {{T43}}, ecdump offsets 0xC0-0xC2 seem to include 3 more temperature sensors that are not seen in {{path|/proc/acpi/ibm/thermal}}:&lt;br /&gt;
 # cat /proc/acpi/ibm/thermal;  &lt;br /&gt;
 temperatures:   44 41 33 42 33 -128 30 -128&lt;br /&gt;
 # perl -ne 'm/^EC 0xc0: .(..) .(..) .(..) / or next; print hex($1).&amp;quot; &amp;quot;.hex($2).&amp;quot; &amp;quot;.hex($3).&amp;quot;\n&amp;quot;' &amp;lt; /proc/acpi/ibm/ecdump&lt;br /&gt;
 40 48 43&lt;br /&gt;
&lt;br /&gt;
Note the &amp;quot;48&amp;quot; entry (EC offset 0xC1). Something's pretty hot even at full full speed (level 7, 4700RPM). This sensor increases very quickly when the system starts (in fact, faster than anything else when the CPU is undervolted and [[fglrx]] is in maximum powersaving).&lt;br /&gt;
&lt;br /&gt;
Now, note this: the fan kicks up from low speed to medium speed whenever this sensor reaches 46 degrees, even if no other sensor changes; and this seems to usually be the first trigger encountered. Moreover, this sensor hovers around 47-48 degrees even on an idle machine. Taken together, '''this fully explains the &amp;quot;fan always on&amp;quot; behavior: a previously-unnoticed sensor that's always hot.'''&lt;br /&gt;
&lt;br /&gt;
Any idea what this sensor is? It seems correlated with WiFi: there's a 2deg difference when I toggle {{path|/sys/bus/pci/drivers/ipw2200/*/rf_kill}} (without ever being associated so this shouldn't affect anything else), and heavy WiFi data transfer increases temperature by several more degrees. This suggests the sensor is located in or close to the mini-PCI slot (i.e., under the touchpad). That region is indeed often hot to the touch. But why would the mini-PCI slot get so hot? Could it be the southbridge, which sits under the mini-PCI slot with no heatsink and poor ventilation? Can anyone correlate this sensor other specific activity, or with blocking of specific ventilation holes, or with cooling of specific components? If it's the mini-PCI slot? The operating temperature of the Intel 2200BG is [ftp://download.intel.com/network/connectivity/resources/doc_library/tech_brief/2200bg_prodbrief.pdf 0-80 deg].&lt;br /&gt;
&lt;br /&gt;
Caveat: this is my experience with a {{T43}} after [[Pentium M undervolting and underclocking|undervolting]] the CPU and activating [[How to make use of Graphics Chips Power Management features|maximal GPU powersaving using fglrx]]. It could be that for other people, other components are the first to trigger. But either way, those are 3 temperature sensors we didn't know of and they're used by the Embedded Controller's algorithm.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:20, 20 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
At the moment I am experimenting with controlling the fan on Windows XP with a self written tool on a {{T43}} (Model 2668 97G).  Having found the information about the secret sensors here I built these into the program and it seems that after starting my cooled (placed outside) {{T43}} the 0xC1 sensor indeed rises fastest but also cools down quite quicky especially if also the CPU is cool.  I have seen it hotter than the CPU but not much cooler, so probably it is a small chip connected to the colling element of the CPU.&lt;br /&gt;
&lt;br /&gt;
The values at 0xC0 and 0xC2 also seem to show temperature values here, while 0xC4 is always at 128.&lt;br /&gt;
&lt;br /&gt;
First experiments indicate that as long as all the temperature value are below 43Â°C the Thinkpad comes up with no fan and stays that way.  (The fan control register at EC offset 0x2F set to 0x80, see the bottom of the [[patch for controlling fan speed]] page for a description of this register).  If 43Â°C are reached on the 0xC1 sensor, the fan kicks in with low speed while 43Â°C on the CPU do not activate the fan.  With regard to the CPU the kick-in seems to be around 48Â°C.&lt;br /&gt;
&lt;br /&gt;
Once the fan is on, it goes off again if all the seonsors drop to the area of 38Â°C or lower (the value may not be precise).  But it hardly happens on it's own, for tests I placed it outside in cold weather.&lt;br /&gt;
&lt;br /&gt;
On [http://forum.thinkpads.com/ forums.thinkpad.com] is a ([http://forum.thinkpads.com/viewtopic.php?t=14580http://forum.thinkpads.com/viewtopic.php?t=14580 discussion]) from users who experimented with physically cooling the North- and Southbridge without success.  In a different thread there a user claimed that he worked with a couple of Thinkpads and silenced them by turning off unused devices, WLAN being among them.&lt;br /&gt;
&lt;br /&gt;
With the XP WLAN device disabled the temperature on 0xC1 stays around 41Â°C here even if there is heavy activity on the CPU.  It rises as soon as the WLAN device is enabled but hardly goes any hotter than 44Â°C.  But I also could not make it go hot at all running on battery.  And the heat reading there somehow more or less follows the value of the CPU.&lt;br /&gt;
&lt;br /&gt;
Bottom line on my {{T43}} (2668 97G): Fan kicks in for CPU around 48Â°C or 0xC1 at 43Â°C and then never goes off again unless you use external cooling.  0xC1 sensor could to be related to WLAN (I'm not really sure about it) and/or is probably placed near the CPU.  It could also have something to do with running the machine no AC rather than battery.&lt;br /&gt;
&lt;br /&gt;
-- Shimdoax - 2005-11-27&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Shimdoax, you said &amp;quot;''I have seen it hotter than the CPU but not much cooler, so probably it is a small chip connected to the colling element of the CPU''&amp;quot;, but also &amp;quot;''the temperature on 0xC1 stays around 41Â°C here even if there is heavy activity on the CPU''&amp;quot;. It follows that your CPU is never much hotter than 41Â°C, which I find unlikely... Anyway, on my T43, sensor 0cC1 is correlated with the CPU but very slightly; it is more correlated with the GPU, but not very much either.&lt;br /&gt;
&lt;br /&gt;
I suspect that sensor 0xC1 sits on the system board under the touchpad, since this is consistent with all of the following:&lt;br /&gt;
* In idle with wireless off, sensor 0xC1 has roughly the same temperature as the GPU (which is adjacent on the system board, under the spacebar and TrackPoint buttons).&lt;br /&gt;
* Correlation with the WLAN card activity (which is sandwiched between the system board and the touchpad).&lt;br /&gt;
* Quick warm-up (the southbridge is also on the system board under the touchpad, and has no heat spreader).&lt;br /&gt;
* Negligible effect of fan speed on 0xC1 temperature (the touchpad area is cramped and lacks decent ventilation, hence has negligible air flow).&lt;br /&gt;
* When I place a 12cm-by-12cm pad of thick thermally isolating material (a folded fleece blanket...) under the touchpad, 0xC1 temperature consistently rises by 2-3 degrees (and cools back when I remove the pad); other sensors seem unaffected.&lt;br /&gt;
&lt;br /&gt;
If this is indeed the case, it's hard to see what can be done (other than using a fan control script with an increased threshold for this sensor). It looks like IBM/Lenovo counted on this area being passively cooled through the bottom of the case - see how the bottom of the laptop is designed to allow air flow under the front quarter? However, once the desk under the laptop has warmed up (or if air flow is blocked, as when the laptop is sitting on the top of a lap), things just cook up. The [http://forum.thinkpads.com/viewtopic.php?t=14580http://forum.thinkpads.com/viewtopic.php?t=14580 mods] which  thermally connet the southbridge to the GPU cooling assembly might improve things a bit, but on my system sensor 0xC1 isn't much hotter than the GPU anyway. Maybe ventilation can be improved by letting in more air through the speaker grills on the front - does anyone know what things looks like, under the very front of the palmrest? This won't solve &amp;quot;fan always on&amp;quot; since it will help only when the fan is on, but it may let the fan run at a lower speed.&lt;br /&gt;
&lt;br /&gt;
BTW, Shimdoax, how are you monitoring/controlling the EC under Windows?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 18:22, 27 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Thinker,&lt;br /&gt;
&lt;br /&gt;
I currently don't know where to read the GPU temp from, so I can't say much about it (I'm running XP and have not found drivers or tools that would display the GPU).&lt;br /&gt;
&lt;br /&gt;
However, regarding my experiments: I had the machine on my desk earlier today (when I wrote the post) on AC with WLAN connection to the office network and &amp;quot;Max. Battery Life&amp;quot; Scheme.  I had taken it from the trunk of the car (it's quite cold outside, around freezing).  During the whole experiments the CPU hardly went higher than 46Â°C, most of the time it was around 39Â°C to 43Â°C.  I wasn't very systematic in these tests, these were just first observations.&lt;br /&gt;
&lt;br /&gt;
However, I think I can confirm that the 43Â°C on the C1 triggers the fan on my machine here.  48Â°C to 50Â°C on the CPU also triggers the fan on.  Then I put the laptop outside the window twice.  Temperatures dropped quite quickly and around MAX(CPU, 0xC1) of 38Â°C the fan turned itself off.&lt;br /&gt;
&lt;br /&gt;
Further tests on the WLAN revealed mixed results about correlation.  If the CPU goes up the C1 also goes up, even if WLAN is disabled.  On the other hand I had cases where WLAN (big folder copy) made the C1 rise ahead of the CPU.  The way I tested it, mostly the C1 triggered the fan before the CPU did.  This at least explains why CPU undervolting/clocking doesn't help much.&lt;br /&gt;
&lt;br /&gt;
But I think you're right.  Without custom scripts I guess it will be hard to keep the C1 below 43Â°C.  This value may even be intentional by IBM.  If it is really near the palmrest, higher values may cause burns (I once read about a guy who actually burnt his balls [no joke!] by working with a laptop which had a 42Â°C - 45Â°C battery temp. in his lap for an hour or two).  So they may think that fan noise is preferrable to bad publicity.&lt;br /&gt;
&lt;br /&gt;
Hence I'm not counting on IBM.  Instead I'm currently writing a custom fan control program for XP, that's how I read the EC there.  I'll post a first version [http://forum.thinkpads.com/viewtopic.php?t=17715 here] later today.  Maybe some folks from the hardware modding thread will help to locate the sensors with some cooling spray.&lt;br /&gt;
&lt;br /&gt;
-- Shimodax - 2005-11-27&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Shimodax,&lt;br /&gt;
&lt;br /&gt;
Great to see work on a Windows solution, especially from Emtec! (Alas, I let my ZOC registration expire when I switched to Linux). Will you be releasing the source code? &lt;br /&gt;
&lt;br /&gt;
If the 0xC1 sensor is near the southbridge then it will be affected by CPU activity both because of related southbridge activity and by thermal conductance via the motherboard; but I've seen 0xC1 at 47deg and CPU at 59deg (after a long burn-in), so they can't be too close. About the palmrest, IBM actually brags about low palm rest temperature in some of their marketing publication. But ironically the hottest and worst-cooled area of the laptop (where I suspect 0xC1 sits) is in the bottom center right under the touchpad - which tends to coincide with certain anatomical regions... BTW, GPU temp is EC offset 0x7B; there a partial list inside my new fan control script at [[Talk:ACPI_fan_control_script]] (I'll move it to the article page soon).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 23:20, 27 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
+LOL+ I wouldn't have expected that anybody would know me :-)&lt;br /&gt;
&lt;br /&gt;
Yes, I'll release source code soon.  I took quite some pain in writing this tool without our proprietary classes and libs in order to be able to release the source (or at least maintain a basic Open Source version).  I'll see if SourceForge accepts the project (applied on Saturday), otherwise I'll have find another place.&lt;br /&gt;
&lt;br /&gt;
Thanks for the info about the GPU ... &lt;br /&gt;
&lt;br /&gt;
Markus&lt;br /&gt;
&lt;br /&gt;
-- Shimodax - 23:42 (CET) - 2005-11-27&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
For the record: the new [http://forum.thinkpads.com/viewtopic.php?p=111974 &amp;quot;Shimodax fan control tool : sharing values&amp;quot;] topic at the thinkpads.com forums tracks some other users' experience with their sensor. So far the only new observation is that sensor 0x7A (3rd) is probably in the vicinity of the the CPU or northbridge.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 12:53, 28 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Just now I see the C2 higher than C1 and rest of the system for the first time.  Only difference I can think of is the fact that the battery is loading.  I hooked it on with 6% left about 30 minutes ago.  Usage was mainly web broswing (firefox, maybe a webpage with animated gif ads).  C2 triggered the fan at 50Â°C two times.&lt;br /&gt;
&lt;br /&gt;
CPU 42Â°C (0x78)&lt;br /&gt;
APS 41Â°C (0x79)&lt;br /&gt;
X7A 34Â°C (0x7A)&lt;br /&gt;
GPU 44Â°C (0x7B)&lt;br /&gt;
BAT 40Â°C (0x7C)&lt;br /&gt;
BAT 31Â°C (0x7E)&lt;br /&gt;
XC0 40Â°C (0xC0)&lt;br /&gt;
XC1 46Â°C (0xC1)&lt;br /&gt;
XC2 48Â°C (0xC2)&lt;br /&gt;
&lt;br /&gt;
-- Shimodax 00:17 CET - 2005-11-30&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Upon further casual observation I would like to offer the theory that the C2 sensor is indeed related to battery loading and may be located rear/left (under the Esc/F1) on a T43.  See: page 2 on [http://forum.thinkpads.com/viewtopic.php?p=111974 &amp;quot;Shimodax fan control tool : sharing values&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
-- Shimodax 13:27 CET - 2005-12-01&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I happen to have a photo of that area from the last time I opened my T43, and indeed it looks like there's some power circuitry there:&lt;br /&gt;
&lt;br /&gt;
[[Image:T43-2686-DGU-CDC.jpg|500px|T43 CDC]]&lt;br /&gt;
&lt;br /&gt;
Those two &amp;quot;150 A47L&amp;quot; are just above the ventilation grill. Any idea what they could be?&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 20:11, 1 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Don't know ... they could look like power stabilizing transistors, but I have very little knowledge of electronic (especially of SMD circuits) so that's just wild guessing.&lt;br /&gt;
&lt;br /&gt;
Hoever, the system is currently loading battery again and I played with the fan.  The C2 does react to the fan quite slowly and when I forced the fan off it rose no higher than 55Â°C.   Also from touching the bottom of the laptop, I'd say the hottest part of that area is between the grill and the latch for the DRAM expansion (probably below the thing in the center of your photo).&lt;br /&gt;
&lt;br /&gt;
-- Shimodax 01:53 CET - 2005-12-02&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Makes perfect sense. So 0xC2 sits under the CDC and monitors the power circuitry (not just battery charging, since it also heats up slightly above its environment without a battery). Then XC2-&amp;gt;PWR, I guess. Two more to go: 0x7A and 0xC0 (both are nice and cool here).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 03:35, 2 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I'll then rename it in my tool with the next release.  Btw, do you have any idea what the APS might be on other models?&lt;br /&gt;
&lt;br /&gt;
-- Shimodax 14:07 CET - 2005-12-03&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
It's easy to check if 0x79 is the HDAPS accelerometer or not: read the HDAPS temperature directly and compare. For getting the HDAPS temperature you can follow the Linux hdaps.c driver, or just reboot to Linux and look at {{path|/sys/bus/platform/drivers/hdaps/hdaps/temp1}} (and at {{path|/proc/acpi/ibm/thermal}} for the first 8 EC sensors). On my T43, the 0x79 always matches the HDAPS sensor (usually identical but sometimes 1 degree off, probably due to a different sampling time). BTW, my [[ACPI_fan_control_script#Variable_speed_control_scripts|ACPI fan control script]] monitors both, just in case.&lt;br /&gt;
&lt;br /&gt;
Speaking of which, the table at the top of that script reflects all knowledge gleaned from the forum.tinkpads.com discussion. Feel free to update it (maybe we should move it to a separate and more spacious page?).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 15:03, 3 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
For another view of the 0xC2 area, including a peek under the CDC card, see IBM/Lenovo's [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&amp;amp;lndocid=MIGR-51451 CDC removal movie]. There seems to be nothing very exciting visible on the upper side on the motherboard (but judging by the plastic buldge in the bottom of the case, there's probably some circuitry on the underside).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 16:39, 3 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
I just had the idea that 0xC0 could be the Northbridge chip. See [http://forum.thinkpads.com/viewtopic.php?p=111974 &amp;quot;Shimodax fan control tool : sharing values&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
-- Shimodax 23:15 CET - 2005-12-05&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Yes, 0xC0 is very much correlated with CPU temperature. But if it's the northbrighe then it's surpsigingly cool, since northbridges usually run pretty hot, and the 815PM has a small surface area and no cooling assembly whatsoever, see here:&lt;br /&gt;
&lt;br /&gt;
[[Image:ThinkPad-T43-under-keyboard-left.jpg|500px|T43 systemboard]] (click to enlarge)&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:45, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
Mmmh, I guess I'll remove the keyboard and play with some cooling spray.  It seems that a good part of the inside area can be reached through the opening of the keyboard.&lt;br /&gt;
&lt;br /&gt;
-- Shimodax 23:15 CET - 2005-12-05&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
Just in case - these [http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-50233 instructions and movies] are pretty useful. It looks like the palmrest should be easy to remove too, but I didn't try that.&lt;br /&gt;
&lt;br /&gt;
Keep us posted :-)&lt;br /&gt;
&lt;br /&gt;
And please take plenty of photos! You never know what you'll want to look up later (as with those 0xC2 power chips above).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 17:34, 6 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
Someone on a [http://thinkpad-forum.de/forum/viewtopic.php?p=29286#29286 German forum] reported that he saw pictures on an U.S. forum where someone said he located the 0xC1 with cooling spray. Seems indeed to be below the left of the touchpad on the mainboard (pictures on the forum article linked above)&lt;br /&gt;
&lt;br /&gt;
-- Shimodax 22:50 CET - 2005-12-06&lt;br /&gt;
&lt;br /&gt;
Interesting. That's a T40, right? Similar layout but different cooling assembly. Anyway, the T40 didn't have HDAPS, but on the T43 the HDAPS accelerometer chip is just 1 or 2 centimeters down from the location of the chip marked here. And on the T43, sensor 0xC1 and direct HDAPS reads give very different results. So maybe they moved 0xC1 away on the T43? Or, maybe the temperatures read through by HDAPS driver actually come from a separate sensor located elsewhere (unlikely but possible).&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 01:05, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13007</id>
		<title>Talk:SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:SMAPI_support_for_Linux&amp;diff=13007"/>
		<updated>2005-12-07T11:52:51Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Great, great work! Really! This completely rocks. I just stopped my battery from charging at 77% and restarted charging a bit later, no problems whatsoever. BTW, this is on kernel 2.6.14.3.&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 21:25, 5 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
None of the fuctions is working on my T40, kernel 2.6.14-mm2.&lt;br /&gt;
&lt;br /&gt;
--[[User:Lammic|lammic]], 2005.12.05&lt;br /&gt;
&lt;br /&gt;
Works for me on a T41 running 2.6.12-10-686 (Ubuntu 5.10).&lt;br /&gt;
&lt;br /&gt;
--[[User:berndtnm|berndtnm]], 2005.12.06&lt;br /&gt;
&lt;br /&gt;
Including stop_charge_thresh? That one seems to be missing on the T42p.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 00:46, 7 Dec 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
tp_smapi works just fine on an R52 with Ubuntu Breezy stock kernel.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 12:52, 7 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=SMAPI_support_for_Linux&amp;diff=12995</id>
		<title>SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=SMAPI_support_for_Linux&amp;diff=12995"/>
		<updated>2005-12-07T08:18:40Z</updated>

		<summary type="html">&lt;p&gt;Micampe: Added R52 to supported models&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ThinkPad laptops include a proprietary interface called SMAPI BIOS (System Management Application Program Interface) which provides some&lt;br /&gt;
hardware control functionality that is not exposed by any other interface (e.g., ACPI).&lt;br /&gt;
&lt;br /&gt;
The SMAPI interfaces changes a lot between models, and is poorly documented, so Linux support is not exhaustive for most models. There are currently two SMAPI access mechanisms available: &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt; for older ThinkPads, and &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; for newer ones.&lt;br /&gt;
&lt;br /&gt;
{{WARN|These drivers use undocumented features and direct hardware access. They thus cannot be guaranteed to work, and may cause arbitrary damage&lt;br /&gt;
(especially on models they weren't tested on).}}&lt;br /&gt;
&lt;br /&gt;
==Using the &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt; module==&lt;br /&gt;
&lt;br /&gt;
This solution consists of a module, called &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt;, and a user-space tool caled &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt;. It provides very rich functionality for older ThinkPads, but on newer ThinkPads much of this functionality is exposed and supported through an ACPI interface and the SMAPI access does not work anymore. For details, see the [http://tpctl.sourceforge.net/README README] and [http://tpctl.sourceforge.net/SUPPORTED-MODELS list of supported models].&lt;br /&gt;
&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to download the [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=29354t thinkpad module] and [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=1204 tpctl userspace tool].&lt;br /&gt;
* There is also an optional GUI: [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=99929 configure-thinkpad].&lt;br /&gt;
&lt;br /&gt;
==Using the &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; module==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module exposes some features of the SMAPI BIOS found on recent ThinkPads via a sysfs interface. Currently, the only implemented functionality is control over battery charging (this is useful for [[Maintenance#Battery_Treatment|increasing battery lifetime]], or for using a leftover under-spec power supply that can't handle the combined power draw of running and charging).&lt;br /&gt;
&lt;br /&gt;
* Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
* You need to donwnload only the [http://sourceforge.net/project/showfiles.php?group_id=1212&amp;amp;package_id=171579 tp_smapi kernel module].&lt;br /&gt;
&lt;br /&gt;
To compile and load the module:&lt;br /&gt;
&lt;br /&gt;
 # tar xzvf tp_smapi-0.06.tgz&lt;br /&gt;
 # cd tp_smapi-0.06&lt;br /&gt;
 # make load&lt;br /&gt;
&lt;br /&gt;
To install permanently (optional):&lt;br /&gt;
&lt;br /&gt;
 # make install&lt;br /&gt;
 # modprobe tp_smapi&lt;br /&gt;
&lt;br /&gt;
Example of usage:&lt;br /&gt;
&lt;br /&gt;
 # echo 40 &amp;gt; /sys/devices/platform/smapi/start_charge_thresh&lt;br /&gt;
 # echo 70 &amp;gt; /sys/devices/platform/smapi/stop_charge_thresh&lt;br /&gt;
 # cat /sys/devices/platform/smapi/*_charge_thresh&lt;br /&gt;
 40 &lt;br /&gt;
 70&lt;br /&gt;
&lt;br /&gt;
To unconditionally inhibit charging for 17 minutes:&lt;br /&gt;
&lt;br /&gt;
 # echo 17 &amp;gt; /sys/devices/platform/smapi/inhibit_charge_minutes&lt;br /&gt;
&lt;br /&gt;
To cancel charge inhibiting:&lt;br /&gt;
&lt;br /&gt;
 # echo 0 &amp;gt; /sys/devices/platform/smapi/inhibit_charge_minutes&lt;br /&gt;
&lt;br /&gt;
If you get a &amp;quot;not supported&amp;quot; error, your laptop doesn't provide the specific function (or at least not via SMAPI).&lt;br /&gt;
&lt;br /&gt;
Other things that can be controlled through SMAPI, but are not supported in this version of the driver, include forcing battery discharge, PCI bus power saving, CPU power saving control, extended smart battery information, CD/DVD drive speed control and fan control. See the included README file for more information.&lt;br /&gt;
&lt;br /&gt;
====Models on which this driver works====&lt;br /&gt;
* ThinkPad {{T43}}, {{T43p}}, {{X41}}, {{R52}} (all functions)&lt;br /&gt;
* ThinkPad {{T42p}}, {{X40}}, {{G41}} (all except &amp;lt;tt&amp;gt;stop_charge_thresh&amp;lt;/tt&amp;gt;)&lt;br /&gt;
* ThinkPad {{T40p}} (only cdrom_speed)&lt;br /&gt;
&lt;br /&gt;
For the details, see the README file inside the package.&lt;br /&gt;
If you have new data, please report it on the [[Talk:SMAPI support for Linux|discussion]] page.&lt;br /&gt;
&lt;br /&gt;
====Models on which none of the functions work====&lt;br /&gt;
* ThinkPad {{T40}}, {{R50p}}, {{R40}}, {{X31}} and probably all earlier models. These apparently don't have the relevant capabilities, even under Windows.&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:SMAPI support for Linux|discussion]] page. If the module loads but gives &amp;quot;not supported&amp;quot; errors when you try to use it, report whether the corresponding functionality is available under Windows - maybe your ThinkPad just can't do that.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]] [[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=WD90C24&amp;diff=16655</id>
		<title>WD90C24</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=WD90C24&amp;diff=16655"/>
		<updated>2005-12-05T22:39:25Z</updated>

		<summary type="html">&lt;p&gt;Micampe: vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== WD90C24 ===&lt;br /&gt;
This is a Western Digital video adapter&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Chipset: WD90C24, WD90C24A or WD90C24A2&lt;br /&gt;
* 1MB DRAM&lt;br /&gt;
* Interface: VL-Bus 2.0&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux X.Org driver ===&lt;br /&gt;
This chip is not supported by X.org, the best you can get is 640x480 with 16 colors with the 'vga' driver as part of the X.Org distribution&lt;br /&gt;
&lt;br /&gt;
=== Linux XFree86 driver ===&lt;br /&gt;
XFree86 3.3.6 was the last version to support this chip with the 'svga' driver.&lt;br /&gt;
&lt;br /&gt;
==== ThinkPad LCD ====&lt;br /&gt;
Display on the internal LCD works as long as you set the monitor settings correct.&lt;br /&gt;
&lt;br /&gt;
==== External VGA port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel Framebuffer driver ===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{345C}}, {{345CS}}&lt;br /&gt;
* {{355}}&lt;br /&gt;
* {{360}}, {{360C}}, {{360Cs}}, {{360CE}}, {{360CSE}}, {{360P}}, {{360PE}}&lt;br /&gt;
* {{370C}}&lt;br /&gt;
* {{355C}}, {{355Cs}}&lt;br /&gt;
* {{510Cs}}&lt;br /&gt;
* {{750}}, {{750C}}, {{750Cs}}, {{750P}}&lt;br /&gt;
* {{755C}}, {{755Cs}}, {{755CE}}, {{755CSE}}, {{755CD}}, {{755CDV}}, {{755CV}}, {{755CX}}&lt;br /&gt;
* {{820}}, {{850}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=WD90C24&amp;diff=12845</id>
		<title>WD90C24</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=WD90C24&amp;diff=12845"/>
		<updated>2005-12-05T22:38:48Z</updated>

		<summary type="html">&lt;p&gt;Micampe: reverted vandalism&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== WD90C24 ===&lt;br /&gt;
This is a Western Digital video adapter&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Chipset: WD90C24, WD90C24A or WD90C24A2&lt;br /&gt;
* 1MB DRAM&lt;br /&gt;
* Interface: VL-Bus 2.0&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Linux X.Org driver ===&lt;br /&gt;
This chip is not supported by X.org, the best you can get is 640x480 with 16 colors with the 'vga' driver as part of the X.Org distribution&lt;br /&gt;
&lt;br /&gt;
=== Linux XFree86 driver ===&lt;br /&gt;
X6 was the last version to support this chip with the 'svga' driver.&lt;br /&gt;
&lt;br /&gt;
==== ThinkPad LCD ====&lt;br /&gt;
Display on the internal LCD works as long as you set the monitor settings correct.&lt;br /&gt;
&lt;br /&gt;
==== External VGA port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel Framebuffer driver ===&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{345C}}, {{345CS}}&lt;br /&gt;
* {{355}}&lt;br /&gt;
* {{360}}, {{360C}}, {{360Cs}}, {{360CE}}, {{360CSE}}, {{360P}}, {{360PE}}&lt;br /&gt;
* {{370C}}&lt;br /&gt;
* {{355C}}, {{355Cs}}&lt;br /&gt;
* {{510Cs}}&lt;br /&gt;
* {{750}}, {{750C}}, {{750Cs}}, {{750P}}&lt;br /&gt;
* {{755C}}, {{755Cs}}, {{755CE}}, {{755CSE}}, {{755CD}}, {{755CDV}}, {{755CV}}, {{755CX}}&lt;br /&gt;
* {{820}}, {{850}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=SMAPI_support_for_Linux&amp;diff=12803</id>
		<title>SMAPI support for Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=SMAPI_support_for_Linux&amp;diff=12803"/>
		<updated>2005-12-04T22:30:12Z</updated>

		<summary type="html">&lt;p&gt;Micampe: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ThinkPad laptops include a proprietary interface called SMAPI BIOS (System Management Application Program Interface) which provides some&lt;br /&gt;
hardware control functionality that is not exposed by any other interface (e.g., ACPI).&lt;br /&gt;
&lt;br /&gt;
The SMAPI interfaces changes a lot between models, and is poorly documented, so Linux support is not exhaustive for most models. There currently two SMAPI interfaces available: &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt; for older ThinkPads, and &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; for newer ones.&lt;br /&gt;
&lt;br /&gt;
{{WARN|This driver uses undocumented features and direct hardware access. They thus cannot be guaranteed to work, and may cause arbitrary damage&lt;br /&gt;
(especially on models they weren't tested on).}}&lt;br /&gt;
&lt;br /&gt;
==Using &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
This solution consists of a module, called &amp;lt;tt&amp;gt;thinkpad&amp;lt;/tt&amp;gt;, and a user-space tool caled &amp;lt;tt&amp;gt;tpctl&amp;lt;/tt&amp;gt;. It provides very rich functionality for older ThinkPads, but on newer ThinkPads much of this functionality is exposed and supported through an ACPI interface and the SMAPI access does not work anymore. For details, see the [http://tpctl.sourceforge.net/README README] and [http://tpctl.sourceforge.net/SUPPORTED-MODELS list of supported models].&lt;br /&gt;
&lt;br /&gt;
Project page: http://tpctl.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
==Using &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;tp_smapi&amp;lt;/tt&amp;gt; kernel module uses the current SMAPI interface to expose some features of the SMAPI BIOS via a sysfs interface. Currently, the only&lt;br /&gt;
implemented functionality is setting the battery charge start and stop thresholds (this is useful for [[Maintenance#Battery_Treatment|increasing battery lifetime]]). The module has been posted [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030792.html here].&lt;br /&gt;
&lt;br /&gt;
Download:&lt;br /&gt;
&lt;br /&gt;
 # wget -O - http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030792.html | \&lt;br /&gt;
   perl -ne '$a=!$a if m/^---/; next if !$a; $a++ if m/^$/; print if $a&amp;gt;1' | mmencode -u &amp;gt; tp_smapi-0.01.tgz&lt;br /&gt;
&lt;br /&gt;
Loading:&lt;br /&gt;
&lt;br /&gt;
 # tar xzvf tp_smapi-0.01.tgz&lt;br /&gt;
 # cd tp_smapi-0.01&lt;br /&gt;
 # make load&lt;br /&gt;
&lt;br /&gt;
To install permanently (optional):&lt;br /&gt;
&lt;br /&gt;
 # make install&lt;br /&gt;
 # modprobe tp_smapi&lt;br /&gt;
&lt;br /&gt;
Example of usage:&lt;br /&gt;
&lt;br /&gt;
 # echo 40 &amp;gt; /sys/devices/platform/smapi/start_charge_thresh&lt;br /&gt;
 # echo 70 &amp;gt; /sys/devices/platform/smapi/stop_charge_thresh&lt;br /&gt;
 # cat /sys/devices/platform/smapi/*_charge_thresh&lt;br /&gt;
 40 &lt;br /&gt;
 70&lt;br /&gt;
&lt;br /&gt;
Other things that can be controlled through SMAPI, but are not supported in this version of the driver, include forcing battery discharge, disallowing&lt;br /&gt;
battery charging, PCI bus power saving, CPU power saving control, extended smart battery information and fan control. See the exported symbols in&lt;br /&gt;
PWRMGRIF.DLL for more hints.&lt;br /&gt;
&lt;br /&gt;
===Models on which this driver works===&lt;br /&gt;
* ThinkPad {{T43}}&lt;br /&gt;
&lt;br /&gt;
Please update the above and report your experience on the [[Talk:Editing SMAPI support for Linux|discussion]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]] [[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:How_to_make_use_of_Graphics_Chips_Power_Management_features&amp;diff=13858</id>
		<title>Talk:How to make use of Graphics Chips Power Management features</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:How_to_make_use_of_Graphics_Chips_Power_Management_features&amp;diff=13858"/>
		<updated>2005-12-02T13:11:49Z</updated>

		<summary type="html">&lt;p&gt;Micampe: /* aticonfig and Xorg.0.log don't match */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Experimentally, it seems that [[rovclock]] determines the maximum frequency, and &amp;quot;DynamicClocks&amp;quot; tells the chip to a lower frequency when possible. They are thus complementary. --[[User:Thinker|Thinker]] 18:59, 27 Oct 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
== show current power state with fglrx? ==&lt;br /&gt;
&lt;br /&gt;
Switching power states using {{cmd|aticonfig|}} seems to work fine. Seems, because I can't really see in which state the ATI chip is currently in. Or can I?&lt;br /&gt;
&lt;br /&gt;
--[[User:Spiney|spiney]] 14:40, 20 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
You can (destructively) check whether it's in a specific state by trying to switch to that state. If it's alredy there, it will give an error. If not, it will switch and (on my machine) cause a brief screen blink. Indeed, brilliant engineering.&lt;br /&gt;
&lt;br /&gt;
--[[User:Thinker|Thinker]] 15:32, 20 Nov 2005 (CET)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== aticonfig and Xorg.0.log don't match ==&lt;br /&gt;
I was testing this PowerPlay business and I saw that aticonfig --lsp outputs:&lt;br /&gt;
&lt;br /&gt;
   core/mem      [flags]&lt;br /&gt;
 ---------------&lt;br /&gt;
 1: 105/122 MHz  [low voltage]&lt;br /&gt;
 2: 209/182 MHz  [low voltage]&lt;br /&gt;
 3: 297/230 MHz  [default state]&lt;br /&gt;
&lt;br /&gt;
But Xorg.0.log reports that the states are:&lt;br /&gt;
 (II) fglrx(0): POWERplay version 3.  4 power states available:&lt;br /&gt;
 (II) fglrx(0):   1. 297/230MHz @ 60Hz [enable load balancing]&lt;br /&gt;
 (II) fglrx(0):   2. 105/122MHz @ 60Hz [low voltage, enable sleep]&lt;br /&gt;
 (II) fglrx(0):   3. 250/230MHz @ 60Hz [thermal diode mode]&lt;br /&gt;
 (II) fglrx(0):   4. 209/182MHz @ 60Hz [low voltage]&lt;br /&gt;
&lt;br /&gt;
Am I the only one that think this is kind of odd? I'm using a R52 with a X300 card.&lt;br /&gt;
Omarkj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I can confirm I have the same values on the same hardware. Also, it seems rovclock can't read the correct speeds. It reads values well over 400MHz. --[[User:Micampe|Micampe]] 14:11, 2 Dec 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Fan_control_scripts&amp;diff=12687</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=12687"/>
		<updated>2005-11-30T19:25:04Z</updated>

		<summary type="html">&lt;p&gt;Micampe: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fan enable/disable scripts==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script example===&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 MAXTEMP=50&lt;br /&gt;
 &lt;br /&gt;
 while [ 1 ];&lt;br /&gt;
 do&lt;br /&gt;
        fan=no&lt;br /&gt;
 &lt;br /&gt;
        for temp in `sed s/temperatures:// &amp;lt; /proc/acpi/ibm/thermal`&lt;br /&gt;
        do&lt;br /&gt;
                test $temp -gt $MAXTEMP &amp;amp;&amp;amp; fan=yes&lt;br /&gt;
        done&lt;br /&gt;
 &lt;br /&gt;
        command='disable'&lt;br /&gt;
        test &amp;quot;$fan&amp;quot; = &amp;quot;yes&amp;quot; &amp;amp;&amp;amp; command='enable'&lt;br /&gt;
        echo $command &amp;gt; /proc/acpi/ibm/fan&lt;br /&gt;
 &lt;br /&gt;
        sleep 20&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt; script with more features===&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # fan control-script&lt;br /&gt;
 #&lt;br /&gt;
 # based upon ibm-acpi 0.11 (experimental=1 !)&lt;br /&gt;
 #&lt;br /&gt;
 # eliminates anoying &amp;quot;fan always on&amp;quot; in battery mode&lt;br /&gt;
 # works with hysteresis (DELTA) so that always-turn-on/turn-off is avoided&lt;br /&gt;
 # fan acivates at MAXTEMP and cools down CPU, GPU etc. to MAXTEMP-DELTA than the fan is turned off&lt;br /&gt;
 # furthermore detects if AC is on and gives back fan control to default behaviour than&lt;br /&gt;
 #&lt;br /&gt;
 # one can change MAXTEMP and DELTA to individual values&lt;br /&gt;
 # but take care of your THINKPAD don`t melt it!&lt;br /&gt;
 #&lt;br /&gt;
 # have fun!&lt;br /&gt;
 # mk 05.05.05&lt;br /&gt;
 &lt;br /&gt;
 MAXTEMP=51&lt;br /&gt;
 DELTA=4&lt;br /&gt;
 &lt;br /&gt;
 SWITCHTEMP=$MAXTEMP&lt;br /&gt;
 &lt;br /&gt;
 #make sure the script doesn't leave the fan off on error&lt;br /&gt;
 trap &amp;quot;echo enable &amp;gt; /proc/acpi/ibm/fan&amp;quot; EXIT&lt;br /&gt;
 &lt;br /&gt;
 while [ 1 ];&lt;br /&gt;
 do&lt;br /&gt;
   for ac in `sed s/state:// &amp;lt; /proc/acpi/ac_adapter/AC/state`&lt;br /&gt;
     do&lt;br /&gt;
      if [ &amp;quot;$ac&amp;quot; = &amp;quot;off-line&amp;quot; ]; then&lt;br /&gt;
          fan=no&lt;br /&gt;
          for temp in `sed s/temperatures:// &amp;lt; /proc/acpi/ibm/thermal`&lt;br /&gt;
            do&lt;br /&gt;
              test $temp -gt $SWITCHTEMP &amp;amp;&amp;amp; fan=yes&lt;br /&gt;
            done&lt;br /&gt;
 &lt;br /&gt;
          if [ &amp;quot;$fan&amp;quot; = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
            command='enable'&lt;br /&gt;
            SWITCHTEMP=`expr $MAXTEMP - $DELTA`&lt;br /&gt;
          else&lt;br /&gt;
            SWITCHTEMP=$MAXTEMP&lt;br /&gt;
            command='disable'&lt;br /&gt;
          fi&lt;br /&gt;
 &lt;br /&gt;
        else # ac-adapter on -&amp;gt; set fan control to standard behaviour&lt;br /&gt;
          command='enable'&lt;br /&gt;
        fi&lt;br /&gt;
 &lt;br /&gt;
        echo $command &amp;gt; /proc/acpi/ibm/fan&lt;br /&gt;
        sleep 15&lt;br /&gt;
      done &lt;br /&gt;
   done&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;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 # july 2005 Erik Groeneveld, erik@cq2.nl&lt;br /&gt;
 # It makes sure the fan is on in case of errors&lt;br /&gt;
 # and only turns it off when all temps are ok.&lt;br /&gt;
 &lt;br /&gt;
 IBM_ACPI=/proc/acpi/ibm&lt;br /&gt;
 THERMOMETER=$IBM_ACPI/thermal&lt;br /&gt;
 FAN=$IBM_ACPI/fan&lt;br /&gt;
 MAXTRIPPOINT=65&lt;br /&gt;
 MINTRIPPOINT=60&lt;br /&gt;
 TRIPPOINT=$MINTRIPPOINT&lt;br /&gt;
 &lt;br /&gt;
 echo fancontrol: Thermometer: $THERMOMETER, Fan: $FAN&lt;br /&gt;
 echo fancontrol: Current `cat $THERMOMETER`&lt;br /&gt;
 echo fancontrol: Controlling temperatures between $MINTRIPPOINT and $MAXTRIPPOINT degrees.&lt;br /&gt;
 &lt;br /&gt;
 # Make sure the fan is turned on when the script crashes or is killed&lt;br /&gt;
 trap &amp;quot;echo enable &amp;gt; $FAN; exit 0&amp;quot; HUP KILL INT ABRT STOP QUIT SEGV TERM&lt;br /&gt;
 &lt;br /&gt;
 while [ 1 ];&lt;br /&gt;
 do&lt;br /&gt;
        command=enable&lt;br /&gt;
        temperatures=`sed s/temperatures:// &amp;lt; $THERMOMETER`&lt;br /&gt;
        result=&lt;br /&gt;
        for temp in $temperatures&lt;br /&gt;
        do&lt;br /&gt;
                test $temp -le $TRIPPOINT &amp;amp;&amp;amp; result=$result.Ok&lt;br /&gt;
        done&lt;br /&gt;
        if [ &amp;quot;$result&amp;quot; = &amp;quot;.Ok.Ok.Ok.Ok.Ok.Ok.Ok.Ok&amp;quot; ]; then&lt;br /&gt;
                command=disable&lt;br /&gt;
                TRIPPOINT=$MAXTRIPPOINT&lt;br /&gt;
        else&lt;br /&gt;
                command=enable&lt;br /&gt;
                TRIPPOINT=$MINTRIPPOINT&lt;br /&gt;
        fi&lt;br /&gt;
        echo $command &amp;gt; $FAN&lt;br /&gt;
        # Temperature ramps up quickly, so pick this not too large:&lt;br /&gt;
        sleep 5&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
==Variable speed control scripts==&lt;br /&gt;
&lt;br /&gt;
While the above scripts only toggle the fan on and off, the following scripts also sets the fan speed according to sytem temperatures. 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;
===&amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed===&lt;br /&gt;
&lt;br /&gt;
The following requires only [[ibm-acpi]] 0.11 or higher (e.g., as found in kernel 2.6.14 and higher) with the &amp;lt;tt&amp;gt;experimental=1&amp;lt;/tt&amp;gt; module parameter. It supports (optional) daemon mode and logging to syslog. &lt;br /&gt;
&lt;br /&gt;
This scripts uses a different temperature range for each sensor, since they have different specs and thermal systems. For each sensor, a fan level is chosen based on the minimum and maximum temperatures configured for that sensor; then the actual fan level is set to the slowest that will satisfy all sensors. There are also some hysteresis features - see the script for the details. The method of controlling fan speed is documented [[Patch for controlling fan speed#Hardware specs|here]].&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 temperature thresholds by N degrees&lt;br /&gt;
           (positive for quieter, negative for cooler)&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 daemon (ignores all but -p)&lt;br /&gt;
    -p     pid file location for daemon mode, default: /var/run/tp-fancontrol.pid&lt;br /&gt;
&lt;br /&gt;
{{WARN|This script relies on undocumented hardware features and overrides nominal hardware behavior. It may thus cause arbitrary damage to your laptop or data. Watch your temperatures!}}&lt;br /&gt;
{{WARN|The list of temperature ranges used below is much more liberal than the rules used by the embedded controller firmware, and is derived mostly from anecdotal evidene, hunches and wishful thinking. It is also model-specific.}}&lt;br /&gt;
&lt;br /&gt;
With no further ado, here is the script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# tp-fancontrol 0.2.3 (http://thinkwiki.org/wiki/ACPI_fan_control_script)&lt;br /&gt;
# Provided under the GNU General Public License version 2 or later or&lt;br /&gt;
# the GNU Free Documentation License version 1.2 or later, at your option.&lt;br /&gt;
# See http://www.gnu.org/copyleft/gpl.html for the Warranty Disclaimer.&lt;br /&gt;
&lt;br /&gt;
# This script dynamically controls fan speed on some ThinkPad models&lt;br /&gt;
# according to user-defined temperature thresholds.  It implements its&lt;br /&gt;
# own decision algorithm, overriding the ThinkPad embedded&lt;br /&gt;
# controller. It also implements a workaround for the fan noise pulse&lt;br /&gt;
# experienced every few seconds on some ThinkPads.&lt;br /&gt;
#&lt;br /&gt;
# Run 'tp-fancontrol --help' for options.&lt;br /&gt;
#&lt;br /&gt;
# WARNING: This script relies on undocumented hardware features and&lt;br /&gt;
# overrides nominal hardware behavior. It may thus cause arbitrary&lt;br /&gt;
# damage to your laptop or data. Watch your temperatures!&lt;br /&gt;
#&lt;br /&gt;
# WARNING: The list of temperature ranges used below is much more liberal&lt;br /&gt;
# than the rules used by the embedded controller firmware, and is&lt;br /&gt;
# derived mostly from anecdotal evidence, hunches and wishful thinking.&lt;br /&gt;
# It is also model-specific.&lt;br /&gt;
&lt;br /&gt;
# Temperature ranges, per sensor:&lt;br /&gt;
# (min temperature: when to step up from 0-th fan level,&lt;br /&gt;
#  max temperature: when to step up to maximum fan level)&lt;br /&gt;
THRESHOLDS=( #  Sensor     ThinkPad model&lt;br /&gt;
             #             R51     T42   T43/p&lt;br /&gt;
# min  max   #  ---------- ------- ---   ----&lt;br /&gt;
  50   70    #  EC 0x78    CPU     CPU   CPU&lt;br /&gt;
  47   60    #  EC 0x79    miniPCI ?     HDAPS through EC (under center left of miniPCI)&lt;br /&gt;
  43   55    #  EC 0x7A    HDD     ?     ?&lt;br /&gt;
  49   68    #  EC 0x7B    GPU     GPU   GPU&lt;br /&gt;
  37   52    #  EC 0x7C    BAT     BAT   BAT (front left)&lt;br /&gt;
  45   55    #  EC 0x7D    n/a     n/a   n/a&lt;br /&gt;
  34   45    #  EC 0x7E    BAT     BAT   BAT (rear right)&lt;br /&gt;
  45   55    #  EC 0x7F    n/a     n/a   n/a&lt;br /&gt;
  45   55    #  EC 0xC0    ?       n/a   ?&lt;br /&gt;
  48   60    #  EC 0xC1    ?       n/a   Southbridge under miniPCI?&lt;br /&gt;
  50   65    #  EC 0xC2    ?       n/a   Charging circuitry?&lt;br /&gt;
  47   60    #  HDAPS      HDAPS   HDAPS HDAPS direct access (under center left of miniPCI)&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
LEVELS=(    0      2      4      7)  # Fan speed levels&lt;br /&gt;
ANTIPULSE=( 0      1      0      0)  # Prevent fan pulsing noise at this level&lt;br /&gt;
                                     # (reduces frequency of fan RPM updates)&lt;br /&gt;
&lt;br /&gt;
OFF_THRESH_DELTA=2 # when gets this much cooler than 'min' above, may turn off fan&lt;br /&gt;
MIN_THRESH_SHIFT=0 # increase min thresholds by this much&lt;br /&gt;
MIN_WAIT=120 # minimum time (seconds) to spend in a given level before stepping down&lt;br /&gt;
&lt;br /&gt;
IBM_ACPI=/proc/acpi/ibm&lt;br /&gt;
HDAPS_TEMP=/sys/bus/platform/drivers/hdaps/hdaps/temp1&lt;br /&gt;
LOGGER=/usr/bin/logger &lt;br /&gt;
INTERVAL=3&lt;br /&gt;
SETTLE_TIME=6&lt;br /&gt;
RESETTLE_TIME=300&lt;br /&gt;
&lt;br /&gt;
PID_FILE=/var/run/tp-fancontrol.pid&lt;br /&gt;
VERBOSE=true&lt;br /&gt;
DRY_RUN=false&lt;br /&gt;
DAEMONIZE=false&lt;br /&gt;
AM_DAEMON=false&lt;br /&gt;
KILL_DAEMON=false&lt;br /&gt;
SYSLOG=false&lt;br /&gt;
&lt;br /&gt;
usage() {&lt;br /&gt;
    echo &amp;quot;&lt;br /&gt;
Usage: $0 [OPTION]...&lt;br /&gt;
&lt;br /&gt;
Available options:&lt;br /&gt;
   -s N   shift up temperature thresholds by N degrees&lt;br /&gt;
          (positive for quieter, negative for cooler)&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 daemon (ignores all but -p)&lt;br /&gt;
   -p     pid file location for daemon mode, default: $PID_FILE&lt;br /&gt;
&amp;quot;&lt;br /&gt;
    exit 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
while getopts 's:qtdlp:kh' OPT; do&lt;br /&gt;
    case &amp;quot;$OPT&amp;quot; in&lt;br /&gt;
        s) # shift thresholds&lt;br /&gt;
            MIN_THRESH_SHIFT=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        t) # test mode&lt;br /&gt;
            DRY_RUN=true&lt;br /&gt;
            ;;&lt;br /&gt;
        q) # quiet mode&lt;br /&gt;
            VERBOSE=false&lt;br /&gt;
            ;;&lt;br /&gt;
        d) # go into background and daemonize&lt;br /&gt;
            DAEMONIZE=true&lt;br /&gt;
            ;;&lt;br /&gt;
        l) # log to syslog&lt;br /&gt;
            SYSLOG=true&lt;br /&gt;
            ;;&lt;br /&gt;
        p) # different pidfile&lt;br /&gt;
            PID_FILE=&amp;quot;$OPTARG&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        k) # kill daemon&lt;br /&gt;
            KILL_DAEMON=true&lt;br /&gt;
            ;;&lt;br /&gt;
        h) # short help&lt;br /&gt;
            usage&lt;br /&gt;
            ;;&lt;br /&gt;
        \?) # error&lt;br /&gt;
            usage&lt;br /&gt;
            ;;&lt;br /&gt;
    esac&lt;br /&gt;
done&lt;br /&gt;
[ $OPTIND -gt $# ] || usage  # no non-option args&lt;br /&gt;
&lt;br /&gt;
# no logger found, no syslog capabilities&lt;br /&gt;
$SYSLOG &amp;amp;&amp;amp; [ ! -x $LOGGER ] &amp;amp;&amp;amp; SYSLOG=false&lt;br /&gt;
&lt;br /&gt;
if $DRY_RUN; then&lt;br /&gt;
    echo &amp;quot;$0: Dry run, will not change fan state.&amp;quot;&lt;br /&gt;
    VERBOSE=true&lt;br /&gt;
    DAEMONIZE=false&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
thermometer() { # output list of temperatures&lt;br /&gt;
    # Base temperatures from ibm-acpi:&lt;br /&gt;
    [ -r $IBM_ACPI/thermal ] || { echo &amp;quot;$0: Cannot read $IBM_ACPI/thermal&amp;quot; 2&amp;gt;&amp;amp;1 ; exit 1; }&lt;br /&gt;
    read X Y &amp;lt; $IBM_ACPI/thermal&lt;br /&gt;
    [ &amp;quot;$X&amp;quot; == &amp;quot;temperatures:&amp;quot; ] || { echo &amp;quot;$0: Bad temperatures: $X $Y&amp;quot; &amp;gt;&amp;amp;2;  exit 1; }&lt;br /&gt;
    echo -n &amp;quot;$Y &amp;quot;;&lt;br /&gt;
    # Extended temperatures at EC offsets 0xC0 to 0xC2:&lt;br /&gt;
    [ -r $IBM_ACPI/ecdump ] || { echo &amp;quot;$0: Cannot read $IBM_ACPI/ecdump&amp;quot; 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
    perl -e 'm/^EC 0xc0: .(..) .(..) .(..) / and print hex($1).&amp;quot; &amp;quot;.hex($2).&amp;quot; &amp;quot;.hex($3).&amp;quot; &amp;quot; and exit 0 while &amp;lt;&amp;gt;; exit 1' &amp;lt; $IBM_ACPI/ecdump&lt;br /&gt;
    # HDAPS temperature (optional):&lt;br /&gt;
    [ -r $HDAPS_TEMP ] &amp;amp;&amp;amp; echo -n &amp;quot;`cat $HDAPS_TEMP` &amp;quot;&lt;br /&gt;
    return 0&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
speedometer() { # output fan speed RPM&lt;br /&gt;
    sed -n 's/^speed:[ \t]*//p' $IBM_ACPI/fan&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
setlevel() { # set fan speed level&lt;br /&gt;
    $DRY_RUN || echo 0x2F $1 &amp;gt; $IBM_ACPI/ecdump&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
getlevel() { # get fan speed level&lt;br /&gt;
    perl -e 'm/^EC 0x20: .* (..)$/ and print $1 and exit 0 while &amp;lt;&amp;gt;; exit 1' &amp;lt; $IBM_ACPI/ecdump&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cleanup() { # clean up after work&lt;br /&gt;
    $AM_DAEMON &amp;amp;&amp;amp; rm -f &amp;quot;$PID_FILE&amp;quot; 2&amp;gt; /dev/null&lt;br /&gt;
    $SYSLOG &amp;amp;&amp;amp; $LOGGER -t &amp;quot;`basename $0`[$$]&amp;quot; \&lt;br /&gt;
               &amp;quot;Shutting down, switching to automatic fan control&amp;quot;&lt;br /&gt;
    $DRY_RUN || echo enable &amp;gt; $IBM_ACPI/fan&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
floor_div() {&lt;br /&gt;
    echo $(( (($1)+1000*($2))/($2) - 1000 ))&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
control_fan() {&lt;br /&gt;
    # Enable the fan in default mode if anything goes wrong:&lt;br /&gt;
    set -e -E -u&lt;br /&gt;
    trap &amp;quot;cleanup; exit 2&amp;quot; HUP INT ABRT QUIT SEGV TERM&lt;br /&gt;
    trap &amp;quot;cleanup&amp;quot; EXIT&lt;br /&gt;
&lt;br /&gt;
    IDX=0&lt;br /&gt;
    START_TIME=0&lt;br /&gt;
    MAX_IDX=$(( ${#LEVELS[@]} - 1 ))&lt;br /&gt;
    SETTLE_LEFT=0&lt;br /&gt;
    RESETTLE_LEFT=0&lt;br /&gt;
    FIRST=true&lt;br /&gt;
    $SYSLOG &amp;amp;&amp;amp; $LOGGER -t &amp;quot;`basename $0`[$$]&amp;quot; &amp;quot;Starting dynamic fan control&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Control loop:&lt;br /&gt;
    while true; do&lt;br /&gt;
        TEMPS=`thermometer`&lt;br /&gt;
        $VERBOSE &amp;amp;&amp;amp; SPEED=`speedometer`&lt;br /&gt;
        $VERBOSE &amp;amp;&amp;amp; ECLEVEL=`getlevel`&lt;br /&gt;
        NOW=`date +%s`&lt;br /&gt;
&lt;br /&gt;
        # Calculate new level index by placing temperatures into Z-regions:&lt;br /&gt;
        # Z &amp;gt;= 2*I means &amp;quot;must be at index I or higher&amp;quot;&lt;br /&gt;
        # Z  = 2*I+1 is hysteresis: &amp;quot;don't step down if currently at I+1&amp;quot;&lt;br /&gt;
        # hence the Z-regions are, for d=(MAX-MIN)/(2*MAX_IDX-1) :&lt;br /&gt;
        #   Z=0:{-infty..MIN-d) Z=1:{MIN-d..MIN) Z=2:{MIN..MIN+d} Z=3:{MIN+d..MIN+2d} ... Z=2*MAX_IDX:{MAX-d, MAX}&lt;br /&gt;
&lt;br /&gt;
        MAX_Z=$(( IDX&amp;gt;0 ? ( NOW&amp;gt;START_TIME+MIN_WAIT ? 2*(IDX-1) : 2*IDX ) : 0 ))&lt;br /&gt;
        SENSOR=0&lt;br /&gt;
        Z_STR=&amp;quot;$MAX_Z+&amp;quot;&lt;br /&gt;
        TEMP_STR=&amp;quot;&amp;quot;;&lt;br /&gt;
        for TEMP in $TEMPS; do&lt;br /&gt;
            [ $((2*SENSOR+2)) -le ${#THRESHOLDS[@]} ] ||&lt;br /&gt;
                { echo &amp;quot;Too many sensors, not enough values in THRESHOLDS&amp;quot; 2&amp;gt;&amp;amp;1; exit 1; }&lt;br /&gt;
            if [ $TEMP == -128 ]; then&lt;br /&gt;
                Z='_'; TEMP='_' # inactive sensor&lt;br /&gt;
            else&lt;br /&gt;
                MIN=$((THRESHOLDS[SENSOR*2] + MIN_THRESH_SHIFT));&lt;br /&gt;
                MAX=$((THRESHOLDS[SENSOR*2+1]))&lt;br /&gt;
                if (( TEMP &amp;lt; MIN - OFF_THRESH_DELTA )); then&lt;br /&gt;
                    Z=0&lt;br /&gt;
                else&lt;br /&gt;
                    Z=$(( `floor_div $(( (TEMP-MIN)*(2*MAX_IDX-2) )) $((MAX-MIN))` + 2 ))&lt;br /&gt;
                fi&lt;br /&gt;
                [ $MAX_Z -gt $Z ] || MAX_Z=$Z&lt;br /&gt;
            fi&lt;br /&gt;
            Z_STR=&amp;quot;${Z_STR}${Z}&amp;quot;&lt;br /&gt;
            TEMP_STR=&amp;quot;${TEMP_STR}${TEMP} &amp;quot;&lt;br /&gt;
            (( ++SENSOR ))&lt;br /&gt;
        done&lt;br /&gt;
        [ $SENSOR -gt 0 ] || { echo &amp;quot;No temperatures read&amp;quot; &amp;gt;&amp;amp;2; exit 1; }&lt;br /&gt;
&lt;br /&gt;
        (( (MAX_Z == 2*IDX-1) &amp;amp;&amp;amp; ++MAX_Z )) # hysteresis&lt;br /&gt;
        NEW_IDX=$(( MAX_Z/2 ))&lt;br /&gt;
        [ $NEW_IDX -le $MAX_IDX ] || NEW_IDX=$MAX_IDX&lt;br /&gt;
&lt;br /&gt;
        # Transition&lt;br /&gt;
        $FIRST &amp;amp;&amp;amp; OLDLEVEL='?' || OLDLEVEL=${LEVELS[$IDX]}&lt;br /&gt;
        NEWLEVEL=${LEVELS[$NEW_IDX]}&lt;br /&gt;
        $VERBOSE &amp;amp;&amp;amp; echo &amp;quot;L=$OLDLEVEL-&amp;gt;$NEWLEVEL EC=$ECLEVEL RPM=`printf %4s $SPEED` T=($TEMP_STR) Z=$Z_STR&amp;quot;&lt;br /&gt;
        if [ $OLDLEVEL != $NEWLEVEL ]; then&lt;br /&gt;
            START_TIME=$NOW&lt;br /&gt;
            $SYSLOG &amp;amp;&amp;amp; $LOGGER -t &amp;quot;`basename $0`[$$]&amp;quot; &amp;quot;Changing fan level: $OLDLEVEL-&amp;gt;$NEWLEVEL&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        setlevel $NEWLEVEL&lt;br /&gt;
&lt;br /&gt;
        sleep $INTERVAL&lt;br /&gt;
&lt;br /&gt;
        # If needed, apply anti-pulsing hack after a settle-down period (and occasionally re-settle):&lt;br /&gt;
        if [ ${ANTIPULSE[${NEW_IDX}]} == 1 ]; then &lt;br /&gt;
            if [ $NEWLEVEL != $OLDLEVEL -o $RESETTLE_LEFT -le 0 ]; then # start settling?&lt;br /&gt;
                SETTLE_LEFT=$SETTLE_TIME&lt;br /&gt;
                RESETTLE_LEFT=$RESETTLE_TIME&lt;br /&gt;
            fi&lt;br /&gt;
            if [ $SETTLE_LEFT -ge 0 ]; then&lt;br /&gt;
                SETTLE_LEFT=$((SETTLE_LEFT-INTERVAL))&lt;br /&gt;
            else&lt;br /&gt;
                setlevel 0x40 # disengage briefly to fool embedded controller&lt;br /&gt;
                sleep 0.5&lt;br /&gt;
                RESETTLE_LEFT=$((RESETTLE_LEFT-INTERVAL))&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        IDX=$NEW_IDX&lt;br /&gt;
        FIRST=false&lt;br /&gt;
    done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if $KILL_DAEMON ; then &lt;br /&gt;
    if [ -f &amp;quot;$PID_FILE&amp;quot; ]; then&lt;br /&gt;
	set -e&lt;br /&gt;
	DPID=&amp;quot;`cat \&amp;quot;$PID_FILE\&amp;quot;`&amp;quot; &lt;br /&gt;
        kill &amp;quot;$DPID&amp;quot;&lt;br /&gt;
	rm &amp;quot;$PID_FILE&amp;quot;&lt;br /&gt;
	$VERBOSE &amp;amp;&amp;amp; echo &amp;quot;Killed process $DPID&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        $VERBOSE &amp;amp;&amp;amp; echo &amp;quot;Daemon not running.&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    fi&lt;br /&gt;
elif $DAEMONIZE ; then&lt;br /&gt;
    if [ -e &amp;quot;$PID_FILE&amp;quot; ]; then&lt;br /&gt;
        echo &amp;quot;$0: File $PID_FILE already exists, refusing to run.&amp;quot;&lt;br /&gt;
        exit 1&lt;br /&gt;
    else&lt;br /&gt;
	AM_DAEMON=true VERBOSE=false control_fan 0&amp;lt;&amp;amp;- 1&amp;gt;&amp;amp;- 2&amp;gt;&amp;amp;- &amp;amp;&lt;br /&gt;
        echo $! &amp;gt; &amp;quot;$PID_FILE&amp;quot;&lt;br /&gt;
        exit 0&lt;br /&gt;
    fi&lt;br /&gt;
else&lt;br /&gt;
    [ -e &amp;quot;$PID_FILE&amp;quot; ] &amp;amp;&amp;amp; echo &amp;quot;WARNING: daemon already running&amp;quot;&lt;br /&gt;
    control_fan&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The authors of the script ([[User:Thinker|Thinker]] and [[User:Spiney|Spiney]]) disclaim all warranty for this script, and makes it available the terms of the [http://www.gnu.org/copyleft/gpl.html GPL] version 2 or later, or at your option, the [http://www.gnu.org/copyleft/fdl.html GFDL].&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (requires kernel patch)===&lt;br /&gt;
&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# This script dynamically controls fan speed on some ThinkPad models&lt;br /&gt;
# according to user-defined temperature thresholds.  It implements its&lt;br /&gt;
# own decision algorithm, overriding the ThinkPad embedded&lt;br /&gt;
# controller. It also implements a workaround for the fan noise pulse&lt;br /&gt;
# experienced every few seconds on some ThinkPads.&lt;br /&gt;
#&lt;br /&gt;
# The script requires the ibm_acpi patch at &lt;br /&gt;
# http://thinkwiki.org/wiki/Patch_for_controlling_fan_speed&lt;br /&gt;
#&lt;br /&gt;
# WARNING: This script relies on undocumented hardware features and&lt;br /&gt;
# overrides nominal hardware behavior. It may thus cause arbitrary&lt;br /&gt;
# damage to your laptop or data. Watch your temperatures!&lt;br /&gt;
#&lt;br /&gt;
# This file is placed in the public domain and may be freely distributed.&lt;br /&gt;
&lt;br /&gt;
LEVELS=(    0      2      4      7)  # Fan speed levels&lt;br /&gt;
UP_TEMPS=(      52     60     68  )  # Speed increase trip points&lt;br /&gt;
DOWN_TEMPS=(  48     56     64    )  # Speed decrease trip points&lt;br /&gt;
&lt;br /&gt;
ANTIPULSE=( 0      1      0      0)  # Prevent fan pulsing noise at this level&lt;br /&gt;
                                     #   (this also prevents fan speed updates)&lt;br /&gt;
&lt;br /&gt;
IBM_ACPI=/proc/acpi/ibm&lt;br /&gt;
FAN=$IBM_ACPI/fan&lt;br /&gt;
INTERVAL=3&lt;br /&gt;
VERBOSE=true&lt;br /&gt;
DRY_RUN=false&lt;br /&gt;
&lt;br /&gt;
[[ &amp;quot;$1&amp;quot; == &amp;quot;-t&amp;quot; ]] &amp;amp;&amp;amp; { DRY_RUN=true; echo &amp;quot;$0: Dry run, will not change fan state.&amp;quot;; }&lt;br /&gt;
&lt;br /&gt;
# Enable the fan in default mode if anything goes wrong:&lt;br /&gt;
set -e -E -u&lt;br /&gt;
$DRY_RUN || trap &amp;quot;echo enable &amp;gt; $FAN; exit 0&amp;quot; EXIT HUP INT ABRT QUIT SEGV TERM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
thermometer() { # output list of temperatures&lt;br /&gt;
    read X Y &amp;lt; $IBM_ACPI/thermal&lt;br /&gt;
    [[ &amp;quot;$X&amp;quot; == &amp;quot;temperatures:&amp;quot; ]] || { &lt;br /&gt;
	echo &amp;quot;$0: Bad temperatures: $X $Y&amp;quot; &amp;gt;&amp;amp;2 &lt;br /&gt;
	exit 1&lt;br /&gt;
    }&lt;br /&gt;
    echo &amp;quot;$Y&amp;quot;; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
speedometer() { # output fan speed&lt;br /&gt;
    cat $FAN | sed '/^speed/!d; s/speed:[ \t]*//'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
IDX=0&lt;br /&gt;
MAX_IDX=$(( ${#LEVELS[@]} - 1 ))&lt;br /&gt;
SETTLE=0&lt;br /&gt;
&lt;br /&gt;
while true; do&lt;br /&gt;
    TEMPS=`thermometer`&lt;br /&gt;
    $VERBOSE &amp;amp;&amp;amp; SPEED=`speedometer`&lt;br /&gt;
&lt;br /&gt;
    # Calculate new level&lt;br /&gt;
    NEWIDX=$IDX&lt;br /&gt;
    DOWN=$(( IDX &amp;gt; 0 ))&lt;br /&gt;
    for TEMP in $TEMPS; do&lt;br /&gt;
        # Increase speed as much as needed&lt;br /&gt;
        while [[ $NEWIDX -lt $MAX_IDX ]] &amp;amp;&amp;amp; &lt;br /&gt;
              [[ $TEMP -ge ${UP_TEMPS[$NEWIDX]} ]]; do&lt;br /&gt;
            (( NEWIDX ++ ))&lt;br /&gt;
            DOWN=0&lt;br /&gt;
        done&lt;br /&gt;
        # Allow decrease (by one index)?&lt;br /&gt;
        if [[ $DOWN == 1 ]] &amp;amp;&amp;amp; &lt;br /&gt;
           [[ $TEMP -gt ${DOWN_TEMPS[$(( IDX - 1 ))]} ]]; then&lt;br /&gt;
            DOWN=0&lt;br /&gt;
        fi&lt;br /&gt;
    done&lt;br /&gt;
    if [[ $DOWN == 1 ]]; then&lt;br /&gt;
        NEWIDX=$(( IDX - 1 ))&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    # Transition&lt;br /&gt;
    OLDLEVEL=${LEVELS[$IDX]}&lt;br /&gt;
    NEWLEVEL=${LEVELS[$NEWIDX]}&lt;br /&gt;
    $VERBOSE &amp;amp;&amp;amp; echo &amp;quot;tpfan: Temps: $TEMPS   Fan: $SPEED   Level: $OLDLEVEL-&amp;gt;$NEWLEVEL&amp;quot;&lt;br /&gt;
    $DRY_RUN || echo level $NEWLEVEL &amp;gt; $FAN&lt;br /&gt;
&lt;br /&gt;
    sleep $INTERVAL&lt;br /&gt;
&lt;br /&gt;
    # If needed, apply anti-pulsing hack after a settle-down period:&lt;br /&gt;
    if [[ ${ANTIPULSE[${NEWIDX}]} == 1 ]]; then&lt;br /&gt;
	if [[ $NEWLEVEL == $OLDLEVEL ]]; then&lt;br /&gt;
	    if [[ $SETTLE -ge 0 ]]; then&lt;br /&gt;
		(( SETTLE -= INTERVAL ))&lt;br /&gt;
	    else&lt;br /&gt;
		$DRY_RUN || echo level disengaged &amp;gt;&amp;gt; $FAN&lt;br /&gt;
		sleep 0.5&lt;br /&gt;
	    fi&lt;br /&gt;
	else&lt;br /&gt;
	    SETTLE=6&lt;br /&gt;
	fi&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    IDX=$NEWIDX&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[User:Thinker|author]] of the script disclaims all warranty for this script, and releases it to the public domain (meaning you may use it and further distribute it under any terms you wish, including incorporating it into other software).&lt;br /&gt;
&lt;br /&gt;
==Init scripts==&lt;br /&gt;
&lt;br /&gt;
===Init script example===&lt;br /&gt;
&lt;br /&gt;
 #! /bin/sh&lt;br /&gt;
 &lt;br /&gt;
 N=/etc/init.d/fan&lt;br /&gt;
 &lt;br /&gt;
 set -e&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        # make sure privileges don't persist across reboots&lt;br /&gt;
        if [ -d /var/run/fan ] &amp;amp;&amp;amp; [ &amp;quot;x`ls /var/run/fan`&amp;quot; != x ]&lt;br /&gt;
        then&lt;br /&gt;
                touch -t 198501010000 /var/run/fan/*&lt;br /&gt;
        fi&lt;br /&gt;
        fan.sh &amp;amp;    # Script from above&lt;br /&gt;
        ;;&lt;br /&gt;
  stop|reload|restart|force-reload)&lt;br /&gt;
        killall fan.sh&lt;br /&gt;
        echo enable &amp;gt; /proc/acpi/ibm/fan&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo &amp;quot;Usage: $N {start|stop|restart|force-reload}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
        exit 1&lt;br /&gt;
        ;;&lt;br /&gt;
 esac&lt;br /&gt;
 &lt;br /&gt;
 exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Init script example for gentoo===&lt;br /&gt;
Assume one of the above control scripts is /usr/sbin/ibm-fancontrold, for gentoo use the following init script in /etc/init.d/ibm-fancontrol.&lt;br /&gt;
Copy the script to /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;
&lt;br /&gt;
 #!/sbin/runscript&lt;br /&gt;
 # 2005 Gilbert Tiefengruber&lt;br /&gt;
 # Distributed under the terms of the GNU General Public License v2 &lt;br /&gt;
 # IBM Fancontrol init script for IBM Thinkpad laptops (tested with R50)&lt;br /&gt;
 # This init script was written for gentoo 2005.1, kernel 2.6.12&lt;br /&gt;
 # You need the ibm_acpi kernel module version 0.11 or greater&lt;br /&gt;
 # load the module with experimental=1 to enable the fan controls&lt;br /&gt;
 &lt;br /&gt;
 depend() {&lt;br /&gt;
         need localmount&lt;br /&gt;
 }&lt;br /&gt;
 checkconfig() {&lt;br /&gt;
         if [ ! -e /proc/acpi/ibm/fan ]; then&lt;br /&gt;
                 eerror &amp;quot;The ibm_acpi module must be loaded with (experimental=1)&amp;quot;&lt;br /&gt;
                 return 1&lt;br /&gt;
         fi&lt;br /&gt;
 } &lt;br /&gt;
 start() {&lt;br /&gt;
         checkconfig || return 1&lt;br /&gt;
         ebegin &amp;quot;Starting ibm-fancontrold&amp;quot;&lt;br /&gt;
         start-stop-daemon --quiet -p /var/run/ibm-fancontrold.pid -m -b --start -a /usr/sbin/ibm-fancontrold&lt;br /&gt;
         eend ${?}&lt;br /&gt;
 } &lt;br /&gt;
 stop() {&lt;br /&gt;
         ebegin &amp;quot;Stopping ibm-fancontrold&amp;quot;&lt;br /&gt;
         start-stop-daemon --stop --quiet -p /var/run/ibm-fancontrold.pid&lt;br /&gt;
         eend ${?}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Other==&lt;br /&gt;
&lt;br /&gt;
===fanctrld===&lt;br /&gt;
&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;
==See also==&lt;br /&gt;
&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>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Help:Reading&amp;diff=12731</id>
		<title>Help:Reading</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Help:Reading&amp;diff=12731"/>
		<updated>2005-11-30T16:01:17Z</updated>

		<summary type="html">&lt;p&gt;Micampe: reverted spam&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 is supposed to guide you in using [[ThinkWiki]]. It offers you strategies on how to find information here in case you need help about a specific topic or just want to know something about your ThinkPad or ThinkPads in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Generic starting points==&lt;br /&gt;
There are five generic starting points that can help you whatever your mission might be:&lt;br /&gt;
*You can start browsing on the [[ThinkWiki|ThinkWiki start page]]. We will try to keep all ThinkWiki pages accessable in a logical structure that branches out from there.&lt;br /&gt;
*You can always use the Search field on the left, enter some word designating what you are looking for, press the search button and hope that one of the search results will be helpful.&lt;br /&gt;
*From our [[:Category:Models|ThinkPad models overview]] you can pick your particular model page to get a list with all articles concerning that model.&lt;br /&gt;
*And on the [[:Category:Distributions|distributions]] page you can choose your distribution and find all pages containing  information related to that distro.&lt;br /&gt;
*You can try browsing the [[:Category:ThinkWiki|Categories]].&lt;br /&gt;
&lt;br /&gt;
==Finding help for a specific problem==&lt;br /&gt;
ThinkWiki most likely doesn't provide a single page covering exactly your problem. It rather offers you generic starting points where you can start your hunt for information that may give you clues to a solution. The most typical starting points for your solution hunt are:&lt;br /&gt;
*The [[Known Problems]] page list pages covering specific problems people have run into with partial or complete solutions to them.&lt;br /&gt;
*If you look for information on how to install a specific distro on a specific model, look at the [[Installation]] page.&lt;br /&gt;
*In case you have problems installing or configuring a special driver, look at the [[HOWTOs - Driver Installation|Driver installation HOWTO listing]].&lt;br /&gt;
*In case you need help or information about the preloaded system, backing it up or recovering it, look at the [[How to recover the preloaded OS|Preload Recovery page]].&lt;br /&gt;
*If you run into Power Management related problems, the [[How to make use of Power Management features|Power Management HOWTO]] should help.&lt;br /&gt;
There are several more HOWTO pages accessible from the [[ThinkWiki|ThinkWiki main page]]&lt;br /&gt;
&lt;br /&gt;
==Finding information about a specific model==&lt;br /&gt;
There are two places to start for that:&lt;br /&gt;
*The [[:Category:Models|ThinkPad models overview]] page. It contains a list of all models known to the editors of ThinkWiki, each of them containing general information about that model as well as a list of all articles with information related to it. I.e. if you want to know about the ThinkPad X22, just click on the [[:Category:X22|X22]] page and you'll find all we know about it.&lt;br /&gt;
*The second place to look at is the [[Hardware Specifications]] page. Here you will find a list of model and type numbers, ordered by model. Just click on a type number and you'll find detailed specifications of exactly that type. In case your exact model-type number isn't there, look at one of the IBM provided PDF documents linked from that page.&lt;br /&gt;
&lt;br /&gt;
==Finding information about ThinkPads in general==&lt;br /&gt;
If you are planning to buy a notebook and want to start with an overall impression of ThinkPads, try the following pages:&lt;br /&gt;
*The [[ThinkPad History]] gives a historic overview about the appearance of ThinkPads in chronological order, accompanied with some information about their specialties and features.&lt;br /&gt;
*The [[Thinkpad Technologies]] page lists several of the technologies found in various ThinkPads. Each single Technology page in turn holds a list of ThinkPads this featuring this technology.&lt;br /&gt;
*Look at the [[Components]] or [[:Category:Components|Components Category]] pages to find out about hardware used  in ThinkPad computers.&lt;br /&gt;
&lt;br /&gt;
==Finding information about your specific distribution==&lt;br /&gt;
As said above, the [[:Category:Distributions|distributions]] page holds a list of distributions you can find information about on ThinkWiki. Each of the single distribution pages listed there in turn contain a list of all articles with relevant information for that distribution.&lt;br /&gt;
&lt;br /&gt;
==If you don't find what you are looking for==&lt;br /&gt;
Well, go figure - and let us know your findings here. ;-) Ok, more seriously, the [[Links]], [[Mailinglists]] and [[IRC]] pages list other sources of useful information. Also pay attention to the &amp;quot;External Sources&amp;quot; and &amp;quot;Related Links&amp;quot; sections found on almost every page. They usually contain a list of useful links to pages outside ThinkWiki. And of course, [http://www.google.org Google] is always your friend.&lt;br /&gt;
&lt;br /&gt;
Good luck.&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X300&amp;diff=13370</id>
		<title>ATI Mobility Radeon X300</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X300&amp;diff=13370"/>
		<updated>2005-11-30T11:19:10Z</updated>

		<summary type="html">&lt;p&gt;Micampe: fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== ATI Mobility Radeon X300 ===&lt;br /&gt;
This is a ATI video adapter&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Chipset: ATI M22&lt;br /&gt;
* PCI ID: 1002:5460&lt;br /&gt;
* PCI Express x16&lt;br /&gt;
* 32 or 64MB GDDR1 on-chip video memory&lt;br /&gt;
* &amp;quot;HyperMemory&amp;quot;: can use system memory for graphics processing&lt;br /&gt;
* &amp;quot;PowerPlay 4.0&amp;quot; technology for dynamic engine clock, memory clock and core voltage, refresh rate reduction and thermal status reporting.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [http://www.ati.com/products/radeonx300/specs.html specifications] from ATI, as well as the [http://www.ati.com/products/embedded/mobilityradeonx300/M22-CSP64_Product_Snapshot.pdf &amp;quot;snapshot&amp;quot; data sheet] (referes to the 32MB on-chip, 128MB &amp;quot;HyperMemory&amp;quot; version).&lt;br /&gt;
&lt;br /&gt;
=== Linux driver ===&lt;br /&gt;
Use Driver &amp;quot;radeon&amp;quot; in the xorg.conf file - it works at least for xorg 6.8.2, maybe older versions too. Currently (as of xorg 6.8.2) this will only give you 2D-acceleration, though. To enable 3D acceleration as well you need to use the binary ATI driver [[fglrx]].&lt;br /&gt;
&lt;br /&gt;
There is also an open source Radeon [http://r300.sf.net/ driver] with 3D acceleration support (merged into [http://dri.freedesktop.org here] recently), but it's still highly experimental and does not support all features.&lt;br /&gt;
&lt;br /&gt;
==== ThinkPad LCD ====&lt;br /&gt;
Display on the internal LCD works as long as you set the monitor settings correct.&lt;br /&gt;
&lt;br /&gt;
==== External VGA port ====&lt;br /&gt;
There are known problems. Both the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; and [[fglrx]] drivers turn off the switching between internal and external port.&lt;br /&gt;
&lt;br /&gt;
=====With the &amp;lt;tt&amp;gt;vesa&amp;lt;/tt&amp;gt; driver=====&lt;br /&gt;
Using the &amp;quot;vesa&amp;quot; driver built into X.org, mode switching modes. However, this loses acceleration and some capabilities.&lt;br /&gt;
&lt;br /&gt;
=====With the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; drive=====&lt;br /&gt;
On-the-fly swiching doesn't work. To activate both ports in clone mode with a reasonable CRT refresh rate, use the following in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
        Identifier  &amp;quot;Videocard0&amp;quot;&lt;br /&gt;
        VendorName  &amp;quot;Videocard vendor&amp;quot;&lt;br /&gt;
        BoardName   &amp;quot;ATI Radeon Mobility X300&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        Driver      &amp;quot;radeon&amp;quot;&lt;br /&gt;
        Option      &amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
        Option      &amp;quot;MergedFB&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
        Option      &amp;quot;MonitorLayout&amp;quot; &amp;quot;LVDS, CRT&amp;quot;&lt;br /&gt;
        Option      &amp;quot;CRT2Hsync&amp;quot; &amp;quot;50-75&amp;quot;&lt;br /&gt;
        Option      &amp;quot;CRT2VRefresh&amp;quot; &amp;quot;50-82&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
Note that without the &amp;lt;tt&amp;gt;MonitorLayout&amp;lt;/tt&amp;gt; option, if the external monitor is connected when X starts then the LCD will be deactivated and you will need to restart X. &lt;br /&gt;
&lt;br /&gt;
(Tested wth Fedora Core 4 on ThinkPad {{T43}}).&lt;br /&gt;
&lt;br /&gt;
See also the related discussion about [[Additional options for the radeon driver]].&lt;br /&gt;
&lt;br /&gt;
=====With the [[fglrx]] driver=====&lt;br /&gt;
On-the-fly switching doesn't work either. To use both ports, either have the monitor connected during X startup, or force activation of both ports by adding&lt;br /&gt;
 Option  &amp;quot;ForceMonitors&amp;quot; &amp;quot;lvds,crt1&amp;quot;&lt;br /&gt;
to the &amp;lt;tt&amp;gt;Device&amp;lt;/tt&amp;gt; section in your {{path|/etc/X11/xorg.conf}}. Powering the CRT port consumes 400-500mW, regardless of whether a CRT is attached.&lt;br /&gt;
&lt;br /&gt;
==== S-Video port (TV-out) ====&lt;br /&gt;
&lt;br /&gt;
Works with the proprietary [[fglrx]] driver (as of version 8.19.10). To activate, add&lt;br /&gt;
 Option  &amp;quot;ForceMonitors&amp;quot; &amp;quot;lvds,tv&amp;quot;&lt;br /&gt;
to the &amp;lt;tt&amp;gt;Device&amp;lt;/tt&amp;gt; section in your {{path|/etc/X11/xorg.conf}} and restart X.&lt;br /&gt;
&lt;br /&gt;
==== DVI port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
OpenGL 3D acceleration is proided by the proprietary [[fglrx]] driver (when DRI is enabled). Note that performance is affected by the power saving mode.&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel Framebuffer driver ===&lt;br /&gt;
&lt;br /&gt;
radeonfb might cause problems with hardware acceleration under X on some systems, vesafb and vesafb-tng on the other hand has been reported to work just fine.&lt;br /&gt;
&lt;br /&gt;
=== Clock rates, voltage and power===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+ Clock rates, voltages and power {{footnote|1}}&lt;br /&gt;
! Mode !! core freq !! memory freq !! voltage !! idle !! 3DMarks (Windows, 1600x1200, LCD only)&lt;br /&gt;
|-&lt;br /&gt;
| Performance || 300 || 230 MHz || 1.15V || 2.98 W || 8.28 W&lt;br /&gt;
|-&lt;br /&gt;
| Balanced || 183 || 210 MHz || 1.00V || 1.71 W || 3.88 W&lt;br /&gt;
|-&lt;br /&gt;
| Battery || 120 || 105 MHz || 1.00V || 1.61 W || 2.74 W&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+ ATI drivers for Windows {{footnote|2}} and [[fglrx]]&lt;br /&gt;
! Mode !! core freq !! memory freq&lt;br /&gt;
|-&lt;br /&gt;
| Performance || 297.00 || 229.50&lt;br /&gt;
|-&lt;br /&gt;
| Balanced || 209.25 || 182.25&lt;br /&gt;
|-&lt;br /&gt;
| Battery || 104.63 || 121.50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Experimentally, the difference between the Performance and Battery settings under Linux with the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver and &amp;lt;tt&amp;gt;DynamicClocks&amp;lt;/tt&amp;gt; enabled is roughly 0.3W and 3-4 degrees in GPU temperature on a ThinkPad {{T43}}. Further frequency reduction leads to display flickering or corruption.&lt;br /&gt;
&lt;br /&gt;
See [[How to make use of Graphics Chips Power Management features]] for details on how to control this using [[Rovclock]], [[How to make use of Graphics Chips Power Management features|&amp;lt;tt&amp;gt;DynamicClocks&amp;lt;/tt&amp;gt; option to the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver]] and or the [[fglrx]] driver.&lt;br /&gt;
&lt;br /&gt;
Presently the lowest idle-mode power consumption is achieved using the proprietary [[fglrx]] driver and &lt;br /&gt;
 # aticonfig  --set-powerstate=1 --effective=now&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{R52}}&lt;br /&gt;
* {{T43}}&lt;br /&gt;
* {{Z60m}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#according to the [http://www.ati.com/products/embedded/mobilityradeonx300/M22-CSP64_Product_Snapshot.pdf &amp;quot;Snapshot&amp;quot; data sheet] (which refers to the 32MB on-chip, 128MB &amp;quot;HyperMemory&amp;quot; version)&lt;br /&gt;
#inspected using [http://www.pbus-167.com/chc.htm Notebook Hardware Control]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X300&amp;diff=12448</id>
		<title>ATI Mobility Radeon X300</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=ATI_Mobility_Radeon_X300&amp;diff=12448"/>
		<updated>2005-11-15T21:24:22Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#F8F8FF; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
=== ATI Mobility Radeon X300 ===&lt;br /&gt;
This is a ATI video adapter&lt;br /&gt;
=== Features ===&lt;br /&gt;
* Chipset: ATI M22&lt;br /&gt;
* PCI ID: 1002:5460&lt;br /&gt;
* PCI Express x16&lt;br /&gt;
* 32 or 64MB GDDR1 on-chip video memory&lt;br /&gt;
* &amp;quot;HyperMemory&amp;quot;: can use system memory for graphics processing&lt;br /&gt;
* &amp;quot;PowerPlay 4.0&amp;quot; technology for dynamic engine cloc, memory clock and core voltage, refresh rate reduction and thermal status reporting.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|style=&amp;quot;vertical-align:top&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [http://www.ati.com/products/radeonx300/specs.html specifications] from ATI, as well as the [http://www.ati.com/products/embedded/mobilityradeonx300/M22-CSP64_Product_Snapshot.pdf &amp;quot;snapshot&amp;quot; data sheet] (referes to the 32MB on-chip, 128MB &amp;quot;HyperMemory&amp;quot; version).&lt;br /&gt;
&lt;br /&gt;
=== Linux driver ===&lt;br /&gt;
Use Driver &amp;quot;radeon&amp;quot; in the xorg.conf file - it works at least for xorg 6.8.2, maybe older versions too. Currently (as of xorg 6.8.2) this will only give you 2D-acceleration, though. To enbable 3D acceleration as well you need to use the binary ATI driver [[fglrx]].&lt;br /&gt;
&lt;br /&gt;
There is also an open source Radeon [http://r300.sf.net/ driver] with 3D acceleration support (merged into [http://dri.freedesktop.org here] recently), but it's still highly experimental and does not support all features.&lt;br /&gt;
&lt;br /&gt;
==== ThinkPad LCD ====&lt;br /&gt;
Display on the internal LCD works as long as you set the monitor settings correct.&lt;br /&gt;
&lt;br /&gt;
==== External VGA port ====&lt;br /&gt;
There are known problems. Both the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; and [[fglrx]] drivers turn off the switching between internal and external port.&lt;br /&gt;
&lt;br /&gt;
=====With the &amp;lt;tt&amp;gt;vesa&amp;lt;/tt&amp;gt; driver=====&lt;br /&gt;
Using the &amp;quot;vesa&amp;quot; driver built into X.org, mode switching modes. However, this loses acceleration and some capabilities.&lt;br /&gt;
&lt;br /&gt;
=====With the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; drive=====&lt;br /&gt;
On-the-fly swiching doesn't work. To use both ports, start X without an external monitor, and then connect the external monitor. Both displays will be active, and cannot be switched off until you exit X. Note that if the external monitor is connected when X starts, the LCD will be deactivated and you will need to restart X. To have a reasonable refresh rate on the external monitor (the default is the LCD's 50Hz), use the following in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;Device&amp;quot;&lt;br /&gt;
 	Identifier  &amp;quot;Videocard0&amp;quot;&lt;br /&gt;
 	VendorName  &amp;quot;Videocard vendor&amp;quot;&lt;br /&gt;
 	BoardName   &amp;quot;ATI Radeon Mobility X300&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 	Driver      &amp;quot;radeon&amp;quot;&lt;br /&gt;
 	Option      &amp;quot;DynamicClocks&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 	Option      &amp;quot;MergedFB&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
 	Option      &amp;quot;CRT2Hsync&amp;quot; &amp;quot;50-75&amp;quot;&lt;br /&gt;
 	Option      &amp;quot;CRT2VRefresh&amp;quot; &amp;quot;30-82&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
(Tested wth Fedora Core 4 on ThinkPad {{T43}}).&lt;br /&gt;
&lt;br /&gt;
See also the related discussion about [[Additional options for the radeon driver]].&lt;br /&gt;
&lt;br /&gt;
=====With the [[fglrx]] driver=====&lt;br /&gt;
On-the-fly switching doesn't work either. To use both ports, either have the monitor connected during X startup, or force activation of both ports by adding&lt;br /&gt;
 Option  &amp;quot;ForceMonitors&amp;quot; &amp;quot;lvds,crt1&amp;quot;&lt;br /&gt;
to the &amp;lt;tt&amp;gt;Device&amp;lt;/tt&amp;gt; section in your {{path|/etc/X11/xorg.conf}}. Powering the CRT port consumes 400-500mW, regardless of whether a CRT is attached.&lt;br /&gt;
&lt;br /&gt;
==== S-Video port (TV-out) ====&lt;br /&gt;
&lt;br /&gt;
Works with the proprietary [[fglrx]] driver (as of version 8.19.10). To activate, add&lt;br /&gt;
 Option  &amp;quot;ForceMonitors&amp;quot; &amp;quot;lvds,tv&amp;quot;&lt;br /&gt;
to the &amp;lt;tt&amp;gt;Device&amp;lt;/tt&amp;gt; section in your {{path|/etc/X11/xorg.conf}} and restart X.&lt;br /&gt;
&lt;br /&gt;
==== DVI port ====&lt;br /&gt;
??&lt;br /&gt;
&lt;br /&gt;
=== 3D acceleration ===&lt;br /&gt;
OpenGL 3D acceleration is proided by the proprietary [[fglrx]] driver. Note that the default power mode is low-performance (and high-power). To change to a faster mode, you can for example run&lt;br /&gt;
 # aticonfig  --set-powerstate=2 --effective=now&lt;br /&gt;
(see [[How to make use of Graphics Chips Power Management features]]).&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel Framebuffer driver ===&lt;br /&gt;
&lt;br /&gt;
radeonfb might cause problems with hardware acceleration under X on some systems, vesafb and vesafb-tng on the other hand has been reported to work just fine.&lt;br /&gt;
&lt;br /&gt;
=== Clock rates, voltage and power===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+ Clock rates, voltages and power {{footnote|1}}&lt;br /&gt;
! Mode !! core freq !! memory freq !! voltage !! idle !! 3DMarks (Windows, 1600x1200, LCD only)&lt;br /&gt;
|-&lt;br /&gt;
| Performance || 300 || 230 MHz || 1.15V || 2.98 W || 8.28 W&lt;br /&gt;
|-&lt;br /&gt;
| Balanced || 183 || 210 MHz || 1.00V || 1.71 W || 3.88 W&lt;br /&gt;
|-&lt;br /&gt;
| Battery || 120 || 105 MHz || 1.00V || 1.61 W || 2.74 W&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+ ATI driver for Windows {{footnote|2}}&lt;br /&gt;
! Mode !! core freq !! memory freq&lt;br /&gt;
|-&lt;br /&gt;
| Performance || 297.00 || 229.50&lt;br /&gt;
|-&lt;br /&gt;
| Balanced || 209.25 || 182.25&lt;br /&gt;
|-&lt;br /&gt;
| Battery || 104.63 || 121.50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Experimentally, the difference between the Performance and Battery settings under Linux with &amp;lt;tt&amp;gt;DynamicClocks&amp;lt;/tt&amp;gt; enabled is roughly 0.3W and 3-4 degrees in GPU temperature on a ThinkPad {{T43}}. Further frequency reduction leads to display flickering or corruption.&lt;br /&gt;
&lt;br /&gt;
Clock rates can be changed through [[Rovclock]], and are also affected by the [[How to make use of Graphics Chips Power Management features|&amp;lt;tt&amp;gt;DynamicClocks&amp;lt;/tt&amp;gt; option to the &amp;lt;tt&amp;gt;radeon&amp;lt;/tt&amp;gt; driver]].&lt;br /&gt;
&lt;br /&gt;
=== ThinkPads this chip may be found in ===&lt;br /&gt;
* {{R52}}&lt;br /&gt;
* {{T43}}&lt;br /&gt;
* {{Z60m}}&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#according to the [http://www.ati.com/products/embedded/mobilityradeonx300/M22-CSP64_Product_Snapshot.pdf &amp;quot;Snapshot&amp;quot; data sheet] (which refers to the 32MB on-chip, 128MB &amp;quot;HyperMemory&amp;quot; version)&lt;br /&gt;
#inspected using [http://www.pbus-167.com/chc.htm Notebook Hardware Control]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Fan_control_scripts&amp;diff=12380</id>
		<title>Talk:Fan control scripts</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Fan_control_scripts&amp;diff=12380"/>
		<updated>2005-11-12T07:19:06Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wyrfel, are you sure the recent (19:54, 27 Oct 2005) cosmetic change was a good idea? The extensive chunks of code make it hard to grok the structure of the article in the absense of separator lines (which &amp;quot;===&amp;quot; doesn't have). --[[User:Thinker|Thinker]] 22:10, 27 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
We can discuss this. From my point of view, the chunks of code distinguish themselves from each other quite well, because they are each in one code block.&lt;br /&gt;
&lt;br /&gt;
I do not like the &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; section level - and so far we avoided them on all pages - because&lt;br /&gt;
* it generates H1 headings, which is the same as the page heading,&lt;br /&gt;
* having more than one level with the hbars is confusing/less readable, because they are not very well distinguishable. This way i.e. the &amp;quot;Other&amp;quot; section looked like a separate empty secion.&lt;br /&gt;
&lt;br /&gt;
I think the way it's now, the separator lines make it possible to easily distinguish the different main sections, while when you have both levels with separator lines, an additional task of distinguishing H1 and H2 separators is necessary.&lt;br /&gt;
&lt;br /&gt;
However, i see your point as well and would like to hear more opinions/arguments.&lt;br /&gt;
&lt;br /&gt;
[[User:Wyrfel|Wyrfel]] 22:31, 27 Oct 2005 (CEST)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; script with fine control over fan speed (for unpatched kernels)===&lt;br /&gt;
Moved to the [[ACPI fan control script|article page]], after joint development by [[User:Spiney|Spiney]] and [[User:Thinker|Thinker]].&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
''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;
I think it'd probably be nice to have a table of the suggested values here. Those in the &amp;quot;unpatched kernels&amp;quot; script seems to work fine on my R52, but the other scripts all have different values.&lt;br /&gt;
&lt;br /&gt;
--[[User:Micampe|Micampe]] 08:19, 12 Nov 2005 (CET)&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_build_your_own_Ultrabay_drive&amp;diff=13741</id>
		<title>How to build your own Ultrabay drive</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_build_your_own_Ultrabay_drive&amp;diff=13741"/>
		<updated>2005-11-08T23:49:34Z</updated>

		<summary type="html">&lt;p&gt;Micampe: /* The Limitations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WARN|No warranty of any kind is given for the correctness of the following instructions. Following them can damage your machine. Proceed at your own risk.}}&lt;br /&gt;
{{NOTE|This article is written with UltraBay 2000 drives in mind. But should be appliable for UltraSlimBay and other kinds of UltraBay devices as well.}}&lt;br /&gt;
Optical [[UltraBay]] drives like CD-ROM and DVD drives or burners are usually a bit more expensive than their non-IBM counterparts. Additionally more modern technologies are not available for discontinued [[UltraBay]] standards. A solution to this annoyance is to take a standard slim form factor notebook drive and turn it into an UltraBay drive yourself.&lt;br /&gt;
&lt;br /&gt;
==The Basics==&lt;br /&gt;
The &amp;quot;big secret&amp;quot; about UltraBay drives is that basically they are just standard slim form factor notebook drives equipped with an UltraBay frame. This frame is just a mechanical addition with an integrated connector adapter.&lt;br /&gt;
&lt;br /&gt;
As curious people found, the inner connector of an UltraBay frame is nothing more than a standard interface for such drives. Hence, it is generally possible to disassemble an old UltraBay drive and attach the frame to a newer or better one.&lt;br /&gt;
&lt;br /&gt;
There are, however, some things to consider...&lt;br /&gt;
&lt;br /&gt;
==The Limitations==&lt;br /&gt;
Even though these slim form factor drives seem to have a standard form factor at first look, it turns out that there are marginal mechanical differences. This makes it hard if at all possible to know beforehand if the UltraBay frame from your old drive will perfectly fit onto the new one. The fact is that different UltraBay drives even for the same UltraBay standard have frames with different mechanical characteristics. Small differences can sometimes be adjusted by modifying parts of the frame, but this is of course not the nicest solution.&lt;br /&gt;
&lt;br /&gt;
The most varying part is the Blending, which is usually not compatible even among drives of the same manufacturer. The position of the eject button, the drive LED, the emergency eject hole and the way the blending is attached to the drive all vary a lot. Do precise research before you buy anything. One solution here is to keep the original blending of the drive, since the UltraBay blending is independent from the rest of the frame. The disadvantage is an optical one: the standard blendings are usually flat whereas the UltraBay blendings usually are a bit thicker at the top and thinner at the bottom. Also, for some UltraBay standards you would have to cut out the lower right edge of the blending, since the standard drive blendings are usually rectangle shaped.&lt;br /&gt;
&lt;br /&gt;
==UltraBay 2000==&lt;br /&gt;
The UltraBay 2000 frame consists of four parts: Front bezel, left wing, right wing and the back plate containing the connector interface.&lt;br /&gt;
&lt;br /&gt;
The left and right parts are attached with little screws in holes which are at standardised positions and should usually fit among all drives. However, the actual drives show tiny variations in width, which are leveraged by the left and right parts. Hence these can be a bit thicker or thinner (fractions of 1mm). Putting a somewhat wide frame part onto a somewhat wide drive might result in an UltraBay drive that doesn't fit into the bay at all because it's just a tiny little bit too wide. This can be dealt with e.g. by sanding one of the side frame parts, but it's better if all components fit correctly in the first place. Also, the side frames have hatches fitting into the holes in the back part. Among frames these hatches vary in thickness and length and hence, again, might not fit easily. Again, they can be adjusted by cutting them a bit.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2&lt;br /&gt;
|+ UltraBay 2000 drives and compatible alternative drives&lt;br /&gt;
|-&lt;br /&gt;
! UltraBay drive !! IBM Part-Nr. !! actual drive !! compatible drive !! needed steps to make fitting&lt;br /&gt;
|-&lt;br /&gt;
| 24x CD-ROM drive || ... || TEAC CD-224E || ... || ...&lt;br /&gt;
|-&lt;br /&gt;
| 8x DVD drive || 27L3447 || Matsushita SR-8175-M || ... || ...&lt;br /&gt;
|-&lt;br /&gt;
| 8x DVD drive || 08K9648 || Matsushita SR-8176-M || ... || ...&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=12625</id>
		<title>Maintenance</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Maintenance&amp;diff=12625"/>
		<updated>2005-11-05T00:29:09Z</updated>

		<summary type="html">&lt;p&gt;Micampe: reverted vandalism&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;
Here you can find general hints about keeping your ThinkPad in good shape. Look at your [[:Category:Models|models category page]] for IBMs official maintenance guide for that model.&lt;br /&gt;
|}&lt;br /&gt;
==Battery Treatment==&lt;br /&gt;
{| border=1 cellspacing=0 cellpadding=2 style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|+Battery life expanding guide&lt;br /&gt;
|- style=&amp;quot;background:#efefef;white-space:nowrap;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Battery Type !! NiCd !! NiMH !! Lithium ion&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | General&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*always do complete discharge/charge cycles&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|&lt;br /&gt;
*never completely discharge the battery, partial dis-/recharges are better&lt;br /&gt;
*remove battery when on AC&lt;br /&gt;
*avoid exposing the battery (or notebook) to excessive heat&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*discharge before charging&lt;br /&gt;
|&lt;br /&gt;
*avoid charging if battery is nearly full&lt;br /&gt;
*keep notebook off while charging&lt;br /&gt;
*fully discharge battery every 30 or so charges to recalibrate fuel guage &lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Storage&lt;br /&gt;
| &lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*almost discharged&lt;br /&gt;
*cool and dry&lt;br /&gt;
|&lt;br /&gt;
*never fully charged or discharged, ideally at about 40%&lt;br /&gt;
*cool and dry, but do not freeze them&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{HINT|Newer Thinkpads have software that lets you set charge thresholds. If you use your Laptop at a desk, use this software to keep your batteries in good condition. '''[as this is a site geared toward Linux, it would be helpful to know how one can accomplish this in Linux]'''}}&lt;br /&gt;
&lt;br /&gt;
===The problem with 600 series batteries===&lt;br /&gt;
ThinkPad 600 power management causes batteries to die before they should. Read more about this on the [[Problem with Thinkpad 600 batteries|associated problem page]].&lt;br /&gt;
&lt;br /&gt;
===Reviving Batteries===&lt;br /&gt;
Some people experience sudden drops in their batteries capacity.&lt;br /&gt;
&lt;br /&gt;
A way to get these batteries back to full capacity is to run the &amp;quot;Battery Rundown&amp;quot; function of IBMs &amp;quot;PC Doctor for DOS&amp;quot;.&lt;br /&gt;
The program is downloadable from IBMs support site as three floppy disk images. For those who do not have a floppy, David Smith prepared a [http://www.mypchelp.com/~dsmith/ibmutil/ibm_t22_pcdiag.iso bootable CD image] from the T22 floppy images.&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-50944 IBM Support - Extending battery life]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-51038 IBM Support - Battery troubleshooting]&lt;br /&gt;
* [http://www.pc.ibm.com/ww/thinkpad/batterylife/ IBM Benchmark]&lt;br /&gt;
* [http://batteryuniversity.com Battery University]&lt;br /&gt;
* [http://www.batteryuniversity.com/parttwo-34.htm BatteryUniversitys info about prolonging lithium ion batteries]&lt;br /&gt;
* [http://www.buchmann.ca/Chap10-page6.asp prolonging lithium ion batteries in Buchmanns Battery FAQ]&lt;br /&gt;
&lt;br /&gt;
==Cleaning the Display==&lt;br /&gt;
If you discover markings that look like originating from the TrackPoint or keyboard, or for information on how to avoid these, look at [[Problem with key and trackpoint markings on the display|this page]].&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-4A2P54 IBM Support - LCD care and cleaning instructions]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-52190 IBM Support - System cleaning instructions]&lt;br /&gt;
&lt;br /&gt;
==Dealing with spilling accidents==&lt;br /&gt;
#Don't panic.&lt;br /&gt;
#Don't flip or tilt the computer to prevent the liquid from spreading all over the inside of the case.&lt;br /&gt;
#Shut down the OS and turn off the power:&lt;br /&gt;
##Unplug the computer.&lt;br /&gt;
##Remove the battery.&lt;br /&gt;
#Tilt the computer so that everything that leaked into the case can flow out the same way.&lt;br /&gt;
#Allow the computer to dry before switching it on again.&lt;br /&gt;
#For minor accidents this might already be sufficient. For major flooding you should either bring the computer to a dealer who knows how to open and clean it from inside. Or you can read the Hardware Maintenance Manual, open, clean, and dry the computer yourself. &lt;br /&gt;
&lt;br /&gt;
See also [http://www.moneysense.ca/spending/technology/columnist.jsp?content=986628 Act quickly, carefully if you spill on laptops] on MoneySense.ca&lt;br /&gt;
&lt;br /&gt;
==Harddisk Backup==&lt;br /&gt;
*[[How to copy a Linux installation]]&lt;br /&gt;
*[[How to copy a Windows installation]]&lt;br /&gt;
===External Sources===&lt;br /&gt;
*[http://gamma.nic.fi/~point/win2copy.htm Guide on copying Windows 2000/XP to another partition]&lt;br /&gt;
&lt;br /&gt;
==Recovering BIOS passwords==&lt;br /&gt;
Password recovery procedure for IBM ThinkPads&lt;br /&gt;
using R24RF08 and IBMpass&lt;br /&gt;
&lt;br /&gt;
'''1. Introduction.'''&lt;br /&gt;
&lt;br /&gt;
As you probably know, IBM ThinkPad uses a small eeprom (ATMEL 24RF08) to store different OEM&lt;br /&gt;
issues like serial number, UUID, etc. The supervisor password (SVP) is stored also into this little chip.&lt;br /&gt;
So, anybody should figure that he needs to read the eeprom in order to find the password string. The first problem is that 24RF08 is not an ordinary eeprom. The second is that the password is written in a special scan code.&lt;br /&gt;
To read properly you need a software (and an interface) specially designed for this eeprom.&lt;br /&gt;
This software is R24RF08 (eeprom reader) and IBMpass (password revealer) disponible at www.allservice.ro . Diagrams are included in the reader kit &lt;br /&gt;
&lt;br /&gt;
'''2. Locating the eeprom. Soldering.'''&lt;br /&gt;
&lt;br /&gt;
No need to unsolder the 24RF08 eeprom, just solder 3 wires to SDA, SCL and GND pins of the&lt;br /&gt;
eeprom. There are two eeprom layouts (see interface schematics described bellow), orresponding to 8 pin or 14 pin eeproms. Locate the eeprom first according to your model (E.g. T20-23 and T30 have the eeprom underneath TP, and can be accessed by removing the RAM modules cover, no need to dismantle the laptop.) and solder the wires using a soldering iron with a fine tip. Also, you can use 0.15 -0.20 mm enamel coated wires or similar small diameter insulated wires. These wires will be connected later to the interface.&lt;br /&gt;
Tip: You can use clips to connect the wires or you can solder on the PCB traces leading to the&lt;br /&gt;
eeprom pins. Once again, be careful and double, triple check the soldering if necessary till you are positively sure you have done the right job.&lt;br /&gt;
&lt;br /&gt;
'''3. Choose and build the interface.'''&lt;br /&gt;
&lt;br /&gt;
Since version 2.0, R24RF08 and W24RF08(eeprom writer) are compatible with a wide range of eeprom programmers. By default, both programs set the COM port signals to use direct logic level to access I2C bus. We provide here 2 schematics that are relevant for direct logic signals and for inverse logic signals (simple-i2cprog.pdf and driven-i2cprog.pdf). Also, depending of the interface you build, you can invert the logics for SDA-In, SDA-Out, and SCL COM port signals by some command line parameters described later in this document.&lt;br /&gt;
a) The file simple-i2cprog.pdf contains the schematic diagram of a simple interface (known as SIPROG)based on 2 zeners and 2 resistors. This is a classic, easy to build circuit and works with soldered or unsoldered eeproms. The purpose of the 2 zeners is to convert RS232 levels (+/- 5V) to TTL levels, needed by the eeprom. It uses direct logic signals to I2C eeprom and is powered by the COM port. However, this interface works with in-system eeproms but is dependant on COM port current and eeprom bus impedance. R24RF08 works natively with this circuit, no need to change the lines signals with command line parameters. This circuit works pretty well with almost all Thinkpads series.&lt;br /&gt;
b) The second interface is described in driven-i2cprog.pdf. The circuit uses MAX 232 as a RS232 to TTL driver and its main purpose is to work with soldered eeproms. The advantage of MAX232 is the TTL outputs that are more reliable and more powerful when work with soldered, in-system eeproms (dependency free from the COM port current). Due of the internal inverters of MAX232 the interface responds to an inverse signal logic level. R24RF08 needs /x, /d, /i switches to be specified in the command line.&lt;br /&gt;
What these switches mean:&lt;br /&gt;
/x - invert serial clock, also known as SCL;&lt;br /&gt;
/d - invert serial data output, also known as SDA-Out;&lt;br /&gt;
/i - invert serial data input, also known as SDA-In.&lt;br /&gt;
All those can be used in any combination to meet any interface specification.&lt;br /&gt;
&lt;br /&gt;
'''4. How is it working:'''&lt;br /&gt;
&lt;br /&gt;
Prepare your technician PC by connecting the interface to the COM1 port (donâ€™t connect the wires to eeprom yet). Turn on the ThinkPad and press F1 to enter BIOS Setup. When you are prompted for the password and thereâ€™s no other activity like HDD access or so, connect the wires (GND first!, SDA, SCL) to the corresponding wires from the interface (attached before to COM1) and execute R24RF08:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG interface (as described in 3.a above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;. where filename.ext is the file where eeprom content will be stored.&lt;br /&gt;
Example: r24rf08 mytp.bin&lt;br /&gt;
&lt;br /&gt;
-for MAX232 driven I2C interface (as described in 3.b above):&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i. where /x /d /i are command line parameters (switches) for this kind of interface.&lt;br /&gt;
Example: r24rf08 mytp2.bin /x/d /i&lt;br /&gt;
&lt;br /&gt;
Use exactly the instructed switches to avoid possible damages to your eeprom data!&lt;br /&gt;
The file should be created in the same folder. Finally, disconnect the wires (GND last!) and turn off the ThinkPad by pressing on/off switch.&lt;br /&gt;
&lt;br /&gt;
'''5. Reveal the password.'''&lt;br /&gt;
&lt;br /&gt;
Now, you have the .bin file but you need to dump in scan code to retrieve the password. IBMpass 2.0 Lite is a free tool that will do the job. Just open the eeprom dump youâ€™ve created before and search for 0x330, 0x340 lines. The password is located on 0x338 (and 0x340 depending on model) in scan code. For 24C01 eeproms the password is located at 0x38, 0x40. If the password won't work for the very first time then your eeprom may use newer IBM scancodes. In this case switch to alternate scan codes to find it. For those who want quick answers the recommended version is IBMpass 1.1. Usage for IBMpass 1.1 (command line only):&lt;br /&gt;
&lt;br /&gt;
ibmpass mytp.bin â€“ use â€œ/aâ€ switch to see in alternate scan code if needed:&lt;br /&gt;
ibmpass mytp.bin /a&lt;br /&gt;
&lt;br /&gt;
For some old models like 570 or 770Z you need to execute the eeprom patcher first. This will reset the read protection on the password offset. To do that just execute patcher.exe before the reading operation, without rebooting the laptop:&lt;br /&gt;
&lt;br /&gt;
-for SI-PROG:&lt;br /&gt;
patcher.exe , then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-for Driven-I2C (Max232) you must insert the switches:&lt;br /&gt;
patcher.exe /x /d /i, then immediately&lt;br /&gt;
r24rf08.exe &amp;lt;filename.ext&amp;gt; /x /d /i&lt;br /&gt;
&lt;br /&gt;
W24RF08, the writer version, has included the complete APP reset operation you donâ€™t need to use patcher.&lt;br /&gt;
&lt;br /&gt;
Remember, use 3 wires from the interface and 3 wires from eeprom! Connect them after your&lt;br /&gt;
ThinkPad is powered and disconnect them right after you read the content, before you switch off the laptop.&lt;br /&gt;
&lt;br /&gt;
===External Sources===&lt;br /&gt;
* [http://www.allservice.ro R24RF08 &amp;amp; IBMpass author's webpage.]&lt;br /&gt;
* [http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=ibm&amp;amp;lndocid=MIGR-59377 IBM Support - Lost or forgotten password]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=User:Micampe&amp;diff=17142</id>
		<title>User:Micampe</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=User:Micampe&amp;diff=17142"/>
		<updated>2005-11-05T00:27:48Z</updated>

		<summary type="html">&lt;p&gt;Micampe: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Machines==&lt;br /&gt;
* My first ThinkPad [[:Category:R52|R52 1846-4CG]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Talk:Problems_with_SATA_and_Linux&amp;diff=11560</id>
		<title>Talk:Problems with SATA and Linux</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Talk:Problems_with_SATA_and_Linux&amp;diff=11560"/>
		<updated>2005-11-03T15:50:19Z</updated>

		<summary type="html">&lt;p&gt;Micampe: what are the advantages of SATA?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;regarding the &amp;quot;BIOS error 2010 on user-installed hard disk&amp;quot;:&lt;br /&gt;
the text says that corruption occurs if you use a harddisk without the specific ibm bios. would be interesting if it is possible to fix this problem in the kernel so that you can use any disk and the kernel doesn't use specific ATA commands which are known to cause problems.&lt;br /&gt;
&lt;br /&gt;
in the tabook i didn't find any specification of the SATA bridge. it would be interesting:&lt;br /&gt;
1) what type it is&lt;br /&gt;
2) if it is fixed on the mainboard or if it is possible to solder in a new one&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Another interesting question is whether these ThinkPads can be hacked to accept a real SATA system disk, by bypassing the SATA-to-PATA bridge (this would probably involve some soldering and cutting). If the BIOS can also handle that then it may come in handy, since some new high-capacity 2.5&amp;quot; disks have only SATA versions.&lt;br /&gt;
--[[User:Thinker|Thinker]] 02:56, 8 Oct 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''Z series'''&lt;br /&gt;
&lt;br /&gt;
Since the Z series uses a SATA controller and disk, without the bridge, would it be possible to make SATA ATAPI support as a module that you could load only when using the optical drive?  Then, for everyday use, the experimental options of PATA and ATAPI with ata_piix would not be needed, moving you one step further in the direction of stability.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I have an R52 with Ubuntu Breezy and no problems with SATA (I personally asked the developers to include the needed patches).&lt;br /&gt;
&lt;br /&gt;
However, I'd like to know wheter there are any advantages with this configuration. Future proof? Power saving? Speed?&lt;br /&gt;
&lt;br /&gt;
Anybody cares to comment?&lt;br /&gt;
&lt;br /&gt;
-- [[User:Micampe|Michele]]&lt;/div&gt;</summary>
		<author><name>Micampe</name></author>
		
	</entry>
</feed>