Running Linux on the IBM ThinkPad T23

NOTE: This web page is intended for Red Hat Linux 7.2 and will NOT be updated for newer versions. For information on running newer versions of Red Hat Linux I would recommended searching through the 'Links' section at the bottom of this page.

Written by: Chad Remesch with help from:
Originally created for: The University of Akron - Applied Mathematics Research Lab

Last Updated: January 20th, 2003


Sections of this document


This document attempts to describe running Red Hat Linux 7.2 on the IBM ThinkPad T23 laptop computer.Though it is very Red Hat 7.2 specific, it is the intention of much of the information to be useful for use with other distributions. All information provided here should be used as a guide and is provided as is without any warranty. If you find any errors or have information to contribute please e-mail me at

Hardware Description



This document assumes you already have and know how to use partitioning software such as Partition Magic. Partition the drive however you like, but make sure you leave at least 3-5GB to make Red Hat Linux 7.2 usable.

You will also want to leave enough space for a swap partition such that the swap space is twice as large as the amount of physical RAM in the system. For example, our T23’s have 256MB of RAM. Thus, the default partitioning setup of the Red Hat install program is to created 512MB of swap space. It is very important you follow this 2:1 ratio to prevent virtual memory problems. As far as I know this is a requirement of all standard Linux kernels from 2.4.0 – 2.4.9. I believe this may have changed with kernels >= 2.4.10.

Assuming you use the new Grub boot loader (more on that later) you should not have to worry about the 1023 cylinder boundary as you may have on other Linux systems with large hard drives. I have successfully installed dual boot Windows 2000 and Red Hat 7.2 systems such that the first 15GB of the hard drive was allocated to Windows 2000. It appears this old annoying Linux problem is gone for good with Grub and the newer versions of LILO.


Installing Red Hat 7.2 is surprisingly easy as much of the hardware is properly auto detected.

I chose to begin the installation using the two-cdrom set of Red Hat 7.2. The cdroms can either be purchased or downloaded for free from the many mirrors. Thankfully the IBM T23 is able to automatically boot the first cdrom. This is rather important, as our T23’s do not include floppy drives.

After the initial boot, Anaconda (the Red Hat installation system) automatically switches in to graphical install mode. Once here, it is a matter of choosing simple options such as the language, time zone, etc.

I chose to use Red Hat 7.2’s default boot loader named Grub. It is very complete in its features including a graphical boot manager, LBA support (for booting partitions past the 1023 cylinder boundary), Windows 2000 boot support on NTFS formatted partitions, and many others. I have had great results using the option to install Grub to the MBR (master boot record). This allows Grub to boot Windows 2000 and many other operating systems. If you would rather use the older LILO loader it is still an option.

One very important part of the installation is to SKIP the configuration of the X Window System. Later on in this document you will find an explanation of how to properly set this up. By choosing not to configure X the system will boot in to the text login mode.

Other than the above-mentioned changes I decided to stick with as many of the default options as possible.


S3 Super Savage Graphics Chipset

By default Red Hat 7.2 will not work out of the box with the graphics chipset included with the T23. Though this is a minor inconvenience, S3 Graphics Inc. provides a binary only XFree86 driver that works great and is easy to install. The exact file you need to download can be found at:

Update: It appears S3 removed this driver from the web site. Download my copy of the file below:


This website requires authentication. Since you don’t yet know the password go to the above link and hit cancel to not login. You will then be taken to a web page that tells you the login name and password.  I’m not sure if S3 would appreciate me giving out the login name and password so if the above ’t work try going to the below link and looking around for the drivers:

Once logged in you will want to download the XFree86 4.1.0  “Savage/MX-/IX (290-298)Drivers.” Everything you need is in the single Savage_4.1.0_binary.tgz file. On the same site you can find an XFree86 version 4.0.3 driver. You would want to use the 4.0.3 version only if you are running Red Hat 7.1 or some other distribution using XFree86 4.0.3.

Once downloaded you can extract the files using the below command:

tar zxfv Savage_4.1.0_binary.tgz

This will give you two files, s3switch and savage_drv.o. Once extracted you will want to make sure you are logged in as root and copy these files to the appropriate places by running these commands:

cp savage_drv.o /usr/X11R6/lib/modules/drivers/
cp s3switch /usr/local/bin/

If asked if you want to overwrite the existing savage_drv.o answer yes. You will not need the old savage_drv.o since the new one works fine in its place for the ThinkPad T23.

The final step in getting XFree86 to work is to run the  “Xconfigurator” command. Again, you will need to be root to do this. The important settings here are as follows. Choose “S3 Savage4” for the graphics chipset. Then choose “generic LCD panel 1400x1052” for the monitor type. Other than that, make sure you set the resolution to 1400x1052 at 24bit color. This will provide you will the best resolution the LCD can provide.

Note: I have been told some T23's may have different LCD screens that only run at 1024x768. The easiest way to determine this is boot up Microsoft Windows where you can find out the highest supported resolution in the display properties. You will then need to choose the correct resolution (the maximum supported in Windows) when using Xconfigurator.

