Installing Ubuntu 8.04 (Hardy Heron) and Ubuntu 8.10 (Intrepid Ibex) on a ThinkPad X200

From ThinkWiki
Revision as of 14:47, 8 December 2008 by Lunatico (Talk | contribs) (Sensors)
Jump to: navigation, search


Some items in this page still date from before the 8.10 final release. Please keep a close eye out, and if needed, refer to this X200 owners' thread on the Ubuntu forums.

Started off working w. Ubuntu 8.04 install using the optical drive in the X200 ultrabase. Everything went swimmingly - ethernet worked out of the box as did the optical drive itself.

Wound up upgrading to the 8.10 beta b/c of wireless troubles. See below.


Handles install without any problem - note: while the machine is in the bay, it forces you to use the ethernet port on the bay.


Intel GigE worked out of the box w. 8.04 and 8.10.


Ah, the wireless.

run <lshw -C network> and sort out which wireless hardware you're working with.


For Atheros, check out this forum post

Intel 5300

On 8.04

For Intel 5300 on 8.04, neither the recommended drivers (iwl5000) nor ndiswrapper did the trick. It's possible that manually-upgrading the kernel to 2.27 would do it.

On 8.10

With 8.10 the Intel 5300 works out of the box. Running <lshw -C network> again shows that it's the iwlagn driver (pre-loaded with the 2.27 kernel) that does the trick.


The gnome sensors applets allow you to monitor all important temperatures, including battery, hdd, cpu and gpu and system fan.

sudo apt-get install sensors-applet hddtemp

Add the hardware sensor monitor to the panel and then configure it. You will see a lot of datasources.

  • libsensors: temp9 and temp10 seem to be mainboard/Nortbridge or power regulator sensors.
  • hddtemp: /dev/sda is the sensor of the harddisk. It is important to keep the harddisk always below 45°, normally under 40°. This is no problem with the X200, the hdd cooling system seems to be very good.
  • ibm-acpi: cpu, mPCI, GPU and FAN are intersting sensors.

Power Mgmt

Not sure what's going on here yet, but the battery claims to have only ~3 hours of life after a full charge.

The "laptop" mode is by default disabled in ubuntu (for some historical weird hang up, I guess). To enable it, edit the file:


Change the following line:


to be:


Then your battery can provide you with some extra time (about half an hour~one hour). You can also enable it through powertop together with other tweaks. So far no hang is observed.


With 8.10 things don't work well if you stick with the "preconfigured" xorg.conf settings: the default resolution is only 1074x768 and the highest setting that the laptop display is capable of (1280x800) doesn't even show up in the System -> Preferences -> Screen Resolution applet. To make matters worse, VGA output is a royal pain.

Here's a step-by-step guide to improve the situation if you just want to get the laptop display working properly:

  • First, make sure you've got the latest drivers for your Intel 4500MHD video card:
$ sudo apt-get install xserver-xorg-video-intel
  • Once that's over and done with, open up your xorg.conf file (note: be careful with this file):
$ sudo gedit /etc/X11/xorg.conf
  • Make the part that isn't commented out (i.e. that isn't preceded by a #) look like this:
Section "Monitor"
    Identifier    "Configured Monitor"

Section "Monitor"
    Identifier    "HDMI-1"
    Option        "Ignore" "True"

Section "Monitor"
    Identifier    "HDMI-2"
    Option        "Ignore" "True"

Section "Screen"
    Identifier    "Default Screen"
    Monitor        "Configured Monitor"
    Device        "Configured Video Device"
    DefaultDepth     24
    SubSection "Display"
        Modes "1280x800" "1024x768"
# The following line was an auto-configuration added by an external VGA projector; you might leave it out to try
# letting the system detect dimensions appropriate for whatever display you happen to use.
        Virtual    2432 864

 Section "Device"
     Identifier    "Configured Video Device"
     Driver        "intel"
     Option        "monitor-HDMI-1" "HDMI-1"
     Option        "monitor-HDMI-2" "HDMI-2"

  • Note: those HDMI settings are really important because they get rid of some imaginary monitors (see this other X200 installation notes post for more details). Save your new xorg.conf file and quit the Gedit text editor. Also quit any other open programs and log-out from your session to reset the X-server and apply the new settings.
  • When you log back in, all the new settings should "just work," but don't be alarmed if things look a little weird or if the screen resolution still isn't the full 1280x800...
