This manual is intended to help user to configure Gentoo distribution of the GNU/Linux operating system for Lenovo ThinkPad X200 notebook. It's supposed that user is skilled enough to install bare system from stage, compile kernel from source code, apply patches, etc.

Besides X200 users, this manual may also be useful for users of ThinkPads based on the same Centrino platform: R400, T400, X200s, X301.

This article and all information and products in it are provided on an "as is" basis, without warranty of any kind, either express or implied. Your use of this article is at your own risk.


Hardware info

Type Name Technical info
CPU Intel Core2 Duo CPU clock: 2,4 Ghz; Bus clock: 1066Mhz;
P8600 (Penryn) Power: 25W; Features: SSE4.1, EM64T, IVT
L2 cache: 3MB; [1]
North bridge Intel GM45 [2]
RAM Lenovo 43R1988 Size: 4GB; Type: DDR3; Bus clock: 533 Mhz
Module name: PC3-8500; [3]
South bridge Intel ICH9-M [4]
Video Intel GMA Clock speed: 533Mhz; Vertex shader: 4.0;
4500MHD Pixel shader: 4.0; OpenGL support: 2.1;
(Cantiga) Decoding acceleration: VC-1, AVC;
Device id: 8086:2a42;
[5], [6]
Storage Samsung Capacity: 128GB; R/W speed: 90/70 MB/s;
device MMCQE28G8MUP Size: 1.8in; [7]
Audio Conexant CX20561 Device id: 8086:293e
Ethernet Intel 82567LM Speed: 10/100/1000 MB/s;
Device id: 8086:10f5; [4]
WiFi Intel 5100 Protocols: 802.11b/g/n;
Security: WEP, WPA, WPA2;
Device id: 8086:1311; [8]
Atheros AR5BHB63 Protocols: 802.11b/g;
Security: WEP, WPA, WPA2;
Device id: 168c:001c; [9]
BlueTooth Broadcom BCM2046 Device id: 0a5c:2145; [11]
WAN Ericsson F3507g Modes: HSPA/WCDMA/EDGE/GPRS;
GPS:stand alone and assisted;
Device id: 0bdb:1900; [10]
Card reader ? Supported formats: MMC, SD, SDHC;
Fingerprint AuthenTec On-sensor fingerprint matching;
AES2810 Device id: 08ff:2810; [12]
Web camera Lenovo Device id: 17ef:480c
Manufacturer: Chicony
Accelerometer Analog Devices Dual-axis; [13]

Logs: scanpci -v lsusb -v cat /proc/cpuinfo smartctl -a /dev/sda

Linux support summary

Feature Status
UltraBase AC adapter Works perfectly
Battery charger Works perfectly
USB ports Works perfectly
Video out VGA Works perfectly
DisplayPort Works perfectly
Speakers Works perfectly
Audio out jack Works perfectly
Audio mic jack Works perfectly
Disk drive Works perfectly
Eject handle Works perfectly
Power button Works perfectly
ACPI UltraBase insert/eject Works perfectly
Hot keys Works perfectly
Brightness control Works perfectly
Battery Works perfectly
Fan Works perfectly
Power management Suspend to RAM Works perfectly
Suspend to disk Works perfectly
CPU frequency scaling Works perfectly
Video 2D graphics Works perfectly
3D acceleration Minor issues
Video decoding acceleration Untested
Audio Internal speaker Works perfectly
Audio out jack Works perfectly
Audio mic jack Works perfectly
Headphones mute speaker Works perfectly
Networking Ethernet Works perfectly
BlueTooth Works perfectly
WiFi (Intel) Works perfectly
WiFi (Atheros) Minor issues
GPRS/EDGE/HSDPA Works perfectly
GPS Works perfectly
Other ThinkLight Works perfectly
Fingerprint reader Doesn't work
HDAPS Works perfectly
TrackPoint Works perfectly
SD card reader Works perfectly
Web camera Works perfectly


