Gentoo Wiki


This article is still a Stub. You can help Gentoo-Wiki by expanding it.

Lenovo Thinkpad T61 wide
Lenovo Thinkpad T61 wide
FIXME: There is plenty to do. Have a look at Things to be done on the discussion page.


Hardware status

Note: Hardware marked with tuxonice blacklisted must have its drivers compiled as modules so they can be unloaded before suspending to disk. Names in brackets in the device name section are the kernel module names. Use / in make menuconfig to find them.
CPU YesSee this HowTo
ACPI YesButtons: sleep (Fn-F4), power (working both on laptop and dockingstation), lid. AC Connector: plug, unplug.
DVD-Recorder Yesread/write tested. (write tested with app-cdr/dvd+rw-tools-7.0 and app-cdr/cdrtools-2.01.01_alpha25)
UltraNav (psmouse) Yes
USB (uhci_hcd, ehci_hcd) Yesfollowed Gentoo USB Guide. Tested with with card-reader, mouse, hp scanner, external hdd, flash-stick.
Wired ethernet (e1000e) Yesalso works with e1000, but as we have the pcie one...
Wireless LAN (iwl3945 or iwl4965) YesSee this guide
Wireless WAN (Sierra MC8775 UMTS/HSDPA) YesWorks with the "sierra" driver from kernel 2.6.24
X11 Yesx11-drivers/nvidia-drivers-173.14.09: working

x11-drivers/xf86-video-i810-2.1.1: working
See Video Drivers (tuxonice blacklisted)

External monitor Yesx11-drivers/nvidia-drivers-173.14.09: Tested with Benq V772 CRT.
vesafb Yesworking with size 1440x900 and depth 32 with both intel and nvidia using a vga=869 kernel parameter. Append video=... parameter instead for uvesafb (see (u)vesafb).
Sound (snd_hda_intel) YesGood support since 2.6.24

Don't forget to press the physical Vol-up button to remove the hardware mute!

Multimedia keys YesSee Multimedia keys section.
Fn-Fx key combinations (thinkpad_acpi) PartialSee hotkeys (Fn-Fx key combinations) section.
BluetoothYesfollowed Gentoo Bluetooth Guide: pairing and file transfer worked with Nokia 9300, Siemens SXG75 and SonyEricsson P1i.
Firewire (ieee1394)YesIncluded the standard kernel modules. Testing with an external hard drive
PCMCIA (yenta_socket)YesKernel modules needed. Tested with a SoundBlaster Audigy PCMCIA
IBM Harddisk Protection System YesSee hdaps section.
fingerprint readerYesWorks with sys-auth/thinkfinger. Configuration tips see ThinkWiki.
Internal modemUntested
SD/Media card readerYesNeed to enable SDHCI module in kernel (Device Drivers --> MMC/SD card support --> Secure Digital Host Controller Interface support). See ThinkWiki.
Serial portYesThinkpad Serial/Parallel Port adapter #40Y8121 works out of the box
WebcamUntestedHave a look at fgo: T61 internal USB-Camera


Packages that will need unmasking by keyword

## set your ~arch as needed!
# package.keywords:
media-video/nvidia-settings ~amd64
net-wireless/wireless-tools ~amd64
sys-apps/tuxonice-userui ~amd64
sys-apps/vbetool ~amd64
sys-kernel/gentoo-sources ~amd64
sys-kernel/git-sources ~amd64
sys-kernel/zen-sources ~amd64
sys-kernel/tuxonice-sources ~amd64
x11-drivers/nvidia-drivers ~amd64
x11-drivers/xf86-video-nv ~amd64
#Intel graphics
=media-libs/mesa-6.5.3* ~x86
x11-drivers/xf86-video-i810 ~x86


Hardware specs may vary. These are the specs for model 7663-W5T (german keyboard layout):