To make sure the xorg.conf changes "stuck" and that the resolution is set properly, open the aforementioned Screen Resolution applet: System -> Preferences -> Screen Resolution. Make sure the the box that says "Mirror Screens" is unchecked and click the "Detect Displays" button. In the little colorful diagram thingy, there should just be a big rectangle that says "laptop 12"" (or whatever portion of those words fits in the rectangle). Click on this "laptop" rectangle to make sure and activate it. Once you've clicked on it, look for the drop-down menu that says the resolution and re-set this to "1280 x 800 (16:10)." If there are other "imaginary" displays activated (there shouldn't be with the HDMI workaround in the xorg.conf file included above) use the same drop-down menu to turn them to "Off." Click "Apply" at the bottom and close the applet. Log out again to activate the new settings. If all goes according to plan, your 12800x800 display should now work like a charm!
  • Once you've got that all sorted out, go ahead and hook the X200 up to an external display via the VGA port (so far, I've only tried it directly from the laptop and not from the ultrabase). Open the Screen Resolution applet again and click "detect displays." Choose a resolution for the external display and decide whether you want a mirrored output or not. Click apply (here the system may prompt you to accept virtual display settings - say yes and confirm by typing your password), close the applet and log-out again to reset X. Once you log in, you should have an external display working perfectly.

Suspend and Hibernate

There will be conflicting reports and confusion about this, because there is at least one problem causing intermittent suspend/hibernate crashes. In other words, things may appear to work, and then they may not.

If you experience a crash while resuming (my guess is that you will, eventually), first attempt the fix described here:

Workaround on T400

Apparently, this is a mulitprocessor problem, and the workaround to disable one core at Suspend/Hibernate is relatively easy to implement.


On a up to date 8.10 system (as of Nov 12th: linux-2.6.27-8, video-intel-2.4.1ubuntu10) suspend now seems to work perfectly. Before the above multi-processor workaround, resuming from suspend used to crash about half of the time. Not a single crash has been observed since the workaround.

Seconded; this appeared to fix it for me as well (12/2/08), on a fully updated 8.10, with no other modifications to stock.

Additional information about various potential fixes is included below for reference, though I didn't (so far) need to do anything aside from what's described above.

Older workarounds:

Without tweaking drivers and xorg.conf suspending thcrough the Gnome desktop does not work - seems to be related to the problems with the display. Some people have reported no problems with Hibernate, while get the idea. If you're one of those having problems, read on...

Once you've followed the instructions to get the Intel video card drivers installed (see above) Hibernate (suspend to disk) *should* work and Sleep/Suspend (suspend to RAM) *might* work (there are some conflicting reports out there). If you like, you can examine/tweak the settings in system -> preferences -> power management.

If the suspend/sleep still doesn't work, try the following work-around to get the system to recognize the sleep settings.

First, create a text file called "sleep_module" in the /etc/pm/config.d directory:

sudo gedit /etc/pm/config.d/sleep_module

In the new file, enter:


Then save this new file and exit your text editor as well as your other apps. Do a reboot and try out your freshly reconfigured suspend funciton. As before, you can examine/tweak the settings in system -> preferences -> power management.

Note: Consider using "sudo -e" for editing files.

Update: The latest updates to 8.10 (still in beta at the time of this writing) appear to include a sleep_module configuration file that includes this tweak.

I had lots of problems with both hibernate and suspend. I have disabled lots of (for me at least) unneeded devices in the bios, and now at least hibernat works. My x200 bios configuration is now like this:

  • Network
 * wake on lan disabled
 * flash over lan disabled
 * ethernet lan option rom disabled
 * hdd dma enabled
 * wireless lan and wimax enabled
  • CPU
 * multiprocessing enabled
 * intel virtualisation enabled
 * intel vt-d enabled
  • Intel AMT
 * AMT Control disabled
  • IO Port access
 * ethernet enabled
 * wlan enabled
 * wimax enabled
 * wwan enabled
 * bluetooth enabled
 * wireless usb disabled
 * modem disabled
 * usb enabled
 * expresscard slot disabled
 * ultrabay hdd disabled
 * memory card disabled
 * camera enabled
 * microphone enabled
 * fingerprint reader disabled

I left the rest at bios defaults. Of course, you may one some of these devices enabled, but this is a starting point to get hibernate/suspend working and by enabling one after the other you should be able to find the device/s that cause problems.

Note: with this setup i get 4h30min battery time instead of 3h55min

Hibernate fails with Virtualbox running


To circumvent this, put this in ~/bin/vbox_suspend:

for x in `vboxmanage -nologo list runningvms`
  vboxmanage -nologo controlvm $x savestate

and make it executable. you can test it by running ~/bin/vbox_suspend, which should save all your running virtual machines.

put the following lines in /etc/pm/sleep.d/90virtualbox and make it executable as well:

case $1 in
    su YOURUSER -c /home/YOURUSER/bin/vbox_suspend

This is not very elegant (as the user is hard-coded), but it works. I have tried to make the machines resume on thaw, but it would place the vms on the wrong workspace even if it know which X server to use, which it doesn't.