Kernel config for version 3.10.25 is available here. Few notes regarding the kernel config:

  • Enable CONFIG_ATH5K instead of CONFIG_IWL5000 if you have the Atheros WiFi card instead of the Intel card.
  • If you have no Ericsson F3507g, you'll probably want to disable CONFIG_USB_ACM.
  • If you have no UltraBase, you'll probably want to disable CONFIG_ACPI_DOCK.
  • If you use ExpressCards, you need to enable CONFIG_HOTPLUG_PCI_PCIE and appropriate driver for the card. For example, eSATA cards based on the SiI 3132 chip require CONFIG_SATA_SIL24.

Here is appropriate grub config. Special kernel parameters:

  • rootfstype=ext4 - Optional parameter, which avoids error messages on startup. Not required for ext2/3.
  • acpi_sleep=s3_bios - Required to make suspend/resume work.
  • thinkpad_acpi.fan_control=1 - Thinkpad acpi module parameter, described in the Fan control section.
  • dock.immediate_undock=0 - Dock module parameter, described in the dock eject section. Not required for 2.6.31+.
  • acpi_osi="Linux" - ACPI parameter, described in the Hot keys section.
  • i915.modeset=1 video=1280x800 - KMS settings, described the Video section.
  • clocksource=acpi_pm - Hides the annoying tsc: Fast TSC calibration failed message during kernel statup.

If you use 2.6.39+ and want to change PCI-E bus policy, for example:

echo powersave > /sys/module/pcie_aspm/parameters/policy

then you need to add pcie_aspm=force to the kernele command line.

The following is a list of kernel patches related to X200:

It's also necessary to compile two additional kernel modules: tp_smapi and hdaps, as described in HDAPS section.


2D graphics

The main config file for intel-video is xorg.conf. Few notes regadring xorg.conf:

  • DisplaySize option is required to set correct DPI of the built-in LCD (96).
  • The Virtual parameter specifies the virtual screen resolution to be used. I use 1280x800 internal screen and 1920x1200 external display, therefore max width is 1280 + 1920 = 3200 and max height is 1200. See details here.

The VIDEO_CARDS variable should include 'intel', see make.conf as example.

DisplayPort is now supported by intel driver and works quite well. is updated to use DisplayPort instead of VGA-out. Unfortunately the hardware doesn't allow us to enable two external monitors when the build-in display is on, because there are only two CRTCs available.

Kernel Mode-Setting (CONFIG_DRM_I915_KMS) works fine except one minor issue issue (glitchy dark colors). No problems with switching from/to VT/Xorg, suspend-to-ram, suspend-to-disk, etc. Besides the parameter mentioned above, it's necessary to enable CONFIG_FRAMEBUFFER_CONSOLE, CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY and add i915.modeset=1 video=1280x800 to your kernel command line. This enables inteldrmfb and sets the proper video mode.

3D acceleration

DRI is not working at maximum speed by default, so you should save this config as ~/.drirc to get maximum performance. After that, glxgears shows approximately 1300fps.

The current driver (xf86-video-intel-2.17.0) supports only OpenGL-1.4.

Video decoding acceleration

VA-API acceleration support for G45 is finally available. Here is a nice manual describing how to make it work on Gentoo. The only minor note I can add is that mplayer from the latest ebuild (mplayer-1.0_rc4_p20120116) crashes. I recommend to use mplayer-1.0_rc4_p20110322-r51, it works fine.


Supported by CONFIG_SND_HDA_INTEL. I recommend to compile alsa-lib with all plugins (ALSA_PCM_PLUGINS, see make.conf as example).

In general ALSA supports the conexant chip quite well: both internal speaker and mic work fine as well as audio in/out jacks. ALSA mutes the speaker when headphones are plugged in. The only problem I had with audio is the UltraBase audio out, which is already fixed (see kernel section for details).

If you enable CONFIG_SND_HDA_POWER_SAVE, I recommend to disable power saving of the sound controller in order to stop skipping of short sounds:

