<?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=Hothead</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=Hothead"/>
	<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/wiki/Special:Contributions/Hothead"/>
	<updated>2026-04-05T12:08:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.12</generator>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_configure_the_TrackPoint&amp;diff=54236</id>
		<title>How to configure the TrackPoint</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_configure_the_TrackPoint&amp;diff=54236"/>
		<updated>2012-12-26T10:36:10Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Configuration using xinput */&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; |Below are several ways of configuring the kernel psmouse driver for controlling extended TrackPoint features.&lt;br /&gt;
|}&lt;br /&gt;
On a '''Modern''' distribution (like Fedora, Ubuntu or OpenSUSE) you will want to use xinput or one of the graphical front ends. For distributions that are lagging a bit (e.g. Debian Lenny and PCLOS '09) you may still want to use the old xorg config method.&lt;br /&gt;
&lt;br /&gt;
=Configuration using xinput=&lt;br /&gt;
If you want to modify changes on the fly, you can do so with {{cmd|xinput|}} (part of the optional xorg-x11-apps rpm on Fedora).&lt;br /&gt;
Note that these changes are not saved when the xserver is restarted. However, you can add the lines e.g. in your  {{cmd|.xsessionrc|}} (depends on your distribution) so they are executed every time X starts.&lt;br /&gt;
&lt;br /&gt;
To query the available options&lt;br /&gt;
 xinput list-props &amp;quot;TPPS/2 IBM TrackPoint&amp;quot;&lt;br /&gt;
&lt;br /&gt;
More information can be found in the man-pages for evdev&lt;br /&gt;
 man evdev&lt;br /&gt;
&lt;br /&gt;
To enable vertical scrolling&lt;br /&gt;
 xinput set-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation&amp;quot; 1&lt;br /&gt;
 xinput set-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation Button&amp;quot; 2&lt;br /&gt;
 xinput set-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation Timeout&amp;quot; 200&lt;br /&gt;
&lt;br /&gt;
To enable horizontal scrolling in addition to vertical scrolling&lt;br /&gt;
&lt;br /&gt;
 xinput set-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation Axes&amp;quot; 6 7 4 5&lt;br /&gt;
&lt;br /&gt;
To enable middle button emulation (using left- and right-click simultaneously)&lt;br /&gt;
 xinput set-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Middle Button Emulation&amp;quot; 1&lt;br /&gt;
 xinput set-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Middle Button Timeout&amp;quot; 50&lt;br /&gt;
&lt;br /&gt;
== old method using xinput set-int-prop ==&lt;br /&gt;
&lt;br /&gt;
Note: xinput set-int-prop is deprecated according to the xinput manpage.&lt;br /&gt;
&lt;br /&gt;
To enable vertical scrolling&lt;br /&gt;
 xinput set-int-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation&amp;quot; 8 1&lt;br /&gt;
 xinput set-int-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation Button&amp;quot; 8 2&lt;br /&gt;
 xinput set-int-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation Timeout&amp;quot; 8 200&lt;br /&gt;
&lt;br /&gt;
To enable horizontal scrolling in addition to vertical scrolling&lt;br /&gt;
&lt;br /&gt;
 xinput set-int-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Wheel Emulation Axes&amp;quot; 8 6 7 4 5&lt;br /&gt;
&lt;br /&gt;
To enable middle button emulation (using left- and right-click simultaneously)&lt;br /&gt;
 xinput set-int-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Middle Button Emulation&amp;quot; 8 1&lt;br /&gt;
 xinput set-int-prop &amp;quot;TPPS/2 IBM TrackPoint&amp;quot; &amp;quot;Evdev Middle Button Timeout&amp;quot; 8 50&lt;br /&gt;
&lt;br /&gt;
==Example: openSUSE 11.2 and ThinkPad USB Keyboard with TrackPoint ==&lt;br /&gt;
&lt;br /&gt;
 xinput list&lt;br /&gt;
will show two &amp;quot;Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint.&amp;quot; with two different ids. Use the id with Axis 0 and Axis 1 items.&lt;br /&gt;
&lt;br /&gt;
Suppose the id was 12. The following will enable the trackpoint scrolling:&lt;br /&gt;
&lt;br /&gt;
 xinput set-int-prop 12 &amp;quot;Evdev Wheel Emulation&amp;quot; 8 1&lt;br /&gt;
 xinput set-int-prop 12 &amp;quot;Evdev Wheel Emulation Button&amp;quot; 8 2&lt;br /&gt;
 xinput set-int-prop 12 &amp;quot;Evdev Wheel Emulation Timeout&amp;quot; 8 200&lt;br /&gt;
&lt;br /&gt;
The following will enable the horizontal scrolling&lt;br /&gt;
 xinput set-int-prop 12 &amp;quot;Evdev Wheel Emulation Axes&amp;quot; 8 6 7 4 5&lt;br /&gt;
&lt;br /&gt;
To disable middle button click paste functionality, remap the middle button to something else:&lt;br /&gt;
 xmodmap -e &amp;quot;pointer = 1 9 3 4 5 6 7 8 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To do these automatically without worrying about id number, generate a bash script file:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 xinput list | sed -ne 's/^[^ ][^V].*id=\([0-9]*\).*/\1/p' | while read id&lt;br /&gt;
 do&lt;br /&gt;
         case `xinput list-props $id` in&lt;br /&gt;
         *&amp;quot;Middle Button Emulation&amp;quot;*)&lt;br /&gt;
                 xinput set-int-prop $id &amp;quot;Evdev Wheel Emulation&amp;quot; 8 1&lt;br /&gt;
                 xinput set-int-prop $id &amp;quot;Evdev Wheel Emulation Button&amp;quot; 8 2&lt;br /&gt;
                 xinput set-int-prop $id &amp;quot;Evdev Wheel Emulation Timeout&amp;quot; 8 200&lt;br /&gt;
                 xinput set-int-prop $id &amp;quot;Evdev Wheel Emulation Axes&amp;quot; 8 6 7 4 5&lt;br /&gt;
                 xinput set-int-prop $id &amp;quot;Evdev Middle Button Emulation&amp;quot; 8 0&lt;br /&gt;
                 ;;&lt;br /&gt;
         esac&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
 # disable middle button&lt;br /&gt;
 xmodmap -e &amp;quot;pointer = 1 9 3 4 5 6 7 8 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and save it with any name such as trackPointScrolling.sh, and make it executable:&lt;br /&gt;
 chmod +x trackPointScrolling.sh&lt;br /&gt;
