User Tools

Site Tools



Notes for ThinkPad x200 w/ linux

My notes for running linux on the ThinkPad x200. Mine is model NR35NGE, 3x USB 2.0, ExpressCard/54 Slot, weight 1.54kg.

notes for Lenovo x200 UltraBase 44C0554: it contains a DisplayPort. DisplayPort→HDMI adapters can be used, but the DisplayPort on the UltraBase is not capable of outputting audio over HDMI. As a workaround, there are adapters available which offer a USB port soundcard to the system, additionally take the DisplayPort output from the UltraBase, and output a HDMI signal with audio.

  • Intel Core 2 Duo P8600, 2.40GHz, 3MB L2, 1066MHz FSB
  • Intel Graphics Media Accelerator 4500 MHD onboard graphics, 12“ CCFL with 1280×800 (WXGA, 200 nit)
  • Support for up to 4GB DDR3-RAM PC3-8500, 2GB buildin
  • harddisk 160GB SATA 2.5” 7200RPM
  • 5-1 (MMC/SD/SDHC and MS/MS Pro) Media card Reader with Modem
  • Intel Gigabit Ethernet Controller
  • MiniPCI Express slot 1 w/ Intel Wifi Link 5100 (AGN)
  • Integrated camera (?), Integrated microphone, Fingerprint Reader Authentec Inc. AES2810 ( usb 08ff:2810 )
  • Bluetooth
  • IBM Embedded Security Subsystem 2.0
  • IBM Active Protection System
  • TrackPoint only
  • 6-cell battery, 56 Wh (10.8 V, 5.2 Ah). up to 6.5 hr, 1.47kg (slightly elevates the back)
first steps
  • first step: getting the debian network install-files for amd64, setting up dhcp/tftp on other debianbox, PXE-booting the x200
  • partitioning:
  primary 256M partition for /boot
  primary 256M partition for other linuxs /boot (still unused currently)
  primary 10GB partition for OpenSolaris or FreeBSD, those still require partitions, right?
     2gb encrypted swap
     12gb encrypted / for debian
  • see snippets/debianinstall

X basic configuration

As of 21.03.2009 X from debian unstable uses the VESA driver by default, thats slow and screen-blanking doesnt work.

# make sure X is not running
X -configure
mv /root/ /etc/X11/xorg.conf
vi /etc/X11/xorg.conf # make sure Driver "intel" is set in graphic-card section

using the trackball/nipple to scroll websites, current way

  • debian: apt-get install xinput
  • fedora14/15: yum -y install xorg-x11-apps xinput
  • debian unstable currently detects the device just as 'PS/2 Generic Mouse'
  • add this to ~/.xsession:
xinput list | \
egrep 'TPPS/2 IBM TrackPoint|DualPoint Stick|Synaptics Inc. Composite TouchPad / TrackPoint|PS/2 Generic Mouse' | \
sed 's/.*id=\([0-9]\{1,\}\).*/\1/' | \
while read id ; do
  xinput set-prop $id "Evdev Wheel Emulation" 1
  xinput set-prop $id "Evdev Wheel Emulation Button" 2
  xinput set-prop $id "Evdev Wheel Emulation Timeout" 200
  xinput set-prop $id "Evdev Wheel Emulation Axes" 6 7 4 5 # horiz. and vert. scrolling
  #xinput set-prop $id "Evdev Wheel Emulation Axes" 0 0 4 5 # just vert. scolling

using the trackball/nipple to scroll websites, old way 1

  • With this one can press the middle-button on websites and scroll the site moving the trackball up/down.
  • The 2 keys above the cursor-keys also get a new mapping here, after making this change here you can directly use them in your windowmanager for mappings.
  • Create file /etc/udev/rules.d/99_trackpoint.rules with this content and restart uder/X ort reboot:
ACTION!="add|change", GOTO="xorg_trackpoint_end"
KERNEL!="event*", GOTO="xorg_trackpoint_end"
ENV{ID_PATH}!="platform-i8042-serio-1", GOTO="xorg_trackpoint_end"
ENV{x11_options.XAxisMapping}="6 7"

using the trackball/nipple to scroll in websites, old way 2

  • Create file /etc/hal/fdi/policy/mouse-wheel.fdi with this content and reboot:
<match key="info.product" string="TPPS/2 IBM TrackPoint">
 <merge key="input.x11_options.EmulateWheel" type="string">true</merge>
 <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
 <merge key="input.x11_options.YAxisMapping" type="string">4 5</merge>
 <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge>
 <merge key="input.x11_options.Emulate3Buttons" type="string">true</merge>
 <merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge>

using the 2 keys next to cursor-keys

Use this if you dont want to use the 2 keys next ot the cursor keys, i.e. to jump to other virtual screens.

Note: This is no longer needed for xorg-installasions as of 2009. Those mostly offer the keys automatically, so you have just to configure your windowmanager appropriately.

xev         # select the window that gets created and hit the keys after each other to get their keycodes. here 234 and 233
xmodmap -pk # shows current mappings
xmodmap -e 'keycode 233 = THORN'
xmodmap -e 'keycode 234 = Oslash'
            # those commands now maps keysyms to our keys, use keysyms you do not usually
