Installing Ubuntu 8.04 (Hardy Heron) and Ubuntu 8.10 (Intrepid Ibex) on a ThinkPad X200
Apologies in advance: The original author of this entry hopes that others will improve on this preliminary effort.
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.
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.
8.10 beta not supporting Intel GigE hardware yet, however (see this technical overview for more details), so unless you wanna try some serious hacking I wouldn't try to do a net install of 8.10 using the ethernet until the final release. Updating the kernel for 8.10 fixes ethernet.
Ah, the wireless.
run <lshw -C network> and sort out which wireless hardware you're working with.
For Atheros, check out this forum post
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 the other hand, 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.
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.
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.
Not sure what's going on here yet, but the battery claims to have only ~3 hours of life after a full charge.
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:
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:
* wake on lan disabled * flash over lan disabled * ethernet lan option rom disabled * hdd dma enabled * wireless lan and wimax enabled
- SATA AHCI
* 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:
#!/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!
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.
(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.