Ubuntu/Debian On IBM ThinkPad T43 (2668-HH5)

Joseph WU
Last updated: Thu Sep 7 11:59:06 HKT 2006


1. About My IBM Thinkpad T43 (2668-HH5) Toy

I bought this powerful toy in the "HKUST Notebook/Desktop Ownership Program" sponsored by PCCW and IBM, in August 12, 2005. The module number of my T43 is 2668-HH5. There is no big difference with other modules except the ABSENCE of the Fingerprint Reader and the Bluetooth. The hardware spec is listed as follows:

ThinkPad T43 / 1.86GHz
Processor:      Intel Pentium M 750 1.86GHz
L2 Cache:       2MB L2 cache / Intel 915PM
OS:             Win XP Pro. (English)
Memory:         512MB DDR2 RAM
Hard Disk:      60GB disk (5400 rpm)
Optical:        24X/24X/24X/8X CDRW/DVD Combo
Display:        14.1" TFT SXGA+ (1400 x 1050)
Graphics:       ATI Radeon X300 (64MB)
Communication:  Modem, LAN, 802.11b/g
Media:          2 x USB 2.0, S-video out, parallel, IR, VGA
Weight:         4.5 lbs (4.9 lbs)
Dimensions:     12.2" x 10" x 1"
Battery Life:   4.0 hrs*
Warranty:       3-year international warranty
[You can get the output of "lspci -vv" here. Note: the output of lspci was generated after ran "update-pciids".]

My beginning experience of this laptop was kind of nightmare since there was a GREEN subpixel on the center of the LCD screen. It's too distinct to omit so that I ever wanted to sell it since I have another old laptop (Dell Inspiron 4150) on hand. Fortunately, the trading was not smooth enough that I kept it in the box until the end of September. Eventually, I decided to own it by myself whatever it is good or not. So you get the chance to see this memo. :) By the way, during my experiment of installing Debian On this box, the LCD screen was defaced by a straight white line from the left to right on the upper side. Well, I thought I got a good chance to change a stainless new LCD from IBM service center, **BUT**, what I got is the same, a new LCD screen with a RED subpixel. :(

2. Why Ubuntu?

Yes, I know there are a lot of distributions on the market. But why Ubuntu? To be honest, I never heard about Ubuntu until I searched "Debian On IBM T43" on google. You see, I am a big fan of Debian. And sure, Debian is my favorite GNU/Linux distribution, but the reasons I chose Ubuntu other than the original Debian are:

A. The infamous problem of the SATA harddisk driver exists in current Debian release (3.1r0a) as many of others. The Debian installation CD doesn't support the SATA harddisk and can just treat it as an ATA device without DMA enabled. So the copying procedure would be very slow. Although, after installation, I could download and recompile the newest kernel to support SATA, the time spending on recompiling the new kernel and transporting the /dev/hdx to /dev/sdx should be considerable and the operation should be easily to get in trouble without particular care.

B. The Ubuntu, IMHO, is a FRESH {clone|fork} of Debian GNU/Linux equipping the most up-to-date packages based on Debian. The version I downloaded is Ubuntu-5.10-preview (AKA. Breedy Badger) which, certainly, supports SATA. It also delivers the newest X.org version 6.8.2 that recognizes the ATI Radeon X300 graphic card well, GNOME 2.12.1, OpenOffice.org 2.0 beta 2 and so on.

These advantages really encouraged me to have a try. So, for saving my time from "A" and getting the powerful and still Debian-based GNU/Linux, Ubuntu is a better choice for me at this moment.

Note: I returned to Debian. For more information, please check the section of 9. Return to Debian. Actually, Ubuntu is good enough for most of us, but I perfer Debian anyway. If you still wonder why, the reason is that: I always like to use the net-install CD to install a slim system with the minimal package collection that I REALLY want & need, but Ubuntu doesn't meet my needs, since it always trys to install quite a number of drivers/modules/packages to support as many hardware and systems as possible. So, inevitably, that makes your system a bit fat. :)