(Mostly) works out of the box under 8.04 and 8.10

Worth noting the apparent problems w. Skype and Medibuntu on 8.10 - some of this appears to have been resolved recently and will hopefully make it into the final release. Sound playback within Skype still failing despite the workaround.


Works with Cheese Webcam Booth on 8.10. Also with Kopete on 8.10.




The X200 Tablet uses a wacom device. The instructions for configuring xorg in 8.10 to work with wacom input do seem to work.

Just follow the directions for a SERIAL tablet (which is indeed what you have).

Here is an xorg.conf that has both the resolution fix and the tablet fixes (tested on 8.10 with an X200 tablet, multitouch - i.e. pen and fingertip - screen):

 Section "InputDevice"
   Driver        "wacom"
   Identifier    "stylus"
   Option        "Device"        "/dev/ttyS0"      # SERIAL ONLY
   Option        "Type"          "stylus"
   Option        "ForceDevice"   "ISDV4"           # Tablet PC ONLY

 Section "InputDevice"
   Driver        "wacom"
   Identifier    "eraser"
   Option        "Device"        "/dev/ttyS0"      # SERIAL ONLY
   Option        "Type"          "eraser"
   Option        "ForceDevice"   "ISDV4"           # Tablet PC ONLY

 Section "InputDevice"
   Driver        "wacom"
   Identifier    "cursor"
   Option        "Device"        "/dev/ttyS0"      # SERIAL ONLY
   Option        "Type"          "cursor"
   Option        "ForceDevice"   "ISDV4"           # Tablet PC ONLY

 Section "InputDevice"
   Driver        "wacom"
   Identifier    "pad"
   Option        "Device"        "/dev/ttyS0"         # SERIAL ONLY
   Option        "Type"          "pad"

 # Uncomment the following section if you you have a TabletPC that upports touch
 Section "InputDevice"
   Driver        "wacom"
   Identifier    "touch"
   Option        "Device"        "/dev/ttyS0"       # SERIAL ONLY
   Option        "Type"          "touch"
   Option        "ForceDevice"   "ISDV4"            # Serial Tablet PC ONLY
   # Adding manual calibration, since proper calibration seems impossible.
   Option "BottomX" "915"
   Option "BottomY" "940"
   Option "TopX" "48"
   Option "TopY" "90"

 Section "Monitor"
     Identifier    "Configured Monitor"

 Section "Monitor"
     Identifier    "HDMI-1"
     Option        "Ignore" "True"

 Section "Monitor"
     Identifier    "HDMI-2"
     Option        "Ignore" "True"

 Section "Screen"
     Identifier    "Default Screen"
     Monitor        "Configured Monitor"
     Device        "Configured Video Device"
     DefaultDepth     24
     SubSection "Display"
         Modes "1280x800" "1024x768"

 Section "Device"
     Identifier    "Configured Video Device"
     Driver        "intel"
     Option        "monitor-HDMI-1" "HDMI-1"
     Option        "monitor-HDMI-2" "HDMI-2"

 Section "ServerLayout"
     Identifier    "Default Layout"
     Screen        "Default Screen"
     InputDevice   "stylus"  "SendCoreEvents"
     InputDevice   "eraser"  "SendCoreEvents"
     InputDevice   "cursor"  "SendCoreEvents" # For non-LCD tablets only
     InputDevice   "pad"                      # For Intuos3/CintiqV5/Graphire4/Bamboo tablets
     InputDevice   "touch"   "SendCoreEvents" # Only a few TabletPCs support this typeEndSection  

You may also want to download the "wacom-tools" package.

When I started experimenting with this, the touchscreen portion of multitouch was quite miscalibrated, and the distro's wacom-tools package has a bug which seems to prevent calibration of the touchscreen via wacomcpl. In fact, it seems to have a series of bugs, judging based on what I've found in google. My solution was to futilely experiment with various xsetwacom values (as documented here) for a few minutes, and then try the values posted by an X61t user.  :) These were close enough to be a starting point. Then I fiddled some more, and the results are included in the xorg.conf above. With luck, these numbers will just work for you, and you won't have any issue. If not, check out the linux wacom documentation and experiment with new calibration values via xsetwacom.


Trackpoint scrolling is, as of 12/02/08, not in a good way on 8.10.

There are numerous instructions on the net which don't work for the X200, including instructions here ([How to configure the TrackPoint]).

On the X200, the HAL-based instructions in the last section may work, but only until suspend/resume or VT switching, due to a bug in evdev.