&lt;br /&gt;
Next time you run it with $ ./trackPointScrolling.sh, it will enable the trackpoint scrolling and disable middle button paste.&lt;br /&gt;
{{Todo|some other examples}}&lt;br /&gt;
&lt;br /&gt;
= Graphical Frontends =&lt;br /&gt;
If you are using GNOME, you might want to use [http://live.gnome.org/GPointingDeviceSettings GPointing Device Settings] or [http://tpctl.sourceforge.net/configure-trackpoint.html configure-trackpoint] as a graphical frontends.&lt;br /&gt;
=== GPointing Device Settings ===&lt;br /&gt;
It is available for Fedora 12, Ubuntu 9.10 and Debian Squeeze in the standard package repositories&lt;br /&gt;
{{NOTE|Unfortunately it seems no longer maintained, and does not work properly with GNOME3 [[https://bugzilla.redhat.com/show_bug.cgi?id=710053 bug]]}}&lt;br /&gt;
&lt;br /&gt;
[[image:Screenshot-GPointing Device Settings-TrackPoint.png]]&lt;br /&gt;
&lt;br /&gt;
=== configure-trackpoint ===&lt;br /&gt;
To install it in Ubuntu run ...&lt;br /&gt;
 sudo apt-get install sysfsutils&lt;br /&gt;
...and then download and install the deb [http://sourceforge.net/projects/tpctl/ here]. Note that saved settings are not restored after reboot in Lucid Lynx. See methods below to make settings permanent.&lt;br /&gt;
&lt;br /&gt;
= Configuration using DevKit =&lt;br /&gt;
Most recent distributions like Ubuntu 9.10 switch from HAL (being deprecated) to DevKit. Hence, the HAL configurations explained underneath, fail to work.&lt;br /&gt;
&lt;br /&gt;
The easiest way to configure your touchpad and trackpoint with DevKit is by using the [http://live.gnome.org/GPointingDeviceSettings GPointingDeviceSettings] panel that fully supports the hardware. You can easily download the panel by installing {{cmd| gpointing-device-settings|}}. On Ubuntu open a terminal and execute the command {{cmduser| sudo apt-get install gpointing-device-settings}}&lt;br /&gt;
&lt;br /&gt;
Launch the UI through the {{cmduser| gpointing-device-settings}} command, but you can also add a menu entry to your System / Preferences menu for easier access to the UI panel.&lt;br /&gt;
&lt;br /&gt;
= Configuration using udev and HAL =&lt;br /&gt;
Modern distributions like Ubuntu 8.10 and Fedora 10 use udev and HAL to configure the input devices. You should no longer make changes to xorg.conf as by default Xorg (through the evdev driver) will let the kernel now handle input devices.&lt;br /&gt;
&lt;br /&gt;
But before you get started on this you should make sure you have all the updates applied from your distro vendor as both Ubuntu 8.10 and Fedora 10 require some additional fixes that you will need.&lt;br /&gt;
&lt;br /&gt;
=== Scrolling ===&lt;br /&gt;
&lt;br /&gt;
By default the middle mouse button is just that, a middle mouse button, which in Linux is used for the Paste operation.&lt;br /&gt;
&lt;br /&gt;
You may configure it to act in the same way as in Windows, such that you can use it for vertical scrolling: keep the button pressed and move the TrackPoint up and down to scroll. (In GPointing Device Settings, this is known as &amp;quot;Use wheel emulation&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This setting is not compatible with using Alt + Middle Mouse Button to resize windows. If you want to resize windows with the trackpad, disable wheel emulation. On Ubuntu 11.10, this setting resides in &amp;lt;tt&amp;gt;/usr/share/X11/xorg.conf.d/11-evdev-trackpoint.conf&amp;lt;/tt&amp;gt; (see below), although some touchpads use &amp;lt;tt&amp;gt;/usr/share/X11/xorg.conf.d/50-synaptics.conf&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== xorg.conf.d ====&lt;br /&gt;
&lt;br /&gt;
Some distributions now support the new Xorg hotplug configuration method via xorg.conf.d directories (in Ubuntu 10.04 Lucid Lynx) instead of hal. In contrast to the udev method below, it should be around for some time, so it might be the best way to “statically” configure scrolling.&lt;br /&gt;
&lt;br /&gt;
Create the file {{path|/usr/lib/X11/xorg.conf.d/20-thinkpad.conf}} as root with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
	Identifier	&amp;quot;Trackpoint Wheel Emulation&amp;quot;&lt;br /&gt;
	MatchProduct	&amp;quot;TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|ThinkPad USB Keyboard with TrackPoint|USB Trackpoint pointing device|Composite TouchPad / TrackPoint&amp;quot;&lt;br /&gt;
	MatchDevicePath	&amp;quot;/dev/input/event*&amp;quot;&lt;br /&gt;
	Option		&amp;quot;EmulateWheel&amp;quot;		&amp;quot;true&amp;quot;&lt;br /&gt;
	Option		&amp;quot;EmulateWheelButton&amp;quot;	&amp;quot;2&amp;quot;&lt;br /&gt;
	Option		&amp;quot;Emulate3Buttons&amp;quot;	&amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;XAxisMapping&amp;quot;		&amp;quot;6 7&amp;quot;&lt;br /&gt;
	Option		&amp;quot;YAxisMapping&amp;quot;		&amp;quot;4 5&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and restart Xorg (or it'll be enabled at next reboot).&lt;br /&gt;
&lt;br /&gt;
{{NOTE|For Ubuntu 10.10 Maverick Meerkat, the correct path is {{path|/usr/share/X11/xorg.conf.d}}}}&lt;br /&gt;
{{NOTE|For Arch Linux or Fedora, the correct path is {{path|/etc/X11/xorg.conf.d}}}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|If the above does not work for you, you may need to add a different MatchProduct string.  Use &amp;lt;pre&amp;gt;find /dev/input/event* -exec udevadm info --attribute-walk --name={} \; | grep -e product -e name | sort -u&amp;lt;/pre&amp;gt; to get a list of possibilities.}}&lt;br /&gt;
&lt;br /&gt;
{{NOTE|If the above directory doesn't exist by default in your distribution, it probably doesn't support this method. In this case, please refer to the udev or xinput method below.}}&lt;br /&gt;
&lt;br /&gt;
==== udev ====&lt;br /&gt;
&lt;br /&gt;
Now that Xorg doesn't use the configuration from hal (in Debian unstable starting january 2010), the only way to “statically” configure scrolling in trackpoint is udev. (for other people, xinput method, works fine). This method will be gone (_again_) in not too long so it might be a better idea to use xinput way. YMMV.&lt;br /&gt;
&lt;br /&gt;
Create the file {{path|/etc/udev/rules.d/99_trackpoint.rules}} as root with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ACTION!=&amp;quot;add|change&amp;quot;, GOTO=&amp;quot;xorg_trackpoint_end&amp;quot;&lt;br /&gt;
KERNEL!=&amp;quot;event*&amp;quot;, GOTO=&amp;quot;xorg_trackpoint_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ENV{ID_PATH}!=&amp;quot;platform-i8042-serio-1&amp;quot;, GOTO=&amp;quot;xorg_trackpoint_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ENV{x11_options.EmulateWheel}=&amp;quot;1&amp;quot;&lt;br /&gt;
ENV{x11_options.EmulateWheelButton}=&amp;quot;2&amp;quot;&lt;br /&gt;
ENV{x11_options.XAxisMapping}=&amp;quot;6 7&amp;quot;&lt;br /&gt;
ENV{x11_options.Emulate3Buttons}=&amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LABEL=&amp;quot;xorg_trackpoint_end&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save and restart udev then Xorg (or it'll be enabled at next reboot).&lt;br /&gt;
&lt;br /&gt;
{{NOTE|The ID_PATH used in the example above is a typical value.  To determine the ID_PATH appropriate to the TrackPoint on a specific model see [[#Determining TrackPoint Path ID|Determining TrackPoint Path ID]]}}&lt;br /&gt;
&lt;br /&gt;
==== Hal (soon to be deprecated) ====&lt;br /&gt;
&lt;br /&gt;
To accomplish this create the file {{path|/etc/hal/fdi/policy/mouse-wheel.fdi}} as root with the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;match key=&amp;quot;info.product&amp;quot; string=&amp;quot;TPPS/2 IBM TrackPoint&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;merge key=&amp;quot;input.x11_options.EmulateWheel&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
 &amp;lt;merge key=&amp;quot;input.x11_options.EmulateWheelButton&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;2&amp;lt;/merge&amp;gt;&lt;br /&gt;
 &amp;lt;merge key=&amp;quot;input.x11_options.YAxisMapping&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;4 5&amp;lt;/merge&amp;gt;&lt;br /&gt;
 &amp;lt;merge key=&amp;quot;input.x11_options.Emulate3Buttons&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;true&amp;lt;/merge&amp;gt;&lt;br /&gt;
 &amp;lt;merge key=&amp;quot;input.x11_options.EmulateWheelTimeout&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;200&amp;lt;/merge&amp;gt;&lt;br /&gt;
&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you also want to have horizontal scrolling, simply add the following XAxisMapping option to the above&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;merge key=&amp;quot;input.x11_options.XAxisMapping&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;6 7&amp;lt;/merge&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After this reboot, or restart the hal service and Xorg. You can validate the settings with {{cmd|lshal|}}.&lt;br /&gt;
&lt;br /&gt;
In some models (eg: X301 and X200 since Jan 10 2010 on debian sid) you may have to use &amp;quot;PS/2 Generic Mouse&amp;quot; instead of &amp;quot;TPPS/2 IBM TrackPoint&amp;quot;. Have a look to your input devices typing &amp;lt;code&amp;gt;lshal|grep input.product&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Alternatively it is also possible to use the &amp;quot;old&amp;quot; Xorg configuration by adding the following lines to the {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Section &amp;quot;ServerFlags&amp;quot;&lt;br /&gt;
	Option 	&amp;quot;AutoAddDevices&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using this entry HAL will not be used for the input devices.&lt;br /&gt;
&lt;br /&gt;
====Reactivate Scrolling after suspend/resume====&lt;br /&gt;
Scrolling may be disabled after a resume from suspend.&lt;br /&gt;
&lt;br /&gt;
You can manually reactivate the trackpoint by reloading the {{path|psmouse}} module as root:&lt;br /&gt;
:{{cmdroot|rmmod psmouse &amp;amp;&amp;amp; modprobe psmouse}}&lt;br /&gt;
&lt;br /&gt;
You can automatically force the pm-utils to reload this module.&lt;br /&gt;
Create a file {{path|/etc/pm/config.d/01reload_mouse}} as root with the following content:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# reload psmouse to reactivate trackpoint scrolling&lt;br /&gt;
SUSPEND_MODULES=&amp;quot;${SUSPEND_MODULES:+$SUSPEND_MODULES }psmouse&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring other options (e.g. Press to select, Sensitivity and Speed)===&lt;br /&gt;
&amp;lt;!--HAL wasn't made to configure sysfs settings, so we'll use udev instead --&amp;gt;&lt;br /&gt;
Create a file {{path|/etc/udev/rules.d/10-trackpoint.rules}} and add a line to suit your needs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;serio&amp;quot;, DRIVERS==&amp;quot;psmouse&amp;quot;, ATTRS{press_to_select}=&amp;quot;1&amp;quot;, ATTRS{sensitivity}=&amp;quot;122&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Testing udev  with {{cmdroot|udevadm test /sys/devices/platform/i8042/serio1}} should apply the new changes.  All of the settings listed [[How to configure the TrackPoint#Sysfs_Options_Reference|below]] can be specified here as part of a comma separated list.&lt;br /&gt;
The customized values should be loaded automatically when booting. However, due to a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=549379  kernel bug] (affecting Lucid Lynx), the attributes may not yet exist when the udev rule fires. As a work around, add a WAIT_FOR condition on the attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;serio&amp;quot;, DRIVERS==&amp;quot;psmouse&amp;quot;, WAIT_FOR=&amp;quot;/sys/devices/platform/i8042/serio1/serio2/sensitivity&amp;quot;, ATTRS{sensitivity}=&amp;quot;122&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On my system (Lucid Lynx), the above line did not work. I changed it to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;serio&amp;quot;, DRIVERS==&amp;quot;psmouse&amp;quot;, WAIT_FOR=&amp;quot;/sys/devices/platform/i8042/serio1/serio2/sensitivity&amp;quot;, ATTR{sensitivity}=&amp;quot;255&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and tested with {{cmdroot|udevadm test /sys/devices/platform/i8042/serio1/serio2}}.&lt;br /&gt;
&lt;br /&gt;
To avoid the wait you can also listen for the Trackpoint input device to appear and then run a script to set the parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;input&amp;quot;, ATTR{name}==&amp;quot;*TrackPoint*&amp;quot;, RUN+=&amp;quot;/etc/conf.d/trackpoint&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An example {{path|/etc/conf.d/trackpoint}} would be&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
## Trackpoint settings&lt;br /&gt;
&lt;br /&gt;
# When run from a udev rule, DEVPATH should be set&lt;br /&gt;
if [ ! -z $DEVPATH ] ; then&lt;br /&gt;
    TPDEV=/sys/$( echo &amp;quot;$DEVPATH&amp;quot; | sed 's/\/input\/input[0-9]*//' )&lt;br /&gt;
else&lt;br /&gt;
# Otherwise just look in /sys/&lt;br /&gt;
    TPDEV=$(find /sys/devices/platform/i8042 -name name | xargs grep -Fl TrackPoint | sed 's/\/input\/input[0-9]*\/name$//')&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# http://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint&lt;br /&gt;
# http://wwwcssrv.almaden.ibm.com/trackpoint/files/ykt3eext.pdf&lt;br /&gt;
#------------------------------------------------------------&lt;br /&gt;
if [ -d &amp;quot;$TPDEV&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;Configuring Trackpoint&amp;quot;&lt;br /&gt;
    echo -n 255     &amp;gt; $TPDEV/sensitivity     # Integer  128   Sensitivity&lt;br /&gt;
    echo -n 110     &amp;gt; $TPDEV/speed           # Integer  97   Cursor speed&lt;br /&gt;
    echo -n 4       &amp;gt; $TPDEV/inertia         # Integer  6   Negative intertia&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Couldn't find trackpoint device $TPDEV&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration using sysfs=&lt;br /&gt;
Another way to modify changes on the fly, is echoing values directly into special files in sysfs.&lt;br /&gt;
&lt;br /&gt;
{{NOTE|&lt;br /&gt;
The examples shown below are valid for ThinkPads with both TrackPoint and Touchpad, in which case the sysfs path is {{path|/sys/devices/platform/i8042/serio1/serio2}}.&lt;br /&gt;
&lt;br /&gt;
If however you have a ThinkPad without Touchpad, or with the Touchpad disabled in the BIOS, the sysfs path needs to be changed to {{path|/sys/devices/platform/i8042/serio1}} instead (notice the missing serio2 at the end).}}&lt;br /&gt;
&lt;br /&gt;
If you want to set the sysfs parameters at boot, you can use the [http://linux-diag.sourceforge.net/Sysfsutils.html sysfsutils] and put the preferred value in /etc/sysfs.conf.&lt;br /&gt;
&lt;br /&gt;
===Press to Select===&lt;br /&gt;
Press to Select allows you to tap the control stick which will simulate a left click. You can enable this feature by typing the following in to a terminal (you may need to be root):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 1 &amp;gt; /sys/devices/platform/i8042/serio1/serio2/press_to_select}}&lt;br /&gt;
&lt;br /&gt;
Press to Select should now be enabled. You can disable it in a similar manner:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 0 &amp;gt; /sys/devices/platform/i8042/serio1/serio2/press_to_select}}&lt;br /&gt;
&lt;br /&gt;
You can use this script to automate the operation&lt;br /&gt;
&lt;br /&gt;
        #!/bin/bash&lt;br /&gt;
        if [ &amp;quot;$1&amp;quot; = &amp;quot;1&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot;Turning on tap on TrackPoint&amp;quot;&lt;br /&gt;
                echo -n 1 &amp;gt; /sys/devices/platform/i8042/serio1/serio2/press_to_select&lt;br /&gt;
                exit 0&lt;br /&gt;
        fi&lt;br /&gt;
        if [ &amp;quot;$1&amp;quot; = &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot;Turning off tap on TrackPoint&amp;quot;&lt;br /&gt;
                echo -n 0 &amp;gt; /sys/devices/platform/i8042/serio1/serio2/press_to_select&lt;br /&gt;
                exit 0&lt;br /&gt;
        fi&lt;br /&gt;
        echo -n &amp;quot;Tap status: &amp;quot;&lt;br /&gt;
        cat /sys/devices/platform/i8042/serio1/serio2/press_to_select&lt;br /&gt;
&lt;br /&gt;
In Ubuntu 8.10 to make Press to Select a permanent change:&lt;br /&gt;
&lt;br /&gt;
echo -n 1 | tee /sys/devices/platform/i8042/serio1/serio2/press_to_select&lt;br /&gt;
&lt;br /&gt;
As root, append the above command above &amp;quot;exit 0&amp;quot; in /etc/gdm/Init/Default&lt;br /&gt;
&lt;br /&gt;
===Sensitivity &amp;amp; Speed===&lt;br /&gt;
Adjusting the speed and sensitivity of the TrackPoint requires echoing a value between 0 and 255 into the appropriate file. For example, for a speed of 120 and a sensitivity of 250, type the following into a terminal:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 120 &amp;gt; /sys/devices/platform/i8042/serio1/serio2/speed}}&lt;br /&gt;
:{{cmdroot|echo -n 250 &amp;gt; /sys/devices/platform/i8042/serio1/serio2/sensitivity}}&lt;br /&gt;
&lt;br /&gt;
Feel free to experiment with your settings until you find a combination that is comfortable.&lt;br /&gt;
&lt;br /&gt;
When you satisfy your setting, add the two lines into /etc/rc.d/rc.local in order to avoid restoring the default setting every time the system reboots.  In Ubuntu 9.10, add the lines to /etc/rc.local to avoid this.&lt;br /&gt;
&lt;br /&gt;
===Vertical Scrolling===&lt;br /&gt;
No sysfs entry exists for vertical scrolling in kernels after 2.6.11.&lt;br /&gt;
&lt;br /&gt;
The feature was removed as it was not a hardware feature, but rather emulating a scroll action in software and as such did not belong in the kernel.&lt;br /&gt;
Instead the scroll feature of the Xserver should be used, which can be activated with HAL or xinput as described above.&lt;br /&gt;
&lt;br /&gt;
=Configuration using the X server (xorg.conf)=&lt;br /&gt;
==Using the &amp;quot;evdev&amp;quot; driver (preferred, especially for recent Xorg versions)==&lt;br /&gt;
Extract from /etc/X11/xorg.conf on an X31:&lt;br /&gt;
&lt;br /&gt;
    Section &amp;quot;InputDevice&amp;quot;&lt;br /&gt;
        Identifier &amp;quot;TPPS/2 IBM TrackPoint&amp;quot;&lt;br /&gt;
        Driver     &amp;quot;evdev&amp;quot;&lt;br /&gt;
        Option     &amp;quot;Device&amp;quot; &amp;quot;/dev/input/by-path/platform-i8042-serio-1-event-mouse&amp;quot;&lt;br /&gt;
        Option     &amp;quot;GrabDevice&amp;quot; &amp;quot;False&amp;quot;&lt;br /&gt;
        Option     &amp;quot;EmulateWheel&amp;quot; &amp;quot;true&amp;quot; #Enable wheel emulation for the Trackpoint&lt;br /&gt;
        Option     &amp;quot;EmulateWheelButton&amp;quot; &amp;quot;2&amp;quot; #Use the middle button for the emulation&lt;br /&gt;
        Option     &amp;quot;XAxisMapping&amp;quot; &amp;quot;6 7&amp;quot; #Map trackpoint X axis to X axis of emulated wheel&lt;br /&gt;
        Option     &amp;quot;YAxisMapping&amp;quot; &amp;quot;4 5&amp;quot; #Map trackpoint Y axis to Y axis of emulated wheel&lt;br /&gt;
    EndSection&lt;br /&gt;
&lt;br /&gt;
{{NOTE|The device path used in the example above is a typical value.  To determine the device path appropriate to the TrackPoint on a specific model see [[#Determining TrackPoint Path ID|Determining TrackPoint Path ID]]}}&lt;br /&gt;
&lt;br /&gt;
==Using the &amp;quot;mouse&amp;quot; driver (deprecated, only for old Xorg versions)==&lt;br /&gt;
{{NOTE|This only applies to old distributions with Xorg versions that did not yet use evdev. For modern distributions use one of the other methods}}&lt;br /&gt;
The scroll setting has been removed from the trackpoint driver in kernel versions 2.6.11 and above. Scroll emulation should now be handled in the X server.&lt;br /&gt;
&lt;br /&gt;
A nice side effect of that is, that middle button scrolling applies to any mouse and not just the TrackPoint interface, which can be a quite handy feature for desktop computers or people who prefer to use an external mouse, especially when scrolling through long lists or needing to use horizontal scrolling with a mouse which has only a vertical scroll wheel.&lt;br /&gt;
&lt;br /&gt;
The necessary functionality, known  as &amp;quot;EmulateWheelTimeout&amp;quot; allowing to use button 2 for a middle click, wasn't implemented in Xorg prior to 6.9/7.0. However, there was a patch included in most distributions packages of Xorg, which was announced [http://www.mail-archive.com/devel@xfree86.org/msg03333.html here]. You can find an updated version of the package in the experimental branch of {{Debian}} or try to build the mouse driver yourself with the information in the announcement. This has successfully been tried with FC3's 6.8.2 packages.&lt;br /&gt;
&lt;br /&gt;
Once this functionality is in the X.org, add these lines to your TrackPoint configuration section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
        Option          &amp;quot;EmulateWheel&amp;quot;          &amp;quot;on&amp;quot;&lt;br /&gt;
        Option          &amp;quot;EmulateWheelButton&amp;quot;    &amp;quot;2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It may also be necessary to add these lines:&lt;br /&gt;
&lt;br /&gt;
        Option &amp;quot;YAxisMapping&amp;quot; &amp;quot;4 5&amp;quot;&lt;br /&gt;
        Option &amp;quot;XAxisMapping&amp;quot; &amp;quot;6 7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
which specify which buttons are mapped to motion in the vertical (Y) and horizontal (X) directions, respectively, in wheel emulation mode (see http://www.xfree86.org/current/mouse.4.html).&lt;br /&gt;
&lt;br /&gt;
{{HINT| Use the program &amp;quot;xev&amp;quot; to see, what mouse button identifiers are sent by your mouse/touchpad/trackpoint.&amp;lt;br /&amp;gt;You might want to try: &amp;quot;xev &amp;amp;#124; grep button&amp;quot;}}&lt;br /&gt;
{{HINT| If it does not work see if evdev is installed and remove it. On gentoo do the following:&amp;lt;br /&amp;gt;&lt;br /&gt;
eix xf86-input-evdev&amp;lt;br /&amp;gt;&lt;br /&gt;
emerge -C xf86-input-evdev&amp;lt;br /&amp;gt;&lt;br /&gt;
and then remove the evdev flag in make.conf INPUT_DEVICES}}&lt;br /&gt;
&lt;br /&gt;
So, a complete mouse section, that implements this nicely and works very well on my R51, even with a simultaneously connected USB mouse, looks like that (tried out today, 20th of September, 2006 on Dapper):&lt;br /&gt;
&lt;br /&gt;
  Section &amp;quot;InputDevice&amp;quot;&lt;br /&gt;
        Identifier  &amp;quot;Configured Mouse&amp;quot;&lt;br /&gt;
        Driver      &amp;quot;mouse&amp;quot;&lt;br /&gt;
        Option      &amp;quot;CorePointer&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Device&amp;quot;              &amp;quot;/dev/input/mice&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Protocol&amp;quot;            &amp;quot;ExplorerPS/2&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Emulate3Buttons&amp;quot;     &amp;quot;on&amp;quot;&lt;br /&gt;
        Option      &amp;quot;Emulate3TimeOut&amp;quot;     &amp;quot;50&amp;quot;&lt;br /&gt;
        Option      &amp;quot;EmulateWheel&amp;quot;        &amp;quot;on&amp;quot;&lt;br /&gt;
        Option      &amp;quot;EmulateWheelTimeOut&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
        Option      &amp;quot;EmulateWheelButton&amp;quot;  &amp;quot;2&amp;quot;&lt;br /&gt;
        Option      &amp;quot;YAxisMapping&amp;quot;        &amp;quot;4 5&amp;quot;&lt;br /&gt;
        Option      &amp;quot;XAxisMapping&amp;quot;        &amp;quot;6 7&amp;quot;&lt;br /&gt;
        Option      &amp;quot;ZAxisMapping&amp;quot;        &amp;quot;4 5&amp;quot;&lt;br /&gt;
  EndSection&lt;br /&gt;
&lt;br /&gt;
The mappings for Y and Z are the same, since the &amp;quot;Z-Axis&amp;quot; refers to actual hardware scrolling wheels which usually scroll the screen along the Y-Axis. If there is no hardware scrolling wheel present, horizontal and vertical scrolling using the TrackPoint work fine without the Z-Axis line.&lt;br /&gt;
&lt;br /&gt;
Now restart X and hold down button 2 and move the mouse to scroll, or just press and release button 2 for a middle click.&lt;br /&gt;
&lt;br /&gt;
To make this work with the synaptics driver for the touchpad, you can add&lt;br /&gt;
        Option      &amp;quot;GuestMouseOff&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
to the synaptics device section. This will make the synaptics driver ignore the Trackpoint, so it will be handled by the mouse driver. This allowed me to disable the touchpad while making the TrackPoint work like it should.&lt;br /&gt;
&lt;br /&gt;
{{NOTE| With the above mouse section in my xorg.conf all this works like a charm:&lt;br /&gt;
*I can press the wheel on my external USB mouse and move the mouse up and down for scrolling&lt;br /&gt;
*or I can just use the wheel on the external mouse for scrolling&lt;br /&gt;
*or pressing the MMB button of the trackpoint and use the trackpoint for scrolling.&lt;br /&gt;
*Even horizontal scrolling works automagically in Konqueror, for Firefox/Opera see below.&lt;br /&gt;
&lt;br /&gt;
Simultaneously I can use&lt;br /&gt;
*a press on the external mouse's wheel&lt;br /&gt;
*or the MMB of the trackpoint&lt;br /&gt;
&lt;br /&gt;
for pasting the buffer. Lovely! :) }}&lt;br /&gt;
&lt;br /&gt;
{{HINT| If you don't use the middle-mouse-button for pasting and sometimes pasting things by mistake while scrolling (witch is really odd) simply set the &amp;quot;EmulateWheelTimeOut&amp;quot; to &amp;quot;1&amp;quot; as a (bloody) workaround. Middle click will only possible with pressing left and right button simultaneously!}}&lt;br /&gt;
&lt;br /&gt;
=Application specific tweaks=&lt;br /&gt;
===Configure Opera for using trackpoint horizontal scrolling===&lt;br /&gt;
To fix horizontal scrolling in Opera, you need to edit the configfile &amp;lt;tt&amp;gt;standard_mouse.ini&amp;lt;/tt&amp;gt; in e.g. /usr/share/opera/ui/ (Debian) or /opt/opera/share/opera/ini/ (Gentoo) and comment out the following lines&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Button6                                                        = Back&lt;br /&gt;
Button7                                                        = Forward&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
so they look like that&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Button6                                                        = Back&lt;br /&gt;
;Button7                                                        = Forward&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remember, Button6 and Button7 do not so coincidental correspond with our X configuration we know from above:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Option &amp;quot;YAxisMapping&amp;quot; &amp;quot;6 7&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After this change you will be able to scroll vertically and horizontally with your middle button.&lt;br /&gt;
&lt;br /&gt;
===Firefox 3 tweaks===&lt;br /&gt;
These settings make Firefox on Linux behave more like the Windows version. They were tested on an out of the box Fedora 10 system on a Thinkpad T61.  Go into about:config, and set the following:&lt;br /&gt;
&lt;br /&gt;
 middlemouse.paste = false&lt;br /&gt;
 middlemouse.contentLoadURL = false&lt;br /&gt;
 general.autoScroll = true&lt;br /&gt;
&lt;br /&gt;
=Sysfs Options Reference=&lt;br /&gt;
{{NOTE|These options are current as of kernel version 2.6.29, 3 May 2009}}&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Type&lt;br /&gt;
! Default&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| sensitivity&lt;br /&gt;
| Integer&lt;br /&gt;
| 128&lt;br /&gt;
| Sensitivity&lt;br /&gt;
|-&lt;br /&gt;
| speed&lt;br /&gt;
| Integer&lt;br /&gt;
| 97&lt;br /&gt;
| Cursor speed&lt;br /&gt;
|-&lt;br /&gt;
| inertia&lt;br /&gt;
| Integer&lt;br /&gt;
| 6&lt;br /&gt;
| Described as &amp;quot;negative inertia.&amp;quot;  It acts more like friction.  High values cause the cursor to snap backward when the Trackpoint is released&lt;br /&gt;
|-&lt;br /&gt;
| reach&lt;br /&gt;
| Integer&lt;br /&gt;
| 10&lt;br /&gt;
| Backup for Z-axis press&lt;br /&gt;
|-&lt;br /&gt;
| draghys&lt;br /&gt;
| Integer&lt;br /&gt;
| 255&lt;br /&gt;
| Drag hysteresis (how hard it is to drag with Z-axis pressed)&lt;br /&gt;
|-&lt;br /&gt;
| mindrag&lt;br /&gt;
| Integer&lt;br /&gt;
| 20&lt;br /&gt;
| Minimum amount of force needed to trigger dragging&lt;br /&gt;
|-&lt;br /&gt;
| thresh&lt;br /&gt;
| Integer&lt;br /&gt;
| 8&lt;br /&gt;
| Minimum value for a Z-axis press&lt;br /&gt;
|-&lt;br /&gt;
| upthresh&lt;br /&gt;
| Integer&lt;br /&gt;
| 255&lt;br /&gt;
| Used to generate a 'click' on Z-axis&lt;br /&gt;
|-&lt;br /&gt;
| ztime&lt;br /&gt;
| Integer&lt;br /&gt;
| 38&lt;br /&gt;
| How sharp of a press&lt;br /&gt;
|-&lt;br /&gt;
| jenks&lt;br /&gt;
| Integer&lt;br /&gt;
| 135&lt;br /&gt;
| Minimum curvature for double click&lt;br /&gt;
|-&lt;br /&gt;
| press_to_select&lt;br /&gt;
| Boolean&lt;br /&gt;
| 0&lt;br /&gt;
| Press to select&lt;br /&gt;
|-&lt;br /&gt;
| skipback&lt;br /&gt;
| Boolean&lt;br /&gt;
| 0&lt;br /&gt;
| Supress movement after drag release&lt;br /&gt;
|-&lt;br /&gt;
| ext_dev&lt;br /&gt;
| Boolean&lt;br /&gt;
| 0&lt;br /&gt;
| Disable external device&lt;br /&gt;
|}&lt;br /&gt;
Table info taken from [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/input/mouse/trackpoint.h;hb=HEAD here].  The given link will always point to the current version of the driver.  If the notes seem sparse, that's because the code is sparse.  On the other hand, the [http://wwwcssrv.almaden.ibm.com/trackpoint/files/ykt3eext.pdf Trackpoint Engineering Specification Version 4.0] &amp;lt;!--if this link breaks, I recommend a quick Google search for &amp;quot;trackpoint version 4 engineering specifications&amp;quot; --&amp;gt; contains more documentation information than anyone ever desired.&lt;br /&gt;
&lt;br /&gt;
=Determining TrackPoint Path ID=&lt;br /&gt;
Both the [[#udev|udev]] and [[#Configuration using the X server (xorg.conf)|xorg.conf]] configuration methods require knowledge of the Path ID of the TrackPoint.  In the [[#udev|udev]] configuration method, the Path ID is used to match the ID_PATH environmental variable, in the [[#Configuration using the X server (xorg.conf)|xorg.conf]] configuration method it is the prefix for the device file name inside the {{path|/dev/input/by-id}} directory.  The path ID can vary between ThinkPad models, distributions (with varying kernel patches), and between kernel versions.  One way to find the path ID for the TrackPoint is to use udev's path_id utility on the sysfs device path for the TrackPoint.  This device path can be found using the {{path|name}} file which describes the TrackPoint.  The process can be automated using the following shell command:&lt;br /&gt;
 /lib/udev/path_id $(find /sys/devices/platform/i8042 -name name | xargs grep -Fl TrackPoint | sed 's/\/sys\(.*\)\/name/\1/')&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23809</id>
		<title>Lt hotswap</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23809"/>
		<updated>2006-07-27T11:21:03Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Script to eject the ultrabay */&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;
=== lt_hotswap ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; kernel module enables hot-swapping of UltraBay disk drives under Linux, with DMA support.&lt;br /&gt;
|}&lt;br /&gt;
===Features===&lt;br /&gt;
*enable hotswapping of [[UltraBay]] drives&lt;br /&gt;
*automatic IDE unregistering on [[ibm-acpi]] eject event&lt;br /&gt;
*leaves DMA support intact&lt;br /&gt;
&lt;br /&gt;
===Limitations===&lt;br /&gt;
* Requires [[ibm-acpi]] to be running (does not work with [[APM]]).&lt;br /&gt;
* Works only in conjunction with the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver (recent ThinkPad models use &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; instead). &lt;br /&gt;
* Does '''not''' get on well with idectl. Use one, or the other, or crash.&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
*Project page: http://www.sourceforge.net/projects/lths&lt;br /&gt;
*Latest version: http://prdownloads.sourceforge.net/lths/lt_hotswap-0.3.6.tar.gz?download&lt;br /&gt;
&lt;br /&gt;
Development and discussion of lt_hotswap is currently being held in &lt;br /&gt;
[[Mailinglists#Linux-ThinkPad Mailinglist|Linux-ThinkPad Mailinglist]].&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
In order to use the driver you must use ACPI and also have the [[ibm-acpi]] driver linked to your kernel (module or compiled).  &lt;br /&gt;
&lt;br /&gt;
When loading the hotswap module, you can use the module parameter: {{bootparm|auto_eject|1}} to automatically unregister the drives IDE interface.  This will happen upon popping out the [[UltraBay]] lever.&lt;br /&gt;
&lt;br /&gt;
===Supported models===&lt;br /&gt;
The driver has been explicitly reported to work on the following models. It should work on many others as well:&lt;br /&gt;
*ThinkPad {{A31p}} (warmswap), {{X22}}, {{T30}}, {{T22}}, {{T23}}, {{T40}}, {{T42}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; does '''not''' work well on models that require  the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver rather than the generic &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; IDE driver. See [[problems with SATA and Linux]] for a list, and [[How to hotswap UltraBay devices]] for an alternative solution on these models.&lt;br /&gt;
&lt;br /&gt;
At least for a thinkpad T41p with a 2.6.15 kernel I recommend to use version 0.2 of lt_hotswap - the latest version reproducable produces oopses and kernel crashes for me.&lt;br /&gt;
&lt;br /&gt;
===Script to eject an optical ultrabay drive===&lt;br /&gt;
I configured my system to automatically eject my optical drive in battery mode, because it saves about 500mW which is about 5% when my system is idle.&lt;br /&gt;
But when the drive is in use, issuing an eject will result in a kernel ooops/crash.&lt;br /&gt;
So the problem is: How do I check if the device is still in use, either by the kernel or by some other process? &lt;br /&gt;
The trick is to compile &amp;quot;cdrom and ide_cd&amp;quot; as modules. If the unload of ide_cd failes some other process is still using the device.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # disable bay if possible&lt;br /&gt;
 # saves about 500mW&lt;br /&gt;
 &lt;br /&gt;
 if modprobe -r ide_cd; then&lt;br /&gt;
   modprobe -r cdrom&lt;br /&gt;
   echo &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
   modprobe ide-cd&lt;br /&gt;
   modprobe cdrom&lt;br /&gt;
 else&lt;br /&gt;
   echo &amp;quot;&amp;quot;&lt;br /&gt;
   echo &amp;quot;$(fuser -vm /dev/hdc)&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to hotswap UltraBay devices]]&lt;br /&gt;
* [[How_to_hotswap_the_UltraBase]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23808</id>
		<title>Lt hotswap</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23808"/>
		<updated>2006-07-27T11:19:53Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Script to eject the ultrabay */&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;
=== lt_hotswap ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; kernel module enables hot-swapping of UltraBay disk drives under Linux, with DMA support.&lt;br /&gt;
|}&lt;br /&gt;
===Features===&lt;br /&gt;
*enable hotswapping of [[UltraBay]] drives&lt;br /&gt;
*automatic IDE unregistering on [[ibm-acpi]] eject event&lt;br /&gt;
*leaves DMA support intact&lt;br /&gt;
&lt;br /&gt;
===Limitations===&lt;br /&gt;
* Requires [[ibm-acpi]] to be running (does not work with [[APM]]).&lt;br /&gt;
* Works only in conjunction with the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver (recent ThinkPad models use &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; instead). &lt;br /&gt;
* Does '''not''' get on well with idectl. Use one, or the other, or crash.&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
*Project page: http://www.sourceforge.net/projects/lths&lt;br /&gt;
*Latest version: http://prdownloads.sourceforge.net/lths/lt_hotswap-0.3.6.tar.gz?download&lt;br /&gt;
&lt;br /&gt;
Development and discussion of lt_hotswap is currently being held in &lt;br /&gt;
[[Mailinglists#Linux-ThinkPad Mailinglist|Linux-ThinkPad Mailinglist]].&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
In order to use the driver you must use ACPI and also have the [[ibm-acpi]] driver linked to your kernel (module or compiled).  &lt;br /&gt;
&lt;br /&gt;
When loading the hotswap module, you can use the module parameter: {{bootparm|auto_eject|1}} to automatically unregister the drives IDE interface.  This will happen upon popping out the [[UltraBay]] lever.&lt;br /&gt;
&lt;br /&gt;
===Supported models===&lt;br /&gt;
The driver has been explicitly reported to work on the following models. It should work on many others as well:&lt;br /&gt;
*ThinkPad {{A31p}} (warmswap), {{X22}}, {{T30}}, {{T22}}, {{T23}}, {{T40}}, {{T42}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; does '''not''' work well on models that require  the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver rather than the generic &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; IDE driver. See [[problems with SATA and Linux]] for a list, and [[How to hotswap UltraBay devices]] for an alternative solution on these models.&lt;br /&gt;
&lt;br /&gt;
At least for a thinkpad T41p with a 2.6.15 kernel I recommend to use version 0.2 of lt_hotswap - the latest version reproducable produces oopses and kernel crashes for me.&lt;br /&gt;
&lt;br /&gt;
===Script to eject the ultrabay===&lt;br /&gt;
I configured my system to automatically eject my optical drive in battery mode, because it saves about 500mW which is about 5% when my system is idle.&lt;br /&gt;
But when the drive is in use, issuing an eject will result in a kernel ooops/crash.&lt;br /&gt;
So the problem is: How do I check if the device is still in use, either by the kernel or by some other process? &lt;br /&gt;
The trick is to compile &amp;quot;cdrom and ide_cd&amp;quot; as modules. If the unload of ide_cd failes some other process is still using the device.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # disable bay if possible&lt;br /&gt;
 # saves about 500mW&lt;br /&gt;
 &lt;br /&gt;
 if modprobe -r ide_cd; then&lt;br /&gt;
   modprobe -r cdrom&lt;br /&gt;
   echo &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
   modprobe ide-cd&lt;br /&gt;
   modprobe cdrom&lt;br /&gt;
 else&lt;br /&gt;
   echo &amp;quot;&amp;quot;&lt;br /&gt;
   echo &amp;quot;$(fuser -vm /dev/hdc)&amp;quot;&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to hotswap UltraBay devices]]&lt;br /&gt;
* [[How_to_hotswap_the_UltraBase]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23807</id>
		<title>Lt hotswap</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Lt_hotswap&amp;diff=23807"/>
		<updated>2006-07-27T11:18:10Z</updated>

		<summary type="html">&lt;p&gt;Hothead: &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;
=== lt_hotswap ===&lt;br /&gt;
The &amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; kernel module enables hot-swapping of UltraBay disk drives under Linux, with DMA support.&lt;br /&gt;
|}&lt;br /&gt;
===Features===&lt;br /&gt;
*enable hotswapping of [[UltraBay]] drives&lt;br /&gt;
*automatic IDE unregistering on [[ibm-acpi]] eject event&lt;br /&gt;
*leaves DMA support intact&lt;br /&gt;
&lt;br /&gt;
===Limitations===&lt;br /&gt;
* Requires [[ibm-acpi]] to be running (does not work with [[APM]]).&lt;br /&gt;
* Works only in conjunction with the &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; driver (recent ThinkPad models use &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; instead). &lt;br /&gt;
* Does '''not''' get on well with idectl. Use one, or the other, or crash.&lt;br /&gt;
&lt;br /&gt;
===Project Homepage / Availability===&lt;br /&gt;
*Project page: http://www.sourceforge.net/projects/lths&lt;br /&gt;
*Latest version: http://prdownloads.sourceforge.net/lths/lt_hotswap-0.3.6.tar.gz?download&lt;br /&gt;
&lt;br /&gt;
Development and discussion of lt_hotswap is currently being held in &lt;br /&gt;
[[Mailinglists#Linux-ThinkPad Mailinglist|Linux-ThinkPad Mailinglist]].&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
In order to use the driver you must use ACPI and also have the [[ibm-acpi]] driver linked to your kernel (module or compiled).  &lt;br /&gt;
&lt;br /&gt;
When loading the hotswap module, you can use the module parameter: {{bootparm|auto_eject|1}} to automatically unregister the drives IDE interface.  This will happen upon popping out the [[UltraBay]] lever.&lt;br /&gt;
&lt;br /&gt;
===Supported models===&lt;br /&gt;
The driver has been explicitly reported to work on the following models. It should work on many others as well:&lt;br /&gt;
*ThinkPad {{A31p}} (warmswap), {{X22}}, {{T30}}, {{T22}}, {{T23}}, {{T40}}, {{T42}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;lt_hotswap&amp;lt;/tt&amp;gt; does '''not''' work well on models that require  the &amp;lt;tt&amp;gt;ata_piix&amp;lt;/tt&amp;gt; driver rather than the generic &amp;lt;tt&amp;gt;ide-disk&amp;lt;/tt&amp;gt; IDE driver. See [[problems with SATA and Linux]] for a list, and [[How to hotswap UltraBay devices]] for an alternative solution on these models.&lt;br /&gt;
&lt;br /&gt;
At least for a thinkpad T41p with a 2.6.15 kernel I recommend to use version 0.2 of lt_hotswap - the latest version reproducable produces oopses and kernel crashes for me.&lt;br /&gt;
&lt;br /&gt;
===Script to eject the ultrabay===&lt;br /&gt;
I configured my system to automatically eject my optical drive in battery mode, because it saves about 500mW which is about 5% when my system is idle.&lt;br /&gt;
But when the drive is in use, issuing an eject will result in a kernel ooops/crash.&lt;br /&gt;
So the problem is: How do I check if the device is still in use, either by the kernel or by some other process? &lt;br /&gt;
The trick is to compile &amp;quot;cdrom and ide_cd&amp;quot; as modules. If the unload of ide_cd failes some other process is still using the device.&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# disable bay if possible&lt;br /&gt;
# saves about 500mW&lt;br /&gt;
&lt;br /&gt;
if modprobe -r ide_cd; then&lt;br /&gt;
  modprobe -r cdrom&lt;br /&gt;
  echo &amp;quot;MSTR eject&amp;quot; &amp;gt; /proc/acpi/lths&lt;br /&gt;
  modprobe ide-cd&lt;br /&gt;
  modprobe cdrom&lt;br /&gt;
else&lt;br /&gt;
  echo &amp;quot;&amp;quot;&lt;br /&gt;
  echo &amp;quot;$(fuser -vm /dev/hdc)&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Drivers]] [[Category:Patches]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[How to hotswap UltraBay devices]]&lt;br /&gt;
* [[How_to_hotswap_the_UltraBase]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_change_the_BIOS_bootsplash_screen&amp;diff=22670</id>
		<title>How to change the BIOS bootsplash screen</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_change_the_BIOS_bootsplash_screen&amp;diff=22670"/>
		<updated>2006-06-08T09:58:29Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Share your custom bootsplash image */&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;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#efefef; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
This page describes how to replace the standard IBM BIOS Bootsplash (The one with the ThinkPad- and Pentium M-Logo), without access to Microsoft Windows or a floppy drive.&lt;br /&gt;
&lt;br /&gt;
Windows users who want to have a custom splash image when they start up should try [[How to change the BIOS bootsplash screen (under Windows) | this guide]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
== Getting the Files ==&lt;br /&gt;
You'll need the bios upgrade file from the IBM website.&lt;br /&gt;
&lt;br /&gt;
=== Method 1: Using a Non-Diskette-File and cabextract ===&lt;br /&gt;
&lt;br /&gt;
For ThinkPads {{R50}}, {{R50p}}, {{R51}} (1829, 1830, 1831, 1836), {{R52}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}} this file is suitable:&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj28us.exe 1ruj28us.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj29us.exe 1ruj29us.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30us.exe 1ruj30us.exe] Released 2005-05-26 '''NEW!'''&lt;br /&gt;
There may be a more recent file on the IBM website.&lt;br /&gt;
&lt;br /&gt;
Last version at 2006-01-04 :&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj33us.exe 1ruj33us.exe] Released 2005-10-25 '''NEW!'''&lt;br /&gt;
&lt;br /&gt;
You need the cabextract tool to extract files from the exe:&lt;br /&gt;
:{{cmdroot|apt-get install cabextract}}&lt;br /&gt;
&lt;br /&gt;
Do this to get the ibm file and extract the disk image from it:&lt;br /&gt;
:{{cmdroot|cd /tmp}}&lt;br /&gt;
:{{cmdroot|wget ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30us.exe}}&lt;br /&gt;
:{{cmdroot|cabextract -F &amp;quot;*.IMG&amp;quot; 1ruj30us.exe}}&lt;br /&gt;
:{{cmdroot|mv 1RUJ30US.IMG floppy.bin}}&lt;br /&gt;
&lt;br /&gt;
=== Method 2: Using a Diskette-File and dosemu ===&lt;br /&gt;
Another option is to use the &amp;quot;Diskette BIOS file&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
For ThinkPads {{R50}}, {{R50p}}, {{R51}} (1829, 1830, 1831, 1836), {{R52}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}} this file is suitable:&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj28ud.exe 1ruj28ud.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj29ud.exe 1ruj29ud.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30ud.exe 1ruj30ud.exe] Released 2005-05-26 '''NEW!'''&lt;br /&gt;
&lt;br /&gt;
The file is an OS/2 executables and don't run with wine, so you need to install dosemu to run it and create the image.&amp;lt;br&amp;gt;&lt;br /&gt;
:{{cmdroot|apt-get install dosemu dosemu-freedos}}&lt;br /&gt;
(for non-debian-users: Get dosemu and freedos somewhere and make it work somehow).&lt;br /&gt;
&lt;br /&gt;
With dosemu, you can run this executable, but this program unfortunately&lt;br /&gt;
needs a floppy drive to write to. So use the loopback device, to create a virtual floppy. &lt;br /&gt;
:{{cmdroot|1=dd if=/dev/zero of=/tmp/floppy.bin bs=1024 count=1440}}&lt;br /&gt;
:{{cmdroot|losetup /dev/loop0 /tmp/floppy.bin}}&lt;br /&gt;
Put this block device ({{path|/dev/loop0}}) into the dosemu configuration as the floppy disk device. &lt;br /&gt;
Now you can run the extractor executable, which makes {{path|/tmp/floppy.bin}} the desired floppy image .&lt;br /&gt;
:{{cmdroot|dosemu 1ruj27ud.exe}}&lt;br /&gt;
:{{cmdroot|losetup -d /dev/loop0}}&lt;br /&gt;
&lt;br /&gt;
For 2.6.12+ if you have dosemu error:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /proc/sys/kernel/randomize_va_space}}&lt;br /&gt;
&lt;br /&gt;
== Adding the custom image ==&lt;br /&gt;
Mount your floppy.bin as a loopback device.&lt;br /&gt;
:{{cmdroot|mkdir /tmp/mnt}}&lt;br /&gt;
:{{cmdroot|1=mount -o loop,umask=000 /tmp/floppy.bin /tmp/mnt}}&lt;br /&gt;
Create a 16 color 640x480 BMP (4 Bit/pixel) (for example with Gimp) and save it to {{path|/tmp/mnt/logo.bmp}}.&lt;br /&gt;
You could use this tux image (which is no longer available because someone deleted it) for example.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
When creating your image, keep in mind that on the T43p (and others??), regardless of your custom bootsplash screen there will be a superimposed black &amp;quot;Centrino&amp;quot; logo (~100x100 pixels) on the upper right of your display, so you might want to keep that area clear.  You might also want to reserve the bottom 150 pixels for the &amp;quot;boot options&amp;quot; / &amp;quot;Entering BIOS setup&amp;quot; message(s) too, which will also be displayed.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Now prepare the image with &amp;lt;tt&amp;gt;prepare.exe&amp;lt;/tt&amp;gt; using wine: (This does not work with dosemu!)&lt;br /&gt;
:{{cmdroot|wine prepare.exe logo.scr}}&lt;br /&gt;
The image must compress to &amp;lt;10k.  If you receive an error, you can try reducing the number of colors in your image palette (step down to an 12 or 8 color palette for a very significant reduction in image size.)  When successful, there should be a new {{path|logo.mod}} and your {{path|logo.bmp}}. If so, you are set, don't forget to unmount your loopback device:&lt;br /&gt;
:{{cmdroot|umount /tmp/mnt}}&lt;br /&gt;
&lt;br /&gt;
== Fake a floppy ==&lt;br /&gt;
Now you need to put the image on a floppy and boot from it. Since recent ThinkPads don't have a&lt;br /&gt;
floppy drive, we can use a CD-R (or a CD-RW, actually, for the cheap ones, like me) and burn it with the following command:&lt;br /&gt;
:{{cmdroot|1=mkisofs -b floppy.bin floppy.bin &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; cdrecord dev=&amp;lt;device&amp;gt; - }}&lt;br /&gt;
(&amp;lt;tt&amp;gt;&amp;lt;device&amp;gt;&amp;lt;/tt&amp;gt; being your cd writer device)&lt;br /&gt;
&lt;br /&gt;
== The exciting part ==&lt;br /&gt;
After this worked, reboot your ThinkPad from the cdrom by pressing F12 while booting &lt;br /&gt;
and wait for the IBM tool to start. &lt;br /&gt;
Be sure to have your ThinkPad on AC power and say ''Yes'' to the questions the BIOS Upgrade Tool asks.&lt;br /&gt;
It will then flash the BIOS, which will take about a minute. &lt;br /&gt;
&lt;br /&gt;
Suddenly the laptop turns itself off with two beeps.&lt;br /&gt;
When booting, you'll have your bootsplash picture.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, you won't see it really long, but it's better&lt;br /&gt;
than the standard one, so it was worth the action.&lt;br /&gt;
&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
BTW next time you have to flash the BIOS the IBM BIOS updater will detect a custom boot splash and ask you if you want to preserve it or restore the original.&lt;br /&gt;
&lt;br /&gt;
== Share your custom bootsplash image ==&lt;br /&gt;
If you've created your own bootsplash image and want to share it with other you can post it here.&lt;br /&gt;
&lt;br /&gt;
* Trinity bootsplash: Since ACPI works perfectly on my T41p I don't boot very often, but I made a really nice bootsplash:&lt;br /&gt;
&lt;br /&gt;
[[image:trinity_bootsplash_preview.jpg|Preview]]&lt;br /&gt;
&lt;br /&gt;
[http://eiszeit.blogdns.net/files/thinkpad/trinity.bmp Trinity Bootsplash only]&lt;br /&gt;
&lt;br /&gt;
[http://eiszeit.blogdns.net/files/thinkpad/trinity.tar.bz2 Trinity Package] image formats SVG, XCF, BMP&lt;br /&gt;
&lt;br /&gt;
* Schnappi bootsplash: Bow to the power of [http://folk.uio.no/igorr/t43/final.bmp Schnappi]. The BMP image compressed to about 6KB. Schni, schna, schnappi!&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problems_with_fglrx&amp;diff=20217</id>
		<title>Problems with fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problems_with_fglrx&amp;diff=20217"/>
		<updated>2006-02-18T19:46:32Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Hang when logging out */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page discusses issues with the ATI proprietary [[fglrx]] display driver.&lt;br /&gt;
&lt;br /&gt;
== Known Troubles and Solutions ==&lt;br /&gt;
&lt;br /&gt;
=== X-specific issues ===&lt;br /&gt;
&lt;br /&gt;
ATI proprietary drivers version 8.21.7 and later work with x.org 6.9.&lt;br /&gt;
&lt;br /&gt;
If you are running an older version (8.20.8) under Debian sid and you upgrade your xserver-xorg, apt will force you to remove any debian-packaged fglrx drivers (package fglrx-driver depends on x.org &amp;lt;&amp;lt; 6.8.99).  You can just download the driver from the ATI site and install after modifying the Debian packager script to allow dependencies to be satisfied by x.org 6.9, or just download 8.21.7 and install manually.  See talk page for step-by-step commands.&lt;br /&gt;
&lt;br /&gt;
After installing the fglrx driver, you can use module-assist to build the appropriate kernel module.&lt;br /&gt;
&lt;br /&gt;
=== Kernel-specific troubles ===&lt;br /&gt;
&lt;br /&gt;
Using ATI driver 8.21.7 and earlier with kernel 2.6.15 or later needs a [http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=113429835515001&amp;amp;w=2 patch].  (see table below for detail.) If you can't compile the driver modules with 2.6.15 or later, you should apply this [http://www.ksp.sk/~rasto/fglrx_with_2.6.15.patch patch] instead. &lt;br /&gt;
&lt;br /&gt;
If you do not use one of these patches, you may experience peculiar lockups of X.  Try {{cmduser|fglrxinfo}} - if your shell hangs at the end of this command, you may have an issue and should try the patch.&lt;br /&gt;
&lt;br /&gt;
Although unproven, there is a substantial amount of user / developer concern that the above patches prevent hard lockups but do not provide full reliability with 2.6.15 and there are larger / redisgn issues preventing compatibility.  It seems surprising that ATI would not have implemented such a simple page count fix in their latest two driver releases since kernel 2.6.15 has been available.  Given the closed-source nature of the driver, it is difficult to know for sure.  As of now only 2.6.14.x kernels are officially supported by the fglrx driver.&lt;br /&gt;
&lt;br /&gt;
=== No hardware acceleration ===&lt;br /&gt;
&lt;br /&gt;
====Acceleration lost after driver update====&lt;br /&gt;
If you lose hardware acceleration after a driver update this can be caused by an old fglrx kernel module being loaded.&lt;br /&gt;
&lt;br /&gt;
Check out {{path|1=/var/log/Xorg.0.log}} for a message like:&lt;br /&gt;
:&amp;lt;code&amp;gt;(WW) fglrx(0): Kernel Module version does *not* match driver.&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;(EE) fglrx(0): incompatible kernel module detected - HW accelerated OpenGL will not work&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can verify this yourself by looking at the version message some lines above. It should read something not matching the installed version like:&lt;br /&gt;
:&amp;lt;code&amp;gt;(II) fglrx(0): Kernel Module Version Information:&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;(II) fglrx(0):     Name: fglrx&amp;lt;/code&amp;gt;&lt;br /&gt;
:&amp;lt;code&amp;gt;(II) fglrx(0):     Version: 8.10.19&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The cause for this trouble might be that there resist multiple versions of the fglrx module within the kernel module search path.&amp;lt;br&amp;gt;&lt;br /&gt;
Go to {{path|1=/lib/modules/&amp;lt;your linux kernel version&amp;gt;/}} and type {{cmdroot|1=grep fglrx modules.dep}}.&amp;lt;br&amp;gt;&lt;br /&gt;
If grep finds multiple lines you nailed down the problem. All you have to do now is to delete any versions of the module (look at the filedate) but the most current one. Then run {{cmdroot|1=depmod}} and you are done.&lt;br /&gt;
&lt;br /&gt;
{{HINT|Newer versions (8.21.7) of the fglrx module seem to be installed in the &amp;lt;code&amp;gt;extra/&amp;lt;/code&amp;gt; subdirectory.&amp;lt;br&amp;gt;&lt;br /&gt;
Older versions (8.19.10) used to be located in the &amp;lt;code&amp;gt;kernel/drivers/char/drm/&amp;lt;/code&amp;gt; subdirectory.}}&lt;br /&gt;
&lt;br /&gt;
====GCC 3.4====&lt;br /&gt;
If the ATI driver works only without the hardware acceleration, take into consideration that {{path|fglrx_dri.so}} was linked against libstdc++.so.5 which may not be present if your system uses gcc-3.4.&lt;br /&gt;
&lt;br /&gt;
To fix this, compile gcc-3.3.5 and copy &amp;lt;tt&amp;gt;libstdc++.so.5*&amp;lt;/tt&amp;gt; to {{path|/usr/lib}} and update the dynamic linker cache via {{cmdroot|ldconfig}}.&lt;br /&gt;
&lt;br /&gt;
====radeonfb framebuffer====&lt;br /&gt;
Another possible cause for broken hardware acceleration (2D and 3D) is the radeonfb framebuffer: Switching to vesafb or vesafb-tng is reported to solve the problem on some systems. Also it has proven helpful to not perform {{cmdroot|modprobe fglrx}} after boot but to have the module loaded via {{path|/etc/modules.autoload/kernel2.x}} at boottime instead.&lt;br /&gt;
&lt;br /&gt;
=== Softlink hell ===&lt;br /&gt;
The [[fglrx]] installer replaces the standard X.org OpenGL implementation (Mesa) with its own files, potentially causing collisions with the distribution's file and package management. It is best to install the driver via a package built for your distribution, which will typically include the necessary kludges to make things work. See the [[fglrx]] page for pointers.&lt;br /&gt;
&lt;br /&gt;
====Discussion====&lt;br /&gt;
If using {{cmduser|fglrxinfo}} after installing [[fglrx]] indicates that you are still using the mesa indirect software GL renderer, you likely have some misplaced softlinks.  It seems like it has to do with an apt-get upgrade that sometimes replaces these links.  Anyway, go to&lt;br /&gt;
:{{cmdroot|cd /usr/X11R6/lib}}&lt;br /&gt;
and list your GL libraries and links&lt;br /&gt;
:{{cmdroot|ls -la *GL*}}&lt;br /&gt;
You should see something like the following two lines amoung others:&lt;br /&gt;
:{{cmdresult|libGL.so -&amp;gt; libGL.so.1.2}}&lt;br /&gt;
:{{cmdresult|libGL.so.1 -&amp;gt; libGL.so.1.2}}&lt;br /&gt;
If you see a link to a mesa library (something like {{cmdresult|... -&amp;gt; libGL.mesa.1.2}}), then that's your problem!  Restore the softlink like this (use your actual library version, though):&lt;br /&gt;
:{{cmdroot|ln -s libGL.so.1.2 libGL.so.1}}&lt;br /&gt;
&lt;br /&gt;
For some reason, this link might &amp;quot;break&amp;quot; later, giving you the software rendering once more.  Even after renaming the mesa library to something like &amp;lt;tt&amp;gt;mesa.bkup&amp;lt;/tt&amp;gt;, the system might still find it and link to it despite the name change.  If you have to do this a lot, you could write a restoreGL script.&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
{{Gentoo}} has built in tools for managing the OpenGL symlinks.  They seem to be replacing the old tool with a new one, so one of the following should work for you:&lt;br /&gt;
:{{cmdroot|opengl-update ati}} or&lt;br /&gt;
:{{cmdroot|eselect opengl set ati}}&lt;br /&gt;
Eselect is new, and still ~x86 (as of the end of 2005), so you may not have it yet.  &amp;lt;tt&amp;gt;opengl-update&amp;lt;/tt&amp;gt; is the old tried-and-true method for managing the symlinks.  If &amp;lt;tt&amp;gt;opengl-update&amp;lt;/tt&amp;gt; doesn't fix it for you, you should probably tell [http://bugs.gentoo.org Gentoo Bugzilla] (assuming they don't know yet).&lt;br /&gt;
&lt;br /&gt;
If {{cmdroot|ldd /usr/X11R6/bin/glxinfo}} shows that your system still uses the xorg-x11 mesa libs after trying one of the above commands, i.e. a line like this:&lt;br /&gt;
:{{cmdresult|1=libGL.so.1 =&amp;gt; /usr/lib/opengl/xorg-x11/lib/libGL.so.1 (0x400a8000)}}&lt;br /&gt;
you will also need to relink {{path|libGl.so.1.2}}:&lt;br /&gt;
:{{cmdroot|cd /usr/lib/opengl/xorg-x11/lib/}}&lt;br /&gt;
:{{cmdroot|mv libGL.so.1.2 libGL.so.1.2_backup}}&lt;br /&gt;
:{{cmdroot|ln -s /usr/lib/libGL.so.1.2 libGL.so.1.2}}&lt;br /&gt;
After another restart of X {{cmduser|fglrxinfo}} should show that it's using the right libs now.&lt;br /&gt;
&lt;br /&gt;
=== Troubles using software suspend ===&lt;br /&gt;
When the computer resumes from suspend, X only displays a garbled image and the computer is frozen.&lt;br /&gt;
The problem is acknowledged in ATI's release notes and in knowledge base entry &amp;lt;strike&amp;gt;[https://support.ati.com/ics/support/KBResult.asp?searchFor=Search+Words&amp;amp;search.x=0&amp;amp;search.y=0&amp;amp;searchOption=id&amp;amp;questionID=737-218+&amp;amp;task=knowledge&amp;amp;searchTime=-1&amp;amp;productID=&amp;amp;folderID=-1&amp;amp;resultLimit=50 737-218]&amp;lt;/strike&amp;gt; [https://support.ati.com/ics/support/KBAnswer.asp?questionID=218 737-218]. Driver version 8.19.10 has &amp;quot;initial support for Suspend and Resume&amp;quot; but is working very nicely for most people (verified on T43, T43p and T42) without vbetool.&lt;br /&gt;
&lt;br /&gt;
If you are using an older version of fglrx, using [http://www.srcf.ucam.org/~mjg59/vbetool/ vbetool] to save/restore the video card state before/after suspend worked for some people. If you use [[Software Suspend 2|Software Suspend 2 (suspend2)]] scripts, you can simply uncomment &amp;lt;tt&amp;gt;EnableVbetool yes&amp;lt;/tt&amp;gt; in {{path|/etc/hibernate/hibernate.conf}}. Be aware though that it breaks suspend/resume for drivers beginning with version 8.19.10, so remember to disable it again when upgrading.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ tested with the following configurations&lt;br /&gt;
!model!!distro||kernel!!fglrx!!PM!!success!!comments&lt;br /&gt;
|-&lt;br /&gt;
|{{T42}}||SUSE 9.3||2.6.11||8.14.13||swsusp||yes||&lt;br /&gt;
|-&lt;br /&gt;
|{{T41p}}||???||2.6.14||8.19.10||suspend2 2.2-rc9||yes||needs a small [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030381.html patch]&lt;br /&gt;
|-&lt;br /&gt;
|{{T42p}}||Debian||2.6.10||Debian packaged||suspend2||yes||&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||Debian sid||2.6.14.2||8.19.10||swsusp||yes||works perfectly with 8.19.10 (but not earlier versions!)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||Debian etch||2.6.14.2||8.19.10||swsusp||yes||works perfectly with 8.19.10 and without vbetool&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||Ubuntu Breezy||2.6.12-10||8.19.10||swsusp||yes||Perfect.  (Finally.)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.1||8.19.10||suspend2 2.2-rc9||yes||needs a small [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030381.html patch], requires DRI disabled in {{path|xorg.conf}} (hence no 3D acceleration)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.2||8.19.10||suspend2 2.2-rc11||yes||requires DRI disabled in {{path|xorg.conf}} (hence no 3D acceleration)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.3||8.19.10||suspend2 2.2-rc13||no||DRI enabled&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.3||8.20.8||suspend2 2.2-rc13||no||DRI enabled&lt;br /&gt;
|-&lt;br /&gt;
|{{R50p}}||???||???||8.19.10||swsusp||yes||&lt;br /&gt;
|-&lt;br /&gt;
|{{T43p}}||Debian sid||2.6.14||8.19.10||Suspend to RAM||yes||without vbetool or UseDummyXServer, those two ''break'' the resume process here, with DRI enabled&lt;br /&gt;
|-&lt;br /&gt;
|{{T43p}}||Debian sid||2.6.14.3||8.20.8||Suspend to RAM||yes||without vbetool or UseDummyXServer, with DRI enabled&lt;br /&gt;
|-&lt;br /&gt;
|{{R52}}||Debian sid||2.6.15-rc5||8.20.8||swsup||yes||both vbetool and UseDummyXServer disabled, DRI enabled, needs [http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=113429835515001&amp;amp;w=2 patch]&lt;br /&gt;
|-&lt;br /&gt;
|{{T43p}}||Gentoo||[http://packages.gentoo.org/ebuilds/?suspend2-sources-2.6.15-r6 2.6.15]||8.22.5||Suspend to RAM||yes||without vbetool or UseDummyXServer, with DRI enabled - console is garbled until switching back from X&lt;br /&gt;
|-&lt;br /&gt;
|{{T43p}}||Gentoo||[http://packages.gentoo.org/ebuilds/?suspend2-sources-2.6.15-r6 2.6.15]||8.22.5||suspend2 2.2||yes||without vbetool or UseDummyXServer, with DRI enabled&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Troubles with large RAM ===&lt;br /&gt;
Version 8.14.13 (and probably earlier versions) of the driver does not seem to be able to cope with large amounts of RAM: with 512 MB it works, with 1.5 GB it crashes the machine as soon as X is started. The problem is present only if the &amp;lt;tt&amp;gt;fglrx&amp;lt;/tt&amp;gt; kernel module is loaded, but independently of whether {{kernelconf|CONFIG_HIGHMEM||||||}} is enabled. A workaround is to limit RAM by adding the {{bootparm|mem|864m}} kernel parameter.&lt;br /&gt;
&lt;br /&gt;
Version 8.16.20 fixes the problem.&lt;br /&gt;
&lt;br /&gt;
===Display switching ===&lt;br /&gt;
The switching between internal and external display doesn't work, because the driver blocks messing around with the chipset via ACPI. If you want to use this feature (i.e. during presentations), you should use the &amp;lt;tt&amp;gt;vesa&amp;lt;/tt&amp;gt; server instead (experienced with a R52, Kernel 2.6.11, xorg 6.8.2, fglrx 8.16.20).&lt;br /&gt;
&lt;br /&gt;
===Composite Support===&lt;br /&gt;
ATI has not officially supported composite windowing (alpha channel) enabling hardware acclerated translucent windows (primarily for 'eye candy.')  Enabling Composite in KDE and the fglrx driver results in a very pretty desktop but unacceptably slow performance on a T43p with ATI's FireGL T2.  It is still unusable in its current state (as of driver 8.19.10).&lt;br /&gt;
&lt;br /&gt;
ATI promises support in the future when composite is officially supported by Xorg.  Discussion of current status of drivers can be found in the Rage3d forums' (rage3d.com/board) Linux area.&lt;br /&gt;
&lt;br /&gt;
There were some rumors that composite support was fast with the open-source 2d accelerated drivers in x.org 6.9 (as opposed to 6.8.x).  Alas, trying this gives better results than the proprietary drivers, but it is still too slow to be reasonably useful.&lt;br /&gt;
&lt;br /&gt;
===Hardlock on X logout===&lt;br /&gt;
Up from driver version 8.19.10 you will expierence a system hard lock when logging out from X, if the session manager (kdm/gdm) is not properly configured. You have to tell the session manager to restart X.&lt;br /&gt;
&lt;br /&gt;
In the kdm config file (gentoo: {{path|/usr/kde/&amp;lt;VERSION&amp;gt;/share/config/kdm/kdmrc}}) you have to add following to the section &amp;lt;code&amp;gt;[X-:*-Core]&amp;lt;/code&amp;gt;: &lt;br /&gt;
 TerminateServer=true&lt;br /&gt;
&lt;br /&gt;
In the gdm config file add:&lt;br /&gt;
 AlwaysRestartServer=true&lt;br /&gt;
&lt;br /&gt;
Information from the ATI bugtracker: http://ati.cchtml.com/show_bug.cgi?id=239&lt;br /&gt;
&lt;br /&gt;
===Error messages in system log===&lt;br /&gt;
&lt;br /&gt;
If you find something like the following in {{path|/var/log/messages}}:&lt;br /&gt;
&lt;br /&gt;
:{{cmdresult|kernel: mtrr: base(0xc0000000) is not aligned on a size(0x7ff0000) boundary}}&lt;br /&gt;
:{{cmdresult|kernel: [fglrx:firegl_addmap] *ERROR* mtrr allocation failed (-22)}}&lt;br /&gt;
:{{cmdresult|kernel: [fglrx:firegl_unlock] *ERROR* Process 5132 using kernel context 0}}&lt;br /&gt;
&lt;br /&gt;
try to execute the following line and reload the fglrx module:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|1=echo &amp;quot;base=0xd0000000 size=0x8000000 type=write-combining&amp;quot; &amp;gt; /proc/mtrr}}&lt;br /&gt;
&lt;br /&gt;
More detailed instructions can be found [http://ubuntuforums.org/showthread.php?t=115104 here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===No power saving when CRT in use===&lt;br /&gt;
&lt;br /&gt;
When both CRT and LCD are in use, power saving cannot be enabled.&lt;br /&gt;
&lt;br /&gt;
This is reported here: http://ati.cchtml.com/show_bug.cgi?id=304&lt;br /&gt;
&lt;br /&gt;
== Patches ==&lt;br /&gt;
The following patches might be needed for certain versions of fglrx.&lt;br /&gt;
&lt;br /&gt;
===fglrx 8.21.7===&lt;br /&gt;
&lt;br /&gt;
* [http://www.ksp.sk/~rasto/fglrx_with_2.6.15.patch for kernels &amp;gt;= 2.6.15]&lt;br /&gt;
&lt;br /&gt;
===fglrx 8.20.8===&lt;br /&gt;
&lt;br /&gt;
* [http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=113429835515001&amp;amp;w=2 for kernel 2.6.15]&lt;br /&gt;
or&lt;br /&gt;
* [http://www.ksp.sk/~rasto/fglrx_with_2.6.15.patch for kernels &amp;gt;= 2.6.15]&lt;br /&gt;
&lt;br /&gt;
===fglrx (problem met at least with version 8.18.8)===&lt;br /&gt;
* [http://lkml.org/lkml/2005/9/22/183 for kernel &amp;gt;= 2.6.13 ]  Missing verify_area bug&lt;br /&gt;
&lt;br /&gt;
===fglrx 8.8.25 ===&lt;br /&gt;
* [http://www.rage3d.com/board/showthread.php?t=33798874 for kernels &amp;gt;= 2.6.10]&lt;br /&gt;
* [http://www.gehirn.org.uk/wiki/images/8.8.25-kernel-2.6.11+.patch For kernels &amp;gt;= 2.6.11-rc1]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_change_the_BIOS_bootsplash_screen&amp;diff=19128</id>
		<title>How to change the BIOS bootsplash screen</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_change_the_BIOS_bootsplash_screen&amp;diff=19128"/>
		<updated>2006-01-29T13:49:04Z</updated>

		<summary type="html">&lt;p&gt;Hothead: &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;
&amp;lt;div style=&amp;quot;margin: 0; margin-right:10px; border: 1px solid #dfdfdf; padding: 0em 1em 1em 1em; background-color:#efefef; align:right;&amp;quot;&amp;gt;&lt;br /&gt;
This page describes how to replace the standard IBM BIOS Bootsplash (The one with the ThinkPad- and Pentium M-Logo), without access to Microsoft Windows or a floppy drive.&lt;br /&gt;
&lt;br /&gt;
Windows users who want to have a custom splash image when they start up should try [[How to change the BIOS bootsplash screen (under Windows) | this guide]] instead.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
== Getting the Files ==&lt;br /&gt;
You'll need the bios upgrade file from the IBM website.&lt;br /&gt;
&lt;br /&gt;
=== Method 1: Using a Non-Diskette-File and cabextract ===&lt;br /&gt;
&lt;br /&gt;
For ThinkPads {{R50}}, {{R50p}}, {{R51}} (1829, 1830, 1831, 1836), {{R52}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}} this file is suitable:&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj28us.exe 1ruj28us.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj29us.exe 1ruj29us.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30us.exe 1ruj30us.exe] Released 2005-05-26 '''NEW!'''&lt;br /&gt;
There may be a more recent file on the IBM website.&lt;br /&gt;
&lt;br /&gt;
Last version at 2006-01-04 :&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj33us.exe 1ruj33us.exe] Released 2005-10-25 '''NEW!'''&lt;br /&gt;
&lt;br /&gt;
You need the cabextract tool to extract files from the exe:&lt;br /&gt;
:{{cmdroot|apt-get install cabextract}}&lt;br /&gt;
&lt;br /&gt;
Do this to get the ibm file and extract the disk image from it:&lt;br /&gt;
:{{cmdroot|cd /tmp}}&lt;br /&gt;
:{{cmdroot|wget ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30us.exe}}&lt;br /&gt;
:{{cmdroot|cabextract -F *.IMG 1ruj30us.exe}}&lt;br /&gt;
:{{cmdroot|mv 1RUJ30US.IMG floppy.bin}}&lt;br /&gt;
&lt;br /&gt;
=== Method 2: Using a Diskette-File and dosemu ===&lt;br /&gt;
Another option is to use the &amp;quot;Diskette BIOS file&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
For ThinkPads {{R50}}, {{R50p}}, {{R51}} (1829, 1830, 1831, 1836), {{R52}}, {{T40}}, {{T40p}}, {{T41}}, {{T41p}}, {{T42}}, {{T42p}}, {{T43}}, {{T43p}} this file is suitable:&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj28ud.exe 1ruj28ud.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj29ud.exe 1ruj29ud.exe]&lt;br /&gt;
* [ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/1ruj30ud.exe 1ruj30ud.exe] Released 2005-05-26 '''NEW!'''&lt;br /&gt;
&lt;br /&gt;
The file is an OS/2 executables and don't run with wine, so you need to install dosemu to run it and create the image.&amp;lt;br&amp;gt;&lt;br /&gt;
:{{cmdroot|apt-get install dosemu dosemu-freedos}}&lt;br /&gt;
(for non-debian-users: Get dosemu and freedos somewhere and make it work somehow).&lt;br /&gt;
&lt;br /&gt;
With dosemu, you can run this executable, but this program unfortunately&lt;br /&gt;
needs a floppy drive to write to. So use the loopback device, to create a virtual floppy. &lt;br /&gt;
:{{cmdroot|1=dd if=/dev/zero of=/tmp/floppy.bin bs=1024 count=1440}}&lt;br /&gt;
:{{cmdroot|losetup /dev/loop0 /tmp/floppy.bin}}&lt;br /&gt;
Put this block device ({{path|/dev/loop0}}) into the dosemu configuration as the floppy disk device. &lt;br /&gt;
Now you can run the extractor executable, which makes {{path|/tmp/floppy.bin}} the desired floppy image .&lt;br /&gt;
:{{cmdroot|dosemu 1ruj27ud.exe}}&lt;br /&gt;
:{{cmdroot|losetup -d /dev/loop0}}&lt;br /&gt;
&lt;br /&gt;
For 2.6.12+ if you have dosemu error:&lt;br /&gt;
:{{cmdroot|echo 0 &amp;gt; /proc/sys/kernel/randomize_va_space}}&lt;br /&gt;
&lt;br /&gt;
== Adding the custom image ==&lt;br /&gt;
Mount your floppy.bin as a loopback device.&lt;br /&gt;
:{{cmdroot|mkdir /tmp/mnt}}&lt;br /&gt;
:{{cmdroot|1=mount -o loop,umask=000 /tmp/floppy.bin /tmp/mnt}}&lt;br /&gt;
Create a 16 color 640x480 BMP (4 Bit/pixel) (for example with Gimp) and save it to {{path|/tmp/mnt/logo.bmp}}.&lt;br /&gt;
You could use this tux image ([http://www.thinkwiki.org/files/LOGO.BMP logo.bmp], [http://www.thinkwiki.org/files/LOGO.MOD logo.mod]) for example.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
When creating your image, keep in mind that on the T43p (and others??), regardless of your custom bootsplash screen there will be a superimposed black &amp;quot;Centrino&amp;quot; logo (~100x100 pixels) on the upper right of your display, so you might want to keep that area clear.  You might also want to reserve the bottom 150 pixels for the &amp;quot;boot options&amp;quot; / &amp;quot;Entering BIOS setup&amp;quot; message(s) too, which will also be displayed.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Now prepare the image with &amp;lt;tt&amp;gt;prepare.exe&amp;lt;/tt&amp;gt; using wine: (This does not work with dosemu!)&lt;br /&gt;
:{{cmdroot|wine prepare.exe logo.scr}}&lt;br /&gt;
The image must compress to &amp;lt;10k.  If you receive an error, you can try reducing the number of colors in your image palette (step down to an 12 or 8 color palette for a very significant reduction in image size.)  When successful, there should be a new {{path|logo.mod}} and your {{path|logo.bmp}}. If so, you are set, don't forget to unmount your loopback device:&lt;br /&gt;
:{{cmdroot|umount /tmp/mnt}}&lt;br /&gt;
&lt;br /&gt;
== Fake a floppy ==&lt;br /&gt;
Now you need to put the image on a floppy and boot from it. Since recent ThinkPads don't have a&lt;br /&gt;
floppy drive, we can use a CD-R (or a CD-RW, actually, for the cheap ones, like me) and burn it with the following command:&lt;br /&gt;
:{{cmdroot|1=mkisofs -b floppy.bin floppy.bin &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; cdrecord dev=&amp;lt;device&amp;gt; - }}&lt;br /&gt;
(&amp;lt;tt&amp;gt;&amp;lt;device&amp;gt;&amp;lt;/tt&amp;gt; being your cd writer device)&lt;br /&gt;
&lt;br /&gt;
== The exciting part ==&lt;br /&gt;
After this worked, reboot your ThinkPad from the cdrom by pressing F12 while booting &lt;br /&gt;
and wait for the IBM tool to start. &lt;br /&gt;
Be sure to have your ThinkPad on AC power and say ''Yes'' to the questions the BIOS Upgrade Tool asks.&lt;br /&gt;
It will then flash the BIOS, which will take about a minute. &lt;br /&gt;
&lt;br /&gt;
Suddenly the laptop turns itself off with two beeps.&lt;br /&gt;
When booting, you'll have your bootsplash picture.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, you won't see it really long, but it's better&lt;br /&gt;
than the standard one, so it was worth the action.&lt;br /&gt;
&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
BTW next time you have to flash the BIOS the IBM BIOS updater will detect a custom boot splash and ask you if you want to preserve it or restore the original.&lt;br /&gt;
&lt;br /&gt;
== Share your custom bootsplash image ==&lt;br /&gt;
If you've created your own bootsplash image and want to share it with other you can post it here.&lt;br /&gt;
&lt;br /&gt;
Since ACPI works perfectly on my T41p I don't boot very often, but I made a really nice bootsplash:&lt;br /&gt;
&lt;br /&gt;
[[image:trinity_bootsplash_preview.jpg|Preview]]&lt;br /&gt;
&lt;br /&gt;
[http://eiszeit.blogdns.net/files/thinkpad/trinity.bmp Trinity Bootsplash only]&lt;br /&gt;
&lt;br /&gt;
[http://eiszeit.blogdns.net/files/thinkpad/trinity.tar.bz2 Trinity Package] image formats SVG, XCF, BMP&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=File:Trinity_bootsplash_preview.jpg&amp;diff=19127</id>
		<title>File:Trinity bootsplash preview.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=File:Trinity_bootsplash_preview.jpg&amp;diff=19127"/>
		<updated>2006-01-29T13:39:08Z</updated>

		<summary type="html">&lt;p&gt;Hothead: This is a preview for an alternate bootsplash called Trinity .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a preview for an alternate bootsplash called Trinity .&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Memory&amp;diff=19039</id>
		<title>Memory</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Memory&amp;diff=19039"/>
		<updated>2006-01-27T13:42:05Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* General information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=General information=&lt;br /&gt;
A variety of memory (RAM) types have been used.&lt;br /&gt;
&lt;br /&gt;
IBM provides [http://www-306.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-53166 instructions] for memory removal and installation.&lt;br /&gt;
&lt;br /&gt;
For more information on RAM, have a look at the [[:WikiPedia:Random access memory|WikiPedia RAM article]]&lt;br /&gt;
&lt;br /&gt;
==DRAM==&lt;br /&gt;
* IC DRAM Card Non-Parity&lt;br /&gt;
* IC DRAM Card Parity&lt;br /&gt;
'''JEDEC 72-pin SO-DIMM'''&lt;br /&gt;
* 70ns Non-Parity&lt;br /&gt;
* 70ns Parity&lt;br /&gt;
'''JEDEC 144-pin EDO SO-DIMM'''&lt;br /&gt;
* [[EDO 70ns]]&lt;br /&gt;
* [[EDO 60ns]]&lt;br /&gt;
&lt;br /&gt;
==SDRAM==&lt;br /&gt;
* [[PC-66]]&lt;br /&gt;
* [[PC-100]]&lt;br /&gt;
* [[PC-133]]&lt;br /&gt;
==DDR==&lt;br /&gt;
* [[PC2100]]&lt;br /&gt;
* [[PC2700]]&lt;br /&gt;
==DDR2==&lt;br /&gt;
* [[PC2-4200]]&lt;br /&gt;
* [[PC2-5300]]&lt;br /&gt;
[[Category:Components]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=18464</id>
		<title>HDAPS</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=HDAPS&amp;diff=18464"/>
		<updated>2006-01-18T23:35:14Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Security &amp;amp; Safety */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== HDAPS - IBM Active Protection System Linux Driver ==&lt;br /&gt;
This is the Linux driver for the [[Active Protection System|IBM Active Protection System]].&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
*prints accelerometer values&lt;br /&gt;
*uses userspace tool to park HD&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).&lt;br /&gt;
&lt;br /&gt;
=== Status ===&lt;br /&gt;
A driver is included in recent Linux kernels and is actively maintained. However, presently the driver only enables reading of the acceleration data; it does '''not''' perform automatic disk head parking. The latter feature is under development. But there are already some useful applications for HDAPS, using the {{path|/sys}} interface it provides. See below.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
====Security &amp;amp; Safety====&lt;br /&gt;
*[http://lwn.net/Articles/154923/ disk park patch] &amp;lt;tt&amp;gt;an experimental patch for parking the disk&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 libsata 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 libsata support)&amp;lt;/tt&amp;gt;&lt;br /&gt;
*[http://www.dresco.co.uk/hdaps Updated sata/ide disk protection patches for 2.6.15]&lt;br /&gt;
*[[Script for theft alarm using HDAPS]]&lt;br /&gt;
&lt;br /&gt;
====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====&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;
=== 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=100167 Gentoo ebuild for hdaps driver and daemon including a initscript&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:X40]] [[Category:X41]] [[Category:X41 Tablet]] [[Category:Drivers]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_configure_the_TrackPoint&amp;diff=18247</id>
		<title>How to configure the TrackPoint</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_configure_the_TrackPoint&amp;diff=18247"/>
		<updated>2006-01-17T16:12:33Z</updated>

		<summary type="html">&lt;p&gt;Hothead: &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; |The [[Patch to enable advanced trackpoint configuration|kernel trackpoint driver]] is controlled by echoing values to special files. Common configuration options are outlined below.&lt;br /&gt;
{{NOTE|&lt;br /&gt;
*Starting from 2.6.13 config files for this driver are located in &amp;lt;tt&amp;gt;/sys/devices/platform/i8042/serio0/serio2&amp;lt;/tt&amp;gt;. (This document uses the new locations.)&lt;br /&gt;
*From 2.6.11 on, they are in &amp;lt;tt&amp;gt;/sys/devices/platform/i8042/serio0&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Prior to kernel 2.6.11, these files were located in &amp;lt;tt&amp;gt;/proc/trackpoint&amp;lt;/tt&amp;gt;.&lt;br /&gt;
*Prior to kernel 2.6.9, these files were not files at all, but were command-line options to the psmouse module.  (Note this means you must compile psmouse as a module!)  See http://stephen.evanchik.com/node/16.&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==General Configuration==&lt;br /&gt;
The configuration options are reflected by the files you can find in {{path|/sys/devices/platform/i8042/serio0/serio2}}. See the [[Patch to enable advanced trackpoint configuration|TrackPoint driver page]] for a complete list.&lt;br /&gt;
Configuration is done by echoing the appropriate values into these special files.&lt;br /&gt;
&lt;br /&gt;
==Most common Features==&lt;br /&gt;
The most common settings are '''Press to Select''', '''sensitivity''', '''speed''' and '''scrolling'''.&lt;br /&gt;
&lt;br /&gt;
===Press to Select===&lt;br /&gt;
Press to Select allows you to tap the control stick which will simulate a left click. You can enable this feature by typing the following in to a terminal (you may need to be root):&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 1 &amp;gt; /sys/devices/platform/i8042/serio0/serio2/press_to_select}}&lt;br /&gt;
&lt;br /&gt;
Press to Select should now be enabled. You can disable it in a similar manner:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 0 &amp;gt; /sys/devices/platform/i8042/serio0/serio2/press_to_select}}&lt;br /&gt;
&lt;br /&gt;
===Sensitivity &amp;amp; Speed===&lt;br /&gt;
Adjusting the speed and sensitivity of the TrackPoint requires echoing a value between 0 and 255 into the appropriate file. For example, for a speed of 120 and a sensitivity of 250, type the following into a terminal:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 120 &amp;gt; /sys/devices/platform/i8042/serio0/serio2/speed}}&lt;br /&gt;
:{{cmdroot|echo -n 250 &amp;gt; /sys/devices/platform/i8042/serio0/serio2/sensitivity}}&lt;br /&gt;
&lt;br /&gt;
Feel free to experiment with your settings until you find a combination that is comfortable.&lt;br /&gt;
&lt;br /&gt;
===Scrolling===&lt;br /&gt;
====Using a kernel prior to 2.6.11====&lt;br /&gt;
The scrolling action is essentially the same as is used in the TrackPoint Windows drivers. To enable this feature, type the following in to a terminal (you may need to be root): &lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 1 &amp;gt; /proc/trackpoint/scroll}}&lt;br /&gt;
&lt;br /&gt;
Then press the middle button and push the stick up and down to scroll. Similarly, to disable scrolling:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 0 &amp;gt; /proc/trackpoint/scroll}}&lt;br /&gt;
&lt;br /&gt;
====Using the X server (kernel 2.6.11+)====&lt;br /&gt;
The scroll setting has been removed from the trackpoint driver in kernel versions 2.6.11 and above. Scroll emulation should now be handled in the X server.&lt;br /&gt;
&lt;br /&gt;
The necessary functionality, allowing to use button 2 for a middle click, wasn't implemented in Xorg prior to 6.9/7.0. However, there is a patch included in most distributions packages of Xorg, which was announced [http://www.mail-archive.com/devel@xfree86.org/msg03333.html here]. You can find an updated version of the package in the experimental branch of {{Debian}} or try to build the mouse driver yourself with the information in the announcement. This has successfully been tried with FC3's 6.8.2 packages.&lt;br /&gt;
&lt;br /&gt;
Once you have applied the patch or updated to Xorg 6.9/7.0, add these lines to your TrackPoint configuration section in {{path|/etc/X11/xorg.conf}}:&lt;br /&gt;
&lt;br /&gt;
        Option          &amp;quot;EmulateWheel&amp;quot;          &amp;quot;on&amp;quot;&lt;br /&gt;
        Option          &amp;quot;EmulateWheelButton&amp;quot;    &amp;quot;2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now restart X and hold down button 2 and move the mouse to scroll, or just press and release button 2 for a middle click.&lt;br /&gt;
&lt;br /&gt;
For older versions of Xorg or for Xfree86 ({{path|/etc/X11/XF86Config}}) try this:&lt;br /&gt;
&lt;br /&gt;
       Option          &amp;quot;Emulate3Buttons&amp;quot;       &amp;quot;true&amp;quot;&lt;br /&gt;
       Option          &amp;quot;EmulateWheel&amp;quot;          &amp;quot;true&amp;quot;&lt;br /&gt;
       Option          &amp;quot;EmulateWheelButton&amp;quot;    &amp;quot;2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now restart X and hold down button two and move the mouse for scrolling. To get a middle click, press buttons 1 and 3 simultaneously.&lt;br /&gt;
&lt;br /&gt;
==Soft Transparent Mode==&lt;br /&gt;
If you wish to connect a special device to the external PS/2 port, you should consider using &amp;quot;Soft Transparent Mode&amp;quot; so that the TrackPoint controller does not interpret any commands sent to the external PS/2 port. You can enable soft transparent mode by typing the following in to a terminal:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 1 &amp;gt; /sys/devices/platform/i8042/serio0/serio2/transparent}}&lt;br /&gt;
&lt;br /&gt;
Disabling soft transparent mode is similar:&lt;br /&gt;
&lt;br /&gt;
:{{cmdroot|echo -n 0 &amp;gt; /sys/devices/platform/i8042/serio0/serio2/transparent}}&lt;br /&gt;
&lt;br /&gt;
==Modify trackpoint parameter permanently in trackpoint.h==&lt;br /&gt;
If you do not want to run a script to reconfigure the trackpoint&lt;br /&gt;
you can change the default settings in the trackpoint header file that is located in&lt;br /&gt;
 /usr/src/&amp;lt;KERNEL_VERSION&amp;gt;/drivers/input/mouse/trackpoint.h.&lt;br /&gt;
&lt;br /&gt;
First you must convert the values (decimal numbers) you normaly echo to /sys/[...] to hex:&lt;br /&gt;
&lt;br /&gt;
'''echo -e 'obase=16;&amp;lt;DECIMAL_NUMBER&amp;gt;' | bc'''&lt;br /&gt;
&lt;br /&gt;
Then simply replace the default hex values in trackpoint.h, run 'make &amp;amp;&amp;amp; make modules_install' to recompile and install psmouse.ko (should be compiled as module)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example patch (speed=100, sensitivity=190, press_to_select=1):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 --- trackpoint.h.orig   2006-01-17 16:18:30.000000000 +0100&lt;br /&gt;
+++ trackpoint.h        2006-01-17 16:25:47.000000000 +0100&lt;br /&gt;
@@ -108,9 +108,9 @@&lt;br /&gt;
 /*&lt;br /&gt;
  * Default power on values&lt;br /&gt;
  */&lt;br /&gt;
-#define TP_DEF_SENS            0x80&lt;br /&gt;
+#define TP_DEF_SENS            0xBE&lt;br /&gt;
 #define TP_DEF_INERTIA         0x06&lt;br /&gt;
-#define TP_DEF_SPEED           0x61&lt;br /&gt;
+#define TP_DEF_SPEED           0x64&lt;br /&gt;
 #define TP_DEF_REACH           0x0A&lt;br /&gt;
&lt;br /&gt;
 #define TP_DEF_DRAGHYS         0xFF&lt;br /&gt;
@@ -123,7 +123,7 @@&lt;br /&gt;
&lt;br /&gt;
 /* Toggles */&lt;br /&gt;
 #define TP_DEF_MB              0x00&lt;br /&gt;
-#define TP_DEF_PTSON           0x00&lt;br /&gt;
+#define TP_DEF_PTSON           0x01&lt;br /&gt;
 #define TP_DEF_SKIPBACK                0x00&lt;br /&gt;
 #define TP_DEF_EXT_DEV         0x01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Problems_with_fglrx&amp;diff=14244</id>
		<title>Problems with fglrx</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Problems_with_fglrx&amp;diff=14244"/>
		<updated>2006-01-05T23:14:24Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Known Troubles and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page discusses issues with the ATI proprietary [[fglrx]] display driver.&lt;br /&gt;
&lt;br /&gt;
== Known Troubles and Solutions ==&lt;br /&gt;
&lt;br /&gt;
=== Kernel-specific troubles ===&lt;br /&gt;
&lt;br /&gt;
Using the current ATI driver (8.20.8) with the current release candidate 2.6.15-rc5 needs a [http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=113429835515001&amp;amp;w=2 patch]. (info stolen from the table below, but put here for better visibility)&lt;br /&gt;
&lt;br /&gt;
=== No hardware acceleration ===&lt;br /&gt;
If the ATI driver works only without the hardware acceleration, take into consideration that {{path|fglrx_dri.so}} was linked against libstdc++.so.5 which may not be present if your system uses gcc-3.4.&lt;br /&gt;
&lt;br /&gt;
To fix this, compile gcc-3.3.5 and copy &amp;lt;tt&amp;gt;libstdc++.so.5*&amp;lt;/tt&amp;gt; to {{path|/usr/lib}} and update the dynamic linker cache via {{cmdroot|ldconfig}}.&lt;br /&gt;
&lt;br /&gt;
Another possible cause for broken hardware acceleration (2D and 3D) is the radeonfb framebuffer: Switching to vesafb or vesafb-tng is reported to solve the problem on some systems. Also it has proven helpful to not perform {{cmdroot|modprobe fglrx}} after boot but to have the module loaded via {{path|/etc/modules.autoload/kernel2.x}} at boottime instead.&lt;br /&gt;
&lt;br /&gt;
=== Softlink hell ===&lt;br /&gt;
&lt;br /&gt;
The [[fglrx]] installer replaces the standard X.org OpenGL implementation (Mesa) with its own files, potentially causing collisions with the distribution's file and package management. It is best to install the driver via a package built for your distribution, which will typically include the necessary kludges to make things work. See the [[fglrx]] page for pointers.&lt;br /&gt;
&lt;br /&gt;
====Discussion====&lt;br /&gt;
&lt;br /&gt;
If you install the driver and type &amp;quot;fglrxinfo&amp;quot; which shows you are still using the mesa indirect software GL renderer, you likely have some misplaced softlinks.  I find this *really* frustrating, and do not know why it occasionally occurs -&amp;gt; I think it has to do with an apt-get upgrade that sometimes replaces these links.  Anyway, go to&lt;br /&gt;
&lt;br /&gt;
: cd /usr/X11R6/lib&lt;br /&gt;
&lt;br /&gt;
and list your GL libraries and links&lt;br /&gt;
&lt;br /&gt;
: ls -la *GL*&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
: libGL.so -&amp;gt; libGL.so.1.2&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
: libGL.so.1 -&amp;gt; libGL.so.1.2&lt;br /&gt;
&lt;br /&gt;
If you see a link to a mesa library (something like -&amp;gt;libGL.mesa.1.2), then that's your problem!  Restore the softlink with a command similar to:&lt;br /&gt;
: ln -s &amp;lt;actual file&amp;gt; &amp;lt;softlink name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
: ln -s libGL.so.1.2 libGL.so.1&lt;br /&gt;
&lt;br /&gt;
For some reason, this link might &amp;quot;break&amp;quot; later, giving you the software rendering once more.  I renamed the mesa library to mesa.bkup, and the system still found it and linked to it despite the name change.  If you have to do this a lot, you could write a restoreGL script...&lt;br /&gt;
&lt;br /&gt;
=====Gentoo=====&lt;br /&gt;
I did the above steps with no luck but it's working now so read on:&lt;br /&gt;
&lt;br /&gt;
Because&lt;br /&gt;
: ldd /usr/X11R6/bin/glxinfo&lt;br /&gt;
showed that my system still uses the xorg-x11 mesa think and the above hint didn't work as expected I looked at this:&lt;br /&gt;
: libGL.so.1 =&amp;gt; /usr/lib/opengl/xorg-x11/lib/libGL.so.1 (0x400a8000)&lt;br /&gt;
Afterwards I did:&lt;br /&gt;
: cd /usr/lib/opengl/xorg-x11/lib/&lt;br /&gt;
: mv libGL.so.1.2 libGL.so.1.2_backup&lt;br /&gt;
: ln -s /usr/lib/libGL.so.1.2 libGL.so.1.2&lt;br /&gt;
After another restart of X &amp;quot;fglrxinfo&amp;quot; showed that it's using the right libs now.&lt;br /&gt;
&lt;br /&gt;
=====Alternative for Gentoo=====&lt;br /&gt;
Gentoo has built in tools for managing the OpenGL symlinks.  They seem to be replacing the old tool with a new one, so one of the following should work for you:&lt;br /&gt;
&lt;br /&gt;
: # opengl-update ati&lt;br /&gt;
: # eselect opengl set ati&lt;br /&gt;
&lt;br /&gt;
Eselect is new, and still ~x86(as of the end of 2005), so you may not have it yet.  opengl-update is the old tried-and-true method for managing the symlinks.  If opengl-update doesn't fix it for you, you should probably tell [http://bugs.gentoo.org Gentoo Bugzilla](assuming they don't know yet)&lt;br /&gt;
&lt;br /&gt;
=== Troubles using software suspend ===&lt;br /&gt;
When the computer resumes from suspend, X only displays a garbled image and the computer is frozen.&lt;br /&gt;
The problem is acknowledged in ATI's release notes and in knowledge base entry [https://support.ati.com/ics/support/KBResult.asp?searchFor=Search+Words&amp;amp;search.x=0&amp;amp;search.y=0&amp;amp;searchOption=id&amp;amp;questionID=737-218+&amp;amp;task=knowledge&amp;amp;searchTime=-1&amp;amp;productID=&amp;amp;folderID=-1&amp;amp;resultLimit=50 737-218]. Driver version 8.19.10 has &amp;quot;initial support for Suspend and Resume&amp;quot; but is working very nicely for most people (verified on T43, T43p and T42) without vbetool.&lt;br /&gt;
&lt;br /&gt;
If you are using an older version of fglrx, using [http://www.srcf.ucam.org/~mjg59/vbetool/ vbetool] to save/restore the video card state before/after suspend worked for some people. If you use [[Software Suspend 2|Software Suspend 2 (suspend2)]] scripts, you can simply uncomment &amp;lt;tt&amp;gt;EnableVbetool yes&amp;lt;/tt&amp;gt; in {{path|/etc/hibernate/hibernate.conf}}. Be aware though that it breaks suspend/resume for drivers beginning with version 8.19.10, so remember to disable it again when upgrading.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ tested with the following configurations&lt;br /&gt;
!model!!distro||kernel!!fglrx!!PM!!success!!comments&lt;br /&gt;
|-&lt;br /&gt;
|{{T42}}||SUSE 9.3||2.6.11||8.14.13||swsusp||yes||&lt;br /&gt;
|-&lt;br /&gt;
|{{T41p}}||???||2.6.14||8.19.10||suspend2 2.2-rc9||yes||needs a small [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030381.html patch]&lt;br /&gt;
|-&lt;br /&gt;
|{{T42p}}||Debian||2.6.10||Debian packaged||suspend2||yes||&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||Debian sid||2.6.14.2||8.19.10||swsusp||yes||works perfectly with 8.19.10 (but not earlier versions!)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||Debian etch||2.6.14.2||8.19.10||swsusp||yes||works perfectly with 8.19.10 and without vbetool&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||Ubuntu Breezy||2.6.12-10||8.19.10||swsusp||yes||Perfect.  (Finally.)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.1||8.19.10||suspend2 2.2-rc9||yes||needs a small [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-November/030381.html patch], requires DRI disabled in {{path|xorg.conf}} (hence no 3D acceleration)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.2||8.19.10||suspend2 2.2-rc11||yes||requires DRI disabled in {{path|xorg.conf}} (hence no 3D acceleration)&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.3||8.19.10||suspend2 2.2-rc13||no||DRI enabled&lt;br /&gt;
|-&lt;br /&gt;
|{{T43}}||FC4||2.6.14.3||8.20.8||suspend2 2.2-rc13||no||DRI enabled&lt;br /&gt;
|-&lt;br /&gt;
|{{R50p}}||???||???||8.19.10||swsusp||yes||&lt;br /&gt;
|-&lt;br /&gt;
|{{T43p}}||Debian sid||2.6.14||8.19.10||Suspend to RAM||yes||without vbetool or UseDummyXServer, those two ''break'' the resume process here, with DRI enabled&lt;br /&gt;
TerminateServer=true&lt;br /&gt;
TerminateServer=true&lt;br /&gt;
|-&lt;br /&gt;
|{{T43p}}||Debian sid||2.6.14.3||8.20.8||Suspend to RAM||yes||without vbetool or UseDummyXServer, with DRI enabled&lt;br /&gt;
|-&lt;br /&gt;
|{{R52}}||Debian sid||2.6.15-rc5||8.20.8||swsup||yes||both vbetool and UseDummyXServer disabled, DRI enabled, needs [http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=113429835515001&amp;amp;w=2 patch]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Troubles with large RAM ===&lt;br /&gt;
Version 8.14.13 (and probably earlier versions) of the driver does not seem to be able to cope with large amounts of RAM: with 512 MB it works, with 1.5 GB it crashes the machine as soon as X is started. The problem is present only if the &amp;lt;tt&amp;gt;fglrx&amp;lt;/tt&amp;gt; kernel module is loaded, but independently of whether {{kernelconf|CONFIG_HIGHMEM||||||}} is enabled. A workaround is to limit RAM by adding the {{bootparm|mem|864m}} kernel parameter.&lt;br /&gt;
&lt;br /&gt;
Version 8.16.20 fixes the problem.&lt;br /&gt;
&lt;br /&gt;
===Display switching ===&lt;br /&gt;
The switching between internal and external display doesn't work, because the driver blocks messing around with the chipset via ACPI. If you want to use this feature (i.e. during presentations), you should use the VESA server instead (experienced with a R52, Kernel 2.6.11, xorg 6.8.2, fglrx 8.16.20).&lt;br /&gt;
&lt;br /&gt;
===Composite Support===&lt;br /&gt;
ATI has not officially supported composite windowing (alpha channel) enabling hardware acclerated translucent windows (primarily for 'eye candy.')  Enabling Composite in KDE and the fglrx driver results in a very pretty desktop but unacceptably slow performance on a T43p with ATI's FireGL T2.  It is still unusable in its current state (as of driver 8.19.10).&lt;br /&gt;
&lt;br /&gt;
ATI promises support in the future when composite is officially supported by Xorg.  Discussion of current status of drivers can be found in the Rage3d forums' (rage3d.com/board) Linux area.  Rumor has it that the Microsoft Vista will support composite, so hopefully we will see it before then...&lt;br /&gt;
&lt;br /&gt;
===Hardlock on X logout===&lt;br /&gt;
Up from driver version 8.19.10 you will expierence a system hard lock when logging out from X, if the session manager (kdm/gdm) is not properly configured. You have to tell the session manager to restart X.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the kdm config file (gentoo: /usr/kde/&amp;lt;VERSION&amp;gt;/share/config/kdm/kdmrc) you have to add following to the section '[X-:*-Core]': &lt;br /&gt;
&lt;br /&gt;
'''TerminateServer=true'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the gdm config file add:&lt;br /&gt;
&lt;br /&gt;
'''AlwaysRestartServer=true '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Information from the ATI butracker: http://ati.cchtml.com/show_bug.cgi?id=239&lt;br /&gt;
&lt;br /&gt;
== Patches ==&lt;br /&gt;
The following patches might be needed for certain versions of fglrx.&lt;br /&gt;
&lt;br /&gt;
===fglrx 8.20.8===&lt;br /&gt;
&lt;br /&gt;
* [http://marc.theaimsgroup.com/?l=linux-kernel&amp;amp;m=113429835515001&amp;amp;w=2 for kernel 2.6.15]&lt;br /&gt;
&lt;br /&gt;
===fglrx (unspecified old version)===&lt;br /&gt;
* [http://lkml.org/lkml/2005/9/22/183 for kernel &amp;gt;= 2.6.13 ]  Missing verify_area bug &lt;br /&gt;
&lt;br /&gt;
===fglrx 8.8.25 ===&lt;br /&gt;
* [http://www.rage3d.com/board/showthread.php?t=33798874 for kernels &amp;gt;= 2.6.10]&lt;br /&gt;
* [http://www.gehirn.org.uk/wiki/images/8.8.25-kernel-2.6.11+.patch For kernels &amp;gt;= 2.6.11-rc1]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13548</id>
		<title>Pentium M undervolting and underclocking</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13548"/>
		<updated>2005-12-17T01:02:18Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Tested frequencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Intel Pentium M processors from the [[Intel Pentium M (Dothan)|Dothan]] and [[Intel Pentium M (Banias)|Banias]] families can be instructed to operate at voltage and clock frequencies lower than the nominal ones recommended by Intel and used by ThinkPads by default. Experience shows that the processor may continue working correctly at lower-than-nominal voltages and frequencies, thereby reducing power consumption, heat and fan noise.&lt;br /&gt;
&lt;br /&gt;
In the Pentium M, speed and voltage are controlled by software (through the MSR registers). It is up to the operating system to choose the right voltage for each frequency. Normally this is done according to tables published by Intel or according to ACPI tables. However, this can be overriden - in the case of Linux, by a kernel patch.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Following this instructions will operate your CPU under conditions it was not designed for. Even if your system seems stable, it may still suffer transient faults leading to arbitrary data corruption. In addition, errors in following these instructions (or changes between processor models) may operate the CPU ''above'' its nominal parameters, with effects up to and including laptop meltdown.}}&lt;br /&gt;
&lt;br /&gt;
For an example of what may be achieved, on one ThinkPad {{T43}} all voltages could be reduced by 20-30% and moreover, the minimal frequency reduced from 800MHz to 533MHz; this reduced stable CPU temperature by 7-10deg under both idle and burn-in conditions. Combined with an [[ACPI fan control script]] and/or the [[patch for controlling fan speed]], this greatly reduced the [[Problem with fan noise|problem with fan noise]].&lt;br /&gt;
&lt;br /&gt;
{{NOTE|While under''volting'' has a clear measurable effect, it's not clear if under''clocking'' really works. &amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt; reflects the underclocked frequency, but enabling debug output on &amp;lt;tt&amp;gt;cpufreq&amp;lt;/tt&amp;gt; causes it to say things like &amp;quot;&amp;lt;tt&amp;gt;CPU frequency out of sync: cpufreq and timing core thinks of 533000, is 800000 kHz.&amp;lt;/tt&amp;gt;&amp;quot; where the former is the chosen underclocked frequency and the latter is the documented minimum frequency. This discrepancy also causes [[Software Suspend 2]] to oops during suspend.}}&lt;br /&gt;
&lt;br /&gt;
There are several methods to control CPU voltage in Linux, and currently all of them require a patcher kernel.&lt;br /&gt;
&lt;br /&gt;
== Alternative 1: patch with hard-coded voltages ==&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
# Determine the stable voltages for each frequency, using some overclocking/undervolting utility that has specific support for Pentium M (&amp;quot;Centrino&amp;quot;) processors. It seems that no such utility exists for Linux. For windows, one good choice is [http://www.pbus-167.com/chc.htm Notebook Hardware Control (NHC)], which conveniently also includes a table of nominal frequencies and voltags (in its help file).&amp;lt;br&amp;gt; Ascertain that at the undervolted settings the CPU actually performs correct computation ([http://www.mersenne.org/freesoft.htm Prime95] in &amp;quot;Tortute Test&amp;quot; mode seems to be a good partial test emphasizing FPU and memory access).&amp;lt;br&amp;gt; Note that beside reducing voltages (undervolting), you can also try to add lower frequencies (underclocking).&lt;br /&gt;
# Determine the model name string reported by the CPU, e.g., via the &amp;quot;&amp;lt;tt&amp;gt;Model name&amp;lt;/tt&amp;gt;&amp;quot; line in {{path|/proc/cpuinfo}}, and likewise the &amp;lt;tt&amp;gt;cpu_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;model&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;stepping&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Grab a copy of the example patch below and update it to reflect the parameters, frequencies and voltages you found.&lt;br /&gt;
# Apply the patch to your kernel (tested with 2.6.13.1 and 2.6.14-rc2).&lt;br /&gt;
# To prevent the ACPI table from overriding your table, disable the &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt; kernel option.&lt;br /&gt;
# Compile and install the new kernel.&lt;br /&gt;
&lt;br /&gt;
The changes should be active now. If you want to see debug information attesting to thus, do the following:&lt;br /&gt;
&lt;br /&gt;
# Reboot in &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt; mode.&lt;br /&gt;
# {{cmdroot|echo 2 &amp;gt; /sys/module/cpufreq/parameters/debug}}&lt;br /&gt;
# {{cmdroot|modprobe speedstep-centrino}}&lt;br /&gt;
# {{cmdroot|dmesg}} and check for the message &amp;quot;&amp;lt;tt&amp;gt;speedstep-centrino: found &amp;quot;Intel(R) Pentium(R) M processor &amp;lt;/tt&amp;gt;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you don't see that message, you got the &amp;lt;tt&amp;gt;cpu_id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;model_name&amp;lt;/tt&amp;gt; parmaeters wrong. If your system crashes, re-test the voltages and adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
Please report your results (including voltages)!&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel patch (example) ===&lt;br /&gt;
&lt;br /&gt;
The following example shows how to undervolt a Pentium M 750 (1.86GHz) on a ThinkPad {{T43}}. As discussed above, the parameters are specific to this one CPU. You will need to experimentally find the correct settings for your own CPU and adjust the patch accordingly.&lt;br /&gt;
&lt;br /&gt;
Note that the Pentium M 750 has a 533MHz FSB (quad-pumped 133MHz), hence the use of &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt;. If you have a Pentium M with 400MHz FSB (i.e., quad-pumped 100MHz, found in [[Intel Pentium M (Banias)|Banias]] and older [[Intel Pentium M (Dothan)|Dothan]]) then in the voltage table change &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OP&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--- linux-2.6.13.1-vanilla/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-09-10 05:42:58.000000000 +0300&lt;br /&gt;
+++ linux-2.6.13.1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-10-18 04:46:01.000000000 +0200&lt;br /&gt;
@@ -54,6 +54,7 @@ enum {&lt;br /&gt;
 	CPU_DOTHAN_A1,&lt;br /&gt;
 	CPU_DOTHAN_A2,&lt;br /&gt;
 	CPU_DOTHAN_B0,&lt;br /&gt;
+	CPU_DOTHAN_C0,&lt;br /&gt;
 	CPU_MP4HT_D0,&lt;br /&gt;
 	CPU_MP4HT_E0,&lt;br /&gt;
 };&lt;br /&gt;
@@ -63,6 +64,8 @@ static const struct cpu_id cpu_ids[] = {&lt;br /&gt;
 	[CPU_DOTHAN_A1]	= { 6, 13, 1 },&lt;br /&gt;
 	[CPU_DOTHAN_A2]	= { 6, 13, 2 },&lt;br /&gt;
 	[CPU_DOTHAN_B0]	= { 6, 13, 6 },&lt;br /&gt;
+	[CPU_DOTHAN_C0]	= { 6, 13, 8 },&lt;br /&gt;
 	[CPU_MP4HT_D0]	= {15,  3, 4 },&lt;br /&gt;
 	[CPU_MP4HT_E0]	= {15,  4, 1 },&lt;br /&gt;
 };&lt;br /&gt;
@@ -94,6 +97,12 @@ static struct cpufreq_driver centrino_dr&lt;br /&gt;
 		.frequency = (mhz) * 1000,				\&lt;br /&gt;
 		.index = (((mhz)/100) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
 	}&lt;br /&gt;
+/* Likewise, for processors with 133MHz FSB. */&lt;br /&gt;
+#define OP133(mhz, mv)							\&lt;br /&gt;
+	{								\&lt;br /&gt;
+		.frequency = (mhz) * 1000,				\&lt;br /&gt;
+		.index = (((mhz)/133) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
+	}&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * These voltage tables were derived from the Intel Pentium M&lt;br /&gt;
@@ -202,7 +211,26 @@ static struct cpufreq_frequency_table ba&lt;br /&gt;
 	OP(1700, 1484),&lt;br /&gt;
 	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
 };&lt;br /&gt;
+&lt;br /&gt;
+/* Intel Pentium M 750, drastically undervoltaged */&lt;br /&gt;
+static struct cpufreq_frequency_table pentium_m_750[] =&lt;br /&gt;
+{&lt;br /&gt;
+	    /* MHz   mV */&lt;br /&gt;
+	OP133( 800,  700),&lt;br /&gt;
+	OP133(1066,  780),&lt;br /&gt;
+	OP133(1200,  828),&lt;br /&gt;
+	OP133(1333,  876),&lt;br /&gt;
+	OP133(1466,  924),&lt;br /&gt;
+	OP133(1600,  972),&lt;br /&gt;
+	OP133(1733, 1020),&lt;br /&gt;
+	OP133(1866, 1068),&lt;br /&gt;
+	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
+};&lt;br /&gt;
+&lt;br /&gt;
 #undef OP&lt;br /&gt;
+#undef OP133&lt;br /&gt;
 &lt;br /&gt;
 #define _BANIAS(cpuid, max, name)	\&lt;br /&gt;
 {	.cpu_id		= cpuid,	\&lt;br /&gt;
@@ -225,6 +253,12 @@ static struct cpu_model models[] =&lt;br /&gt;
 	BANIAS(1500),&lt;br /&gt;
 	BANIAS(1600),&lt;br /&gt;
 	BANIAS(1700),&lt;br /&gt;
+	{&lt;br /&gt;
+		.cpu_id     =  &amp;amp;cpu_ids[CPU_DOTHAN_C0],&lt;br /&gt;
+		.model_name = &amp;quot;Intel(R) Pentium(R) M processor 1.86GHz&amp;quot;,&lt;br /&gt;
+		.max_freq   = 1866000,&lt;br /&gt;
+		.op_points  = pentium_m_750&lt;br /&gt;
+	},&lt;br /&gt;
 &lt;br /&gt;
 	/* NULL model_name is a wildcard */&lt;br /&gt;
 	{ &amp;amp;cpu_ids[CPU_DOTHAN_A1], NULL, 0, NULL },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't forget to disable &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Alternative 2: patch with user-space control==&lt;br /&gt;
The [http://fabrice.bellamy.club.fr/bdz.undervolt.2005.10.22.a.patch bdz.undervolt.2005.10.22.a.patch] patch, written by Gentoo-Wiki user &amp;quot;Bdz&amp;quot;, allows voltages to be changed without reboot.&lt;br /&gt;
&lt;br /&gt;
It presents a userspace interface, as in the following example:&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
:{{cmdresult|1356,1356,1356,1356,1356,1356,1356,1244,1116,988}}&lt;br /&gt;
:{{cmdroot|echo &amp;quot;1084,1084,1084,1084,1084,1084,1084,988,908,860&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
&lt;br /&gt;
The relevant [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU page] on Gentoo-Wiki providues further information and some helpful hints and scripts for voltage adjustment.&lt;br /&gt;
&lt;br /&gt;
Note that this approach only allows adjustment of the voltages for the normal clock speeds (as reported by the ACPI table in the BIOS). On some models (e.g., ThinkPad {{T43}}) this does not inlude all clock speeds supported by the processor.&lt;br /&gt;
&lt;br /&gt;
===Initscript===&lt;br /&gt;
This is a Gentoo initscript for the patch from Gentoo-Wiki user &amp;quot;Bdz&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Configuration file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/conf.d/undervoltage&lt;br /&gt;
&lt;br /&gt;
# voltage table sysfs interface&lt;br /&gt;
VTABLE_SYSFS=&amp;quot;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# switch back to  DEFAULT_VTABLE if undervoltage is stopped? [yes/no]&lt;br /&gt;
SWITCH_BACK=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# pentium-m banias 1,7GHz default voltages&lt;br /&gt;
DEFAULT_VTABLE=&amp;quot;1484,1308,1228,1116,1004,956&amp;quot;&lt;br /&gt;
# pentium-m banias 1,7GHz lowered voltages [ -208mV ]&lt;br /&gt;
MOD_VTABLE=&amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initscript&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/runscript&lt;br /&gt;
# Copyright 1999-2005 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
# $Header: $&lt;br /&gt;
&lt;br /&gt;
sysfs_check() {&lt;br /&gt;
&lt;br /&gt;
        if ! [ -e ${VTABLE_SYSFS} ]; then&lt;br /&gt;
                logger &amp;quot;No sysfs voltage_table present. Modifying vcore voltage failed.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;It seems that the undervolting patch has not been applied to the kernel.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;see http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU for further information&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        sysfs_check || return 1&lt;br /&gt;
        ebegin &amp;quot;Switching to modified voltage table [${MOD_VTABLE}]&amp;quot;&lt;br /&gt;
                echo ${MOD_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
        eend $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# I think it is not necessary to switch to the default voltage table on shutdown&lt;br /&gt;
stop() {&lt;br /&gt;
        if [ $SWITCH_BACK = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
                ebegin &amp;quot;Switching back to default voltage table [${DEFAULT_VTABLE}]&amp;quot;&lt;br /&gt;
                        echo ${DEFAULT_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tested frequencies===&lt;br /&gt;
&lt;br /&gt;
If you have done excessive testing with user defined frequencies (stable system for over a month).&lt;br /&gt;
and no lookups occur when computing primes with mprime http://mersenne.org/ (gentoo: 'emerge gimps')&lt;br /&gt;
you can post your frequencies here. But note that this is just a rough indication, since the stable values will differ between individual processors, even in the same model.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! CPU Type !! GHz !! Frequency Steps&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Banias || 1.7  || 1276,1100,1020,908,796,748&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Dothan || 1.86 || 1068,972,876,780,700&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alternative 3: another patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
The [http://avkrok.net/nw8240/centrino-voltages.diff centrino-voltages.diff] patch, written by Rickard Holmberg, also provides user-space control. See [http://avkrok.net/nw8240/ here] and [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030772.html here] for usage.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
&lt;br /&gt;
* A [http://forums.anandtech.com/messageview.aspx?catid=51&amp;amp;threadid=1677980 forum discussion] of Pentium M undervolting&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13443</id>
		<title>Pentium M undervolting and underclocking</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13443"/>
		<updated>2005-12-17T01:00:11Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Tested frequencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Intel Pentium M processors from the [[Intel Pentium M (Dothan)|Dothan]] and [[Intel Pentium M (Banias)|Banias]] families can be instructed to operate at voltage and clock frequencies lower than the nominal ones recommended by Intel and used by ThinkPads by default. Experience shows that the processor may continue working correctly at lower-than-nominal voltages and frequencies, thereby reducing power consumption, heat and fan noise.&lt;br /&gt;
&lt;br /&gt;
In the Pentium M, speed and voltage are controlled by software (through the MSR registers). It is up to the operating system to choose the right voltage for each frequency. Normally this is done according to tables published by Intel or according to ACPI tables. However, this can be overriden - in the case of Linux, by a kernel patch.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Following this instructions will operate your CPU under conditions it was not designed for. Even if your system seems stable, it may still suffer transient faults leading to arbitrary data corruption. In addition, errors in following these instructions (or changes between processor models) may operate the CPU ''above'' its nominal parameters, with effects up to and including laptop meltdown.}}&lt;br /&gt;
&lt;br /&gt;
For an example of what may be achieved, on one ThinkPad {{T43}} all voltages could be reduced by 20-30% and moreover, the minimal frequency reduced from 800MHz to 533MHz; this reduced stable CPU temperature by 7-10deg under both idle and burn-in conditions. Combined with an [[ACPI fan control script]] and/or the [[patch for controlling fan speed]], this greatly reduced the [[Problem with fan noise|problem with fan noise]].&lt;br /&gt;
&lt;br /&gt;
{{NOTE|While under''volting'' has a clear measurable effect, it's not clear if under''clocking'' really works. &amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt; reflects the underclocked frequency, but enabling debug output on &amp;lt;tt&amp;gt;cpufreq&amp;lt;/tt&amp;gt; causes it to say things like &amp;quot;&amp;lt;tt&amp;gt;CPU frequency out of sync: cpufreq and timing core thinks of 533000, is 800000 kHz.&amp;lt;/tt&amp;gt;&amp;quot; where the former is the chosen underclocked frequency and the latter is the documented minimum frequency. This discrepancy also causes [[Software Suspend 2]] to oops during suspend.}}&lt;br /&gt;
&lt;br /&gt;
There are several methods to control CPU voltage in Linux, and currently all of them require a patcher kernel.&lt;br /&gt;
&lt;br /&gt;
== Alternative 1: patch with hard-coded voltages ==&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
# Determine the stable voltages for each frequency, using some overclocking/undervolting utility that has specific support for Pentium M (&amp;quot;Centrino&amp;quot;) processors. It seems that no such utility exists for Linux. For windows, one good choice is [http://www.pbus-167.com/chc.htm Notebook Hardware Control (NHC)], which conveniently also includes a table of nominal frequencies and voltags (in its help file).&amp;lt;br&amp;gt; Ascertain that at the undervolted settings the CPU actually performs correct computation ([http://www.mersenne.org/freesoft.htm Prime95] in &amp;quot;Tortute Test&amp;quot; mode seems to be a good partial test emphasizing FPU and memory access).&amp;lt;br&amp;gt; Note that beside reducing voltages (undervolting), you can also try to add lower frequencies (underclocking).&lt;br /&gt;
# Determine the model name string reported by the CPU, e.g., via the &amp;quot;&amp;lt;tt&amp;gt;Model name&amp;lt;/tt&amp;gt;&amp;quot; line in {{path|/proc/cpuinfo}}, and likewise the &amp;lt;tt&amp;gt;cpu_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;model&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;stepping&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Grab a copy of the example patch below and update it to reflect the parameters, frequencies and voltages you found.&lt;br /&gt;
# Apply the patch to your kernel (tested with 2.6.13.1 and 2.6.14-rc2).&lt;br /&gt;
# To prevent the ACPI table from overriding your table, disable the &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt; kernel option.&lt;br /&gt;
# Compile and install the new kernel.&lt;br /&gt;
&lt;br /&gt;
The changes should be active now. If you want to see debug information attesting to thus, do the following:&lt;br /&gt;
&lt;br /&gt;
# Reboot in &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt; mode.&lt;br /&gt;
# {{cmdroot|echo 2 &amp;gt; /sys/module/cpufreq/parameters/debug}}&lt;br /&gt;
# {{cmdroot|modprobe speedstep-centrino}}&lt;br /&gt;
# {{cmdroot|dmesg}} and check for the message &amp;quot;&amp;lt;tt&amp;gt;speedstep-centrino: found &amp;quot;Intel(R) Pentium(R) M processor &amp;lt;/tt&amp;gt;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you don't see that message, you got the &amp;lt;tt&amp;gt;cpu_id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;model_name&amp;lt;/tt&amp;gt; parmaeters wrong. If your system crashes, re-test the voltages and adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
Please report your results (including voltages)!&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel patch (example) ===&lt;br /&gt;
&lt;br /&gt;
The following example shows how to undervolt a Pentium M 750 (1.86GHz) on a ThinkPad {{T43}}. As discussed above, the parameters are specific to this one CPU. You will need to experimentally find the correct settings for your own CPU and adjust the patch accordingly.&lt;br /&gt;
&lt;br /&gt;
Note that the Pentium M 750 has a 533MHz FSB (quad-pumped 133MHz), hence the use of &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt;. If you have a Pentium M with 400MHz FSB (i.e., quad-pumped 100MHz, found in [[Intel Pentium M (Banias)|Banias]] and older [[Intel Pentium M (Dothan)|Dothan]]) then in the voltage table change &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OP&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--- linux-2.6.13.1-vanilla/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-09-10 05:42:58.000000000 +0300&lt;br /&gt;
+++ linux-2.6.13.1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-10-18 04:46:01.000000000 +0200&lt;br /&gt;
@@ -54,6 +54,7 @@ enum {&lt;br /&gt;
 	CPU_DOTHAN_A1,&lt;br /&gt;
 	CPU_DOTHAN_A2,&lt;br /&gt;
 	CPU_DOTHAN_B0,&lt;br /&gt;
+	CPU_DOTHAN_C0,&lt;br /&gt;
 	CPU_MP4HT_D0,&lt;br /&gt;
 	CPU_MP4HT_E0,&lt;br /&gt;
 };&lt;br /&gt;
@@ -63,6 +64,8 @@ static const struct cpu_id cpu_ids[] = {&lt;br /&gt;
 	[CPU_DOTHAN_A1]	= { 6, 13, 1 },&lt;br /&gt;
 	[CPU_DOTHAN_A2]	= { 6, 13, 2 },&lt;br /&gt;
 	[CPU_DOTHAN_B0]	= { 6, 13, 6 },&lt;br /&gt;
+	[CPU_DOTHAN_C0]	= { 6, 13, 8 },&lt;br /&gt;
 	[CPU_MP4HT_D0]	= {15,  3, 4 },&lt;br /&gt;
 	[CPU_MP4HT_E0]	= {15,  4, 1 },&lt;br /&gt;
 };&lt;br /&gt;
@@ -94,6 +97,12 @@ static struct cpufreq_driver centrino_dr&lt;br /&gt;
 		.frequency = (mhz) * 1000,				\&lt;br /&gt;
 		.index = (((mhz)/100) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
 	}&lt;br /&gt;
+/* Likewise, for processors with 133MHz FSB. */&lt;br /&gt;
+#define OP133(mhz, mv)							\&lt;br /&gt;
+	{								\&lt;br /&gt;
+		.frequency = (mhz) * 1000,				\&lt;br /&gt;
+		.index = (((mhz)/133) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
+	}&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * These voltage tables were derived from the Intel Pentium M&lt;br /&gt;
@@ -202,7 +211,26 @@ static struct cpufreq_frequency_table ba&lt;br /&gt;
 	OP(1700, 1484),&lt;br /&gt;
 	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
 };&lt;br /&gt;
+&lt;br /&gt;
+/* Intel Pentium M 750, drastically undervoltaged */&lt;br /&gt;
+static struct cpufreq_frequency_table pentium_m_750[] =&lt;br /&gt;
+{&lt;br /&gt;
+	    /* MHz   mV */&lt;br /&gt;
+	OP133( 800,  700),&lt;br /&gt;
+	OP133(1066,  780),&lt;br /&gt;
+	OP133(1200,  828),&lt;br /&gt;
+	OP133(1333,  876),&lt;br /&gt;
+	OP133(1466,  924),&lt;br /&gt;
+	OP133(1600,  972),&lt;br /&gt;
+	OP133(1733, 1020),&lt;br /&gt;
+	OP133(1866, 1068),&lt;br /&gt;
+	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
+};&lt;br /&gt;
+&lt;br /&gt;
 #undef OP&lt;br /&gt;
+#undef OP133&lt;br /&gt;
 &lt;br /&gt;
 #define _BANIAS(cpuid, max, name)	\&lt;br /&gt;
 {	.cpu_id		= cpuid,	\&lt;br /&gt;
@@ -225,6 +253,12 @@ static struct cpu_model models[] =&lt;br /&gt;
 	BANIAS(1500),&lt;br /&gt;
 	BANIAS(1600),&lt;br /&gt;
 	BANIAS(1700),&lt;br /&gt;
+	{&lt;br /&gt;
+		.cpu_id     =  &amp;amp;cpu_ids[CPU_DOTHAN_C0],&lt;br /&gt;
+		.model_name = &amp;quot;Intel(R) Pentium(R) M processor 1.86GHz&amp;quot;,&lt;br /&gt;
+		.max_freq   = 1866000,&lt;br /&gt;
+		.op_points  = pentium_m_750&lt;br /&gt;
+	},&lt;br /&gt;
 &lt;br /&gt;
 	/* NULL model_name is a wildcard */&lt;br /&gt;
 	{ &amp;amp;cpu_ids[CPU_DOTHAN_A1], NULL, 0, NULL },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't forget to disable &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Alternative 2: patch with user-space control==&lt;br /&gt;
The [http://fabrice.bellamy.club.fr/bdz.undervolt.2005.10.22.a.patch bdz.undervolt.2005.10.22.a.patch] patch, written by Gentoo-Wiki user &amp;quot;Bdz&amp;quot;, allows voltages to be changed without reboot.&lt;br /&gt;
&lt;br /&gt;
It presents a userspace interface, as in the following example:&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
:{{cmdresult|1356,1356,1356,1356,1356,1356,1356,1244,1116,988}}&lt;br /&gt;
:{{cmdroot|echo &amp;quot;1084,1084,1084,1084,1084,1084,1084,988,908,860&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
&lt;br /&gt;
The relevant [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU page] on Gentoo-Wiki providues further information and some helpful hints and scripts for voltage adjustment.&lt;br /&gt;
&lt;br /&gt;
Note that this approach only allows adjustment of the voltages for the normal clock speeds (as reported by the ACPI table in the BIOS). On some models (e.g., ThinkPad {{T43}}) this does not inlude all clock speeds supported by the processor.&lt;br /&gt;
&lt;br /&gt;
===Initscript===&lt;br /&gt;
This is a Gentoo initscript for the patch from Gentoo-Wiki user &amp;quot;Bdz&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Configuration file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/conf.d/undervoltage&lt;br /&gt;
&lt;br /&gt;
# voltage table sysfs interface&lt;br /&gt;
VTABLE_SYSFS=&amp;quot;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# switch back to  DEFAULT_VTABLE if undervoltage is stopped? [yes/no]&lt;br /&gt;
SWITCH_BACK=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# pentium-m banias 1,7GHz default voltages&lt;br /&gt;
DEFAULT_VTABLE=&amp;quot;1484,1308,1228,1116,1004,956&amp;quot;&lt;br /&gt;
# pentium-m banias 1,7GHz lowered voltages [ -208mV ]&lt;br /&gt;
MOD_VTABLE=&amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initscript&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/runscript&lt;br /&gt;
# Copyright 1999-2005 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
# $Header: $&lt;br /&gt;
&lt;br /&gt;
sysfs_check() {&lt;br /&gt;
&lt;br /&gt;
        if ! [ -e ${VTABLE_SYSFS} ]; then&lt;br /&gt;
                logger &amp;quot;No sysfs voltage_table present. Modifying vcore voltage failed.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;It seems that the undervolting patch has not been applied to the kernel.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;see http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU for further information&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        sysfs_check || return 1&lt;br /&gt;
        ebegin &amp;quot;Switching to modified voltage table [${MOD_VTABLE}]&amp;quot;&lt;br /&gt;
                echo ${MOD_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
        eend $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# I think it is not necessary to switch to the default voltage table on shutdown&lt;br /&gt;
stop() {&lt;br /&gt;
        if [ $SWITCH_BACK = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
                ebegin &amp;quot;Switching back to default voltage table [${DEFAULT_VTABLE}]&amp;quot;&lt;br /&gt;
                        echo ${DEFAULT_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tested frequencies===&lt;br /&gt;
&lt;br /&gt;
If you have done excessive testing with user defined frequencies (stable system for over a month).&lt;br /&gt;
and no lookups occur when computing primes with mprime http://mersenne.org/&lt;br /&gt;
you can post your frequencies here. But note that this is just a rough indication, since the stable values will differ between individual processors, even in the same model.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! CPU Type !! GHz !! Frequency Steps&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Banias || 1.7  || 1276,1100,1020,908,796,748&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Dothan || 1.86 || 1068,972,876,780,700&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alternative 3: another patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
The [http://avkrok.net/nw8240/centrino-voltages.diff centrino-voltages.diff] patch, written by Rickard Holmberg, also provides user-space control. See [http://avkrok.net/nw8240/ here] and [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030772.html here] for usage.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
&lt;br /&gt;
* A [http://forums.anandtech.com/messageview.aspx?catid=51&amp;amp;threadid=1677980 forum discussion] of Pentium M undervolting&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13442</id>
		<title>Pentium M undervolting and underclocking</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13442"/>
		<updated>2005-12-17T00:59:18Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Tested frequencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Intel Pentium M processors from the [[Intel Pentium M (Dothan)|Dothan]] and [[Intel Pentium M (Banias)|Banias]] families can be instructed to operate at voltage and clock frequencies lower than the nominal ones recommended by Intel and used by ThinkPads by default. Experience shows that the processor may continue working correctly at lower-than-nominal voltages and frequencies, thereby reducing power consumption, heat and fan noise.&lt;br /&gt;
&lt;br /&gt;
In the Pentium M, speed and voltage are controlled by software (through the MSR registers). It is up to the operating system to choose the right voltage for each frequency. Normally this is done according to tables published by Intel or according to ACPI tables. However, this can be overriden - in the case of Linux, by a kernel patch.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Following this instructions will operate your CPU under conditions it was not designed for. Even if your system seems stable, it may still suffer transient faults leading to arbitrary data corruption. In addition, errors in following these instructions (or changes between processor models) may operate the CPU ''above'' its nominal parameters, with effects up to and including laptop meltdown.}}&lt;br /&gt;
&lt;br /&gt;
For an example of what may be achieved, on one ThinkPad {{T43}} all voltages could be reduced by 20-30% and moreover, the minimal frequency reduced from 800MHz to 533MHz; this reduced stable CPU temperature by 7-10deg under both idle and burn-in conditions. Combined with an [[ACPI fan control script]] and/or the [[patch for controlling fan speed]], this greatly reduced the [[Problem with fan noise|problem with fan noise]].&lt;br /&gt;
&lt;br /&gt;
{{NOTE|While under''volting'' has a clear measurable effect, it's not clear if under''clocking'' really works. &amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt; reflects the underclocked frequency, but enabling debug output on &amp;lt;tt&amp;gt;cpufreq&amp;lt;/tt&amp;gt; causes it to say things like &amp;quot;&amp;lt;tt&amp;gt;CPU frequency out of sync: cpufreq and timing core thinks of 533000, is 800000 kHz.&amp;lt;/tt&amp;gt;&amp;quot; where the former is the chosen underclocked frequency and the latter is the documented minimum frequency. This discrepancy also causes [[Software Suspend 2]] to oops during suspend.}}&lt;br /&gt;
&lt;br /&gt;
There are several methods to control CPU voltage in Linux, and currently all of them require a patcher kernel.&lt;br /&gt;
&lt;br /&gt;
== Alternative 1: patch with hard-coded voltages ==&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
# Determine the stable voltages for each frequency, using some overclocking/undervolting utility that has specific support for Pentium M (&amp;quot;Centrino&amp;quot;) processors. It seems that no such utility exists for Linux. For windows, one good choice is [http://www.pbus-167.com/chc.htm Notebook Hardware Control (NHC)], which conveniently also includes a table of nominal frequencies and voltags (in its help file).&amp;lt;br&amp;gt; Ascertain that at the undervolted settings the CPU actually performs correct computation ([http://www.mersenne.org/freesoft.htm Prime95] in &amp;quot;Tortute Test&amp;quot; mode seems to be a good partial test emphasizing FPU and memory access).&amp;lt;br&amp;gt; Note that beside reducing voltages (undervolting), you can also try to add lower frequencies (underclocking).&lt;br /&gt;
# Determine the model name string reported by the CPU, e.g., via the &amp;quot;&amp;lt;tt&amp;gt;Model name&amp;lt;/tt&amp;gt;&amp;quot; line in {{path|/proc/cpuinfo}}, and likewise the &amp;lt;tt&amp;gt;cpu_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;model&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;stepping&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Grab a copy of the example patch below and update it to reflect the parameters, frequencies and voltages you found.&lt;br /&gt;
# Apply the patch to your kernel (tested with 2.6.13.1 and 2.6.14-rc2).&lt;br /&gt;
# To prevent the ACPI table from overriding your table, disable the &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt; kernel option.&lt;br /&gt;
# Compile and install the new kernel.&lt;br /&gt;
&lt;br /&gt;
The changes should be active now. If you want to see debug information attesting to thus, do the following:&lt;br /&gt;
&lt;br /&gt;
# Reboot in &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt; mode.&lt;br /&gt;
# {{cmdroot|echo 2 &amp;gt; /sys/module/cpufreq/parameters/debug}}&lt;br /&gt;
# {{cmdroot|modprobe speedstep-centrino}}&lt;br /&gt;
# {{cmdroot|dmesg}} and check for the message &amp;quot;&amp;lt;tt&amp;gt;speedstep-centrino: found &amp;quot;Intel(R) Pentium(R) M processor &amp;lt;/tt&amp;gt;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you don't see that message, you got the &amp;lt;tt&amp;gt;cpu_id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;model_name&amp;lt;/tt&amp;gt; parmaeters wrong. If your system crashes, re-test the voltages and adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
Please report your results (including voltages)!&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel patch (example) ===&lt;br /&gt;
&lt;br /&gt;
The following example shows how to undervolt a Pentium M 750 (1.86GHz) on a ThinkPad {{T43}}. As discussed above, the parameters are specific to this one CPU. You will need to experimentally find the correct settings for your own CPU and adjust the patch accordingly.&lt;br /&gt;
&lt;br /&gt;
Note that the Pentium M 750 has a 533MHz FSB (quad-pumped 133MHz), hence the use of &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt;. If you have a Pentium M with 400MHz FSB (i.e., quad-pumped 100MHz, found in [[Intel Pentium M (Banias)|Banias]] and older [[Intel Pentium M (Dothan)|Dothan]]) then in the voltage table change &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OP&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--- linux-2.6.13.1-vanilla/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-09-10 05:42:58.000000000 +0300&lt;br /&gt;
+++ linux-2.6.13.1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-10-18 04:46:01.000000000 +0200&lt;br /&gt;
@@ -54,6 +54,7 @@ enum {&lt;br /&gt;
 	CPU_DOTHAN_A1,&lt;br /&gt;
 	CPU_DOTHAN_A2,&lt;br /&gt;
 	CPU_DOTHAN_B0,&lt;br /&gt;
+	CPU_DOTHAN_C0,&lt;br /&gt;
 	CPU_MP4HT_D0,&lt;br /&gt;
 	CPU_MP4HT_E0,&lt;br /&gt;
 };&lt;br /&gt;
@@ -63,6 +64,8 @@ static const struct cpu_id cpu_ids[] = {&lt;br /&gt;
 	[CPU_DOTHAN_A1]	= { 6, 13, 1 },&lt;br /&gt;
 	[CPU_DOTHAN_A2]	= { 6, 13, 2 },&lt;br /&gt;
 	[CPU_DOTHAN_B0]	= { 6, 13, 6 },&lt;br /&gt;
+	[CPU_DOTHAN_C0]	= { 6, 13, 8 },&lt;br /&gt;
 	[CPU_MP4HT_D0]	= {15,  3, 4 },&lt;br /&gt;
 	[CPU_MP4HT_E0]	= {15,  4, 1 },&lt;br /&gt;
 };&lt;br /&gt;
@@ -94,6 +97,12 @@ static struct cpufreq_driver centrino_dr&lt;br /&gt;
 		.frequency = (mhz) * 1000,				\&lt;br /&gt;
 		.index = (((mhz)/100) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
 	}&lt;br /&gt;
+/* Likewise, for processors with 133MHz FSB. */&lt;br /&gt;
+#define OP133(mhz, mv)							\&lt;br /&gt;
+	{								\&lt;br /&gt;
+		.frequency = (mhz) * 1000,				\&lt;br /&gt;
+		.index = (((mhz)/133) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
+	}&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * These voltage tables were derived from the Intel Pentium M&lt;br /&gt;
@@ -202,7 +211,26 @@ static struct cpufreq_frequency_table ba&lt;br /&gt;
 	OP(1700, 1484),&lt;br /&gt;
 	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
 };&lt;br /&gt;
+&lt;br /&gt;
+/* Intel Pentium M 750, drastically undervoltaged */&lt;br /&gt;
+static struct cpufreq_frequency_table pentium_m_750[] =&lt;br /&gt;
+{&lt;br /&gt;
+	    /* MHz   mV */&lt;br /&gt;
+	OP133( 800,  700),&lt;br /&gt;
+	OP133(1066,  780),&lt;br /&gt;
+	OP133(1200,  828),&lt;br /&gt;
+	OP133(1333,  876),&lt;br /&gt;
+	OP133(1466,  924),&lt;br /&gt;
+	OP133(1600,  972),&lt;br /&gt;
+	OP133(1733, 1020),&lt;br /&gt;
+	OP133(1866, 1068),&lt;br /&gt;
+	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
+};&lt;br /&gt;
+&lt;br /&gt;
 #undef OP&lt;br /&gt;
+#undef OP133&lt;br /&gt;
 &lt;br /&gt;
 #define _BANIAS(cpuid, max, name)	\&lt;br /&gt;
 {	.cpu_id		= cpuid,	\&lt;br /&gt;
@@ -225,6 +253,12 @@ static struct cpu_model models[] =&lt;br /&gt;
 	BANIAS(1500),&lt;br /&gt;
 	BANIAS(1600),&lt;br /&gt;
 	BANIAS(1700),&lt;br /&gt;
+	{&lt;br /&gt;
+		.cpu_id     =  &amp;amp;cpu_ids[CPU_DOTHAN_C0],&lt;br /&gt;
+		.model_name = &amp;quot;Intel(R) Pentium(R) M processor 1.86GHz&amp;quot;,&lt;br /&gt;
+		.max_freq   = 1866000,&lt;br /&gt;
+		.op_points  = pentium_m_750&lt;br /&gt;
+	},&lt;br /&gt;
 &lt;br /&gt;
 	/* NULL model_name is a wildcard */&lt;br /&gt;
 	{ &amp;amp;cpu_ids[CPU_DOTHAN_A1], NULL, 0, NULL },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't forget to disable &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Alternative 2: patch with user-space control==&lt;br /&gt;
The [http://fabrice.bellamy.club.fr/bdz.undervolt.2005.10.22.a.patch bdz.undervolt.2005.10.22.a.patch] patch, written by Gentoo-Wiki user &amp;quot;Bdz&amp;quot;, allows voltages to be changed without reboot.&lt;br /&gt;
&lt;br /&gt;
It presents a userspace interface, as in the following example:&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
:{{cmdresult|1356,1356,1356,1356,1356,1356,1356,1244,1116,988}}&lt;br /&gt;
:{{cmdroot|echo &amp;quot;1084,1084,1084,1084,1084,1084,1084,988,908,860&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
&lt;br /&gt;
The relevant [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU page] on Gentoo-Wiki providues further information and some helpful hints and scripts for voltage adjustment.&lt;br /&gt;
&lt;br /&gt;
Note that this approach only allows adjustment of the voltages for the normal clock speeds (as reported by the ACPI table in the BIOS). On some models (e.g., ThinkPad {{T43}}) this does not inlude all clock speeds supported by the processor.&lt;br /&gt;
&lt;br /&gt;
===Initscript===&lt;br /&gt;
This is a Gentoo initscript for the patch from Gentoo-Wiki user &amp;quot;Bdz&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Configuration file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/conf.d/undervoltage&lt;br /&gt;
&lt;br /&gt;
# voltage table sysfs interface&lt;br /&gt;
VTABLE_SYSFS=&amp;quot;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# switch back to  DEFAULT_VTABLE if undervoltage is stopped? [yes/no]&lt;br /&gt;
SWITCH_BACK=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# pentium-m banias 1,7GHz default voltages&lt;br /&gt;
DEFAULT_VTABLE=&amp;quot;1484,1308,1228,1116,1004,956&amp;quot;&lt;br /&gt;
# pentium-m banias 1,7GHz lowered voltages [ -208mV ]&lt;br /&gt;
MOD_VTABLE=&amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initscript&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/runscript&lt;br /&gt;
# Copyright 1999-2005 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
# $Header: $&lt;br /&gt;
&lt;br /&gt;
sysfs_check() {&lt;br /&gt;
&lt;br /&gt;
        if ! [ -e ${VTABLE_SYSFS} ]; then&lt;br /&gt;
                logger &amp;quot;No sysfs voltage_table present. Modifying vcore voltage failed.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;It seems that the undervolting patch has not been applied to the kernel.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;see http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU for further information&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        sysfs_check || return 1&lt;br /&gt;
        ebegin &amp;quot;Switching to modified voltage table [${MOD_VTABLE}]&amp;quot;&lt;br /&gt;
                echo ${MOD_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
        eend $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# I think it is not necessary to switch to the default voltage table on shutdown&lt;br /&gt;
stop() {&lt;br /&gt;
        if [ $SWITCH_BACK = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
                ebegin &amp;quot;Switching back to default voltage table [${DEFAULT_VTABLE}]&amp;quot;&lt;br /&gt;
                        echo ${DEFAULT_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tested frequencies===&lt;br /&gt;
&lt;br /&gt;
If you have done excessive testing with user defined frequencies (stable system for over a month).&lt;br /&gt;
and no lookups occur when computing primes with mprime http://mersenne.org/&lt;br /&gt;
you can post your frequencies here. But note that this is just a rough indication, since the stable values will differ between individual processors, even in the same model.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
! CPU Type !! GHz !! Frequency Steps&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Banias || 1.7  || &amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Pentium-M Dothan || 1.86 || &amp;quot;1068,972,876,780,700&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Alternative 3: another patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
The [http://avkrok.net/nw8240/centrino-voltages.diff centrino-voltages.diff] patch, written by Rickard Holmberg, also provides user-space control. See [http://avkrok.net/nw8240/ here] and [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030772.html here] for usage.&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
&lt;br /&gt;
* A [http://forums.anandtech.com/messageview.aspx?catid=51&amp;amp;threadid=1677980 forum discussion] of Pentium M undervolting&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13437</id>
		<title>Pentium M undervolting and underclocking</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13437"/>
		<updated>2005-12-17T00:40:42Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Gentoo Initscript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Intel Pentium M processors from the [[Intel Pentium M (Dothan)|Dothan]] and [[Intel Pentium M (Banias)|Banias]] families can be instructed to operate at voltage and clock frequencies lower than the nominal ones recommended by Intel and used by ThinkPads by default. Experience shows that the processor may continue working correctly at lower-than-nominal voltages and frequencies, thereby reducing power consumption, heat and fan noise.&lt;br /&gt;
&lt;br /&gt;
In the Pentium M, speed and voltage are controlled by software (through the MSR registers). It is up to the operating system to choose the right voltage for each frequency. Normally this is done according to tables published by Intel or according to ACPI tables. However, this can be overriden - in the case of Linux, by a kernel patch.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Following this instructions will operate your CPU under conditions it was not designed for. Even if your system seems stable, it may still suffer transient faults leading to arbitrary data corruption. In addition, errors in following these instructions (or changes between processor models) may operate the CPU ''above'' its nominal parameters, with effects up to and including laptop meltdown.}}&lt;br /&gt;
&lt;br /&gt;
For an example of what may be achieved, on one ThinkPad {{T43}} all voltages could be reduced by 20-30% and moreover, the minimal frequency reduced from 800MHz to 533MHz; this reduced stable CPU temperature by 7-10deg under both idle and burn-in conditions. Combined with an [[ACPI fan control script]] and/or the [[patch for controlling fan speed]], this greatly reduced the [[Problem with fan noise|problem with fan noise]].&lt;br /&gt;
&lt;br /&gt;
{{NOTE|While under''volting'' has a clear measurable effect, it's not clear if under''clocking'' really works. &amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt; reflects the underclocked frequency, but enabling debug output on &amp;lt;tt&amp;gt;cpufreq&amp;lt;/tt&amp;gt; causes it to say things like &amp;quot;&amp;lt;tt&amp;gt;CPU frequency out of sync: cpufreq and timing core thinks of 533000, is 800000 kHz.&amp;lt;/tt&amp;gt;&amp;quot; where the former is the chosen underclocked frequency and the latter is the documented minimum frequency. This discrepancy also causes [[Software Suspend 2]] to oops during suspend.}}&lt;br /&gt;
&lt;br /&gt;
There are several methods to control CPU voltage in Linux, and currently all of them require a patcher kernel.&lt;br /&gt;
&lt;br /&gt;
== Alternative 1: patch with hard-coded voltages ==&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
# Determine the stable voltages for each frequency, using some overclocking/undervolting utility that has specific support for Pentium M (&amp;quot;Centrino&amp;quot;) processors. It seems that no such utility exists for Linux. For windows, one good choice is [http://www.pbus-167.com/chc.htm Notebook Hardware Control (NHC)], which conveniently also includes a table of nominal frequencies and voltags (in its help file).&amp;lt;br&amp;gt; Ascertain that at the undervolted settings the CPU actually performs correct computation ([http://www.mersenne.org/freesoft.htm Prime95] in &amp;quot;Tortute Test&amp;quot; mode seems to be a good partial test emphasizing FPU and memory access).&amp;lt;br&amp;gt; Note that beside reducing voltages (undervolting), you can also try to add lower frequencies (underclocking).&lt;br /&gt;
# Determine the model name string reported by the CPU, e.g., via the &amp;quot;&amp;lt;tt&amp;gt;Model name&amp;lt;/tt&amp;gt;&amp;quot; line in {{path|/proc/cpuinfo}}, and likewise the &amp;lt;tt&amp;gt;cpu_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;model&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;stepping&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Grab a copy of the example patch below and update it to reflect the parameters, frequencies and voltages you found.&lt;br /&gt;
# Apply the patch to your kernel (tested with 2.6.13.1 and 2.6.14-rc2).&lt;br /&gt;
# To prevent the ACPI table from overriding your table, disable the &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt; kernel option.&lt;br /&gt;
# Compile and install the new kernel.&lt;br /&gt;
&lt;br /&gt;
The changes should be active now. If you want to see debug information attesting to thus, do the following:&lt;br /&gt;
&lt;br /&gt;
# Reboot in &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt; mode.&lt;br /&gt;
# {{cmdroot|echo 2 &amp;gt; /sys/module/cpufreq/parameters/debug}}&lt;br /&gt;
# {{cmdroot|modprobe speedstep-centrino}}&lt;br /&gt;
# {{cmdroot|dmesg}} and check for the message &amp;quot;&amp;lt;tt&amp;gt;speedstep-centrino: found &amp;quot;Intel(R) Pentium(R) M processor &amp;lt;/tt&amp;gt;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you don't see that message, you got the &amp;lt;tt&amp;gt;cpu_id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;model_name&amp;lt;/tt&amp;gt; parmaeters wrong. If your system crashes, re-test the voltages and adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
Please report your results (including voltages)!&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel patch (example) ===&lt;br /&gt;
&lt;br /&gt;
The following example shows how to undervolt a Pentium M 750 (1.86GHz) on a ThinkPad {{T43}}. As discussed above, the parameters are specific to this one CPU. You will need to experimentally find the correct settings for your own CPU and adjust the patch accordingly.&lt;br /&gt;
&lt;br /&gt;
Note that the Pentium M 750 has a 533MHz FSB (quad-pumped 133MHz), hence the use of &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt;. If you have a Pentium M with 400MHz FSB (i.e., quad-pumped 100MHz, found in [[Intel Pentium M (Banias)|Banias]] and older [[Intel Pentium M (Dothan)|Dothan]]) then in the voltage table change &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OP&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--- linux-2.6.13.1-vanilla/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-09-10 05:42:58.000000000 +0300&lt;br /&gt;
+++ linux-2.6.13.1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-10-18 04:46:01.000000000 +0200&lt;br /&gt;
@@ -54,6 +54,7 @@ enum {&lt;br /&gt;
 	CPU_DOTHAN_A1,&lt;br /&gt;
 	CPU_DOTHAN_A2,&lt;br /&gt;
 	CPU_DOTHAN_B0,&lt;br /&gt;
+	CPU_DOTHAN_C0,&lt;br /&gt;
 	CPU_MP4HT_D0,&lt;br /&gt;
 	CPU_MP4HT_E0,&lt;br /&gt;
 };&lt;br /&gt;
@@ -63,6 +64,8 @@ static const struct cpu_id cpu_ids[] = {&lt;br /&gt;
 	[CPU_DOTHAN_A1]	= { 6, 13, 1 },&lt;br /&gt;
 	[CPU_DOTHAN_A2]	= { 6, 13, 2 },&lt;br /&gt;
 	[CPU_DOTHAN_B0]	= { 6, 13, 6 },&lt;br /&gt;
+	[CPU_DOTHAN_C0]	= { 6, 13, 8 },&lt;br /&gt;
 	[CPU_MP4HT_D0]	= {15,  3, 4 },&lt;br /&gt;
 	[CPU_MP4HT_E0]	= {15,  4, 1 },&lt;br /&gt;
 };&lt;br /&gt;
@@ -94,6 +97,12 @@ static struct cpufreq_driver centrino_dr&lt;br /&gt;
 		.frequency = (mhz) * 1000,				\&lt;br /&gt;
 		.index = (((mhz)/100) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
 	}&lt;br /&gt;
+/* Likewise, for processors with 133MHz FSB. */&lt;br /&gt;
+#define OP133(mhz, mv)							\&lt;br /&gt;
+	{								\&lt;br /&gt;
+		.frequency = (mhz) * 1000,				\&lt;br /&gt;
+		.index = (((mhz)/133) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
+	}&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * These voltage tables were derived from the Intel Pentium M&lt;br /&gt;
@@ -202,7 +211,26 @@ static struct cpufreq_frequency_table ba&lt;br /&gt;
 	OP(1700, 1484),&lt;br /&gt;
 	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
 };&lt;br /&gt;
+&lt;br /&gt;
+/* Intel Pentium M 750, drastically undervoltaged */&lt;br /&gt;
+static struct cpufreq_frequency_table pentium_m_750[] =&lt;br /&gt;
+{&lt;br /&gt;
+	    /* MHz   mV */&lt;br /&gt;
+	OP133( 800,  700),&lt;br /&gt;
+	OP133(1066,  780),&lt;br /&gt;
+	OP133(1200,  828),&lt;br /&gt;
+	OP133(1333,  876),&lt;br /&gt;
+	OP133(1466,  924),&lt;br /&gt;
+	OP133(1600,  972),&lt;br /&gt;
+	OP133(1733, 1020),&lt;br /&gt;
+	OP133(1866, 1068),&lt;br /&gt;
+	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
+};&lt;br /&gt;
+&lt;br /&gt;
 #undef OP&lt;br /&gt;
+#undef OP133&lt;br /&gt;
 &lt;br /&gt;
 #define _BANIAS(cpuid, max, name)	\&lt;br /&gt;
 {	.cpu_id		= cpuid,	\&lt;br /&gt;
@@ -225,6 +253,12 @@ static struct cpu_model models[] =&lt;br /&gt;
 	BANIAS(1500),&lt;br /&gt;
 	BANIAS(1600),&lt;br /&gt;
 	BANIAS(1700),&lt;br /&gt;
+	{&lt;br /&gt;
+		.cpu_id     =  &amp;amp;cpu_ids[CPU_DOTHAN_C0],&lt;br /&gt;
+		.model_name = &amp;quot;Intel(R) Pentium(R) M processor 1.86GHz&amp;quot;,&lt;br /&gt;
+		.max_freq   = 1866000,&lt;br /&gt;
+		.op_points  = pentium_m_750&lt;br /&gt;
+	},&lt;br /&gt;
 &lt;br /&gt;
 	/* NULL model_name is a wildcard */&lt;br /&gt;
 	{ &amp;amp;cpu_ids[CPU_DOTHAN_A1], NULL, 0, NULL },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't forget to disable &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Alternative 2: patch with user-space control==&lt;br /&gt;
The [http://fabrice.bellamy.club.fr/bdz.undervolt.2005.10.22.a.patch bdz.undervolt.2005.10.22.a.patch] patch, written by Gentoo-Wiki user &amp;quot;Bdz&amp;quot;, allows voltages to be changed without reboot.&lt;br /&gt;
&lt;br /&gt;
It presents a userspace interface, as in the following example:&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
:{{cmdresult|1356,1356,1356,1356,1356,1356,1356,1244,1116,988}}&lt;br /&gt;
:{{cmdroot|echo &amp;quot;1084,1084,1084,1084,1084,1084,1084,988,908,860&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
&lt;br /&gt;
The relevant [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU page] on Gentoo-Wiki providues further information and some helpful hints and scripts for voltage adjustment.&lt;br /&gt;
&lt;br /&gt;
Note that this approach only allows adjustment of the voltages for the normal clock speeds (as reported by the ACPI table in the BIOS). On some models (e.g., ThinkPad {{T43}}) this does not inlude all clock speeds supported by the processor.&lt;br /&gt;
&lt;br /&gt;
==Alternative 3: another patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
The [http://avkrok.net/nw8240/centrino-voltages.diff centrino-voltages.diff] patch, written by Rickard Holmberg, also provides user-space control. See [http://avkrok.net/nw8240/ here] and [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030772.html here] for usage.&lt;br /&gt;
&lt;br /&gt;
==Gentoo Initscript==&lt;br /&gt;
This is a gentoo initscript for the patch from Gentoo-Wiki user &amp;quot;Bdz&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Configuration file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/conf.d/undervoltage&lt;br /&gt;
&lt;br /&gt;
# voltage table sysfs interface&lt;br /&gt;
VTABLE_SYSFS=&amp;quot;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# switch back to  DEFAULT_VTABLE if undervoltage is stopped? [yes/no]&lt;br /&gt;
SWITCH_BACK=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# pentium-m banias 1,7GHz default voltages&lt;br /&gt;
DEFAULT_VTABLE=&amp;quot;1484,1308,1228,1116,1004,956&amp;quot;&lt;br /&gt;
# pentium-m banias 1,7GHz lowered voltages [ -208mV ]&lt;br /&gt;
MOD_VTABLE=&amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initscript&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/runscript&lt;br /&gt;
# Copyright 1999-2005 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
# $Header: $&lt;br /&gt;
&lt;br /&gt;
sysfs_check() {&lt;br /&gt;
&lt;br /&gt;
        if ! [ -e ${VTABLE_SYSFS} ]; then&lt;br /&gt;
                logger &amp;quot;No sysfs voltage_table present. Modifying vcore voltage failed.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;It seems that the undervolting patch has not been applied to the kernel.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;see http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU for further information&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        sysfs_check || return 1&lt;br /&gt;
        ebegin &amp;quot;Switching to modified voltage table [${MOD_VTABLE}]&amp;quot;&lt;br /&gt;
                echo ${MOD_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
        eend $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# I think it is not necessary to switch to the default voltage table on shutdown&lt;br /&gt;
stop() {&lt;br /&gt;
        if [ $SWITCH_BACK = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
                ebegin &amp;quot;Switching back to default voltage table [${DEFAULT_VTABLE}]&amp;quot;&lt;br /&gt;
                        echo ${DEFAULT_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tested Frequencies==&lt;br /&gt;
&lt;br /&gt;
If you have done excessive testing with user defined frequencies (stable system for over a month).&lt;br /&gt;
and no lookups occur when computing primes with mprime http://mersenne.org/&lt;br /&gt;
you can post your frequencies here.&lt;br /&gt;
&lt;br /&gt;
Pentium-M Banias 1.7 - &amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
&lt;br /&gt;
* A [http://forums.anandtech.com/messageview.aspx?catid=51&amp;amp;threadid=1677980 forum discussion] of Pentium M undervolting&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13436</id>
		<title>Pentium M undervolting and underclocking</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13436"/>
		<updated>2005-12-17T00:38:57Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Gentoo Initscript */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Intel Pentium M processors from the [[Intel Pentium M (Dothan)|Dothan]] and [[Intel Pentium M (Banias)|Banias]] families can be instructed to operate at voltage and clock frequencies lower than the nominal ones recommended by Intel and used by ThinkPads by default. Experience shows that the processor may continue working correctly at lower-than-nominal voltages and frequencies, thereby reducing power consumption, heat and fan noise.&lt;br /&gt;
&lt;br /&gt;
In the Pentium M, speed and voltage are controlled by software (through the MSR registers). It is up to the operating system to choose the right voltage for each frequency. Normally this is done according to tables published by Intel or according to ACPI tables. However, this can be overriden - in the case of Linux, by a kernel patch.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Following this instructions will operate your CPU under conditions it was not designed for. Even if your system seems stable, it may still suffer transient faults leading to arbitrary data corruption. In addition, errors in following these instructions (or changes between processor models) may operate the CPU ''above'' its nominal parameters, with effects up to and including laptop meltdown.}}&lt;br /&gt;
&lt;br /&gt;
For an example of what may be achieved, on one ThinkPad {{T43}} all voltages could be reduced by 20-30% and moreover, the minimal frequency reduced from 800MHz to 533MHz; this reduced stable CPU temperature by 7-10deg under both idle and burn-in conditions. Combined with an [[ACPI fan control script]] and/or the [[patch for controlling fan speed]], this greatly reduced the [[Problem with fan noise|problem with fan noise]].&lt;br /&gt;
&lt;br /&gt;
{{NOTE|While under''volting'' has a clear measurable effect, it's not clear if under''clocking'' really works. &amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt; reflects the underclocked frequency, but enabling debug output on &amp;lt;tt&amp;gt;cpufreq&amp;lt;/tt&amp;gt; causes it to say things like &amp;quot;&amp;lt;tt&amp;gt;CPU frequency out of sync: cpufreq and timing core thinks of 533000, is 800000 kHz.&amp;lt;/tt&amp;gt;&amp;quot; where the former is the chosen underclocked frequency and the latter is the documented minimum frequency. This discrepancy also causes [[Software Suspend 2]] to oops during suspend.}}&lt;br /&gt;
&lt;br /&gt;
There are several methods to control CPU voltage in Linux, and currently all of them require a patcher kernel.&lt;br /&gt;
&lt;br /&gt;
== Alternative 1: patch with hard-coded voltages ==&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
# Determine the stable voltages for each frequency, using some overclocking/undervolting utility that has specific support for Pentium M (&amp;quot;Centrino&amp;quot;) processors. It seems that no such utility exists for Linux. For windows, one good choice is [http://www.pbus-167.com/chc.htm Notebook Hardware Control (NHC)], which conveniently also includes a table of nominal frequencies and voltags (in its help file).&amp;lt;br&amp;gt; Ascertain that at the undervolted settings the CPU actually performs correct computation ([http://www.mersenne.org/freesoft.htm Prime95] in &amp;quot;Tortute Test&amp;quot; mode seems to be a good partial test emphasizing FPU and memory access).&amp;lt;br&amp;gt; Note that beside reducing voltages (undervolting), you can also try to add lower frequencies (underclocking).&lt;br /&gt;
# Determine the model name string reported by the CPU, e.g., via the &amp;quot;&amp;lt;tt&amp;gt;Model name&amp;lt;/tt&amp;gt;&amp;quot; line in {{path|/proc/cpuinfo}}, and likewise the &amp;lt;tt&amp;gt;cpu_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;model&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;stepping&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Grab a copy of the example patch below and update it to reflect the parameters, frequencies and voltages you found.&lt;br /&gt;
# Apply the patch to your kernel (tested with 2.6.13.1 and 2.6.14-rc2).&lt;br /&gt;
# To prevent the ACPI table from overriding your table, disable the &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt; kernel option.&lt;br /&gt;
# Compile and install the new kernel.&lt;br /&gt;
&lt;br /&gt;
The changes should be active now. If you want to see debug information attesting to thus, do the following:&lt;br /&gt;
&lt;br /&gt;
# Reboot in &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt; mode.&lt;br /&gt;
# {{cmdroot|echo 2 &amp;gt; /sys/module/cpufreq/parameters/debug}}&lt;br /&gt;
# {{cmdroot|modprobe speedstep-centrino}}&lt;br /&gt;
# {{cmdroot|dmesg}} and check for the message &amp;quot;&amp;lt;tt&amp;gt;speedstep-centrino: found &amp;quot;Intel(R) Pentium(R) M processor &amp;lt;/tt&amp;gt;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you don't see that message, you got the &amp;lt;tt&amp;gt;cpu_id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;model_name&amp;lt;/tt&amp;gt; parmaeters wrong. If your system crashes, re-test the voltages and adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
Please report your results (including voltages)!&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel patch (example) ===&lt;br /&gt;
&lt;br /&gt;
The following example shows how to undervolt a Pentium M 750 (1.86GHz) on a ThinkPad {{T43}}. As discussed above, the parameters are specific to this one CPU. You will need to experimentally find the correct settings for your own CPU and adjust the patch accordingly.&lt;br /&gt;
&lt;br /&gt;
Note that the Pentium M 750 has a 533MHz FSB (quad-pumped 133MHz), hence the use of &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt;. If you have a Pentium M with 400MHz FSB (i.e., quad-pumped 100MHz, found in [[Intel Pentium M (Banias)|Banias]] and older [[Intel Pentium M (Dothan)|Dothan]]) then in the voltage table change &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OP&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--- linux-2.6.13.1-vanilla/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-09-10 05:42:58.000000000 +0300&lt;br /&gt;
+++ linux-2.6.13.1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-10-18 04:46:01.000000000 +0200&lt;br /&gt;
@@ -54,6 +54,7 @@ enum {&lt;br /&gt;
 	CPU_DOTHAN_A1,&lt;br /&gt;
 	CPU_DOTHAN_A2,&lt;br /&gt;
 	CPU_DOTHAN_B0,&lt;br /&gt;
+	CPU_DOTHAN_C0,&lt;br /&gt;
 	CPU_MP4HT_D0,&lt;br /&gt;
 	CPU_MP4HT_E0,&lt;br /&gt;
 };&lt;br /&gt;
@@ -63,6 +64,8 @@ static const struct cpu_id cpu_ids[] = {&lt;br /&gt;
 	[CPU_DOTHAN_A1]	= { 6, 13, 1 },&lt;br /&gt;
 	[CPU_DOTHAN_A2]	= { 6, 13, 2 },&lt;br /&gt;
 	[CPU_DOTHAN_B0]	= { 6, 13, 6 },&lt;br /&gt;
+	[CPU_DOTHAN_C0]	= { 6, 13, 8 },&lt;br /&gt;
 	[CPU_MP4HT_D0]	= {15,  3, 4 },&lt;br /&gt;
 	[CPU_MP4HT_E0]	= {15,  4, 1 },&lt;br /&gt;
 };&lt;br /&gt;
@@ -94,6 +97,12 @@ static struct cpufreq_driver centrino_dr&lt;br /&gt;
 		.frequency = (mhz) * 1000,				\&lt;br /&gt;
 		.index = (((mhz)/100) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
 	}&lt;br /&gt;
+/* Likewise, for processors with 133MHz FSB. */&lt;br /&gt;
+#define OP133(mhz, mv)							\&lt;br /&gt;
+	{								\&lt;br /&gt;
+		.frequency = (mhz) * 1000,				\&lt;br /&gt;
+		.index = (((mhz)/133) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
+	}&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * These voltage tables were derived from the Intel Pentium M&lt;br /&gt;
@@ -202,7 +211,26 @@ static struct cpufreq_frequency_table ba&lt;br /&gt;
 	OP(1700, 1484),&lt;br /&gt;
 	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
 };&lt;br /&gt;
+&lt;br /&gt;
+/* Intel Pentium M 750, drastically undervoltaged */&lt;br /&gt;
+static struct cpufreq_frequency_table pentium_m_750[] =&lt;br /&gt;
+{&lt;br /&gt;
+	    /* MHz   mV */&lt;br /&gt;
+	OP133( 800,  700),&lt;br /&gt;
+	OP133(1066,  780),&lt;br /&gt;
+	OP133(1200,  828),&lt;br /&gt;
+	OP133(1333,  876),&lt;br /&gt;
+	OP133(1466,  924),&lt;br /&gt;
+	OP133(1600,  972),&lt;br /&gt;
+	OP133(1733, 1020),&lt;br /&gt;
+	OP133(1866, 1068),&lt;br /&gt;
+	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
+};&lt;br /&gt;
+&lt;br /&gt;
 #undef OP&lt;br /&gt;
+#undef OP133&lt;br /&gt;
 &lt;br /&gt;
 #define _BANIAS(cpuid, max, name)	\&lt;br /&gt;
 {	.cpu_id		= cpuid,	\&lt;br /&gt;
@@ -225,6 +253,12 @@ static struct cpu_model models[] =&lt;br /&gt;
 	BANIAS(1500),&lt;br /&gt;
 	BANIAS(1600),&lt;br /&gt;
 	BANIAS(1700),&lt;br /&gt;
+	{&lt;br /&gt;
+		.cpu_id     =  &amp;amp;cpu_ids[CPU_DOTHAN_C0],&lt;br /&gt;
+		.model_name = &amp;quot;Intel(R) Pentium(R) M processor 1.86GHz&amp;quot;,&lt;br /&gt;
+		.max_freq   = 1866000,&lt;br /&gt;
+		.op_points  = pentium_m_750&lt;br /&gt;
+	},&lt;br /&gt;
 &lt;br /&gt;
 	/* NULL model_name is a wildcard */&lt;br /&gt;
 	{ &amp;amp;cpu_ids[CPU_DOTHAN_A1], NULL, 0, NULL },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't forget to disable &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Alternative 2: patch with user-space control==&lt;br /&gt;
The [http://fabrice.bellamy.club.fr/bdz.undervolt.2005.10.22.a.patch bdz.undervolt.2005.10.22.a.patch] patch, written by Gentoo-Wiki user &amp;quot;Bdz&amp;quot;, allows voltages to be changed without reboot.&lt;br /&gt;
&lt;br /&gt;
It presents a userspace interface, as in the following example:&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
:{{cmdresult|1356,1356,1356,1356,1356,1356,1356,1244,1116,988}}&lt;br /&gt;
:{{cmdroot|echo &amp;quot;1084,1084,1084,1084,1084,1084,1084,988,908,860&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
&lt;br /&gt;
The relevant [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU page] on Gentoo-Wiki providues further information and some helpful hints and scripts for voltage adjustment.&lt;br /&gt;
&lt;br /&gt;
Note that this approach only allows adjustment of the voltages for the normal clock speeds (as reported by the ACPI table in the BIOS). On some models (e.g., ThinkPad {{T43}}) this does not inlude all clock speeds supported by the processor.&lt;br /&gt;
&lt;br /&gt;
==Alternative 3: another patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
The [http://avkrok.net/nw8240/centrino-voltages.diff centrino-voltages.diff] patch, written by Rickard Holmberg, also provides user-space control. See [http://avkrok.net/nw8240/ here] and [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030772.html here] for usage.&lt;br /&gt;
&lt;br /&gt;
==Gentoo Initscript==&lt;br /&gt;
This is a Gentoo Initscript for the userspace control method &lt;br /&gt;
&lt;br /&gt;
Configuration file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# /etc/conf.d/undervoltage&lt;br /&gt;
&lt;br /&gt;
# voltage table sysfs interface&lt;br /&gt;
VTABLE_SYSFS=&amp;quot;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# switch back to  DEFAULT_VTABLE if undervoltage is stopped? [yes/no]&lt;br /&gt;
SWITCH_BACK=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# pentium-m banias 1,7GHz default voltages&lt;br /&gt;
DEFAULT_VTABLE=&amp;quot;1484,1308,1228,1116,1004,956&amp;quot;&lt;br /&gt;
# pentium-m banias 1,7GHz lowered voltages [ -208mV ]&lt;br /&gt;
MOD_VTABLE=&amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initscript&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/sbin/runscript&lt;br /&gt;
# Copyright 1999-2005 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
# $Header: $&lt;br /&gt;
&lt;br /&gt;
sysfs_check() {&lt;br /&gt;
&lt;br /&gt;
        if ! [ -e ${VTABLE_SYSFS} ]; then&lt;br /&gt;
                logger &amp;quot;No sysfs voltage_table present. Modifying vcore voltage failed.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;It seems that the undervolting patch has not been applied to the kernel.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;see http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU for further information&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        sysfs_check || return 1&lt;br /&gt;
        ebegin &amp;quot;Switching to modified voltage table [${MOD_VTABLE}]&amp;quot;&lt;br /&gt;
                echo ${MOD_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
        eend $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# I think it is not necessary to switch to the default voltage table on shutdown&lt;br /&gt;
stop() {&lt;br /&gt;
        if [ $SWITCH_BACK = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
                ebegin &amp;quot;Switching back to default voltage table [${DEFAULT_VTABLE}]&amp;quot;&lt;br /&gt;
                        echo ${DEFAULT_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tested Frequencies==&lt;br /&gt;
&lt;br /&gt;
If you have done excessive testing with user defined frequencies (stable system for over a month).&lt;br /&gt;
and no lookups occur when computing primes with mprime http://mersenne.org/&lt;br /&gt;
you can post your frequencies here.&lt;br /&gt;
&lt;br /&gt;
Pentium-M Banias 1.7 - &amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
&lt;br /&gt;
* A [http://forums.anandtech.com/messageview.aspx?catid=51&amp;amp;threadid=1677980 forum discussion] of Pentium M undervolting&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13435</id>
		<title>Pentium M undervolting and underclocking</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=Pentium_M_undervolting_and_underclocking&amp;diff=13435"/>
		<updated>2005-12-17T00:37:26Z</updated>

		<summary type="html">&lt;p&gt;Hothead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Intel Pentium M processors from the [[Intel Pentium M (Dothan)|Dothan]] and [[Intel Pentium M (Banias)|Banias]] families can be instructed to operate at voltage and clock frequencies lower than the nominal ones recommended by Intel and used by ThinkPads by default. Experience shows that the processor may continue working correctly at lower-than-nominal voltages and frequencies, thereby reducing power consumption, heat and fan noise.&lt;br /&gt;
&lt;br /&gt;
In the Pentium M, speed and voltage are controlled by software (through the MSR registers). It is up to the operating system to choose the right voltage for each frequency. Normally this is done according to tables published by Intel or according to ACPI tables. However, this can be overriden - in the case of Linux, by a kernel patch.&lt;br /&gt;
&lt;br /&gt;
{{WARN|Following this instructions will operate your CPU under conditions it was not designed for. Even if your system seems stable, it may still suffer transient faults leading to arbitrary data corruption. In addition, errors in following these instructions (or changes between processor models) may operate the CPU ''above'' its nominal parameters, with effects up to and including laptop meltdown.}}&lt;br /&gt;
&lt;br /&gt;
For an example of what may be achieved, on one ThinkPad {{T43}} all voltages could be reduced by 20-30% and moreover, the minimal frequency reduced from 800MHz to 533MHz; this reduced stable CPU temperature by 7-10deg under both idle and burn-in conditions. Combined with an [[ACPI fan control script]] and/or the [[patch for controlling fan speed]], this greatly reduced the [[Problem with fan noise|problem with fan noise]].&lt;br /&gt;
&lt;br /&gt;
{{NOTE|While under''volting'' has a clear measurable effect, it's not clear if under''clocking'' really works. &amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt; reflects the underclocked frequency, but enabling debug output on &amp;lt;tt&amp;gt;cpufreq&amp;lt;/tt&amp;gt; causes it to say things like &amp;quot;&amp;lt;tt&amp;gt;CPU frequency out of sync: cpufreq and timing core thinks of 533000, is 800000 kHz.&amp;lt;/tt&amp;gt;&amp;quot; where the former is the chosen underclocked frequency and the latter is the documented minimum frequency. This discrepancy also causes [[Software Suspend 2]] to oops during suspend.}}&lt;br /&gt;
&lt;br /&gt;
There are several methods to control CPU voltage in Linux, and currently all of them require a patcher kernel.&lt;br /&gt;
&lt;br /&gt;
== Alternative 1: patch with hard-coded voltages ==&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
&lt;br /&gt;
# Determine the stable voltages for each frequency, using some overclocking/undervolting utility that has specific support for Pentium M (&amp;quot;Centrino&amp;quot;) processors. It seems that no such utility exists for Linux. For windows, one good choice is [http://www.pbus-167.com/chc.htm Notebook Hardware Control (NHC)], which conveniently also includes a table of nominal frequencies and voltags (in its help file).&amp;lt;br&amp;gt; Ascertain that at the undervolted settings the CPU actually performs correct computation ([http://www.mersenne.org/freesoft.htm Prime95] in &amp;quot;Tortute Test&amp;quot; mode seems to be a good partial test emphasizing FPU and memory access).&amp;lt;br&amp;gt; Note that beside reducing voltages (undervolting), you can also try to add lower frequencies (underclocking).&lt;br /&gt;
# Determine the model name string reported by the CPU, e.g., via the &amp;quot;&amp;lt;tt&amp;gt;Model name&amp;lt;/tt&amp;gt;&amp;quot; line in {{path|/proc/cpuinfo}}, and likewise the &amp;lt;tt&amp;gt;cpu_family&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;model&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;stepping&amp;lt;/tt&amp;gt;.&lt;br /&gt;
# Grab a copy of the example patch below and update it to reflect the parameters, frequencies and voltages you found.&lt;br /&gt;
# Apply the patch to your kernel (tested with 2.6.13.1 and 2.6.14-rc2).&lt;br /&gt;
# To prevent the ACPI table from overriding your table, disable the &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt; kernel option.&lt;br /&gt;
# Compile and install the new kernel.&lt;br /&gt;
&lt;br /&gt;
The changes should be active now. If you want to see debug information attesting to thus, do the following:&lt;br /&gt;
&lt;br /&gt;
# Reboot in &amp;lt;tt&amp;gt;single&amp;lt;/tt&amp;gt; mode.&lt;br /&gt;
# {{cmdroot|echo 2 &amp;gt; /sys/module/cpufreq/parameters/debug}}&lt;br /&gt;
# {{cmdroot|modprobe speedstep-centrino}}&lt;br /&gt;
# {{cmdroot|dmesg}} and check for the message &amp;quot;&amp;lt;tt&amp;gt;speedstep-centrino: found &amp;quot;Intel(R) Pentium(R) M processor &amp;lt;/tt&amp;gt;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you don't see that message, you got the &amp;lt;tt&amp;gt;cpu_id&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;model_name&amp;lt;/tt&amp;gt; parmaeters wrong. If your system crashes, re-test the voltages and adjust accordingly.&lt;br /&gt;
&lt;br /&gt;
Please report your results (including voltages)!&lt;br /&gt;
&lt;br /&gt;
=== Linux kernel patch (example) ===&lt;br /&gt;
&lt;br /&gt;
The following example shows how to undervolt a Pentium M 750 (1.86GHz) on a ThinkPad {{T43}}. As discussed above, the parameters are specific to this one CPU. You will need to experimentally find the correct settings for your own CPU and adjust the patch accordingly.&lt;br /&gt;
&lt;br /&gt;
Note that the Pentium M 750 has a 533MHz FSB (quad-pumped 133MHz), hence the use of &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt;. If you have a Pentium M with 400MHz FSB (i.e., quad-pumped 100MHz, found in [[Intel Pentium M (Banias)|Banias]] and older [[Intel Pentium M (Dothan)|Dothan]]) then in the voltage table change &amp;lt;tt&amp;gt;OP133&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;OP&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;--- linux-2.6.13.1-vanilla/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-09-10 05:42:58.000000000 +0300&lt;br /&gt;
+++ linux-2.6.13.1/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c	2005-10-18 04:46:01.000000000 +0200&lt;br /&gt;
@@ -54,6 +54,7 @@ enum {&lt;br /&gt;
 	CPU_DOTHAN_A1,&lt;br /&gt;
 	CPU_DOTHAN_A2,&lt;br /&gt;
 	CPU_DOTHAN_B0,&lt;br /&gt;
+	CPU_DOTHAN_C0,&lt;br /&gt;
 	CPU_MP4HT_D0,&lt;br /&gt;
 	CPU_MP4HT_E0,&lt;br /&gt;
 };&lt;br /&gt;
@@ -63,6 +64,8 @@ static const struct cpu_id cpu_ids[] = {&lt;br /&gt;
 	[CPU_DOTHAN_A1]	= { 6, 13, 1 },&lt;br /&gt;
 	[CPU_DOTHAN_A2]	= { 6, 13, 2 },&lt;br /&gt;
 	[CPU_DOTHAN_B0]	= { 6, 13, 6 },&lt;br /&gt;
+	[CPU_DOTHAN_C0]	= { 6, 13, 8 },&lt;br /&gt;
 	[CPU_MP4HT_D0]	= {15,  3, 4 },&lt;br /&gt;
 	[CPU_MP4HT_E0]	= {15,  4, 1 },&lt;br /&gt;
 };&lt;br /&gt;
@@ -94,6 +97,12 @@ static struct cpufreq_driver centrino_dr&lt;br /&gt;
 		.frequency = (mhz) * 1000,				\&lt;br /&gt;
 		.index = (((mhz)/100) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
 	}&lt;br /&gt;
+/* Likewise, for processors with 133MHz FSB. */&lt;br /&gt;
+#define OP133(mhz, mv)							\&lt;br /&gt;
+	{								\&lt;br /&gt;
+		.frequency = (mhz) * 1000,				\&lt;br /&gt;
+		.index = (((mhz)/133) &amp;lt;&amp;lt; 8) | ((mv - 700) / 16)		\&lt;br /&gt;
+	}&lt;br /&gt;
 &lt;br /&gt;
 /*&lt;br /&gt;
  * These voltage tables were derived from the Intel Pentium M&lt;br /&gt;
@@ -202,7 +211,26 @@ static struct cpufreq_frequency_table ba&lt;br /&gt;
 	OP(1700, 1484),&lt;br /&gt;
 	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
 };&lt;br /&gt;
+&lt;br /&gt;
+/* Intel Pentium M 750, drastically undervoltaged */&lt;br /&gt;
+static struct cpufreq_frequency_table pentium_m_750[] =&lt;br /&gt;
+{&lt;br /&gt;
+	    /* MHz   mV */&lt;br /&gt;
+	OP133( 800,  700),&lt;br /&gt;
+	OP133(1066,  780),&lt;br /&gt;
+	OP133(1200,  828),&lt;br /&gt;
+	OP133(1333,  876),&lt;br /&gt;
+	OP133(1466,  924),&lt;br /&gt;
+	OP133(1600,  972),&lt;br /&gt;
+	OP133(1733, 1020),&lt;br /&gt;
+	OP133(1866, 1068),&lt;br /&gt;
+	{ .frequency = CPUFREQ_TABLE_END }&lt;br /&gt;
+};&lt;br /&gt;
+&lt;br /&gt;
 #undef OP&lt;br /&gt;
+#undef OP133&lt;br /&gt;
 &lt;br /&gt;
 #define _BANIAS(cpuid, max, name)	\&lt;br /&gt;
 {	.cpu_id		= cpuid,	\&lt;br /&gt;
@@ -225,6 +253,12 @@ static struct cpu_model models[] =&lt;br /&gt;
 	BANIAS(1500),&lt;br /&gt;
 	BANIAS(1600),&lt;br /&gt;
 	BANIAS(1700),&lt;br /&gt;
+	{&lt;br /&gt;
+		.cpu_id     =  &amp;amp;cpu_ids[CPU_DOTHAN_C0],&lt;br /&gt;
+		.model_name = &amp;quot;Intel(R) Pentium(R) M processor 1.86GHz&amp;quot;,&lt;br /&gt;
+		.max_freq   = 1866000,&lt;br /&gt;
+		.op_points  = pentium_m_750&lt;br /&gt;
+	},&lt;br /&gt;
 &lt;br /&gt;
 	/* NULL model_name is a wildcard */&lt;br /&gt;
 	{ &amp;amp;cpu_ids[CPU_DOTHAN_A1], NULL, 0, NULL },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't forget to disable &amp;lt;tt&amp;gt;CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Alternative 2: patch with user-space control==&lt;br /&gt;
The [http://fabrice.bellamy.club.fr/bdz.undervolt.2005.10.22.a.patch bdz.undervolt.2005.10.22.a.patch] patch, written by Gentoo-Wiki user &amp;quot;Bdz&amp;quot;, allows voltages to be changed without reboot.&lt;br /&gt;
&lt;br /&gt;
It presents a userspace interface, as in the following example:&lt;br /&gt;
:{{cmdroot|cat /sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
:{{cmdresult|1356,1356,1356,1356,1356,1356,1356,1244,1116,988}}&lt;br /&gt;
:{{cmdroot|echo &amp;quot;1084,1084,1084,1084,1084,1084,1084,988,908,860&amp;quot; &amp;gt;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table}}&lt;br /&gt;
&lt;br /&gt;
The relevant [http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU page] on Gentoo-Wiki providues further information and some helpful hints and scripts for voltage adjustment.&lt;br /&gt;
&lt;br /&gt;
Note that this approach only allows adjustment of the voltages for the normal clock speeds (as reported by the ACPI table in the BIOS). On some models (e.g., ThinkPad {{T43}}) this does not inlude all clock speeds supported by the processor.&lt;br /&gt;
&lt;br /&gt;
==Alternative 3: another patch with user-space control==&lt;br /&gt;
&lt;br /&gt;
The [http://avkrok.net/nw8240/centrino-voltages.diff centrino-voltages.diff] patch, written by Rickard Holmberg, also provides user-space control. See [http://avkrok.net/nw8240/ here] and [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2005-December/030772.html here] for usage.&lt;br /&gt;
&lt;br /&gt;
==Gentoo Initscript==&lt;br /&gt;
&lt;br /&gt;
Configuration file&lt;br /&gt;
&lt;br /&gt;
# /etc/conf.d/undervoltage&lt;br /&gt;
&lt;br /&gt;
# voltage table sysfs interface&lt;br /&gt;
VTABLE_SYSFS=&amp;quot;/sys/devices/system/cpu/cpu0/cpufreq/voltage_table&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# switch back to  DEFAULT_VTABLE if undervoltage is stopped? [yes/no]&lt;br /&gt;
SWITCH_BACK=&amp;quot;no&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# pentium-m banias 1,7GHz default voltages&lt;br /&gt;
DEFAULT_VTABLE=&amp;quot;1484,1308,1228,1116,1004,956&amp;quot;&lt;br /&gt;
# pentium-m banias 1,7GHz lowered voltages [ -208mV ]&lt;br /&gt;
MOD_VTABLE=&amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&amp;lt;/prev&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Initscript&lt;br /&gt;
&lt;br /&gt;
#!/sbin/runscript&lt;br /&gt;
# Copyright 1999-2005 Gentoo Foundation&lt;br /&gt;
# Distributed under the terms of the GNU General Public License v2&lt;br /&gt;
# $Header: $&lt;br /&gt;
&lt;br /&gt;
sysfs_check() {&lt;br /&gt;
&lt;br /&gt;
        if ! [ -e ${VTABLE_SYSFS} ]; then&lt;br /&gt;
                logger &amp;quot;No sysfs voltage_table present. Modifying vcore voltage failed.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;It seems that the undervolting patch has not been applied to the kernel.&amp;quot;&lt;br /&gt;
                eerror &amp;quot;see http://gentoo-wiki.com/HOWTO_Undervolt_a_Pentium_M_CPU for further information&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
        sysfs_check || return 1&lt;br /&gt;
        ebegin &amp;quot;Switching to modified voltage table [${MOD_VTABLE}]&amp;quot;&lt;br /&gt;
                echo ${MOD_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
        eend $?&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# I think it is not necessary to switch to the default voltage table on shutdown&lt;br /&gt;
stop() {&lt;br /&gt;
        if [ $SWITCH_BACK = &amp;quot;yes&amp;quot; ]; then&lt;br /&gt;
                ebegin &amp;quot;Switching back to default voltage table [${DEFAULT_VTABLE}]&amp;quot;&lt;br /&gt;
                        echo ${DEFAULT_VTABLE} &amp;gt; ${VTABLE_SYSFS}&lt;br /&gt;
                eend $?&lt;br /&gt;
        fi &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tested Frequencies==&lt;br /&gt;
&lt;br /&gt;
If you have done excessive testing with user defined frequencies (stable system for over a month).&lt;br /&gt;
and no lookups occur when computing primes with mprime http://mersenne.org/&lt;br /&gt;
you can post your frequencies here.&lt;br /&gt;
&lt;br /&gt;
Pentium-M Banias 1.7 - &amp;quot;1276,1100,1020,908,796,748&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==External Sources==&lt;br /&gt;
&lt;br /&gt;
* A [http://forums.anandtech.com/messageview.aspx?catid=51&amp;amp;threadid=1677980 forum discussion] of Pentium M undervolting&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=KThinkBat&amp;diff=14651</id>
		<title>KThinkBat</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=KThinkBat&amp;diff=14651"/>
		<updated>2005-12-16T23:57:37Z</updated>

		<summary type="html">&lt;p&gt;Hothead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
[https://lepetitfou.dyndns.org/wiki/bin/view/Werkstatt/KThinkBat KThinkBat] is a laptop battery monitor for the KDE-Kicker. It is inspired by the Windows Application &amp;quot;Battery Maximizer&amp;quot; which is included with ThinkPads. &lt;br /&gt;
&lt;br /&gt;
Homepage: https://lepetitfou.dyndns.org/wiki/bin/view/Werkstatt/KThinkBat&lt;br /&gt;
&lt;br /&gt;
Author: Tobias Roeser&lt;br /&gt;
&lt;br /&gt;
Latest Version: 0.1.4&lt;br /&gt;
&lt;br /&gt;
==Screenshot==&lt;br /&gt;
&lt;br /&gt;
[[Image:KThinkBat.png]]&lt;br /&gt;
&lt;br /&gt;
Offline Mode: You see how much power left and how much is consumed at the moment.&lt;br /&gt;
&lt;br /&gt;
[[Image:KThinkBat_ac.png]]&lt;br /&gt;
&lt;br /&gt;
Online Mode: You see the loading-power.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
KThinkBat uses the autotools. For a standard installation use &lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 su -c 'make install'&lt;br /&gt;
&lt;br /&gt;
==Gentoo==&lt;br /&gt;
You can use the the ebuild from this [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/ portage overlay], category/package: [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop app-laptop]/[https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop/kthinkbat kthinkbat].&lt;br /&gt;
&lt;br /&gt;
==Patches==&lt;br /&gt;
&lt;br /&gt;
Here's a small patch that changes the color of the current power consumtion text to white ( for dark background). Furthermore it changes the battery gauge's size (looks nicer if you place the kicker vertical).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -ur kthinkbat.orig/src/kthinkbat.cpp kthinkbat/src/kthinkbat.cpp&lt;br /&gt;
--- kthinkbat.orig/src/kthinkbat.cpp    2005-12-15 22:54:28.000000000 +0100&lt;br /&gt;
+++ kthinkbat/src/kthinkbat.cpp 2005-12-15 23:32:10.000000000 +0100&lt;br /&gt;
@@ -101,7 +101,7 @@&lt;br /&gt;
 void KThinkBat::paintEvent(QPaintEvent* event)&lt;br /&gt;
 {&lt;br /&gt;
     // Werte fr Gauge und Rand&lt;br /&gt;
-    QSize gaugeFill(40, 18);&lt;br /&gt;
+    QSize gaugeFill(40, 14);&lt;br /&gt;
     QSize gHalfDot(4, 4);&lt;br /&gt;
     QSize offset(4, 4);&lt;br /&gt;
&lt;br /&gt;
@@ -135,9 +135,10 @@&lt;br /&gt;
     painter.drawPolyline(border);&lt;br /&gt;
&lt;br /&gt;
     // Prozent-Anzeige&lt;br /&gt;
-    painter.drawText( offset.width() + 12, offset.height() + gaugeFill.height() - 5, QString().number(batValue));&lt;br /&gt;
+    painter.drawText( offset.width() + 14, offset.height() + gaugeFill.height() - 2, QString().number(batValue));&lt;br /&gt;
&lt;br /&gt;
     // aktueller Verbrauch in W&lt;br /&gt;
+    painter.setPen ( &amp;quot;white&amp;quot; );&lt;br /&gt;
     painter.drawText( offset.width(), offset.height() + gaugeFill.height() + 12, QString().number((mWH + 500)/1000) + &amp;quot; &amp;quot; + unity );&lt;br /&gt;
&lt;br /&gt;
     painter.end();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
* [http://lepetitfou.dyndns.org/download/kthinkbat/ Download directory]&lt;br /&gt;
* [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop/kthinkbat/ KThinkPad ebuilds]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]] [[Category:Gentoo]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=KThinkBat&amp;diff=13430</id>
		<title>KThinkBat</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=KThinkBat&amp;diff=13430"/>
		<updated>2005-12-16T23:57:03Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Gentoo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
[https://lepetitfou.dyndns.org/wiki/bin/view/Werkstatt/KThinkBat KThinkBat] is a laptop battery monitor for the KDE-Kicker. It is inspired by the Windows Application &amp;quot;Battery Maximizer&amp;quot; which is included with ThinkPads. &lt;br /&gt;
&lt;br /&gt;
Homepage: https://lepetitfou.dyndns.org/wiki/bin/view/Werkstatt/KThinkBat&lt;br /&gt;
&lt;br /&gt;
Author: Tobias Roeser&lt;br /&gt;
&lt;br /&gt;
Latest Version: 0.1.4&lt;br /&gt;
&lt;br /&gt;
==Screenshot==&lt;br /&gt;
&lt;br /&gt;
[[Image:KThinkBat.png]]&lt;br /&gt;
&lt;br /&gt;
Offline Mode: You see how much power left and how much is consumed at the moment.&lt;br /&gt;
&lt;br /&gt;
[[Image:KThinkBat_ac.png]]&lt;br /&gt;
&lt;br /&gt;
Online Mode: You see the loading-power.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
KThinkBat uses the autotools. For a standard installation use &lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 su -c 'make install'&lt;br /&gt;
&lt;br /&gt;
==Gentoo==&lt;br /&gt;
You can use the the ebuild from this [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/ portage overlay], category/package: [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop app-laptop]/[https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop/kthinkbat kthinkbat].&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
* [http://lepetitfou.dyndns.org/download/kthinkbat/ Download directory]&lt;br /&gt;
* [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop/kthinkbat/ KThinkPad ebuilds]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]] [[Category:Gentoo]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=KThinkBat&amp;diff=13429</id>
		<title>KThinkBat</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=KThinkBat&amp;diff=13429"/>
		<updated>2005-12-16T23:56:00Z</updated>

		<summary type="html">&lt;p&gt;Hothead: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
&lt;br /&gt;
[https://lepetitfou.dyndns.org/wiki/bin/view/Werkstatt/KThinkBat KThinkBat] is a laptop battery monitor for the KDE-Kicker. It is inspired by the Windows Application &amp;quot;Battery Maximizer&amp;quot; which is included with ThinkPads. &lt;br /&gt;
&lt;br /&gt;
Homepage: https://lepetitfou.dyndns.org/wiki/bin/view/Werkstatt/KThinkBat&lt;br /&gt;
&lt;br /&gt;
Author: Tobias Roeser&lt;br /&gt;
&lt;br /&gt;
Latest Version: 0.1.4&lt;br /&gt;
&lt;br /&gt;
==Screenshot==&lt;br /&gt;
&lt;br /&gt;
[[Image:KThinkBat.png]]&lt;br /&gt;
&lt;br /&gt;
Offline Mode: You see how much power left and how much is consumed at the moment.&lt;br /&gt;
&lt;br /&gt;
[[Image:KThinkBat_ac.png]]&lt;br /&gt;
&lt;br /&gt;
Online Mode: You see the loading-power.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
KThinkBat uses the autotools. For a standard installation use &lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
 make&lt;br /&gt;
 su -c 'make install'&lt;br /&gt;
&lt;br /&gt;
==Gentoo==&lt;br /&gt;
You can use the the ebuild from this [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/ portage overlay], category/package: [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop app-laptop]/[https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop/kthinkbat kthinkbat].&lt;br /&gt;
&lt;br /&gt;
===Cosmetical Patch===&lt;br /&gt;
&lt;br /&gt;
Here's a small patch that changes the color of the current power consumtion text to white ( for dark background). Furthermore it changes the battery gauge's size (looks nicer if you place the kicker vertical).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff -ur kthinkbat.orig/src/kthinkbat.cpp kthinkbat/src/kthinkbat.cpp&lt;br /&gt;
--- kthinkbat.orig/src/kthinkbat.cpp    2005-12-15 22:54:28.000000000 +0100&lt;br /&gt;
+++ kthinkbat/src/kthinkbat.cpp 2005-12-15 23:32:10.000000000 +0100&lt;br /&gt;
@@ -101,7 +101,7 @@&lt;br /&gt;
 void KThinkBat::paintEvent(QPaintEvent* event)&lt;br /&gt;
 {&lt;br /&gt;
     // Werte fr Gauge und Rand&lt;br /&gt;
-    QSize gaugeFill(40, 18);&lt;br /&gt;
+    QSize gaugeFill(40, 14);&lt;br /&gt;
     QSize gHalfDot(4, 4);&lt;br /&gt;
     QSize offset(4, 4);&lt;br /&gt;
&lt;br /&gt;
@@ -135,9 +135,10 @@&lt;br /&gt;
     painter.drawPolyline(border);&lt;br /&gt;
&lt;br /&gt;
     // Prozent-Anzeige&lt;br /&gt;
-    painter.drawText( offset.width() + 12, offset.height() + gaugeFill.height() - 5, QString().number(batValue));&lt;br /&gt;
+    painter.drawText( offset.width() + 14, offset.height() + gaugeFill.height() - 2, QString().number(batValue));&lt;br /&gt;
&lt;br /&gt;
     // aktueller Verbrauch in W&lt;br /&gt;
+    painter.setPen ( &amp;quot;white&amp;quot; );&lt;br /&gt;
     painter.drawText( offset.width(), offset.height() + gaugeFill.height() + 12, QString().number((mWH + 500)/1000) + &amp;quot; &amp;quot; + unity );&lt;br /&gt;
&lt;br /&gt;
     painter.end();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
* [http://lepetitfou.dyndns.org/download/kthinkbat/ Download directory]&lt;br /&gt;
* [https://lepetitfou.dyndns.org/svn/portage-overlay-lefou/trunk/app-laptop/kthinkbat/ KThinkPad ebuilds]&lt;br /&gt;
&lt;br /&gt;
[[Category:Tools]] [[Category:Gentoo]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=12151</id>
		<title>How to install ndiswrapper for the IBM 11a/b/g WLAN adaptor</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=12151"/>
		<updated>2005-09-30T22:01:23Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation Installation instructions] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Usage of the IBM 11 a/b/g adapter with ndiswrapper: ==&lt;br /&gt;
&lt;br /&gt;
Because I had massive problems getting the madwifi driver running on kernel 2.6.13 I gave ndiswrapper a try - with impressive success:&lt;br /&gt;
&lt;br /&gt;
=== Reference system ===&lt;br /&gt;
*Thinkpad T41p [[2373-GHG | 2373-GHG]]&lt;br /&gt;
*Kernel 2.6.13&lt;br /&gt;
*Ndiswrapper 1.2&lt;br /&gt;
*[ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/77wc14ww.exe 802.11bg WLAN Mini PCI Express adapter software v 4.1.102.1095]&lt;br /&gt;
&lt;br /&gt;
=== Advantages of Ndiswrapper === &lt;br /&gt;
*full power management support (madwifi has no powermanagement support)&lt;br /&gt;
*connection to access points establishes fast (madwifi has problems here / especially with dhcp)&lt;br /&gt;
&lt;br /&gt;
There are also some drawbacks of [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Main_Page Ndiswrapper] against [[Madwifi | madwifi]]. Some features that madwifi allready provides are missing in ndiswrapper.&lt;br /&gt;
&lt;br /&gt;
=== [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation Installation instructions] ===&lt;br /&gt;
&lt;br /&gt;
Note: You can also install the driver from an existing windows system.&lt;br /&gt;
Mount your windows partition and locate the *.INF file of the windows driver:  ''find -name NET5211.INF''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:T41p]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9529</id>
		<title>How to install ndiswrapper for the IBM 11a/b/g WLAN adaptor</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9529"/>
		<updated>2005-09-30T22:01:03Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation Installation instructions] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Usage of the IBM 11 a/b/g adapter with ndiswrapper: ==&lt;br /&gt;
&lt;br /&gt;
Because I had massive problems getting the madwifi driver running on kernel 2.6.13 I gave ndiswrapper a try - with impressive success:&lt;br /&gt;
&lt;br /&gt;
=== Reference system ===&lt;br /&gt;
*Thinkpad T41p [[2373-GHG | 2373-GHG]]&lt;br /&gt;
*Kernel 2.6.13&lt;br /&gt;
*Ndiswrapper 1.2&lt;br /&gt;
*[ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/77wc14ww.exe 802.11bg WLAN Mini PCI Express adapter software v 4.1.102.1095]&lt;br /&gt;
&lt;br /&gt;
=== Advantages of Ndiswrapper === &lt;br /&gt;
*full power management support (madwifi has no powermanagement support)&lt;br /&gt;
*connection to access points establishes fast (madwifi has problems here / especially with dhcp)&lt;br /&gt;
&lt;br /&gt;
There are also some drawbacks of [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Main_Page Ndiswrapper] against [[Madwifi | madwifi]]. Some features that madwifi allready provides are missing in ndiswrapper.&lt;br /&gt;
&lt;br /&gt;
=== [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation Installation instructions] ===&lt;br /&gt;
&lt;br /&gt;
Note: You can also install the driver from an existing windows system.&lt;br /&gt;
Mount your windows partition and locate the *.INF file of the windows driver:  ''find -name NET5211.INF'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:T41p]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9528</id>
		<title>How to install ndiswrapper for the IBM 11a/b/g WLAN adaptor</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9528"/>
		<updated>2005-09-30T22:00:22Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Reference system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Usage of the IBM 11 a/b/g adapter with ndiswrapper: ==&lt;br /&gt;
&lt;br /&gt;
Because I had massive problems getting the madwifi driver running on kernel 2.6.13 I gave ndiswrapper a try - with impressive success:&lt;br /&gt;
&lt;br /&gt;
=== Reference system ===&lt;br /&gt;
*Thinkpad T41p [[2373-GHG | 2373-GHG]]&lt;br /&gt;
*Kernel 2.6.13&lt;br /&gt;
*Ndiswrapper 1.2&lt;br /&gt;
*[ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/77wc14ww.exe 802.11bg WLAN Mini PCI Express adapter software v 4.1.102.1095]&lt;br /&gt;
&lt;br /&gt;
=== Advantages of Ndiswrapper === &lt;br /&gt;
*full power management support (madwifi has no powermanagement support)&lt;br /&gt;
*connection to access points establishes fast (madwifi has problems here / especially with dhcp)&lt;br /&gt;
&lt;br /&gt;
There are also some drawbacks of [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Main_Page Ndiswrapper] against [[Madwifi | madwifi]]. Some features that madwifi allready provides are missing in ndiswrapper.&lt;br /&gt;
&lt;br /&gt;
=== [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation Installation instructions] ===&lt;br /&gt;
&lt;br /&gt;
Note: You can also install the driver from an existing windows system.&lt;br /&gt;
Mount your windows partition and locate the *.INF file of the windows driver:  ''find -name NET5211.INF''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:T41p]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9527</id>
		<title>How to install ndiswrapper for the IBM 11a/b/g WLAN adaptor</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9527"/>
		<updated>2005-09-30T21:59:30Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Reference system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Usage of the IBM 11 a/b/g adapter with ndiswrapper: ==&lt;br /&gt;
&lt;br /&gt;
Because I had massive problems getting the madwifi driver running on kernel 2.6.13 I gave ndiswrapper a try - with impressive success:&lt;br /&gt;
&lt;br /&gt;
=== Reference system ===&lt;br /&gt;
*Thinkpad T41p [[2373-GHG | 2373-GHG]]&lt;br /&gt;
*Kernel 2.6.13&lt;br /&gt;
*Ndiswrapper 1.2&lt;br /&gt;
*[ftp://ftp.software.ibm.com/pc/pccbbs/mobiles/77wc14ww.exe | 802.11bg WLAN Mini PCI Express adapter software v 4.1.102.1095]&lt;br /&gt;
&lt;br /&gt;
=== Advantages of Ndiswrapper === &lt;br /&gt;
*full power management support (madwifi has no powermanagement support)&lt;br /&gt;
*connection to access points establishes fast (madwifi has problems here / especially with dhcp)&lt;br /&gt;
&lt;br /&gt;
There are also some drawbacks of [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Main_Page Ndiswrapper] against [[Madwifi | madwifi]]. Some features that madwifi allready provides are missing in ndiswrapper.&lt;br /&gt;
&lt;br /&gt;
=== [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation Installation instructions] ===&lt;br /&gt;
&lt;br /&gt;
Note: You can also install the driver from an existing windows system.&lt;br /&gt;
Mount your windows partition and locate the *.INF file of the windows driver:  ''find -name NET5211.INF''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:T41p]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=HOWTOs_-_Driver_Installation&amp;diff=10250</id>
		<title>HOWTOs - Driver Installation</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=HOWTOs_-_Driver_Installation&amp;diff=10250"/>
		<updated>2005-09-30T21:53:42Z</updated>

		<summary type="html">&lt;p&gt;Hothead: /* Wireless LAN */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page holds information on how to make additional hardware work on your Thinkpad.&lt;br /&gt;
&lt;br /&gt;
The pages linked here hold instructions for installing or configuring certain drivers to make them work with ThinkPad hardware. For an overview of the drivers themselves please look at the [[Drivers]] page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- adjust these comment markers if you add things to the hidden sections&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==Graphics==&lt;br /&gt;
* [[Additional options for the radeon driver | RADEON driver for X]] &amp;lt;tt&amp;gt;(Additional options for the radeon driver)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to get TV-Out working on ATI graphic cards | TV-out on ATI chips]] &amp;lt;tt&amp;gt;(Get TV-out working)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Input==&lt;br /&gt;
*[[How to configure the TrackPoint|TrackPoint configuration]] &amp;lt;tt&amp;gt;(How to make your TrackPoint behave as you wish)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IrDA==&lt;br /&gt;
*[[IrDA | IrDA]] &amp;lt;tt&amp;gt;(How to get IrDA working)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PowerManagement==&lt;br /&gt;
* [[How to get SpeedStep working on Coppermine-piix4-smi based Thinkpads | SpeedStep on piix4]] &amp;lt;tt&amp;gt;(How to make SpeedStep (cpufreq) work on Coppermine-piix4-smi based Thinkpads)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to get SpeedStep working on_P4-class-Celeron_based_Thinkpads | SpeedStep on P4-class Celeron]] &amp;lt;tt&amp;gt;(How to get SpeedStep working on P4-class-Celeron based Thinkpads)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to configure cpufreqd | cpufreqd]]{{footnote|1}} &amp;lt;tt&amp;gt;(How to configure the cpufreqd frequency scaling daemon)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to use cpufrequtils | cpufrequtils]]{{footnote|1}} &amp;lt;tt&amp;gt;(How to use the cpufrequtils frequency scaling utils)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to configure powernowd | powernowd]] {{footnote|1}} &amp;lt;tt&amp;gt;(How to configure the powernowd frequency scaling daemon)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to configure powersaved | powersaved]]{{footnote|1}} &amp;lt;tt&amp;gt;(How to configure the powersaved frequency scaling daemon)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wireless LAN==&lt;br /&gt;
* [[How to install ndiswrapper for the Intel 2200bg WLAN adaptor | ndiswrapper for Intel 2200bg]] &amp;lt;tt&amp;gt;(ndiswrapper configuration for intel/pro 2200BG)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to install ndiswrapper for the IBM 11a/b/g WLAN adaptor | ndiswrapper for IBM 11 a/b/g]] &amp;lt;tt&amp;gt;(ndiswrapper for IBM 11 a/b/g)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[ipw2100]] &amp;lt;tt&amp;gt;(native Linux driver for Intel 2100)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[ipw2200]] &amp;lt;tt&amp;gt;(native Linux driver for Intel 2200/2915)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[madwifi]] &amp;lt;tt&amp;gt;(Linux driver for atheros chipsets)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[orinoco]] &amp;lt;tt&amp;gt;(Linux driver for Hermes/Prism chipsets)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[hostap]] &amp;lt;tt&amp;gt;(Alternative Linux driver for Hermes/Prism chipsets)&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [[How to install wpa_supplicant|wpa_supplicant]] &amp;lt;tt&amp;gt;(How to compile and configure wpa_supplicant)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Additional Hardware==&lt;br /&gt;
* [[How to install the IBM Ultracam II driver | IBM UltraCam II]] &amp;lt;tt&amp;gt;(How to make the IBM UltraCam II work under Linux)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{footnotes|&lt;br /&gt;
#Don't forget that the newer kernels have fancier cpu frequency governors like OnDemand and Conservative that are easy to configure via SysFS.  These governors are adequate in many situations and do not require user-space daemons such as cpufreqd, powersaved, or powernowd. Read more about it on the [[How to make use of Dynamic Frequency Scaling|Dynamic Frequency Scaling page]].&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
	<entry>
		<id>https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9526</id>
		<title>How to install ndiswrapper for the IBM 11a/b/g WLAN adaptor</title>
		<link rel="alternate" type="text/html" href="https://www.thinkwiki.org/w/index.php?title=How_to_install_ndiswrapper_for_the_IBM_11a/b/g_WLAN_adaptor&amp;diff=9526"/>
		<updated>2005-09-30T21:49:24Z</updated>

		<summary type="html">&lt;p&gt;Hothead: use IBM 11 a/b/g wlan with ndiswrapper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Usage of the IBM 11 a/b/g adapter with ndiswrapper: ==&lt;br /&gt;
&lt;br /&gt;
Because I had massive problems getting the madwifi driver running on kernel 2.6.13 I gave ndiswrapper a try - with impressive success:&lt;br /&gt;
&lt;br /&gt;
=== Reference system ===&lt;br /&gt;
*Thinkpad T41p 2373-GHG&lt;br /&gt;
*Kernel 2.6.13&lt;br /&gt;
*Ndiswrapper 1.2&lt;br /&gt;
*[http://www-307.ibm.com/pc/support/site.wss/license.do?filename=mobiles/77wc14ww.exe 802.11bg WLAN Mini PCI Express adapter software v 4.1.102.1095]&lt;br /&gt;
&lt;br /&gt;
=== Advantages of Ndiswrapper === &lt;br /&gt;
*full power management support (madwifi has no powermanagement support)&lt;br /&gt;
*connection to access points establishes fast (madwifi has problems here / especially with dhcp)&lt;br /&gt;
&lt;br /&gt;
There are also some drawbacks of [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Main_Page Ndiswrapper] against [[Madwifi | madwifi]]. Some features that madwifi allready provides are missing in ndiswrapper.&lt;br /&gt;
&lt;br /&gt;
=== [http://ndiswrapper.sourceforge.net/mediawiki/index.php/Installation Installation instructions] ===&lt;br /&gt;
&lt;br /&gt;
Note: You can also install the driver from an existing windows system.&lt;br /&gt;
Mount your windows partition and locate the *.INF file of the windows driver:  ''find -name NET5211.INF''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[Category:T41p]]&lt;/div&gt;</summary>
		<author><name>Hothead</name></author>
		
	</entry>
</feed>