Ubuntu on my Laptop
The page below gives a summary of the tweaks I needed to run Ubuntu 9.04 on a Lenovo ideapad Y550.
Update: Since 9.04 is now officially unsupported, I re-installed using Ubuntu 10.10. It worked out of the box (including wireless and graphics - I just had to agree to install the non-free nvidia drivers), so with a recent version of Ubuntu, you will hopefully no longer need the advice on this page.
Disclaimer 1: TRY THIS AT YOUR OWN RISK! I'm providing this information in the hope that it will be useful to others who would like to install Linux on their laptops. However, I give NO WARRENTY that the instructions below will work for you. Moreover, I DENY ANY LIABILITY for any damage, direct or indirect, to your machine or your data. That being said, please do inform me if following my instructions should cause you any trouble, so that I can warn others. Brands and trademarks are the property of their respective owners and are not particularly marked.
Disclaimer 2: I'm not a Linux guru. I have found out most of this by trial and error, inspired by what I found when browsing web forums. If you know a better way of doing things, please let me know. My contact is webmaster at dreiviertelkunst.de.
I burnt an installation CD from an image that I downloaded from the Ubuntu homepage. Since my machine has 4 GB of RAM, I used the 64-bit version. By default, the laptop won't boot from CD - you'll have to press F12 at the initial Lenovo splash screen.
Even though I do most of my work on Linux, my goal was to setup the machine for dual-boot. For some reason, the partition manager which is part of the Ubuntu installation failed to shrink the Windows Vista partition. However, Vista comes with its own partition manager that does the job, even while Windows is running. You should be able to find it by entering "partition" into the search field of the Control Panel. Unfortunately, it would not let me shrink the Windows partition below 100 GB, even though there was plenty of free space. However, you can easily use that space from Ubuntu as well, so I decided to live with this.
I was careful not to touch the Vista recovery partitions. However, I have not verified whether system recovery still works after repartitioning, out of fear that it would erase my Linux installation.
General Hardware Support
Things that worked out-of-the-box include general system installation, touchpad (except multitouch), wired network access, sound, suspend and hibernate, the function keys that control volume, brightness etc., CD drive and multimedia memory card readers, and limited graphics.
Things that required special attention were full graphics support (making use of the full screen resolution and 3D rendering) and wireless network access. Things that I haven't tried to use so far include the builtin webcam, WiMAX support, and those funky customizable softkeys above the keyboard.
My laptop has an NVIDIA GeForce GT 240M, but the Y550 is a customizable series, so your chip may differ. The lenovo webpage didn't state the amount of dedicated graphics RAM, but it came with 1 GB.
The default graphics driver in Ubuntu works, but only gives you a 1280x720 screen resolution (instead of the 1366x768 native to the display), and doesn't support direct (fast) 3D rendering. Currently, you need the latest beta version (190.36) of NVIDIA's binary drivers to get full functionality. Note that they are still considered experimental and not intended for production use.
To install the beta drivers as a Ubuntu package, you need to add
deb http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/nvidia-vdpau/ppa/ubuntu jaunty main
to your software sources (System / Administration / Software Sources), update the package list, and install the packages nvidia-190-modaliases and nvidia-glx-190 (System / Administration / Synaptic Package Manager).
After installing the drivers and activating them via System / Administration / Hardware Drivers, I got six small, tiled copies of my desktop. Apparently, the driver resorts to a resolution of 640x480, since the EDID information provided by the display is erroneous. Forums indicate that the driver will ignore the false piece of information if you insert
Option "ModeValidation" "NoTotalSizeCheck"
into the "Device" section of /etc/X11/xorg.conf, but that only allowed me to login once - when changing users or coming back from suspend, the display went out of sync. Several hours of trial and error led me to the following /etc/X11/xorg.conf, which overrides the settings proposed by the EDID of the display completely:
Identifier "Configured Monitor"
ModeLine "My1366x768@60" 85.5 1366 1494 1624 1798 768 770 776 795
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
Option "ModeDebug" "true"
Identifier "Configured Video Device"
Option "NoLogo" "True"
Option "ModeValidation" "NoDFPNativeResolutionCheck"
Option "UseEDID" "False"
The display still gets out of sync while shutting down and when switching to a text console (e.g., Ctrl-Alt-F1), but switching back to graphics fixes the problem and changing users, suspend and hibernate all work fine.
My laptop has the Intel WiMAX/WiFi Link 5150, but again, your chip may vary. So far, I only tested the WiFi (not the WiMAX). To get the drivers, I installed the package linux-backports-modules-jaunty. The driver needs firmware which you can download from Intel and put into /lib/firmware. Intel calls the file iwlwifi-5150-2.ucode, but the driver looks for lbm-iwlwifi-5150-2.ucode, so I simply created a symlink.
The WiFi frequently stalled (dropped the connection without indicating so in the network manager), in particular when downloading larger files (e.g., while doing package updates). In such cases, the output of dmesg would include the message
iwlagn 0000:04:00.0: Microcode SW error detected. Restarting 0x2000000.
I could reconnect by reloading the driver
sudo rmmod iwlagn && sudo modprobe iwlagn
but larger downloads would require several restarts and they became more and more frequent. According to the forums, this is most likely a heat problem: By default, the Linux driver runs the chip at maximum power and at some point, the chip turns itself off to avoid overheating. The proposed remedy is to enable power management:
iwconfig wlan0 power on
I added this line to the file /etc/rc.local (before the "exit 0"!) so that it is set automatically on each startup. You can confirm that power management is enabled by typing "iwconfig wlan0" in a terminal. This has greatly reduced the problem - occasionally, the connection still drops, but the network manager now notices this and reconnects automatically. Also, this happens less frequently, appears to be unrelated to network activity, and may well be the fault of the somewhat shaky access point at our home (my wife has the same problem on her Windows box).
Happy End, but Stay Tuned
Fortunately, all features that are really important to me now work under Linux. However, I hope to do some more experiments in the next few weeks (e.g., how different power management settings affect performance and battery life) and might update this page accordingly. I'm open to questions and suggestions to improve my installation and/or this page. Please e-mail me at webmaster at dreiviertelkunst.de.