/*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
Table of Contents
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
# 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
56 Comments
Hi,
I would like to congratulate you for this useful guide. I´ve followed all the steps you mentioned and everything worked fine!.
Thanks,
Great Site. Don’t know if you have tackled the WPA issue yet, but this site helps make Debian (ubuntu/kubuntu) wpa config a snap.
http://www.vollink.com/gary/deb_wifi.html
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
fan in my thinkpadT42 goes on without stopping even though machine is not warm. Is there a way to change that? its annoying
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?
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.
3 Trackbacks
[...] nk) den Artikel von Oliver Aaltonen "Ubuntu Linux on the IBM ThinkPad T42" (link) die Webseite der Columbia University "Ubu [...]
Ubuntu sur IBM Thinkpad T41
Il y a quelques jours, j’ai installé une Ubuntu Linux sur mon IBM T41 récemment acheté. Tout fonctionnait pas trop mal, mais je n’avais pas fait trop de tests en ce qui concerne l’économie d’énergie. Après quelques recher…
[...] I came across an excellent base document on getting Ubuntu functional (well, it’s more than a base). I’ve reproduced it here for convenience, but the original (with updates and comments is at aaltonen.us. This guy has got some really great info and he’s a local (to me anyway). If you like what he has to say as much as I do you might want to float some coin his way. Not to mention he’s a cutie (but he’s taken and not a reason to float coin his way btw). [...]