I do have it working, but it is not pretty:

  • Create a patched evdev. The following is based on instructions from the bug report. These instructions will be extremely fragile - they work for me today but could stop working at any point, based on updates to evdev or changes to the bug. The lines below do the following:
    • Set up a work area
    • Download the patch from the bug report
    • Prepare your environment for building evdev
    • Download the evdev sources
    • Patch them
    • Produce a new deb
    • Install it
sudo bash
cd /usr/local/src/
mkdir evdev
cd evdev 
apt-get build-dep xserver-xorg-input-evdev
apt-get source xserver-xorg-input-evdev
cd xserver-xorg-input-evdev-2.0.99+git20080912
patch -p1 < ../preinit.diff
debian/rules binary
cd ..
dpkg -i xserver-xorg-input-evdev_2.0.99*.deb

  • Add xinput lines to your .profile; with this patch, the normal HAL method no longer works (though note, I have not tested this with no hal policy for the trackpoint at all, just left the non-working one in place. YMMV).
# TEMPORARY FIX FOR BROKEN EVDEV/HAL for TrackPoint scrolling:
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Wheel Emulation" 8 1
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Wheel Emulation Button" 8 2
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Wheel Emulation Y Axis" 8 4 5
  • reboot your system.

This _should_ enable trackpoint scrolling that will be durable through suspend/resumes.

At some point they will fix the upstream evdev package, and/or adjust other configs. You may see this suddenly stop working after an update (evdev was updated but this fix wasn't in the update); in which case, re-run the steps above to create an updated patched evdev (hopefully). Or the update may carry an upstream fix; latest word in the bug is that the unstable upstream debian packages work out of the box. In which case you should simply come back and reexamine whether the xinput lines in the .profile are still necessary at a later date, or you can use the more canonical HAL profile to control the trackpoint properties.

Rotating the Screen

A classic gripe of linux tablet users is that they can rotate the screen but the digitizer does not rotate with it automatically. This can render the portrait "tablet" configuration useless.

The wacom driver actually has the capability to rotate as well. A script has been developed to both rotate the display and the wacom driver:

The last version of the script (for linuxwacom 8.1) appears to work on the x200, in 8.10, after using the other xorg display and wacom modifications above.

However after a few days I have noticed some instability and odd behaviour with it. If anyone would like to have a look at it, please feel free to post a correction here.

Once you have copied the script to your local system, you can use the normal key binding facilities in gnome or kde to bind your rotation key to it.

If anyone has any idea how to receive and act automatically on signals from the sensor inside the x200 tablet's screen hinge, please post it!



Monitor the temperatures of harddisk, gpu and cpu when controlling fan speed.

Software fan control is dangerous, and can shorten the life of a laptop or even destroy it. For a detailed discussion and warning from the kernel maintainer, see this thread, which happens to be an X200s user asking for help.

As reported elsewhere, the fan seems to run constantly while the machine is on under 8.04 and 8.10 (though not at 100% speed).

The fan can be made less noisy by installing the tpfand packages.

  • First add the tpfand repository. Instructions are here
  • Then install the packages.
sudo apt-get install tpfand tpfand-admin 

There is currently no tpfand profile for the x200, but you can set the thresholds and power settings for all fans easily with the thinkpad fan control software. Here are the settings from my /etc/tpfand.conf as a starting point. Use the sensors applet to control and monitor temperatures of cpu, gpu and harddisk (see below)!

0. CPU = 0:0 50:7 
1. Mini PCI = 0:0 55:4 
2. Sensor 2 = 0:255 
3. GPU = 0:0 55:5 
4. Bat0 = 0:0 35:3 
5. Sensor 5 = 0:255 
6. Bat1 = 0:0 35:3 
7. Sensor 7 = 0:255 
8. MB? = 0:0 45:2 
9. MB? = 0:0 55:3 
10. Sensor 10 = 0:255 
11. Sensor 11 = 0:255 
12. Sensor 12 = 0:255 
13. Sensor 13 = 0:255 
14. Sensor 14 = 0:255 
15. Sensor 15 = 0:255 

These settings achieve the following:

  • fan runs at 15% if the system is idle. This is very quiet, while still having airflow through the system
  • if MB2>55° or BAT>35°, fan runs at 30%
  • if MiniPCI>55° fan 45%
  • if GPU>55 fan 60%
  • if CPU>50 fan 90%

The net effect is that a busy system will run the fan between 45%-90% depending on load.

The above settings are for the X200 (without an s) as is all the information on this page. Don't know why somebody messes this page up with stuff about the X200s and sinister warnings.

(Warnings are cheap. New laptops are not. When you have a "sinister warning" about tpfand from the maintainer of the thinkpad fan code in the kernel himself, I don't know why this section is even here - it's not safe. Even so I say leave it, but just make sure there is a big warning.)

The sensor names were deduced by matching sensor readings between tpfand and acpi temperatures.