WPrefs      # this is the utilits windowmaker uses to assign actions. Go to 'change keyboard shortcuts', select your action
            # (for me its switch to next/previous workspace), then 'capture' and hit the key. save, and the keys have their
            # new assignment.
            # execute the 2 assignment-xmodmap-calls in ~/.xinitrc or ~/.xsession, or read on .xmodmaprc in 'man xmodmap'

automatic detection/modesetting for external monitor

I use a external 24“ monitor attached to the ultrabase dockingstation. X detects the DisplayPort-output as HDMI-2, from there i use a cable to the DVI-interface of the monitor. This script is run upon userlogin from xdm.

cat >>~/.xsession <<EOT
# disable internal monitor on rhel if external monitor available
if [[ -n $(xrandr | grep '^HDMI2 connected' ) ]]; then
                echo "HDMI2 connected was detected.">/tmp/xsessionlog
                xrandr --output LVDS1 --off
                xrandr --output HDMI1 --auto
                xrandr --output HDMI2 --mode 1920x1080

using a TV as output besides the internal screen

  • Displayport→HDMI adapter DeLOCK Adapter DP St./HDMI Bu.
# this places the TV output below the virtual screens running windowmanager
xrandr --output HDMI1 --mode 1920x1080 --below LVDS1

# pavucontrol can switch the audiooutput into the TV instead of internal speaker
sudo yum -y install pavucontrol

tuning LED brightness

yum -y install xbacklight
xbacklight -inc 10%
xbacklight -dec 10%

3G UMTS card

  • Option GlobeTrotter HSUPA Modem (aka “T-Mobile Web'n'walk Card Compact III'), usb id 0af0:7011
  • we have to disable the modem shows up a storage-device and not the modem-interfaces, debian-package usb_modeswitch doesnt work for me:
# get udev.tar.gz from 
apt-get install libusb-dev ppp
cd hso_udev
CC=/usr/bin/gcc-4.4 make
make install
  • insert umts-card, driver hso (in kernel since 2.6.29) should be loaded. The udev-rule from hso_udev should switch from usb-storage mode to modemmode, devices /dev/ttyH[1234] should appear
  • get hso_26-v1.9 from, edit conninfo.ini, use './ up' to get connected
  • alternatively use wvdial:
apt-get install wvdial
cat >/etc/wvdial.conf <<EOT
[Dialer Defaults]
Modem = /dev/ttyHS3
Phone = *99***1#
Username = t-mobile
Password = t-mobile
Dial Command = ATDT
Init2 = AT+CPIN=1234
Init3 = AT+COPS=0
Init4 = AT+CGDCONT=1,"ip",""
Init5 = AT$QCPDPP=1,1,"t-mobile","t-mobile"
Init6 = AT_OWANCALL=1,1,0
Modem Type = Analog Modem
# replace 1234 with your pin, change providersettings. then start 'wvdial' to dial in


using wlan: basics
  • apt-get install kismet wpasupplicant
  • the kismet wlan-scanner in older versions does not know a source-type iwlagn so use 'source=iwl4965,wlan0,iwlagnsource' and 'enablesources=iwlagnsource' in /etc/kismet/kismet.conf
  • the cfg80211 module should be configured for your region providing proper channels. I do echo 'options cfg80211 ieee80211_regdom="EU"' >/etc/modprobe.d/wlan.conf' here. 'cat /sys/module/cfg80211/parameters/ieee80211_regdom' shows your setting. 'iw reg set EU' also tries to set this.
  • packet-injection with aircrack-ng doesnt work here
using wlan: ad-hoc mode
ifconfig wlan0 down
ifconfig wlan0 netmask 0xffffff00
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 key 1234567890
iwconfig wlan0 channel 1
iwconfig wlan0 essid tester
ifconfig wlan0 up
devicesection in kismet.conf


  • append 'vga=0x0368' - for framebuffer mode


By default the fan here tunes up when cpus get hot, but do not tune back later. One can control this manually (risking heat-damages) or employ scripts to tune the fan up/down. None of the BIOS/firmware updates fixed the issue for me, 3.22-1.07 was latest.

# activate manual fan-control
echo 'options thinkpad_acpi hotkey=enable,0xffffbf experimental=1 fan_control=1' \
# then after reloading the module with those options, lets tune the fan up for example:
echo 'level 5' >/proc/acpi/ibm/fan
  • I wrote to observe the temp-sensors and control the fan accordingly on my x200. The sensors have to be modified for other thinkpad-models, the limits to ramp up the fan are more or less randomly chosen and there is no mode without fan, its always on at least lowest level. There is a observer-mode for just observing fan/temperatures and a daemon-mode to run the script in background. On there are more of these scripts, tried one from there but wrote this myself so i have a clue what it does. Its available here: .

bios-update w/o windows

Lenovo is providing an option for bios-update with windows-binaries, since i am not running windows this wont work here. They also provide a cdrom-iso which i cannot boot with a usb-cdrom since i dont own one.

Notes for ThinkPad x200 w/ FreeBSD

  • for installation of FreeBSD 8.0-RELEASE is used a usbstick, just 8.0-RELEASE-i386-memstick.img dd'ed onto a usb-stick
  • for wlan:
    • you have to upgrade to 8.0-STABLE or CURRENT then to get it working
    • manually load the module with 'kldload if_iwn'
    • or add line %%if_iwn_load=“YES” to boot/loader.conf and reboot
hardwarerelated/thinkpad_x200.txt · Last modified: 2019/12/08 12:23 by chris