echo N > /sys/module/snd_hda_intel/parameters/power_save_controller

But even if you do this, the system may still miss some system beeps (when you (dis)connect AC cable, for example).


The radio switch toggles all wireless network connections: BlueTooth, WiFi, WAN and GPS.


Supported by CONFIG_E1000E. Configured via default gentoo net config. Here is an example of eth0 definition with static IP. See Gentoo Network Configuration for details.

ethtool may be used to detect whether ethernet cable is plugged or not. However, the Link detected field is reliable only when the eth0 interface is up.


Supported by CONFIG_BT_HCIBTUSB. The card can be turned on/off via /proc/acpi/ibm/bluetooth. Note that the card cannot be turned on when it's powered off by radio switch.

The radio switch toggles the card and starts bluetooth service by default. If you don't want to turn the card on when radio switch is on, do the following:

  • Remove the udev rule starting bluetooth service from /etc/udev/rules.d/70-bluetooth.rules.
  • Make the card turned on/off when bluetooth service is started/stopped, see bluetooth script for details.

These are examples of configs for pairing with Nokia 6021: hcid.conf, rfcomm.conf. See Gentoo Linux Bluetooth Guide for details.


Atheros AR5BHB63

lspci shows this card as AR5001, but the actual chipset name is AR5007EG . This chipset is now supported by kernel (CONFIG_ATH5K). So there's no need to install madwifi driver. The in-kernel driver works quite well except one issue: WiFi led is not working. Apply ath5k_wifi_led-for-2.6.33.patch to your kernel in order to fix the bug.

Unfortunately, the driver does not support power management yet. But according to ath5k TODO List, developers are working on it.

Intel 5100

It is also supported by kernel (CONFIG_IWL5000), but the kernel driver requires binary firmware:

echo "net-wireless/iwl5000-ucode ~amd64" >> /etc/portage/package.keywords
emerge -av iwl5000-ucode

This driver does support power management, do the following to enable it on startup:

echo "iwconfig wlan0 power on" >> /etc/local.d/baselayout1.start 

Regardless of the wifi card model being used, connection should be configured via wpa_supplicant, here are config examples: wpa_supplicant.conf, net (preup function checks whether radio is enabled). See Wireless Networking for details.


F3507g is supported by CONFIG_USB_ACM. This driver is broken in 2.6.31, the cdc-acm-fix.patch is required to make it work.

There are three device files assosicated with the card:

  • /dev/ttyACM0 - Ericsson F3507g Mobile Broadband Minicard Modem.
  • /dev/ttyACM1 - Ericsson F3507g Mobile Broadband Minicard Modem.
  • /dev/ttyACM2 - Ericsson F3507g Mobile Broadband Minicard GPS Port.

The card needs to be turned on before you start using GPS or GPRS/EDGE/HSDPA. The script f3507g turns the card on/off. Here's a bit modified gpsd script; it configures and turns GPS on/off. This script should be dependent on f3507g as well as net.ppp0. Both f3507g and gpsd use the same config. GPS and WAN connections can be established simultaneously, so don't be afraid to start both gpsd and net.ppp0. The net mentioned above contains ppp0 interface config for GPRS/EDGE bearers. According to this manual, WWAN eats power even when the 3G led is off. Therefore the net scripts automatically turns the power on/off. See the ThinkWiki manual for detailed reference how to work with F3507g.

There're several GPS clients available in portage. I recommend the TangoGPS, it works quite well with F3507g.



First of all, you need to install the ACPI daemon and add it to the boot runlevel:

emerge -av acpid
rc-update add acpid boot

In order to enable event reporting for all supported hot heys, you need to set correct bit mask:

cat /sys/devices/platform/thinkpad_acpi/hotkey_all_mask > \

All ACPI keys are configured in the The main advantage of ACPI hot keys is that they're not dependant on WM (which handles multimedia keys) and work even in console and SDL programs.