Processor  		Intel Core 2 Duo Processor T7500 with 2,20 GHz, 4 MB L2 Cache
Front Side Bus 		800 MHz
RAM	 		1 GB 667 MHz DDR2
Harddisk 		5400 U/min; 120 GB Harddisk SATA with Active Protection System
Optical 		DVD Multiburner Dual Layer (DVD +/-) in UltraBay Slim
Display 		TFT Display; 14,1 Zoll (35,8 cm); 1440x900
GFX	 		128 MB DDR RAM; nVIDIA Quadro NVS 140M
Communication 		10/100/1000 LAN, Intel Mini PCI PRO/Wireless 3945ABG Lan, 56K Int. Modem, Bluetooth
Sound System 		Intel High Definition Audio
Input Devices 		IBM UltraNav (Touchpad+TrackPoint)
Connectors 		3x USB 2.0-Ports, VGA, Headphone, ext. microphone, RJ-11, RJ-45, Firewire (IEEE 1394)
PC Card Extensions 	1 x PCMCIA Typ I oder II und 1 x SMARTCARD
Dimensions (WxDxH) 	335,5 x 237 x 27,6 mm

Configuration detail


1440x900 Resolution

FIXME: Could someone please point out what causes these differences?

Using the vesafb driver, the following kernel parameter is required:

Starting with gentoo-sources-2.6.23 (And will probably be mainline in 2.6.24) you might want to choose uvesafb. The required kernel parameter is: video=uvesafb:1440x900-32,mtrr:3,ywrap. See Links section for references.


Fbsplash and Qingy will work flawlessly, however do not forget to edit /etc/dircectfbrc for qingy to work:

File: /etc/directfbrc

Power Management

We recommend using the commands hibernate and hibernate-ram from sys-power/hibernate-script. Edit the files in /etc/hibernate to your needs.

suspend to disk (sys-kernel/tuxonice-sources) PartialNeeds testing. So far few problems from X and no from console.
suspend to disk (standard kernel suspend) PartialNeeds testing. So far few problems from X and no from console.
Suspend to ram Yesnvs 140@X11: okay

nvs 140@Console: okay using >=x11-drivers/nvidia-drivers-173.14.05
intel@Console: works with vesafb-tng from the console.

dynticks (using zen-sources) PartialIf you call a minimum of ~20 wakeups per sec a success, then: yes its working!
(With either textconsole or X)

Suspend to disk

The following was tested on amd64. Working suspend to disk with x11-drivers/nvidia-drivers using sys-power/hibernate-script hibernate command. remove nvidia from /etc/hibernate/blacklisted-modules. Driver / software versions : tuxonice-sources-2.6.23-r5, nvidia-drivers-169.07 (using custom overlay) and sys-power/hibernate-script-1.97-r4. See nalldrin's config files (or tante's kernel config if you want to use dm-crypt for drive encryption) for full files relevant info.

Suspend to RAM

nvs 140@X11: resumes (requires more testing). Using vbetool is not required. Unloading the following modules gives less dmesg-errors (sorry, not sure which on is the culprit): thinkpad_acpi snd_hda_intel parport_pc sr_mod sg button tun e1000. vga=0 and vga=869 both work.
nvs 140@Console: Suspending to ram from console has been tested to work with uvesafb framebuffer on a Thinkpad with nvidia card. This was possible with x11-drivers/nvidia-drivers-173.14.05.
Also have a look at tuxonice section@discussions page
Intel graphics may need to save and restore the vbemode with vbetool.


Dynticks can only be used with x86 architecture at the moment - amd64 might get supported in the future but still has some issues.

A non-dynticks kernel had 1500 wakups minimum, a kernel with dynticks comes down to 20-40. Have in mind that there are some real "interrupter" both in user-software and drivers. Java and the nvidia closed-source drivers are two candidates. If in textmode only ehci_work is top with 10 wakeups per sec.

NOTE: Dynticks works perfectly with AMD64 arch, not sure what the optimum Timer HZ is at the moment though (could someone fill us in?) With dynticsk enabled I was able to get down to ~100 intterupts/second with 1000HZ timer.


video drivers

Multimedia keys

Working keys : volume (up/down), back, forward, audio-play, audio-stop, audio-next, audio-noprevious.

File: ~/.Xmodmap
keycode 234 = XF86Back
keycode 233 = XF86Forward
keycode	144 = XF86AudioPrev
keycode 164 = XF86AudioStop
keycode 162 = XF86AudioPlay
keycode 153 = XF86AudioNext
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume

Follow Assigning keys to special functions @ HOWTO Use Multimedia Keys to make these keys available in your favourite WM or DE.


Using the Thinkpad Advanced Mini Dock seems to work without problems so far. A short overview:

Note: Names in brackets in the device name section are the kernel module names. Use / in make menuconfig to find them.
USB (uhci_hcd, ehci_hcd) YesAll four ports working with several USB-devices.
RJ-45 (e1000) Yes
DVI-Out YesUsing it permanently with Benq FP783
VGA-Out YesTested with Benq V772 CRT
Sound (snd_hda_intel) Partialspeaker-out is working with kamikaze-sources, micro-in is working with mm-sources, internal-micro is working with mm-sources, S/PDIF untestd
PS/2 YesUsing a standard keyboard with it.
RS-232 (8250)Untestedbuild the kernel-modules but did not test it, load without problems.
Parallel-Port YesHP Deskjet 816c prints.

Docking / Undocking

FIXME: Compiled with either CONFIG_ACPI_DOCK or CONFIG_THINKPAD_ACPI. thinkpad_acpi says it is legacy. Pressing the undock button while using CONFIG_ACPI_DOCK will cause the lock-LED on dockingstation turn off, but did not try to take the Thinkpad away from station so far.)

Alvar: With CONFIG_ACPI_DOCK docking and undocking works like a charm.

Howto ...

Some of these links lead to old parts of this article that had to be moved due to oversizing:


Note: This article can not provide full coverage of all thinkpad_acpi features. For detailed information you should read /usr/src/linux/Documentation/laptops/thinkpad-acpi.txt.

This is the new name for the formerly called ibm_acpi kernel modules. It can now be found at Device Drivers ---> Misc Devices ---> ThinkPad ACPI Laptop Extras

Note: Some of these features might requiere to enable extra options for thinkpad_acpi in make menuconfig.
Bay Nothinkpad_acpi with debug=1 parameter reports thinkpad_acpi: drv_acpi_handle_init: ACPI handle for bay not found and thinkpad_acpi: bay_init: bay 1: status not supported, eject not supported; bay 2: status not supported, eject not supported. However, the generic ACPI bay handler will work, if you patch it to generate ACPI events. Alternatively you can add the T61's bay's ACPI path (\_SB_.PCI0.IDE0.PRIM.MSTR) to thinkpad_acpi
Bluetooth YesEchoing enable or disable does toggle the device status. The kernel will load bluetooth modules if compiled.
Hotkey PartialThinkVantage-Button and Fn-F11 do never trigger an event. See Multimedia keys with thinkpad_acpi for more info.
Temperatures PartialVersion 0.14 loaded with modprobe thinkpad_acpi experimental=1 debug=1 will report 16 temperatures. Only 8 are usable. I could not find a source to identify them all.
Video Partialnvidia-drivers: brightness control works as of version 169.07. With intel graphics the brightness control works, but nothing else does.
Volume PartialSee below.
ThinkLight YesHard wired, thinkpad_acpi reports status at /proc/acpi/ibm/light:status
Brightness Control Yesx11-drivers/nvidia-drivers now working too. See below.

Volume control

Mute does silence the sound but pressing Mute a second time does not unmute. Vol-up or vol-down have to be pressed to unmute. Volume up/down buttons generate keyevents so volume can be controlled via a seperate program by using ~/.Xmodmap and ~/.xbindkeysrc (see Multimedia keys). Interfacing /proc/acpi/ibm/volume via
echo up > /proc/acpi/ibm/volume has no effect; you must use echo up >> /proc/acpi/ibm/volume

Tip: Audio is muted by default after startup and there is no way to unmute via alsamixer / any other app. To unmute volume_up or volume_down has to be pressed. To unmute on system startup put the following in /etc/conf.d/local.start: echo up > /proc/acpi/ibm/volume

KDE's default configuration does not recognize the volume buttons correctly, as it tries to adjust the “master” output. Instead, you have to right-click on the PCM output in the main window of kmix and set up the volume keys as shortcut keys controlling the volume of the PCM output.

