Difference between revisions of "Installing Ubuntu 8.04 (Hardy Heron) and Ubuntu 8.10 (Intrepid Ibex) on a ThinkPad X200"

From ThinkWiki
Jump to: navigation, search
(Added tablet sectoin)
(Added example xorg.conf to tablet section.)
Line 284: Line 284:
  
 
Just follow the directions for a SERIAL tablet (which is indeed what you have).
 
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:
 +
 +
  Section "InputDevice"
 +
    Driver        "wacom"
 +
    Identifier    "stylus"
 +
    Option        "Device"        "/dev/ttyS0"      # SERIAL ONLY
 +
    Option        "Type"          "stylus"
 +
    Option        "ForceDevice"  "ISDV4"          # Tablet PC ONLY
 +
  EndSection
 +
 +
  Section "InputDevice"
 +
    Driver        "wacom"
 +
    Identifier    "eraser"
 +
    Option        /* Tablet */ "Device"        "/dev/ttyS0"      # SERIAL ONLY
 +
    Option        "Type"          "eraser"
 +
    Option        "ForceDevice"  "ISDV4"          # Tablet PC ONLY
 +
  EndSection
 +
 +
  Section "InputDevice"
 +
    Driver        "wacom"
 +
    Identifier    "cursor"
 +
    Option        "Device"        "/dev/ttyS0"      # SERIAL ONLY
 +
    Option        "Type"          "cursor"
 +
    Option        "ForceDevice"  "ISDV4"          # Tablet PC ONLY
 +
  EndSection
 +
 +
  Section "InputDevice"
 +
    Driver        "wacom"
 +
    Identifier    "pad"
 +
    Option        "Device"        "/dev/ttyS0"        # SERIAL ONLY
 +
    Option        "Type"          "pad"
 +
  EndSection
 +
 +
  # 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
 +
  EndSection
 +
 +
  Section "Monitor"
 +
      Identifier    "Configured Monitor"
 +
  EndSection
 +
 +
  Section "Monitor"
 +
      Identifier    "HDMI-1"
 +
      Option        "Ignore" "True"
 +
  EndSection
 +
 +
  Section "Monitor"
 +
      Identifier    "HDMI-2"
 +
      Option        "Ignore" "True"
 +
  EndSection
 +
 +
  Section "Screen"
 +
      Identifier    "Default Screen"
 +
      Monitor        "Configured Monitor"
 +
      Device        "Configured Video Device"
 +
      DefaultDepth    24
 +
      SubSection "Display"
 +
          Modes "1280x800" "1024x768"
 +
      EndSubSection
 +
  EndSection
 +
 +
  Section "Device"
 +
      Identifier    "Configured Video Device"
 +
      Driver        "intel"
 +
      Option        "monitor-HDMI-1" "HDMI-1"
 +
      Option        "monitor-HDMI-2" "HDMI-2"
 +
  EndSection
 +
 +
  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 
 +
  EndSection
  
 
You may also want to download the "wacom-tools" package.
 
You may also want to download the "wacom-tools" package.
 +
 +
I note that the touchscreen is quite miscalibrated, and the distro's wacom-tools package has a bug which seems to prevent calibration of the touchscreen via wacomcpl.

Revision as of 17:37, 2 December 2008

Apologies in advance: The original author of this entry hopes that others will improve on this preliminary effort.

Overview

Undoubtedly, this post will age quickly as 8.10 nears final release. One place for additional information is 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.


Ultrabay

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


Ethernet

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


Wireless

Ah, the wireless.

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

Atheros

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.

Fan

As reported elsewhere, the fan seems to run constantly while the machine is on under 8.04 and 8.10. Will report back if/when I find a fix in the next few days.

The fan can be made less noisy by installing the tpfand 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.


Sensors

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-appplet 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:

 /etc/default/acpi-support

Change the following line:

 ENABLE_LAPTOP_MODE=false

to be:

 ENABLE_LAPTOP_MODE=true

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.

Display

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"
EndSection

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

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

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
    EndSubSection
EndSection

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


  • 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

Without tweaking drivers and xorg.conf suspending through 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 others...you 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:

SLEEP_MODULE=kernel 

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
  • SATA AHCI
  • 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*

-> http://ubuntuforums.org/showpost.php?p=4582777&postcount=3

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

#!/bin/bash
for x in `vboxmanage -nologo list runningvms`
do
  vboxmanage -nologo controlvm $x savestate
done

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:

#!/bin/bash
case $1 in
  hibernate)
    su YOURUSER -c /home/YOURUSER/bin/vbox_suspend
  ;;
esac

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.

The Solution (or another easy done workaround!)

Related to a Ubuntuforums-Thread I tried following described here, and it works great!

Workaround on T400

It is an Mulitprocessor problem, disabling one core at Suspend/Hibernate solves the problem!

This multiprocessor workaround is confirmed: 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.

  • Note: this is all with SLEEP_MODULE=kernel being commented out in /etc/pm/config.d/sleep_module.

Sound

(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.

Camera

Works with Cheese Webcam Booth on 8.10.

VGA

"Unclaimed"

Tablet

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

https://help.ubuntu.com/community/WacomTroubleshooting

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:

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

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

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

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

 # 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
 EndSection

 Section "Monitor"
     Identifier    "Configured Monitor"
 EndSection

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

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

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

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

 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  
 EndSection

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

I note that the touchscreen is quite miscalibrated, and the distro's wacom-tools package has a bug which seems to prevent calibration of the touchscreen via wacomcpl.