Here is a short description of the ACPI key bindings:

  • Power - Turns the system off.
  • Lid - Suspends to RAM (via TuxOnIce) if the system is not locked via Fn+F2. See for details.
  • Fn+F2 (lock) - Locks the system (via vlock) and starts tp-antitheft tool. See for details.
  • Fn+F3 (battery) - Toggles DPMS state of the built-in display (via xset). See for details.
  • Fn+F4 (sleep) - Suspends the system to RAM (via TuxOnIce).
  • Fn+F5 (radio) - Establishes PPP connection (GPRS/EDGE).
  • Fn+F7 (video) - Toggles DisplayPort (via xrandr), external screen is located to the right of built-in screen. See for details.
  • Fn+F8 (input) - Does nothing, because X200 has no touchpad.
  • Fn+F9 (eject) - Tries to eject X200 from UltraBase station. Checks whether ultrabay disk drive or any USB devices connected via UltraBase hub are mounted. See ultrabase_eject for details. This script should not be located in the /etc/acpi/ directory, because it also handles udev events. See UltraBase section for details.
  • Fn+F12 (hibernate) - Suspends the system to disk (via TuxOnIce).
  • Fn+Home (brightness up) - Increases brightness level.
  • Fn+End (brightness down) - Decreases brightness level.
  • ThinkVantage - Generates scancode XF86Launch0 (183) via acpi_fakekey. The scancode is handled by OpenBox and shows a system information dialog. See Hot keys section for details.
  • Fn+Space (zoom) - Generates scancode XF86ZoomIn (182) via acpi_fakekey. The scancode is handled by WM and toggles windows between built-in and external monitors. See Hot keys section for details.
  • RF kill switch - Disables all wireless connections if activated and disables bluetooth if deactivated. See for details.


  • Fn+PgUp (thinklight) is handled by kernel.
  • AC plug in/out events are handled by cpufreq daemon.
  • The source code of acpi_fakekey is available here.

All multimedia keys generate scancode and are described in Hot keys section.


Brightness is controlled by ThinkPad ACPI driver (CONFIG_THINKPAD_ACPI) via /proc/acpi/ibm/brightness:

  • echo up > /proc/acpi/ibm/brightness increases brightness level,
  • echo down > /proc/acpi/ibm/brightness decreases brightness level
  • echo "level X" > /proc/acpi/ibm/brightness sets a particular brightness level, where X is a number from 1 upto 15.


Barrery is supported by default ACPI driver (CONFIG_ACPI_BATTERY), which provides some info in /proc/acpi/battery/BAT0/info (capacity, voltage ,etc). However, this info is not very useful. I recommend to install tp_smapi kernel module (see HDAPS for details), which provides lots of useful info in the /sys/devices/platform/smapi/BAT0/, especially remaining_percent, remaining_running_time and remaining_charging_time.

Temperature sensors

There are two ways to access sensors: via ACPI driver (CONFIG_THINKPAD_ACPI) and tp_smapi module. The first one provides /proc/acpi/ibm/thermal file:

$ cat /proc/acpi/ibm/thermal
temperatures:   43 48 -128 42 39 -128 37 -128 51 48 -128 -128 -128 ...

The second one provides 16 files via /sys interface: ls /sys/class/hwmon/hwmon3/device/temp*.Here is a description of the values:

Index Location
1 CPU 0
3 Not available
4 CPU 1
5 Battery (main sensor)
6 Not available
7 Battery (secondary sensor)
8 Not available
9 ?
10 ?
11-16 Not available


  • 9 and 10 are supposed to be Northbridge and/or SSD. Unfortunately, smartctl can't detect the temperature of Samsung MMCQE28G8MUP yet, therefore we don't know this for sure.


ThinkPad ACPI driver supports auto fan control:

echo 'level auto' > /proc/acpi/ibm/fan