Note: As of alsa 1.0.16 which is included in kernel 2.6.25, Master channel is also present.

Brightness control

Seems hard wired. Reports status at /proc/acpi/ibm/brightness:level. Does not work under Xorg with x11-drivers/nvidia-drivers <169.07. The latest version works okay.
Had success with x11-drivers/xf86-video-vesa and x11-drivers/xf86-video-vesa.
No Problems with x11-drivers/xf86-video-i810 and intel graphics.
Using kernel 2.6.26 and nvidia-drivers you must enable CONFIG_ACPI_VIDEO (which requires CONFIG_VIDEO_OUTPUT_CONTROL) for brightness to work. The correct events are not emitted if these are not enabled in the kernel.

Fan control

To control the cpu fan, you should compile the thinkpad_acpi of your kernel as a module and load it with fan_control=1

# modprobe thinkpad_acpi fan_control=1

Then install the package lm_sensors:

# emerge -av lm_sensors

Then you can run the script pwmconfig

# pwmconfig

which will generate a config file /etc/fancontrol interactively. Here is the foncontrol config file of my T61-8889-IHC:


Refer to the manpage of fancontrol for the detailed descriptions of these parameters. Finally, activate the fancontrol daemon:

# /etc/init.d/fancontrol start

Now your CPU fan will stop boring you if the temperature of your CPU is below 50°C.

hotkeys (Fn-Fx combinations)

Without thinkpad-acpi only Fn-F4 will generate button/sleep event. All other Fn-Fx combinations are inactive. Use thinkpad-acpi to enable the rest of the Fn-Fx key combinations.

Brightness controls (Alt F10,F11) are hard wired, but only have effect while in text-mode, or using xorg-vesa- or xorg-nv-driver. x11-drivers/nvidia-drivers-169.07 supports xorg brightness control, too.
Sleep (F4) button registers in acpi. Mute is hardwired as well but no effect despite change in /proc/acpi/ibm/volume:mute so far recognized.

Usage of acpid

There are a lot of solutions for acpid and thinkpad_acpi hotkey feature on the web mainly using files in /etc/acpi/events/ and /etc/acpi/actions/. For example you can download the old source package from ibm-acpis sourceforge download page containing such example files (do not choose the patches, you need one of the old *.tar.gz. Another way is to tweak /etc/acpi/ a bit:

File: /etc/acpi/
# Default acpi script that takes an entry for all actions

set $*

ev_type=`echo "$1" | cut -d/ -f1`

# We have to take special care for events send by ibm/hotkey:
if [ "$ev_type" = "ibm" ]; then
	ev_type=`echo "$1" | cut -d/ -f1`
	event=`echo "$1" | cut -d/ -f2`
	key="$2"\ "$3"\ "$4"
	# Take care about the way events are reported
	ev_type=`echo "$1" | cut -d/ -f1`
	if [ "$ev_type" = "$1" ]; then
		event=`echo "$1" | cut -d/ -f2`

case "$ev_type" in
        case "$event" in
		logger "acpid: power button pressed; starting shutdown"
#                logger "acpid: received a shutdown request"
                /sbin/init 0
		logger "acpid: sleep button pressed; initiating hibernate-ram"
#		logger "acpid: received hibernate request"
		logger "acpid: lid event" 
                logger "acpid: action $2 is not defined"

# BEGIN customization for ibm/hotkey:
	case "$event" in
			case "$key" in
				"HKEY 00000080 00001002")
					logger "acpid: lock button (Fn+F2) pressed"
                                        # Lock the desktop,- only works for display :0
                                        x_user=`who | sed -ne "s/^\([^[:space:]]*\)[[:space:]]*:0.*/\1/p"`
                                        if [ -n $x_user ]; then
						# Use a script or use any desktop lock command
						export DISPLAY=":0.0"
						su $x_user -c /usr/local/bin/
		 		"HKEY 00000080 00001003")
                		        logger "acpid: battery button (Fn+F3) pressed; switching display off"
					/usr/local/bin/ &> /dev/null
				"HKEY 00000080 00001004")
		                        logger "acpid: sleep button (Fn+F4) pressed; initiating hibernate-ram"
				"HKEY 00000080 00001005")
		                        logger "acpid: bluetooth button (Fn+F5) pressed; toggling bluetooth"
					/usr/local/bin/ &> /dev/null
				"HKEY 00000080 00001007")
		                        logger "acpid: screen toggle button (Fn+F7) pressed"
				"HKEY 00000080 00001008")
                		        logger "acpid: UltraNav toggle button (Fn+F8) pressed; toggling touchpad status"
					/usr/local/bin/ &> /dev/null
				"HKEY 00000080 00001009")
                		        logger "acpid: eject button (Fn+F9) pressed"
					/usr/local/bin/ &> /dev/null
				"HKEY 00000080 0000100c")
                		        logger "acpid: hibernate button (Fn+F12) pressed; initiating hibernate"
				"HKEY 00000080 00007000")
                		        logger "acpid: radio switch action; toggling all wireless devices"
					/usr/local/bin/ &> /dev/null
					/usr/local/bin/ &> /dev/null
				"HKEY 00000080 00001010")
					logger "acpid: increase brightness"
					echo up > /proc/acpi/ibm/brightness
				"HKEY 00000080 00005010")
					logger "apcid: decrease brightness"
					echo down > /proc/acpi/ibm/brightness
				"HKEY 00000080 00005001")
					# This is the lid CLOSE event
					# as of now it is already handled above
				"HKEY 00000080 00005002")
		                        # This is the lid OPEN event
                		        # as of now it is already handled above
					logger "acpid: $ev_type/$event $key is not defined"
		    	case "$key" in
				"GDCK 00000003 00000001")
					logger "acpid: Dock eject request"
			        "GDCK 00000003 00000002")
					logger "acpid: laptop was undocked"
				"GDCK 00000000 00000003")	
					logger "acpid: laptop was docked"
					logger "acpid: $ev_typ $event event $key is not defined"
			case "$key" in
				"MSTR 00000003 00000000")
					logger "acpid: got ultrabay eject request"
			        "MSTR 00000001 00000000")
					logger "acpid: ultrabay eject lever inserted"
        logger "ACPI group $1 / action $2 is not defined"