That should be it. At the end of the configuration, Xconfigurator will ask you if you want to test your settings. Choose yes and you should see a very high quality graphical display of the T23. If for some reason you get an error try starting from the beginning of this section. If you still have problems you can try sending me some e-mail. However, assuming your hardware is the same as ours this configuration should work.

Check the Configuration Files section to view the XF86Config-4 I am using.

Important note to StarOffice and OpenOffice users!

For some reason when using this XFree86 graphics card module and StarOffice (tested version 5.2),  StarOffice causes the entire X server to hang. I do not know if this is the fault of StarOffice or the driver module, but it definitely is a problem. Fortunately a very simple fix exists. By setting the environment variable SAL_DO_NOT_USE_INVERT50 to "true"  BEFORE running / installing StarOffice the problem seems to totally disappear. Make sure you include this somewhere in either your personal or system wide login scripts. Otherwise you will more than likely experience the same errors as I did in X. Thanks goes out to the author of the S3 Savage Linux driver for pointing this out.

To add this environment variable append the below to the end of /etc/profile (to make the change global for all users) or you can do it just for a specific user by editing /home/some_user_account/.bash_profile instead:
export SAL_DO_NOT_USE_INVERT50=true
This of course assumes you are using the bash shell, which is the default in Red Hat 7.2.

On board 802.11B Wireless LAN chipset

Many (if not all) of the T23 systems come with on board 802.11B wireless networking hardware. I have not tested this hardware and I'm not even sure if the T23 model I'm working on has this feature. 

I have been receiving a lot of e-mails asking if I have any information on how to set up the T23 wireless in Linux so if anyone has figured it out let me know so that I can post your information here. At this time I don't plan to investigate it myself since the Cisco 350 pcmcia card has been working well.

Update #1: Stephen Evanchik has come up with some directions to make the onboard wireless chipset work with his system. Here is how he did it:

Hardware details:

The card is a PCI adapter based on the Prism2 chipset. Download the source at . You will need the source tree to your running kernel in addition to this package.

Steps to install the driver:

1. Unpack linux-wlan-ng-x.y.z.tar.gz where x.y.z is the version of the drivers and utilities.

2. Change to the linux-wlan-ng-x.y.z directory

3. ./Configure

4. Here are the answers to the questions it asks:

Build Prism2.x PCMCIA Card Services (_cs) driver? (y/n) [n]:
Build Prism2 PLX9052 based PCI (_plx) adapter driver? (y/n) [n]:
Build Prism2.5 native PCI (_pci) driver? (y/n) [y]:
Build Prism2.5 USB (_usb) driver? (y/n) [n]:
Linux source directory [/usr/src/kernel-dev/linux-2.4.18]:

The kernel source tree is version 2.4.18.
The current kernel build date is Mon Jun 24 10:42:41 2002.

Alternate target install root directory on host [/]:
Module install directory [/lib/modules/2.4.18]:

It looks like you have a System V init file setup.

Target Architecture? (i386, ppc, arm, or alpha) [i386]:
Prefix for build host compiler? (rarely needed) []:
Compiling with a cross compiler? (y/n) [n]:
Build for debugging (see doc/config.debug) (y/n) [n]:

5. Run make all

6. su to root

7. Run make install

Now that the drivers are installed, you can do one of two things to enable the card (as seen in the README). I've had good luck with just using the scripts although I've used the manual configuration as well.

1. su to root

2. Open /etc/wlan.conf in your favorite editor

3. Search for 'SSID' and change the entry under the infrastructure section or the ad-hoc section (or both). These do not have to be the same value.

4. Save your changes

5. Still as root, open /etc/modules.conf in your favorite editor

6. Add the line: alias wlan0 prism2_pci