But if you want to tweak, for example, the temperature fan start spinning at, then do the following:

  • Install fancontrol tool: emerge -av lm_sensors.
  • Use pwmconfig to create a config file or just use this one, which specifies to use CPU core #1 as temperature sensor, to start fan spinning at minimum speed at 45° C and to set it at maximum speed at 60° C.
  • Add thinkpad_acpi.fan_control=1 to your kernel command line.
  • Add this into /etc/conf.d/local.start in order to disable auto fan control: echo level 1 > /proc/acpi/ibm/fan


Supported by CONFIG_THINKPAD_ACPI_BAY and CONFIG_ACPI_DOCK. Do the following to undock from the UltraBase:

echo 1 >/sys/devices/platform/dock.0/undock

The eject button located on the UltraBase doesn't generate ACPI events, it generates udev events instead. In order to handle it properly do the following:

  • Add corresponding udev rules. The rules assign ultrabase_eject and ultrabase_insert scripts on eject/insert events accordingly. The ultrabase_eject is used as ACPI Fn+F9 handler. The ultrabase_insert establishes eth0 connetion.
  • Add dock.immediate_undock=0 to your kernel command line. It will cause the driver to wait for userspace to write the undock sysfs file before undocking.

CPU frequency

Supported by CONFIG_X86_ACPI_CPUFREQ. There are three CPU frequencies available: 2.40 GHz, 1.60 GHz and 800 MHz.

Install cpufreq packages in order to use frequency scaling: emerge -av cpufreqd cpufrequtils. cpufreqd is required, cpufrequtils is an optional package and provides useful tools like cpufreq-info and cpufreq-set. Here is an example of cpufreqd config file.

Config description:

AC Battery, % Brightness level Governor Exec
on 12 ondemand
30-100 9 conservative
off 3-30 6 powersave
0-3 1 powersave hibernate

Hot keys

All multimedia keys except the mute button generate scancode and all we need to do is to assign proper symnames via xmodmap. See .Xmodmap as example.

The mute button is handled by firmware by default and doesn't generate scancode, add acpi_osi="Linux" to your kernel command line to fix the issue.