Fn-F7 Video output toggle

/proc/acpi/ibm/video reports status: supported but any changes have no effect.

Fn-F7 with Nvidia drivers

With x11-drivers/nvidia-drivers-173.14.09, the driver reports that it supports Fn-F7 toggle.

(II) Open ACPI successful (/var/run/acpid.socket)
(II) NVIDIA(0): Setting mode "1680x1050"
(II) NVIDIA(0): ACPI display change hotkey events enabled: the X server is new
(II) NVIDIA(0):     enough to receive ACPI display change hotkey events.

It turns out that the nvidia driver looks for the following ACPI event in order to dynamically enable/toggle display:

video VID1 00000080 00000000

However, if we forcibly enable the hotkey mask for the F7 key, then the event that is generated is the following, which is not captured by the nvidia driver.

ibm/hotkey HKEY 00000080 00001007

Thus, to enable the Fn-F7 functionality we should ensure that the F7 key remains unmasked. On my machine, the recommended hotkey mask can be obtained using the following command

Code: Determine recommended hotkey mask
cat /sys/devices/platform/thinkpad_acpi/hotkey_recommended_mask 0x008c7fff

This masks the F7 key too, so to specifically not mask F7 we change the second last 'f' (1111) to 'b' (1011), where the keys are read as F8,F7,F6,F5. This can be now echoed back to the hotkey file:

Code: Enable the hotkey mask
echo "enable,0x008c7fbf" > /proc/acpi/ibm/hotkey

The above line can be added to /etc/conf.d/local.start so that it is run automatically on boot.

other buttons


Wireless switch on the front beneath firewire

Switch state is reported at /sys/devices/platform/thinkpad_acpi/hotkey_radio_sw

