Ubuntu Linux on the IBM ThinkPad T42

/*Note: This is a work in progress, and will be updated frequently as my experiences with Ubuntu on my T42 continue. Please contribute by emailing me or leaving a comment below.

Last updated: 1/19/05

TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones

Table of Contents

  1. Introduction
  2. Installation
  3. Post-Install Tweaks
  4. To Do
  5. Miscellaneous Output

I recently “resolved” the issues barring me from running Linux on my ThinkPad. Specifically, I needed to run some software for work that was completely not working under Linux (believe me: I tried). I “fixed” this by finally setting up my work ThinkPad for remote access, leaving me free and clear to destroy my personal T42.

I’ve been a huge fan of Fedora in the past, and I’ve had excellent luck with it on the desktop front, but I recently started installing Ubuntu (oo-BOON-too) on a few workstations (notably, my Mac mini).

Installation

After backing up my Windows installation (just in case), I downloaded the install image for the Ubuntu 5.04 (Hoary Hedgehog). TuxMobil links to a user who successfully installed Ubuntu on his T42p, so I was feeling good about the installation. Unfortunately, his page is really a bunch of quick notes from research he did before buying the laptop, and is quite difficult to digest. Which brings me to begin this guide.

From the moment the ThinkPad booted from the Ubuntu install CD, I knew I was in for a treat. Everything went smoothly – even detecting the IBM a/b/g wireless miniPCI card “out of the box.” Installation does take a while, since are given (and should take) the option of downloading the latest packages from the Ubuntu servers. Luckily, my office has a bona-fide 100Mbit connection to the Internet. If you’re on a “standard” cable connection, it’ll probably take a few extra minutes. In less than 20 minutes I was sitting at the beautiful Ubuntu login screen.

Some notable comments on hardware support:

  • Sound: works out of the box, and the volume controls on the ThinkPad’s keyboard work as well.
  • Network: both wired and wireless (IBM/Atheros a/b/g miniPCI) work “out of the box.”
  • Video: The video card is detected correctly as an ATI Radeon Mobility 9600, and xorg uses the ati driver, which doesn’t include 3D accelleration support. To enable support, we’ll have to install ATI’s fglrx drivers (see below).
  • Hard Drive Active Protection: The new ThinkPads are equipped with IBM’s patented hard drive protection technology. The IBM Active Protection System detects system acceleration like that which occurs in a fall or sudden move and responds by temporarily parking the drive’s head. This feature can save your hard drive in the event of a fall or sudden impact. The IBM drivers for Windows display the system status and show a nifty graphical representation of your ThinkPad in motion. Unfortunately, there is no support for Linux yet.
  • ACPI: Yes! Finally, a distribution that support sleep and suspend “out of the box.”

Post-Installation Tweaks

Linux just wouldn’t be Linux if there wasn’t some grunt-work to be done. Here are a few tips I to get certain things (mostly) working.

Installing a CPU-specific Kernel

We installed off the i386 installation CD, which will work fine, but will not allow us to take advantage of some architectural enhancements present in 686-generation CPUs. To remedy this, we’ll install the latest 686 kernel.

sudo apt-get install linux-686

Power Management

The Hoary beta provides support for suspend and resume with kernel 2.6.10 or newer and acpi-support 0.11 or later. To enable support for these ACPI functions, edit /etc/default/acpi-support and uncomment the line:

ACPI_SLEEP=true

To enable suspend to disk on Hoary, edit /boot/grub/menu.lst and go to the line starting #kopt. Add the following (replace /dev/hda5 with your swap partition):

resume=/dev/hda5

Mine looks like this:

# kopt=root=/dev/hda1 resume=/dev/hda5 ro pci=noacpi acpi_sleep=s3_bios

Finally, run sudo update-grub and reboot.

To suspend to RAM, either press the ThinkPad’s sleep button (FN + F4 or run sudo /etc/acpi/sleep.sh. To suspend to disk, either press your machine’s hibernate button or run sudo /etc/acpi/hibernate.sh. Buttons will be added to the System menu for the final release.

Video

Note: Installing the “fglrx” drivers will break suspend/resume support (for now). If anyone has a solution for the video corruption which occurs on resume, let me know.

Hoary will install the “ati” driver by default, which offers very limited 3D support. For a much speedier graphics experience, you’ll need to install the ATI “fglrx” binary driver package. Install the drivers from the repository:

sudo apt-get install xorg-driver-fglrx

Once installed, we must load the kernel module by default:

echo fglrx | sudo tee -a /etc/modules

We also need to configure Xorg to use the “fglrx” driver instead of the default “ati” driver:

sudo sed -i -e 's/"ati"/"fglrx"/' /etc/X11/xorg.conf

Now, reboot and you should end up in X with the “fglrx” drivers working correctly. You can tell by running fglrxinfo from the command line:

oaaltone@beta:~$ fglrxinfo
display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: MOBILITY RADEON 9600 Generic
OpenGL version string: 1.3.4769 (X4.3.0-8.8.25)

Also, if you run glxgears, you should receive framerates of over 1,000 fps:

oaaltone@beta:~$ glxgears
6448 frames in 5.0 seconds = 1289.600 FPS
6793 frames in 5.0 seconds = 1358.600 FPS
6792 frames in 5.0 seconds = 1358.400 FPS
6783 frames in 5.0 seconds = 1356.600 FPS

ThinkPad Buttons

NOTE: At this time, the tpb package is not in the universe repository.

Install tpb (from the universe repository for support of the ThinkPad’s function keys:

sudo apt-get install tpb

Add the nvram kernel module to /etc/modules:

echo nvram | sudo tee -a /etc/modules

Make sure you add the appropriate users to the nvram group:

sudo addgroup --system nvram
sudo adduser [username] nvram

All that’s left to do is to is to make sure that udev gives read/write permissions for the /dev/nvram device to all members of the nvram group. Make sure /etc/udev/permissions.d/udev.permissions has the following lines:

misc/nvram:root:nvram:660
nvram:root:nvram:660

Upon reboot, you should see the on-screen display accompany any function key actions, like adjusting the volume with the ThinkPad’s volume control buttons.

Center-Button Scrolling

For those of us who use the award-winning TrackPoint pointing device, it’s handy to use the center, blue button for scrolling functionality. In Windows, this is taken care of by IBM’s drivers, but in Linux we can enable this feature by some editing of xorg.conf.

Open /etc/X11/xorg.conf in the text editor of your choosing, and add the following two lines to the appropriate InputDevice section (see my xorg.conf below):

Option           "EmulateWheel"
Option          "EmulateWheelButton"    "2"

Restart X and you should be able to press the center, blue button and use the TrackPoint as a scroll wheel.

To Do

There are a few things to set straight before I would consider the installation guide complete. Look for more details in the coming days/weeks/months. Here are my general notes and comments on items that will be added in the future.

  • WPA (PSK) support using wpasupplicant.
  • Suspend/resume issues with binary ATI drivers.
  • Drivers for ThinkPad Active Protection System (hard drive accelerometer).
  • Power management profile system similar to IBM’s Windows utility.

Miscellaneous Output

  • lsmod

    Module                  Size  Used by
    speedstep_centrino      7892  1
    proc_intf               3908  0
    freq_table              4004  1 speedstep_centrino
    cpufreq_userspace       4348  1
    cpufreq_ondemand        6140  0
    cpufreq_powersave       1632  0
    pcmcia                 22244  4
    video                  15972  0
    sony_acpi               5928  0
    pcc_acpi               11008  0
    ibm_acpi               17524  0
    button                  6480  0
    battery                 9988  0
    container               4320  0
    ac                      4676  0
    af_packet              21992  2
    ath_pci                60608  0
    ath_rate_onoe           8904  1 ath_pci
    wlan                  118524  3 ath_pci,ath_rate_onoe
    ath_hal               133232  2 ath_pci
    e1000                  85620  0
    yenta_socket           21344  0
    pcmcia_core            57984  2 pcmcia,yenta_socket
    snd_intel8x0m          18212  0
    snd_intel8x0           32352  2
    snd_ac97_codec         74144  2 snd_intel8x0m,snd_intel8x0
    snd_pcm_oss            52132  0
    snd_mixer_oss          19680  2 snd_pcm_oss
    snd_pcm                94696  5 snd_intel8x0m,snd_intel8x0,snd_ac97_codec,snd_pcm_oss
    snd_timer              25060  1 snd_pcm
    snd                    55012  8 snd_intel8x0m,snd_intel8x0,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
    soundcore              10016  2 snd
    snd_page_alloc          9732  3 snd_intel8x0m,snd_intel8x0,snd_pcm
    i2c_i801                8364  0
    i2c_core               22320  1 i2c_i801
    hw_random               5300  0
    ehci_hcd               32676  0
    uhci_hcd               32816  0
    usbcore               118968  3 ehci_hcd,uhci_hcd
    shpchp                 99172  0
    pci_hotplug            33488  1 shpchp
    intel_agp              22076  1
    agpgart                33608  1 intel_agp
    irtty_sir               8544  0
    sir_dev                18828  1 irtty_sir
    irda                  191936  2 irtty_sir,sir_dev
    crc_ccitt               1920  1 irda
    floppy                 58864  0
    rtc                    12472  0
    pcspkr                  3496  0
    md                     47280  0
    dm_mod                 59420  1
    capability              4648  0
    commoncap               7712  1 capability
    evdev                   9344  0
    fglrx                 237088  9
    tsdev                   7520  0
    nvram                   9096  1
    psmouse                21320  0
    mousedev               11288  1
    parport_pc             37252  1
    lp                     11144  0
    parport                36744  2 parport_pc,lp
    ide_cd                 41700  0
    cdrom                  40220  1 ide_cd
    ext3                  136424  1
    jbd                    60216  1 ext3
    mbcache                 8356  1 ext3
    ide_generic             1312  0
    piix                   10340  1
    ide_disk               20416  3
    ide_core              129356  4 ide_cd,ide_generic,piix,ide_disk
    unix                   28276  937
    thermal                13320  0
    processor              22452  2 speedstep_centrino,thermal
    fan                     4388  0
    fbcon                  37504  0
    crc32                   4128  1 fbcon
    font                    8192  1 fbcon
    bitblit                 5472  1 fbcon
    vesafb                  6724  0
    cfbcopyarea             3808  1 vesafb
    cfbimgblt               2912  1 vesafb
    cfbfillrect             3488  1 vesafb
    

  • lspci

    0000:00:00.0 Host bridge: Intel Corp. 82855PM Processor to I/O Controller (rev 03)
    0000:00:01.0 PCI bridge: Intel Corp. 82855PM Processor to AGP Controller (rev 03)
    0000:00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
    0000:00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
    0000:00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
    0000:00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB 2.0 EHCI Controller (rev 01)
    0000:00:1e.0 PCI bridge: Intel Corp. 82801 PCI Bridge (rev 81)
    0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM LPC Interface Controller (rev 01)
    0000:00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4) Ultra ATA Storage Controller (rev 01)
    0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
    0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
    0000:00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
    0000:01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]
    0000:02:00.0 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
    0000:02:00.1 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
    0000:02:01.0 Ethernet controller: Intel Corp. 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)
    0000:02:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
    

  • hdparm

    /dev/hda:
    Timing cached reads:   2336 MB in  2.00 seconds = 1167.59 MB/sec
    Timing buffered disk reads:   98 MB in  3.01 seconds =  32.52 MB/sec
    
    /dev/hda:
    multcount    =  0 (off)
    IO_support   =  0 (default 16-bit)
    unmaskirq    =  0 (off)
    using_dma    =  1 (on)
    keepsettings =  0 (off)
    readonly     =  0 (off)
    readahead    = 256 (on)
    geometry     = 65535/16/63, sectors = 40007761920, start = 0
    

  • xorg.conf

    # /etc/X11/xorg.conf (xorg X Window System server configuration file)
    #
    # This file was generated by dexconf, the Debian X Configuration tool, using
    # values from the debconf database.
    #
    # Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
    # (Type "man /etc/X11/xorg.conf" at the shell prompt.)
    #
    # This file is automatically updated on xserver-xorg package upgrades *only*
    # if it has not been modified since the last upgrade of the xserver-xorg
    # package.
    #
    # If you have edited this file but would like it to be automatically updated
    # again, run the following commands:
    #
    #   cp /etc/X11/xorg.conf /etc/X11/xorg.conf.custom
    #   sudo sh -c 'md5sum /etc/X11/xorg.conf >/var/lib/xfree86/xorg.conf.md5sum'
    #   sudo dpkg-reconfigure xserver-xorg
    
    Section "Files"
    FontPath        "unix/:7100"                    # local font server
    # if the local font server has problems, we can fall back on these
    FontPath        "/usr/lib/X11/fonts/misc"
    FontPath        "/usr/lib/X11/fonts/cyrillic"
    FontPath        "/usr/lib/X11/fonts/100dpi/:unscaled"
    FontPath        "/usr/lib/X11/fonts/75dpi/:unscaled"
    FontPath        "/usr/lib/X11/fonts/Type1"
    FontPath        "/usr/lib/X11/fonts/CID"
    FontPath        "/usr/lib/X11/fonts/100dpi"
    FontPath        "/usr/lib/X11/fonts/75dpi"
    # paths to defoma fonts
    FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
    FontPath        "/var/lib/defoma/x-ttcidfont-conf.d/dirs/CID"
    EndSection
    
    Section "Module"
    Load    "bitmap"
    Load    "dbe"
    Load    "ddc"
    Load    "dri"
    Load    "extmod"
    Load    "freetype"
    Load    "glx"
    Load    "int10"
    Load    "record"
    Load    "type1"
    Load    "vbe"
    EndSection
    
    Section "InputDevice"
    Identifier      "Generic Keyboard"
    Driver          "keyboard"
    Option          "CoreKeyboard"
    Option          "XkbRules"      "xorg"
    Option          "XkbModel"      "pc104"
    Option          "XkbLayout"     "us"
    EndSection
    
    Section "InputDevice"
    Identifier      "Configured Mouse"
    Driver          "mouse"
    Option          "CorePointer"
    Option          "Device"                "/dev/input/mice"
    Option          "Protocol"              "ImPS/2"
    Option          "Emulate3Buttons"       "true"
    Option          "ZAxisMapping"          "4 5"
    Option          "EmulateWheel"
    Option          "EmulateWheelButton"    "2"
    EndSection
    Section "InputDevice"
    Identifier      "Synaptics Touchpad"
    Driver          "synaptics"
    Option          "SendCoreEvents"        "true"
    Option          "Device"                "/dev/psaux"
    Option          "Protocol"              "auto-dev"
    Option          "HorizScrollDelta"      "0"
    EndSection
    
    Section "Device"
    Identifier      "ATI Technologies, Inc. Radeon Mobility 9600/9700 M10/M11 (RV350 NP)"
    Driver          "ati"
    BusID           "PCI:1:0:0"
    EndSection
    
    Section "Monitor"
    Identifier      "Generic Monitor"
    Option          "DPMS"
    EndSection
    
    Section "Screen"
    Identifier      "Default Screen"
    Device          "ATI Technologies, Inc. Radeon Mobility 9600/9700 M10/M11 (RV350 NP)"
    Monitor         "Generic Monitor"
    DefaultDepth    24
    SubSection "Display"
    Depth           1
    Modes           "1400x1050"
    EndSubSection
    SubSection "Display"
    Depth           4
    Modes           "1400x1050"
    EndSubSection
    SubSection "Display"
    Depth           8
    Modes           "1400x1050"
    EndSubSection
    SubSection "Display"
    Depth           15
    Modes           "1400x1050"
    EndSubSection
    SubSection "Display"
    Depth           16
    Modes           "1400x1050"
    EndSubSection
    SubSection "Display"
    Depth           24
    Modes           "1400x1050"
    EndSubSection
    EndSection
    
    Section "ServerLayout"
    Identifier      "Default Layout"
    Screen          "Default Screen"
    InputDevice     "Generic Keyboard"
    InputDevice     "Configured Mouse"
    InputDevice     "Synaptics Touchpad"
    EndSection
    
    Section "DRI"
    Mode    0666
    EndSection
    

About these ads

62 thoughts on “Ubuntu Linux on the IBM ThinkPad T42

  1. Ok… finally got X server back up and running. Google and man pages helped me reverse those commands in my last comment (above).

    In reverse — to remove the ATI fglrx driver if it isn’t working, this is what I did:

    sudo apt-get remove xorg-driver-fglrx

    Then:

    sudo emacs /etc/modules
    (or sudo vim /etc/modules)
    (delete or comment out last line that says fglrx)

    Then:
    sudo sed -i -e ‘s/”fglrx”/”ati”/’ /etc/X11/xorg.conf

    Then I rebooted the computer and X server works now.

    Just need to figure out why it didn’t work the first time…

  2. Great HowTo! I really appreciate that.
    But i have one problem with following your instructions. I have Kubuntu Breezer installed with KDE 3.5.
    I can´t understand the following instructions:

    All that’s left to do is to is to make sure that udev gives read/write permissions for the /dev/nvram device to all members of the nvram group. Make sure /etc/udev/permissions.d/udev.permissions has the following lines:
    misc/nvram:root:nvram:660
    nvram:root:nvram:660

    I can´t find neither the permissions.d folder nor the udev.permissions file. Have they been renamed in Kubuntu? Is all i have to to to add those 2lines? In which file?

    Thx for your help! Of course you can email me too. I would be very thankful.

  3. Hi,

    I would like to congratulate you for this useful guide. I´ve followed all the steps you mentioned and everything worked fine!.

    Thanks,

  4. I just had exactly the same problem as peller – suspended the system for the first time and after that, my system was completely inoperable. I had remove the keyboard and keyboard bezel and disconnect the cmos battery before the system would even boot up to the bios again.
    I fixed the problem by editing /etc/default/acpi-support and uncommenting:
    ACPI_SLEEP=true
    see this site:
    http://floatingsun.net/articles/howtos/howto-t42-ubuntu.html#hibernate

  5. fan in my thinkpadT42 goes on without stopping even though machine is not warm. Is there a way to change that? its annoying

  6. Thanks alot.
    I was originally only looking for a way to enable the center mouse button but I hit the jackpot.
    Now that I have found the right thread.. how can I disable the touchpad mouse?

  7. Hi

    I just found your guide to ubuntu on the Thinkpad. It is terrific. I could have used this year ago when I bit the bullet and decided to do a dual boot install of Linux on my T42. I didn’t much care for ubuntu at the time, so installed PCLOS 0.92, using the live-cd to resize the NTFS partition. I found that I couldn’t use the external monitor connection with a projector and I had a few other problems with the IBM volume control buttons and other bits and pieces I have since forgotten about. What I do remember was how leased I was to finally have Linux on my T42. Most things worked beautifully “out of the box” as they say. Because I wanted projector support, I blew away PCLOS and installed Kanotix, although with some trepidation. This went without a hitch and the volume control buttons worked, as did the projector connection (1024×768). A few weeks later I replaced Kanotix with Simply Mepis 3.4.3, again without a hitch. I replaced this with Simply Mepis 6.0 as soon as it was available. Everything seems to work “out of the box”, but now I am thinking of installing Kubuntu “Dapper Drake”, which I use on my desktops. Has anyone had experience with Dapper on a T42? Any problems I should know about before taking the plunge?

    Thanks again for a terrific resource.

  8. i have a t41 with ubuntu 11.10 it works fine but its only 32 bit and none of the 3d graphics work on it but it does need updating every week or two

  9. This is really a fantastic website, could you be interested in working on an interview about just how you designed it? If so e-mail myself!

  10. Nevertheless, that does not mean that the product is a fake.

    The key to getting the most out of a hot oil treatment for
    hair is to continuously use it weekly if you need it or every
    fortnight and youll definitely see the results. It only leaves a lustrous sheath on the hair and gives it a beautiful
    look rather and the greasy effect that is left by the usual hair oils.
    From my experience, it is quite difficult to style hair
    immediately after a hot oil treatment, so you might want to skip
    the curling iron or hot rollers. Indeed, nourishing and conditioning the
    scalp using aromatherapy oils is one of the most basic
    and simplest ways to prevent further hair
    loss and stimulate healthier hair regrowth.

Comments are closed.