7. Run /sbin/depmod -ae (if you see errors about undefined symbols, the module wasn't built against your running kernel).

8. Now run: /etc/rc.d/init.d/wlan start and the card's module should be loaded. You can test it by running /sbin/ifconfig wlan0

9. Assign the card an IP address, I used /sbin/dhcpcd wlan0 and it's been working great!

Update #2: I found the following website that provides some information on using the on board wireless networking hardware:


The Red Hat 7.2 installer automatically configured the sound card. In case you are not running Red Hat, take a look at the modules.conf I am using in the Configuration Files section. As silly as it may sound, make sure you try adjusting the volume in case it is muted by default.


Similar to the sound controller, the Ethernet controller was automatically detected and setup during the initial installation. In case you are not running Red Hat 7.2 or your distribution did not properly auto detect the chipset, try taking a look at the modules.conf I am using in the Configuration Files section.

Note: Nick Papadonis's T23 page pointed out to me that the on board ethernet eepro100 driver in RedHat 7.2 is broken for many people. If this is the case for you, try installing Intel's own e100 driver. You can download it from Intel's web site here:

You can also download my local copy of this file here:



The T23 includes an on board Lucent Win Modem. Though Win modems have had Linux compatibility issues in the past, a great driver exists to allow this device to work in Linux. If using stock Red Hat 7.2 without any of the official updates you will need the below driver:

You can download my local copy of the above file here:


If you are using Red Hat 7.2 with the official updates (including new kernel) you will need to go to the main web site  and look around for an appropriate binary driver for your kernel.

Assuming you are using the file named “ltmodem-kv_2.4.7_10-6.00a1-1.i386.rpm” and stock Red Hat 7.2 (without any kernel updates) you can install the driver using the following command:

 rpm -ihv ltmodem-kv_2.4.7_10-6.00a1-1.i386.rpm

The  rpm command will take care of everything needed to install and configure the driver. The things it will do include installing the driver to the correct location, modifying the file /etc/modules.conf, and setting the symbolic link /dev/modem to point to the real character device of the modem.

Once the driver is installed you can use any method you choose to configure your dial-up Internet access account including the graphical tools within Gnome/KDE/X.

Hard Drive

For some reason ultra DMA is disabled by default on the ThinkPad T23 with the stock kernel included with Red Hat 7.2. This can be fixed by running the below command. However, do this at your own risk as enabling DMA on IDE controllers can cause data corruption, but I haven't had any problems.

/sbin/hdparm -d1 /dev/hda

I find that this increases hard drive performance. To enable it so that each time the system boots, you will want to add the above command to the end of the file /etc/rc.d/rc.local. If you would like to perform some basic hard-drive performance tests before and after enabling DMA you can use the following commands to test buffered and buffer-cache read operations:

/sbin/hdparm -T /dev/hda
/sbin/hdparm -t /dev/hda

Neat White LED Night Light

I thought I would make mention that the small white LED light on the top of the LCD screen does indeed work in Linux :-) Press Fn + Page Up to toggle this light. It seems to work great if you ever need to type in a dark room.

DVD and CDRW burner

The dvd drive functions perfectly as a cdrom. I have not yet determined if the dvd drive can play dvdrom movies in Linux. Similarly, I have not tested the cdr/cdrw writing capabilities of the drive.

Cisco Aironet 350 Wireless LAN PCMCIA Card

Note: This device is an add-on pcmcia card not included with the ThinkPad T23. However I document my experiences with it for those who want to use 802.11B wireless access.

Amazingly, this device was automatically detected during startup and all required kernel modules loaded. The wireless network at the University of Akron requires LEAP authentication before one can DHCP an IP address. To accomplish this I installed the “leapscript” and “leapset” commands from Cisco’s Linux drivers and utilities package (found on the Cisco website). Try the below link to get the Cisco wireless Linux utilities:

Once installed a small shell script can be used to automate wireless network access:

/usr/local/bin/leapscript <loginname> <password>
sleep 3
/usr/local/bin/leapscript <loginname> <password>
pump -i eth1

If instead you would prefer a script that doesn't require you to save your LEAP login name and password in a file you can use something like below:

pump -i eth1

As you can see, the first script attempts to authenticate to the wireless LEAP enabled network and then uses the “pump” command to grab an IP address from the DHCP server. The pump command can be found in an rpm on the Red Hat 7.2 cdroms. To keep things simple you can save this script in a file and run it on start up to automate the process. For simplicity I saved the file as /usr/local/bin/ciscoup and added the line “/usr/local/bin/ciscoup &” to the very end of the file /etc/rc.d/rc.local.

The reason for running leapscript twice (and sleeping for 3 seconds in between running each time) is because on occasion leapscript will fail even though the login name and password are correct. This simple solution seems to work ok for the time being.

The second script is useful for users who don't want to save the LEAP login name and password in a file. It would be a good idea to fix this second script to do basic error checking and not execute pump if leapset fails.


I have not tested this hardware yet. Check back here later for more information or forward me any information you would like to appear here.

S Video and VGA Output

I have not tested the S Video or VGA output options yet. Included in the official drivers from the S3 website is a utility called "s3switch." Supposedly it allows you to switch between the various output options including CRT, LCD, and S-Video. Check back here later for more information or forward me any information you would like to appear here.


So far I have only tested a USB mouse and it seems to work great. Something really useful I found on the using Linux with the ThinkPad T22 web page is how to setup XFree86 to recognize both the standard built in mouse and a USB mouse. You can even use both mice at the same with this configuration. The below is the relevant sections of a modified /etc/X11/XF86Config-4 as copied directly from the source:
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"

# This is the TrackPoint
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/psaux"
Option "Protocol" "PS/2"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"

# This is the USB mouse
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"

You can find the original source of the above configuration file by visiting the Linux on the IBM ThinkPad T22 web page. You can also find an XF86Config-4 file I modified with the above USB mouse configuration in the Configuration Files section.

Note: I have not yet looked in to a way to use both the USB mouse and the built in mouse at the same time in the Linux text console. I'd be curious to know if anyone has.

Configuration Files

Below are links to configuration files many people have requested. I renamed the files with ".example" so you will have to rename them back to the original name if you want to use them.


Running Red Hat Linux 7.2 on the IBM ThinkPad T23 turned out to be much easier than expected. Though not all the hardware drivers are included in the Red Hat 7.2 distribution, they were easy to get and install.


Below are some links I found useful when installing Linux on the ThinkPad T23