Note: If you use NetworkManager instead of an init-controlled network setup, you can shorten the following script to just unloading/loading the wireless driver module. NetworkManager will detect automatically whether the wireless chip is switched on or off.
File: /usr/local/bin/
	if(cat /sys/devices/platform/thinkpad_acpi/hotkey_radio_sw | grep -e "0" > /dev/null); then
		if(/etc/init.d/net.wlan0 status | grep -e "started" > /dev/null) ; then
			echo "Stopping net.wlan0"
			/etc/init.d/net.wlan0 stop --quiet
			modprobe -r iwl3945

	if(cat /sys/devices/platform/thinkpad_acpi/hotkey_radio_sw | grep -e "1" > /dev/null); then
		if(/etc/init.d/net.wlan0 status | grep -e "stopped" > /dev/null) ; then
			echo "Starting net.wlan0"
			# Make sure all needed modules are loaded:
			if(/bin/lsmod | grep -e "iwl3945" > /dev/null) ; then
				echo "Module iwl3945 already loaded" > /dev/null
#				echo "Loading module iwl3945"
				modprobe iwl3945
			/etc/init.d/net.wlan0 start --quiet

To make /etc/init.d/net.wlan0 honour the switch state add this to /etc/conf.d/net

Code: excerpt from /etc/conf.d/net
preup() {
	if [[ ${IFACE} == "wlan0" ]]; then
		if(cat /sys/devices/platform/thinkpad_acpi/hotkey_radio_sw | grep -e "0" > /dev/null); then
			ewarn "Thinkpad wireless switch is disabled"
			return 1
	return 0

tp_smapi: Harddisk Active Protection System (hdaps)

The hdaps kernel module produced by tp_smapi will work, but you need to pass the invert=1 parameter when loading the module or all input will be inverted. Stopping the disk works, but requires a kernel patch from the ones listed on ThinkWiki. Have a look at Discussions Page.

Kernel Config

Thinkpad T61 should work with any kernel greater 2.6.22.

Linux Kernel Configuration: Kernel essentials
 # For proper booting you should at least enable the following in kernel.
 Bus options (PCI etc.) --->
 	--- PCI support
	[*] PCI Express support
 Device Drivers --->
 	<*> Serial ATA (prod) and Parallel ATA (experimental) drivers --->
		<*>	AHCI SATA support
		<*>	Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
	<*> SCSI device supplort  ---->
		<*>	SCSI disk support
                <*>     SCSI CDROM support
                <*>     SCSI generic support

 # don't forget to make the kernel use the power of two hearts
 Processor type and features  --->
 	[*] Symmetric multi-processing support
	[*]	Multi-core scheduler support

Pre-Installation Notes

Warning: It's quite easy to break access to the maintenance partition. Have a look at the following link!

livecd-2007.0-amd64 / ahci / compat

The live-cd may hang at:

Loading modules
scanning for ahci...

There does not seem to be any suitable kernel parameter to boot the livecd with which solves the problem. Switch Config/Serial-ATA from <ahci> mode to <compatibility> mode in BIOS. After installing, switch back to <ahci> mode.

Problems and Solutions

x86: nvidia-drivers not working and irq complaints

On T61s with old BIOS-Version (1.09 (7LET39WW) 2007-05-14 for me) one might get an "irq xx: nobody cared" error (example output) and nvidia-module complains about not receiving interrupts (example output). All workarounds seem to make another HW-Part unusable.
The solution is a BIOS update (most easy via ThinkVantage SystemUpdate) to the newest version (1.22 (7LET52WW) 2007-08-27 at the moment).

HDAPS joystick support


input: ThinkPad HDAPS joystick emulation as /class/input/input6 input: ThinkPad HDAPS accelerometer data as /class/input/input7

Furthermore I created the group 'joy' including my username and I also edited the udev rules for this device:

echo 'SUBSYSTEM=="input", KERNEL=="js*", MODE="0660", GROUP="joy"' >> /etc/udev/hdaps-joy.rules ln -s /etc/udev/hdaps-joy.rules /etc/udev/rules.d/z60_hdaps-joy.rules

Still, I don't get the /dev/joy device? What am I doing wrong?

xorg-1.5 and i810

If you are using xorg-1.5 and have the Intel GMA X3100 you won't get any TTM support. Follow this link for further information:



Retrieved from ""

Last modified: Sat, 04 Oct 2008 00:34:00 +0000 Hits: 54,590