3. Installation of Ubuntu

I should say sorry that I don't have many words in this section since the installation was quite easy and really painless if you have ever installed Debian/{RedHat|Fedora} or the like before. Maybe my tactic of the hard disk partitioning could give you some information:

joseph@PeT43:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda7             714M   79M  597M  12% /
/dev/sda2              97M  8.0M   84M   9% /boot
/dev/sda10            7.5G  499M  6.6G   7% /home
/dev/sda6             9.2G  732M  8.0G   9% /tank
/dev/sda9             6.5G  2.3G  3.9G  38% /usr
/dev/sda8             1.8G  156M  1.5G  10% /var
/dev/sda5              14G  496M   14G   4% /mnt/WinD
[ I have reserved the Windows OS on the box in case I will be required to lend my PeT43 to some Windows' guys. ]

A kind reminder is when you are prompted to decide which kernel image to be installed on your box, please choose the version of 2.6.12-8.

I admit that I was really amazed when I first entered the Ubuntu world after I finished the installation. What surprised me was not the brilliant desktop but that almost all of the features it provided works well. It sounds like a load of craps, but, you know, this T43 box is kind of pretty *NEW* module in the market. The XWindows server, GNOME Desktop, wired/wireless network interface card, sound card, synaptic touch-board, ACPI(suspend to memory/suspend to disk/lock screen) and even the specified FN functions of IBM ThinkVantage such as Think Light works well. What else do {I|You} want? The first words I said after I logout was "Ubuntu Rocks!".

Well, if you are a normal user looking for a workable GNU/Linux distirbution on your T43, just stop here, close this page, and get an Ubuntu installation CD to install it on your box. It's all enough for you. Please do **NOT** waste your time on the following sections, which will, to some extends, drive you a bit crazy. :)

4. Kernel Customization & Patching

Before I continue the kernel customization and patching, I would like to recommend you 3 sites about how to compile the kernel in "Debian Way" if you are not quite familiar with this "new" favor.

  • Creating custom kernels with Debian's kernel-package system
  • Recompiling a kernel the Debian way
  • The Very Verbose Guide to Updating and Compiling Your Debian Kernel
  • The reason why I wanted to customize the kernel is that there are too many useless modules/features preinstalled by Ubuntu installation CD. Like other GNU/Linux distributions, Ubuntu tries to support as more different hardware as it can. So, if you like a neat but full featured kernel, you must DIY. But as I mentioned above, almost all of the hardware are well supported in Ubuntu's 2.6.12-8 kernel image, that means Ubuntu has patched almost all of the available patches in it. That also means, if you decide to tweak the new kerenl by your hands, you should manually grab those kernel patches from the Internet. Don't worry about that, the patches will be easily found by thoese URLs I listed below.

    Here we go.

    4.1 Grab the kernel tarball

    Just connect http://www.kernel.org to get the newest kernel. On the time of writing this memo, the lastest stable version of the GNU/Linux kernel is 2.6.13.3, and the latest prepatch for the stable GNU/Linux kernel tree is 2.6.14-rc3. I selected the former one for a "stable" kernel. So the patches discussed in the coming part perhaps can be *ONLY* applied to kernel 2.6.13.x.

    4.2 Patching the kernel

    The most time-consuming patching work is caused by the Probelems with SATA and Linux. I'd like to strongly suggest you to have a look at the previous link before you patch your own kernel. The kernel patches I patched in my PeT43 are illustrated below.

    4.2.1 to support suspending to RAM

    I grabbed the kernel diff file from here. It was patched successfully in the 2.6.13.3 version. (I didn't remember if there were some HUNK problems or not, but it won't be matter.)

    4.2.2 to support the S.M.A.R.T.

    This single patch mentioned in www.thinkwiki.org has been upgraded to a patch package on this site. There are 6 patches in the directory and, as the README mentioned, they should be patched one by one according to the prefix number. I only applied the first 5 patches since I want to install the newest IPW2200 WLAN adapter driver and IEEE80211 sub-system later on.

    I have met a conflict problem when I was patching the "04_libata_suspend.patch" in line 116 of the file "/usr/src/linux-2.6.13.3/include/linux/libata.h". After I checked the source file and the diff file, I found that the patch done in 4.2.1 had already added a line like:

    	ATA_FLAG_SUSPENDED      = (1 << 9), /* port is suspended */ 
    
    But the current patch wanted to add another line like:
    	ATA_FLAG_SUSPENDED      = (1 << 10), /* port is suspended */ 
    

    After looked into the source codes, I believed the later one was right. So I just modified the line 116 of "libata.h" to conform to current patch.
    I also met some HUNK problems during patching, but after I checked those offsets one by one manually, I didn't mind them since the patch package was generated from a bit older version than what I installed.

    4.2.3 to support Fast IrDA

    To support Fast IrDA in current Linux kernel, I downloaded a kernel patch from here. I choose the nsc-ircc-pnp.2.6.12-rc6.diff to patch in my kernel source tree, and followed the detailed guide by Wolfgang Karall then everything's okey. (Note: you need first make sure if you have installed a tool named "setserial" before you follow Wolfgang's guide, otherwise, you will get error message as "nsc_ircc_open(), can't get iobase of 0x2f8".)

    Note: Since there is no BlueTooth chipset in this(2668-HH5) module, if you are also in this case, it's better to unload the blue-tootch kenerl module to avoid the conflict of I/O resource.

    4.2.4 to enable advanced trackpoint configuration

    Please refer to Patch to enable advanced trackpoint configuration at first to know details about it.

    The related patch for kernel 2.6.13 can be downloaded from here. Also, I downloaded the configure-trackpoint tools to configure the trackpoint in GNOME from here.

    [By the way, the "Synaptics TouchPad driver for XOrg/XFree86" has been included in the kernel, so no needs to patch it again.]

    4.2.5 to add software-suspend2

    Again, please refer to How to Make ACPI Work for detailed information.

    The project home is http://www.suspend2.net/, and I downloaded the patch for kernel 2.6.13 from this URL.

    4.2.6 to upgrade the ibm-acpi driver

    For getting better performance and more functions, I downloaded the newest version of ibm-acpi (Ver: 0.11) from it's official homepage and overrided the old one (Ver: 0.8) in the kernel tree. But during the recompiling kernel, the new version generated an compilation error of redeclaration of function "device_add". After read the source codes and just changed the function name "device_add" in line 1755 and 1773 of "ibm-acpi.c" to "acpi_ibm_device_add" to smooth this complaint.

    4.2.7 to bring Wireless LAN up

    The driver source code of the Intel Corporation PRO/Wireless 2200BG doesn't exist in current Linux kernel, so I must added it in manually. I got the freshest ipw-2200 driver (Ver: 1.0.6) from its Homepage.

    And also, according to the requirements mentioned in the "INSTALL" in ipw2200 source code tree, I downloaded the IEEE80211 sub-system (Ver: 1.0.3) from the Project's Homepage.

    It's smooth to compile the IEEE80211 subsystem at first, but, oops, I met a problem when compiling the ipw2200-1.0.6, like:

    ipw2200/ipw2200-1.0.6/ipw2200.c:10150:48: error: macro "create_workqueue"
    passed 2 arguments, but takes just 1 ipw2200/ipw2200-1.0.6/ipw2200.c: In
    function 'ipw_setup_deferred_work':
    ipw2200/ipw2200-1.0.6/ipw2200.c:10150: error: 'create_workqueue' undeclared (first use in this function)
    ipw2200/ipw2200-1.0.6/ipw2200.c:10150: error: (Each undeclared identifier is reported only once
    ipw2200/ipw2200-1.0.6/ipw2200.c:10150: error: for each function it appears in.)
    

    This error was caused by the software-suspend2 patches that changed the macro definition of "create_workqueue". After I tracked the source code in ipw2200.c and ss2's patch, I just changed the line 10149-10154 of "ipw2200.c" from

    10149 #ifdef PF_SYNCTHREAD
    10150     priv->workqueue = create_workqueue(DRV_NAME, 0);
    10151 #else
    10152     priv->workqueue = create_workqueue(DRV_NAME);
    10153 #endif
    
    to ONE line:
    10149    priv->workqueue = create_workqueue(DRV_NAME);
    

    Eventually, the ipw2200 module was compiled successfully and functions normally.

    4.2.8 HDAPS (Hard Disk Active Protection System)

    I think the HDAPS technology is really useful for a laptop system and fortunately, I found a driver to enable this feature in GNU/Linux world. I downloaded the amazing driver (Ver: 0.06) from HDAPS Homepage on sf.net.

    The hdaps works well after loaded as a system module, and it's very funny to verify by using a GNOME-applet "tilt" and a GL-based 3D model "hdaps-gl" mentioned in the README file of the source code.

    4.2.9 the kernel ".config" file

    I skipped to show related system configurations which are needed to enable some functions mentioned above, but, you can download my kernel .config file here to vimdiff. :)

    5. Fun of my PeT43

    Here I want to introduce you some wonderful tools and tips to make your T43 more comfortable.

    5.1 Gaim-ThinkLight

    This is a GAIM plug-in to add a feature that it will blink the ThinkLight when I get a message from a friend in GAIM. It has been in Debian's unstable packages directory. Interested in? Just download it from Deiban.

    5.2 Remapping F1 to ESC in VIM

    If you never used IBM T-series laptops before like me, you will be annoyed by the layout of the "Esc" key since it's not on the left of "F1" key but on the upper side. Inevitably, I always make mistake by pressing "F1" to get a unwanted "Help Dialogue" instead of the "Esc" to escape from the insert mode.

    It could be overcomed by adding the following lines in my ~/.vimrc file:

    " remap the F1 to ESC, That helps a lot when you use the IBM laptop. :) Joseph WU
    " http://www.vim.org/tips/tip.php?tip_id=1007
    " Paul Bolle ,  October 2, 2005 15:10
    " After hitting F1 instead of Esc once to often I wrote (or found somewhere on the web, 
    " I'm not sure) the following quick hack:
    
        inoremap  
        noremap  :call MapF1()
    
        function! MapF1()
            if &buftype == "help"
                exec 'quit'
            else
                exec 'help'
            endif
        endfunction
    

    5.3 Reactivate the Access IBM, Forward/Backward keys in GNOme

    The blue "Access IBM" button and the Forward/Backward keys on the arrow key area have no any response even if you press them a million times. But when I press the blue "Access IBM", it will give me a terminal, and the "Foward/Backward" key brings me to the previous/next desktop of current working one, respectively. Well, it's not kind of magic, just do it as follows:

    5.3.1 Reactivate the Access IBM key

    At first, I downloaded and installed the Debian package of tpb (ThinkPad Button) tool from here. You can also download the source code of tpb here.

    To enable the Access IBM key, what I did was just uncommenting and modifying a line in KEYBINDINGS AND CALLBACK section of /etc/tpbrc as follows:

    ### KEYBINDINGS AND CALLBACK
    
    ## THINKPAD
    # String with command and options that should be executed when ThinkPad
    # button is pressed. It is possible to execute any program.
    # By default no command is executed.
    #
    #THINKPAD    /usr/bin/X11/xterm -T ntpctl -e ntpctl
    #THINKPAD    /usr/bin/firefox http://www.thinkwiki.org
    THINKPAD     /usr/bin/gnome-terminal --working-directory=%f
    

    After I restart the tpb, the Access IBM button gets its rebirth.

    Other things about tpb:

  • I've added the tpb into the GNOME session file so that it can be automatically invoked when I logon the GNOME Desktop.
  • I also modified the configure file tpbrc to make the On-Screen-Display look better, here is my tpbrc for your information.
  • 5.3.2 Reactivate the Forward/Backward keys

    At first, I created a file named .Xmodmap in my home directory with following lines:

    keycode 234 = F19
    keycode 233 = F20
    

    Then, I ran the Keyboard Shortcuts program from System|Preferences and modified the shortcuts of "Switch to workspace on the left" and "Switch to workspace on the right" to F19 and F20 respectively. After I logout current GNOME session and re-logon, the Forward/Backward keys work well as what I expected.

    6. Benchmark

    I have done the benchmark of my IBM T43 toy based on, hdparm, Bonnie++ and dbench/tbench. Here is the result.

    The output of hdparm:
    root@PeT43:/home/joseph# hdparm -tT /dev/sda
    
    /dev/sda:
     Timing cached reads:   3316 MB in  2.00 seconds = 1658.25 MB/sec
     Timing buffered disk reads:   96 MB in  3.02 seconds =  31.80 MB/sec
    root@PeT43:/home/joseph# hdparm -tT /dev/sda
    
    /dev/sda:
     Timing cached reads:   3376 MB in  2.00 seconds = 1686.57 MB/sec
     Timing buffered disk reads:  102 MB in  3.02 seconds =  33.76 MB/sec
    root@PeT43:/home/joseph# hdparm -tT /dev/sda
    
    /dev/sda:
     Timing cached reads:   3356 MB in  2.04 seconds = 1642.13 MB/sec
     Timing buffered disk reads:   96 MB in  3.01 seconds =  31.87 MB/sec
    
    The output of Bonnie++:
    root@PeT43:/tank# !bonnie++
    bonnie++ -u root
    Using uid:0, gid:0.
    Writing with putc()...done
    Writing intelligently...done
    Rewriting...done
    Reading with getc()...done
    Reading intelligently...done
    start 'em...done...done...done...
    Create files in sequential order...done.
    Stat files in sequential order...done.
    Delete files in sequential order...done.
    Create files in random order...done.
    Stat files in random order...done.
    Delete files in random order...done.
    Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
    Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
    PeT43            1G 23460  66 26389  13 11792   6 22458  61 28163   7 112.8   0
                        ------Sequential Create------ --------Random Create--------
                        -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
                  files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                     16  2366  92 +++++ +++ +++++ +++  2598  87 +++++ +++ 12889  96
    PeT43,1G,23460,66,26389,13,11792,6,22458,61,28163,7,112.8,0,16,2366,92,+++++,+++,+++++,+++,2598,87,+++++,+++,12889,96
    
    The output of dbench:
    root@PeT43#dbench 2
    Throughput 277.361 MB/sec 2 procs
    
    root@PeT43#dbench 10
    Throughput 237.392 MB/sec 10 procs
    
    The output of tbench:
    root@PeT43#(tbench_srv &); tbench 2
    Throughput 162.553 MB/sec 2 procs
    

    Thanks for Alex Lau's suggestion. :) Actually, I have *NO* much impression about how [good|bad] the performance is, without comparison. So, if you happened to do the benchmark on your T43 box, please email me the result. Thank you.

    7. ToDo

    7.1 to enable DMA on the DVD drive

    There is a workaround in ThinkWiki, but I am waiting for a safer one. [Solved. Please refer 8. Return to Debian for details.]

    8. Return to Debian [updated: 12-18-2005]

    As mentioned before, I returned to Debian recently. Here are some new stuff sharing with you.

  • I have found that the new Debian Installer has got rid of the SATA hardisk issue compeletly, since I downloaded the daily-built Debian netinst CD Image from the URL above and successfully installed Debian Sarge on my office desktop PC which is a DELL Dimension 8400 with 250G SATA harddisk.

  • For the IBM T43 case, you should use the Debian etch beta 1 release of the installer on the same page, **NOT** the ones below "If you'd like something newer" section. The latter one will be failed to detect the CDROM during the installation. The etch one works it out under a trick that you must UNselect the "ata-piix" module when the installer prompts you to "Detect and mount CD-ROM", and then select it (selected by default) in the coming dialog of "Detect net hardware". That's my personal experince on it and the idea was from Gina Haeussge.

  • The kernel I customized in Debian is version 2.6.14.4. Comparing to the one I compiled in Ubuntu, the major differences are:
  • 1) The ibm_acpi & trackpoint modules are equipped with the newest version in the kernel, and the hdaps (Hard Disk Active Protection) is included too. So I needn't patch them again. But, the ipw2200 & ieee802.11 drivers have been updated, I used the new ones from their official homepages.

    2) The hard disk SATA problem still remains. Since the patches I introduced above are mainly applied for kernel-2.6.13, I downloaded new patches under the guide of Gina Haeussge's Work of How to Install Debian on the IBM Thinkpad T43.

    3) Gina didn't patch the Software-Suspend2, but it's highly recommended by me since the "Hibernate (suspend to disk) can be done flawlessly with its help. The project's homepage has provided the patch for kernel 2.6.14.

    4) The most useful (new) thing is the SMAPI (System Management Application Program Interface) which can define the threshold of when the battery starts/stops charging, in order to make the battery lifetime longer. I wrote a script (ibm-spec.sh) to setup the SMAPI system automatically druing the system init. You can download it into /etc/init.d/, and make it executable and then "cd /etc/rc2.d/; ln -s ../init.d/ibm-spec.sh .".

    5) The issue of playing DVD without DMA now can be easily worked out by adding two parameters (ide1=noprobe libata.atapi_enabled=1) in the kernel line of /boot/grub/menu.lst. Looks like:

    title           Debian GNU/Linux, kernel 2.6.14.4-20051217
    root            (hd0,1)
    kernel          /vmlinuz-2.6.14.4-20051217 root=/dev/sda7 ro vga=791 ide1=noprobe libata.atapi_enabled=1 resume2=swap:/dev/sda11
    savedefault
    boot
    

    9. X.Org 7

    Recently, X.Org 7 has been updated in Debian testing. Since the modular X.Org 7 is quite different from 6.x , during my own update, some problems occured. The open source ati driver in X.Org 7 made my Thinkpad T43 hanging, so I have to turn to the closed fglrx driver supported by ATI. To install the fglrx driver is really easy because Debian has packed the related components in several packages in "unstable" pool. I downloaded and then installed the "fglrx-control", "fglrx-driver" and "fglrx-kernel-src". The previous 2 packages are must-haves in order to use the fglrx driver, and the last one is optional for 3D hardware accelerating. "dpkg -i fglrx-kernel-src" will only install the fglrx-kernel-mode source code "flgrx.tar.bz2" in "/usr/src", you are encouraged to refer to the document in "/usr/share/doc/fglrx-kernel-src/README.Debian.gz" for the information how to build the kernel module without recompiling your kernel. [I recommend the "module-assistant" way mentioned in the document.]

    My workable xorg.conf can be found below, and hopefully, you can get some useful tips from my comments inside.

    A special issue of the fglrx driver is, if the hardware accelerating feature (DRI) is enabled, the Software Suspend 2 will not work as mentioned in thinkwiki.com and this article. I am looking for a way out now.

    Update: The workaround is to add a line

    ProcSetting extra_pages_allowance 3000
    
    in hibernate.conf to overcome the hang on "doing atomic copy". Please check hibernate.conf in My Config Files for details.

    Some informative links:

    10. My Config Files

    Some of my configuration files:

    11. Useful links

  • www.ThinkWiki.org
  • This is one of the most great sites for the ThinkPad user who wanna use GNU/Linux on his/her laptop. Almost every ThinkPad-specified problems and solutions I learned were found and contributed by the warmhearted users there. Thanks a lot!

  • www.Linux-Thinkpad.org
  • Well, its website seems out, but there is a very active mail-list that will help you out when you're in trouble unluckily.

  • Linux Laptop and Notebook Survey: Lenovo (former IBM)
  • The best site dedicated to GNU/Linux and Mobile Computers. You can find other guys' experiences of how to install various GNU/Linux favors on their ThinkPad laptops.


    You are welcome to add your question or suggestion on the related thread on my Blog.

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

    Back to my Homepage


    free webpage counters