For suggestions, improvements or if you just want to talk to somebody, please
mail to: Dag Wieërs
IBM Thinkpad A20m
big Linux-supporter and most of their hardware is supported. That's
why these thinkpads are probably the best choice for running Linux
on a laptop. Let's go through it in detail.
Model number: 2628-31U
List of hardware:
CPU: Intel Celeron (Coppermine) 500, 128 KB cache
Installation of several Linux distributions didn't give us unusual problems. In
some specific cases some devices didn't work properly but the rest of this
document explains how to fix this for every device. No matter what distribution.
Chipset: Intel Corporation 440BX/ZX - 82443BX/ZX
Intel Corporation 82371AB PIIX4
Memory: 192MB RAM, 100 MHz, non-parity, 64-bit SDRAM SO DIMM memory
Hard disk: IBM-DJSA-210 9Gb IBM ATA DISK
CD-ROM: MATSHITADVD-ROM SR-8175 ATAPI CD-ROM
Video: ATI Rage Mobility P/M AGP 2x (Mach64)
Soundcard: Crystal SoundFusion CS 4614
PCMCIA: Texas Instruments PCI1450
(Ethernet: Intel Ethernet Pro 100)
Internal modem: Xircom Modem MPCICard
IrDA chipset: NSC-87338
Please note that if a graphical installation does not work, you can always try
to install it text-based if possible.
To avoid problems with booting large harddisks, please use a recent version of
LILO that supports LBA with large hard drives and that doesn't have the 1024
cilinder limitation for kernel-images.
The nice thing about Linux is that you can configure your kernel exactly to fit
your hardware and since kernels improve very fast, you can keep up with the
latest features of the kernel as soon as they arrive.
The general rule of thumb is to use the latest stable kernel, but at the time
of writing (2.4.9-ac5) the stable 2.4 kernels (which are pretty nice) offer
some improvements. At this time I recommend to use one of the latest 2.4-ac
To compile a kernel for your system, you should check the
but for your convenience we've put specific
online that works great
with the Thinkpad A20m.
The configuration of X works automaticaly for several distributions. However
if you have problems, please use one of these XF86Config-files.
For XFree86 3.3.6, you should use the XF86_Mach64 server. For
XFree86 4.0.1 you need the ati-driver (as specified in the proper
On these types of thinkpads the key-combination Fn-F7 allows you to
switch from your LCD to an external monitor or both. (Three phases) This
however leaves your
X in the same resolution as on your LCD, which is lower than the capablities
of your external monitor. At this time however, you need to restart your
X-server to change the resolution. Work is in progress to overcome this
There is a special option in your XF86Config file to specify using the
external monitor at startup.
Beware: the BIOS allows you to boot with an external monitor by default.
The version I recently tested didn't have the onboard NIC, but
the on-board ethernet of the Thinkpad A20m was supported even before these
machines existed. So basic support is no problem. However, there are reports
of driver problems when suspending your laptop. This was (apparently) fixed
as of 2.4.0-test8. The driver you need to load is: eepro100.
This device is a 10/100 PCI network card. To force the driver to use e.g.
a Half Duplex 10Mbps medium, enter: insmod eepro100 options=64, other
values will enable/disable other options.
Beware: the BIOS allows you to configure some more network-specific settings.
Thanks to Alan Cox, the soundcard in these systems only recently work perfectly.
Some minor problems where reported with suspending, but these can be easily
fixed by configuring apmd. Rumours have it that this is no longer a problem.
The drivers you need to load are: soundcore, ac97_codec and
Recently a seperate option appeared in the kernel-sources, if you can do this add
the option thinkpad=1 when loading the cs46xx-driver.
Others advice to install and use the ALSA drivers. You can find more information
about on their
Some problems have been reported with APM, sudden freezes and blank screens.
ACPI however works fine although you have to manually restart your sound and network
and you have to sync your system clock with your hardware clock.
will just do all that and more.
You can suspend your laptop by pressing Fn-F4.
Beware: check your BIOS for additional configuration.
Red Hat users are adviced to enable all the options that are mentioned in
/etc/sysconfig/apmd except CHANGEVT when using apmd.
The only option that works under Linux is to create a hibernation file in Windows with the IBM
utility from their website. If hibernation then works under Windows, it works under Linux too.
(It doesn't depend on the OS, but it needs a FAT partition and, I guess, the location of the
PCMCIA is supported and will most probably work off the shelf with your
distribution. But if you have build your own kernel you need the right drivers
for your PCMCIA-devices. To get more information about PCMCIA-drivers and how
to configure them, check the
The laptop comes with a Xircom winmodem. Unfortunately, there is no real
Open Source driver, the module that does exist uses a binary object containing
all the real code to use your winmodem. The wrapper-module (that uses
the binary object) can be compiled with all the recent kernel-versions.
You can find the and
more information about winmodems on the
IRDA works off the shelf (with recent stock kernels or if you used the kernel
config-file mentioned above).
By loading modules irda, irtty and serial (in that order)
I am able to connect to my Nokia 6150 (using gnokii) and to my Palm Vx. (SIR)
Beware: For FIR, you have to enable your infrared device in your BIOS and use
the proper module-parameters e.g. insmod irport io=0x2f8 irq=3. The
module the device needs is called nsc-ircc and should be loaded as
follows: insmod nsc-ircc dongle_id=0x09.
If you used the kernel-config above, you're able to use the VESA framebuffer driver
by adding the following lines to your /etc/lilo.conf:
Here's a list of different modes:
| 640x480 800x600 1024x768 1280x1024
256 | 0x301 0x303 0x305 0x307
32k | 0x310 0x313 0x316 0x319
64k | 0x311 0x314 0x317 0x31A
16M | 0x312 0x315 0x318 0x31B
If you want to use the faster text-mode with smaller fonts (80x60) then you can simply use:
If you used the kernel-config mentioned above, just link /dev/mouse to
/dev/input/mouse0 and load the following modules usb-uhci, usbmouse and
You can have both mouses (internal and USB or serial) work together in X by specifying the following
in your "ServerLayout":
InputDevice "Mouse 1" "CorePointer"
InputDevice "Mouse 2" "SendCoreEvents"
And ofcourse defining both mouses.
I'm using journaling filesystems on most of my systems nowadays. I use ext3 because at this
moment I don't trust neither reiserfs and XFS nor JFS or included in the kernel. And
Red Hat comes by default with all the tools to use ext3 (although I've build a newer
e2fsprogs package myself).
You don't really need a journaling filesystem, but occasionaly you find your machine
locked up because it ran out of power or because you were experimenting a bit too much.
And then you will enjoy a journaling filesystem more than ever.
Some settings allow to use both your trackpoint and an external mouse at the
same time without a problem. TODO
IBM released some BIOS updates, unfortunately these updates are distributed as
DOS or Windows executables which is a pain for Linux users. It would be nice
of IBM to just distribute the images created by these disks so users of other
platforms can upgrade their BIOS without needing DOS or Windows.
Only update your BIOS if you really need to.
For your convenience we've put these images online:
Beware: you cannot upgrade your BIOS if this is disabled in your BIOS. (Doh!)
Here's my /etc/modules.conf file,
alias char-major-10-170 thinkpad
alias char-major-13 mousedev
alias char-major-62 lt_serial
alias char-major-90 tun
alias char-major-161 ircomm-tty
alias eth0 eepro100
alias irda0 nsc-ircc
alias parport_lowlevel parport_pc
alias sound-slot-0 cs46xx
alias tty-ldisc-11 irtty
options cs46xx thinkpad=1
options nsc-ircc dongle_id=0x09 io=0x2f8 irq=3 dma=3
#options eepro100 options=64
#options irport io=0x2f8 irq=3
pre-install mousedev modprobe usb-uhci && modprobe usbmouse
Although I would recommend a thinkpad to everyone, my A20m has the following flaws
(using Linux, as I don't use another OS).
- When you connect or disconnect the AC adapter while playing sound, the
soundcard starts to produce noise. (seems to be fixed with latest BIOS, undocumented)
- Suspend does not always work properly (could be the Linux kernel itself)
- Networkcard does not recover immediately
- Soundcard needs to be re-initiated (volume goes down)
- Sometimes X goes blank after suspend (kill X-server with eg. ctrl+alt+backspace)
- If thinkpad freezes or battery runs out, you need to reset it by disconnecting the AC
adapter and remove the battery (the power-off button beeps twice, but does nothing)
- Using a hibernate partition doesn't seem to work (I have a hibernation-partition, but cannot configure to use it)
- ps/2-wheelmice don't work (because red knob shares the ps/2-protocol).
Use USB or serial if possible and configure X.
- The network connector on the back seems a bit "unstable"
Here are some pointers to more information about these thinkpads and other
- If screen is blank after suspend.
- Press some keys or move mouse and wait about 20 seconds.
Sometimes screensaver is causing problems.
- Don't panic.
- Try to switch to see if virtual consoles still work. (ctrl+alt+F1)
If so, switch back and kill X (ctrl-alt-backspace)
- Try to suspend again. Wait. Unsuspend.
- If all else fails, use sysrq-keys to sync and umount filesystems and reboot.
If sysrq is enabled (alt+sysrq+s, alt+sysrq+u, alt+sysrq+b)
- If sound is gone.
Start a mixer-program to reset the volume. (use script)
- If sound is scrambled.
Reload the cs46xx-module (use script)
- If network is gone.
Reload the eepro100-module (use script)