The rc.xml is an example of symnames to actions bindings. XF86ZoomIn key (Fn+Space) toggles window between external and built-in displays. Works only in OpenBox patched with openbox- XF86Launch0 shows an information dialog (, which contains current time and date, battery status and level, brightness, CPU frequencies and governors, etc.

ACPI hot keys are described in the ACPI section.



Suspend-to-RAM (aka sleep or ACPI S3 state) is supported by CONFIG_SUSPEND and works flawlessly.


There are two well known ways to suspend-to-disk (aka hibernate): 1. Native Linux hibernator 2. TuxOnIce

I used to use TuxOnIce, but the kernels 2.6.39+ make 'OOPS' while hibernating to a file, see this thread for details. Unfortunatelly, I could resolve this problem. So I gave up and switched to native Linux hibernator.

Native hibernator / pm-utils

In order to use native hibernator, you need to enable CONFIG_HIBERNATION specify your swap partition either in CONFIG_PM_STD_PARTITION or in the resume kernel parameter.

Additionally, you may be interested in the following:

  • 1.4.1-fix-inhibit.patch - fixes suspend inhibition when one of the hooks fails and adds ON_FAILURE config parameter, which allows to execute commands in this case.
  • 00dpms - a hook which inhibits suspend when LCD is turned off, requires
  • 00fan - a hook which starts fan at maximum speed and enables fancontrol.

TuxOnIce / hibernate-script

Warning! This paragraph is obsolete. I recommend to use the native Linux hibernator.

TuxOnIce seems to be the best implementation of suspend-to-disk (aka hibernate). It can be used without initrd and allows you to suspend on a regular file (useful feature if you don't use swapping and have an SSD instead of an HDD). TuxOnIce comes as hibernate scripts and kernel patch. The patch for kernel v2.6.38 is availavle here: tuxonice-3.2-for-2.6.38.patch.bz2.

In order to install TuxOnIce, you need to:

  • Apply the patch to your kernel sources.
  • Install hibernate-script and s2ram: emerge -av hibernate-script suspend

The hibernate scripts deal with both suspend-to-RAM (that's why it requires s2ram) and suspend-to-disk. Therefore there're common suspend configs located in the /etc/hibernate/ directory. The examples of config can be downloaded here

Here are few notes regarding the config files:

  • Compressor lzo is set, because LZF compression is no longer supported by TuxOnIce since LZO is now provided by kernel (2.6.25 and later).
  • OnResume 00 echo level 1 > /proc/acpi/ibm/fan is required to disable auto fan control. Remove this line if you don't use fancontrol.
  • UnloadModules ehci_hcd is a workaround of a problem with Trendnet TK-207 switch. You don't need this probably.
  • VerifyFilewriterResume2 no is no longer required for tuxonice-3.2-rc2 since it successfully resumes when the resume device is specified via UUID.
  • FilewriterLocation /hibernation_file 2048 specifies location of the hibernation file. 2048 is the amount of disk space reserved for the hibernation file. This is used for the file allocator only.

For the file allocator it's also necessary to create a hibernation file:

hibernate --no-suspend

The last thing to do is to add the resume kernel parameter in the grub.conf or as CONFIG_PM_STD_PARTITION value in the kernel config. Take a look at the /sys/power/tuxonice/resume to figure out its value. If you use TOI or later, you will see something like this: UUID=6ebd5055c6694ab8986503d0edcbe2b5:0xe78000.

See the TuxOnIce - Gentoo Linux Wiki manual for details.


HDAPS (Hard Drive Active Protection System) becomes unnecessary when an SSD is used as a storage device. However, there are few other interesting applications for the sensor (see below). Moreover, the package with HDAPS drivers (tp_smapi) also contains the SMAPI (System Management Application Program Interface) driver, which provides unique access to some hardware control functionality like remaining running time, list /sys/devices/platform/smapi/ for details.

Don't use in-kernel support of HDAPS (CONFIG_SENSORS_HDAPS), because this module is obsolete and does not work with X200. Use the app-laptop/tp_smapi-0.40 package instead, which provides another hdaps module implementing HDAPS support. It works very well with X200.

In order to install the package, you need to do the following:

  • Unmask the package (echo 'app-laptop/tp_smapi ~amd64' >> /etc/portage/package.keywords) and install it (emerge -av tp_smapi)
  • Add tp_smapi and hdaps in the /etc/modules.autoload.d/kernel-2.6 file to make gentoo load both modules automatically.
  • Set correct HDAPS axis orientation: echo 'echo 7 > /sys/devices/platform/hdaps/invert' >> /etc/conf.d/local.start.

Now HDAPS should be correctly configured. It can be tested using hdaps-gl tool (emerge -av hdaps-gl).

There are several programs that use HDAPS, for example, Neverball game (emerge -av neverball). It requires joystick device (/dev/input/js0), therefore the CONFIG_INPUT_JOYDEV flag should be enabled in kernel config, joystick should be added in the USE variable as well as in INPUT_DEVICES, see make.conf for details. Joystick can be calibrated using jscal /dev/input/js0 -c. It's very fun to play neverball using HDAPS as joystick. See these two videos as example: video1, video2.

Another useful utility which uses HDAPS is tp-antitheft, something like this. You can download it here. I binded it on Fn+F2 combination, see the ACPI section for details.


Supported by CONFIG_MOUSE_PS2_TRACKPOINT. You may also want to emulate mouse wheel, see example in the TrackPoint section of the xorg.conf.

If you use HAL, you may find this config for TrackPoint useful.

Fingerprint reader

Unfortunately, fprint doesn't support AuthenTec AES 2810, according to this page. But I hope some day it will.

Web camera

Supported by CONFIG_V4L_USB_DRIVERS. Works fine via V4L2 interface. The webcam is capable to capture video in resolution up to 1280x960. MPlayer package can be used to capture video (v4l2 USE flag is required):

mplayer tv:// -tv driver=v4l2:width=1280:height=800

The following command records video into a file (encode USE flag is required):

mencoder tv://1 -tv driver=v4l2:width=640:height=480:device=/dev/video0:\
fps=24:alsa:forceaudio:amode=0:adevice=hw.0,0:audiorate=22050 -oac mp3lame\
-lameopts vbr=3:br=32:mode=3 -ovc lavc -lavcopts vcodec=mpeg4:\
vbitrate=1200:keyint=300 -o webcamvideo.avi

Options description:

  • tv://1 - TV capture module
  • -tv - TV capture mode properties
  • driver=v4l2 - TV input driver
  • width=640:height=480 - output window resolution
  • device=/dev/video0 - device to capture video from
  • alsa - capture audio from ALSA
  • forceaudio - capture audio even if there are no audio sources reported by v4l
  • amode=0 - capture mono sound
  • adevice=hw.0,0 - name of device to capture sound from
  • audiorate=22050 - audio capture bitrate
  • -oac mp3lame - encode audio to MP3 (using LAME)
  • -lameopts - audio codec properties
  • vbr=3 - average bitrate method
  • br=32 - bitrate in Kbps
  • mode=3 - encode mono sound
  • -ovc lavc - encode video with a libavcodec codec
  • -lavcopts - video codec properties
  • vcodec=mpeg4 - encode video to MPEG-4
  • vbitrate=1200 - bitrate in Kbps
  • keyint=300 - maximum interval between IDR-frames (specifies seeking precision)
  • -o webcamvideo.avi - output file name

Ekiga works fine with video translation using h264 codec. Don't forget to load ehci_hcd if it's compiled as module, web camera won't work otherwise.

Media cards reader

Supported by CONFIG_MMC_BLOCK. Works fine with SD and SDHC cards. It should also support MMC cards, but do not have an MMC card to verify that.


Supported by the thinkpad ACPI kernel driver. It is controlled by Fn+PgUp combination or via /proc/acpi/ibm/light. Don't forget to set proper permissions to the light control file , because it's not accessible for ordinary user by default:

echo 'chmod 666 /proc/acpi/ibm/light' >> /etc/conf.d/local.start

The ThinkLight is required for th-antitheft utility.

If you use pidgin IM client, you may want to install plugin, which uses ThinkLight to signal on new messages. Here is the source code of the plugin. TBD: create ebuild.


Here are few relevant benchmarks:

Test conditions Results
Bootup (from grub to X11 WM) 25 sec
Suspend-to-disk aka hibernate (TOI-, linux-2.6.32) 18 sec
Resume from suspend-to-disk (from grub, TOI-, linux-2.6.32) 14 sec
Suspend-to-disk aka hibernate (native, linux-3.2.12) 14 sec
Resume from suspend-to-disk (from grub, native, linux-3.2.12) 13 sec
Suspend-to-RAM (linux-3.2.12) 2 sec
Resume from suspend-to-RAM (linux-3.2.12) 4 sec
emerge -eav world 7 h 20 m
Quake 3 (1280x800, high quality, xf86-video-intel-2.16.0, xorg-server-1.10.4) 104 fps
glxgears (linux-3.2.12, xf86-video-intel-2.17.0, xorg-server-1.11.2) 1391 fps
Idle consumption (SSD, CCFL panel, min brightness, no radios) 7.0 W


  1. Intel® Core™2 Duo Mobile Processor P8600
  2. Mobile Intel® GM45 Express Chipset
  3. Lenovo 2GB PC3-8500 1066MHz DDR3 SODIMM Memory
  4. Intel® I/O Controller Hub 9 (ICH9) Family
  5. Mobile Intel® 4 Series Express Chipset Family
  6. Intel GMA - Wikipedia, the free encyclopedia
  7. ThinkPad 128 GB Solid State Drive Supplemental information
  8. Intel Wi-Fi Link 5100: Product Brief
  9. Atheros AR5BHB63
  10. Mobile Broadband Module F3507g
  11. Broadcom Corporation - BCM2046 - Single-Chip Bluetooth® EDR HCI Solution
  12. AuthenTec AES2810 Sensor
  13. Analog Devices ADXL320

History of changes

18 Jan 2014
The Kernel section, related patches and configs are updated for the version 3.10.25.
Updated the ultrabase eject script (the dock ID was changed from 0 to 2 in linux-3.10).
Added binding for the ThinkVantage button (updated OpenBox's rc.xml and .Xmodmap).
Updated make.conf.
Uploaded proper version of the acpi_fakekey tool, since there is a widespread version of the tool, which does not generate SYN_REPORT event and won't work in linux-3.10.

15 Jun 2012
The Kernel section, related patches and configs are updated for the version 3.2.12.
Updated and extended benchmarks.
Fixed error is xorg.conf (DPMS was disabled).
Added a note about power saving of the audio codec.
Added smartctl log (3.5 years of extensive use and my SSD is still not dead - quite surprising).
Updated the fancontrol config.
Added a note about native Linux hibernator in the suspend-to-disk session.
Added VA-API manual in the Video section.

12 Nov 2011
Added few notes about Intel 5100 .
Updated information regarding the Atheros WiFi card.

01 Sep 2011
The Kernel section, related patches and configs are updated for the versions 2.6.38+.
Updated the fancontrol config.
Updated the Benchmarks section.
Added a note in the Video section regarding VA-API.

01 Apr 2011
The Kernel section, related patches and configs are updated for the version 2.6.36.
Added few notes regarding power consumption (in the following sections: Sound, WiFi, WWAN/GPS).
Added a note in the Video section regarding the kernel bug caused by KMS.
Updated the Web camera section (there is no more problems with capturing video at 1280x960).

06 Nov 2010
The Kernel section, related patches and configs are updated for the version 2.6.35.

26 Aug 2010
Added a note regarding SSD in the HDAPS section. Thanks to Anton Bolshakov.

19 Jul 2010
Added a note regarding ExpressCards in the Kernel section. Thanks to HK J.

13 Jul 2010
The fancontrol config is updated for lm_sensors-3.1.2.

10 Jul 2010
The Kernel section, related patches and configs are updated for the version 2.6.34.

02 May 2010
Added a missing config for the F3507g-related scripts.
Added a clarification regarding the tp_smapi package in the HDAPS section.
Thanks to WOLfgang Schricker.

28 Apr 2010
The Kernel section and related patches are updated for the version 2.6.33.

19 Mar 2010
Updated the cpufreqd config, because /proc/acpi/ibm/brightness is no longer provided by kernel, now the /sys is used interface instead.

15 Mar 2010
Added a note regarding video decoding acceleration.
Small update in the Ethernet section regarding ethtool.

14 Feb 2010
Added a note regarding ACPI daemon in the Keys section. Thanks to HK J.

15 Dec 2009
Small update in the Web camera section regarding high resolutions.

13 Dec 2009
Added few notes regarding kernel 2.6.32 and KMS.

20 Nov 2009
The article is reformatted in MultiMarkdown syntax.

13 Sep 2009
Added few notes regarding kernel 2.6.31.

16 Jul 2009
Added HAL config for TrackPoint.

06 Jul 2009
Added the drm-i915-ensure-objects-are-allocated-below-4GB-on-PAE.patch. Thanks to Michael Fritzsch. Added a note in the Kernel section regarding x200_dock.diff and the latest kernel.
Added a note in the Suspending section about TuxOnIce for 2.6.30.
Added a note in the Video section regarding DisplayPort capabilities.
Added a note in the Video section regarding DRI2 support.
Slightly updated the kernel, grub, xorg configs and the ultrabase eject script.
Fixed wrong dates, which were specified in y/d/m format instead of y/m/d.

13 May 2009
First public release.