Linux on the IBM ThinkPad X31

This document describes the installation and configuration of Linux on the IBM ThinkPad X31, model number TK1C8UK. This machine is so incredible, it has hurt my social life and made my girlfriend really miserable.

UPDATE: This document originally described the installation of Linux on RedHat 9, then Fedora Core 1. I've now moved to Fedora Core 2, and will probably move to Fedora Core 3 when released. UPDATE: Although this document describes the installation of RedHat 9, I've now moved to Fedora Core 1. Most of the information mentioned here holds in Fedora as well. However note some caveats:

The punchline (as this document is rather verbose) is: If you are thinking about buying a Laptop to run Linux and are considering the IBM ThinkPad X31 but are unsure if Linux runs well on it, then the answer is a resounding YES! The only important piece of hardware that does not work currently are the built in Intel 802.11b (Wi-Fi) card and modem. UPDATE: Both work now ! See bellow. The only thing that does not work is hot docking and undocking (if anyone has any information on this, please email me.

I will be (hopefully) periodically updating this document to reflect changes in hardware support. Please check the bottom of this page for the date of the last update.

This documents assumes, unless otherwise specified, the use of kernel 2.4.20-18.9, as supplied by the RedHat network. No recompilation was performed. Note that this is not the kernel that ships with RedHat 9 (that one is 2.4.20-8); it is the latest one supplied by RedHat at the time of writing. It is a 2.4.20 kernel, heavily patched by RedHat.

About the Laptop

The IBM ThinkPad X31 TK1C8UK, is a 2003 Intel Centrino based ultra portable laptop. It features a 1400 MHz Pentium-M processor and an ATI Radeon Mobility with 16 MB of RAM. For a full listing of the hardware installed and their status under Linux, please refer to the list below. The laptop ships with Windows XP Professional. This document describes the installation of RedHat Linux 9 on this laptop, equipped with the Ultrabase docking station.

The IBM Ultrabase Docking Station

The Ultrabase is the X30 series docking station. It functions as a port replicator and has one slot that can house an extra battery or an optical drive. It also has one extra normal battery slot; however the laptop can only support 2 batteries (one in the laptop itself and one in the Ultrabase). This document describes how Linux functions using the long life battery and the Matshushita DVD-RAM/-RW/CDRW drive. You can hot-undock using the IBM - ACPI project

Preparation for Installation

If you intend to replace Windows with Linux, then this step is not necessary.

You need to make space in order to create the Linux partitions. Linux needs (well this is not, strictly speaking, true, as a swap partition is not *needed*, but definitely recommended). It is recommended to create a swap partition which is twice the size of your RAM. As the X31 typically ships with 256MB of RAM, a 512MB partition is needed. Note that if you upgrade your memory to a larger size, a bigger swap partition is needed. The IBM X31 ships with a 40GB harddrive, around 35GB of which is available to the user (5GB are taken by the IBM restore utilities and are not even viewable unless you enable it from the BIOS). The harddrive originally has a single partition (FAT32, which upon first boot, it is converted automatically to NTFS). The harddrive needs to be repartitioned. There are free tools available to do this and there's also Partition Magic. Your mileage may vary. This is the only step really where you can lose your data. Do this while plugged in. If anything goes wrong, I suppose you could use the IBM restore utilities. I resized the windows partition to 17.36GB and left the rest for Linux. Note that a full install of RedHat 9 takes about 5.08GB.

Installation

The installation was surprisingly easy. Have the laptop docked and insert the first CD to the DVD drive. After having the BIOS boot from the DVD drive, the Linux kernel started and Anaconda (the RedHat installer) recognised the drive as a MATSHITADVD-RAM UJ-810, revision C104, attached to hdc, ie. a standard IDE drive. XFree86 (RedHat 9 ships with version 4.3.0) recognised the graphics card as an ATI Radeon Mobility M6 and the graphical version of the RedHat install started. From then on it was pretty straight forward. I did a full install which took a surprisingly long time, about 2 hours. Note that if you get an error saying that the system might not be bootable, don't worry as the X31's BIOS is not affected by this problem.

Hardware

IDE

The first think I noticed upon first boot was that the system was very slow when accessing the harddrive. A quick look at hdparm and dmesg revealed that DMA was disabled and could not be manually enabled as the kernel did not support the Intel 855M chipset properly. Remember that RedHat 9 ships with kernel 2.4.20 patched by RedHat (2.4.20-8). Updating to the latest kernel available via the RedHat Network (2.4.20-19.9) automatically enabled DMA. Other enhancements, such as 32Bit IO support need to be enabled manually by editing /etc/sysconfig/harddisks. However all enhancements work correctly without any data corruption (yet :-).

The DVD-recorder seems to be recognised as such, as it was setup by the installer to use the SCSI emulation layer. I have not tried recording anything yet, however reading seems to work fine.

Power Management

UPDATE: I've now switched to ACPI.

I have not performed any detailed tests yet (and I'm not sure how to), however power management seems to work well. I'm currently using the stock APM kernel/userland support as supplied by RedHat 9, which does not support ACPI. Although Windows XP uses ACPI on this laptop, IBM sees to have a fully compliant APM implementation that Linux uses. Battery life is very good on this machine and both batteries (ie. the laptop and the docking station one) are supported. I would say that I get at least 4 hours with full screen brightness using both batteries, on normal use so that seems very good to me (although I'm sure it can be improved using ACPI and lower screen brightness). Moreover, I can hot-plug the second battery while the machine is running with no problems. Removing the second battery and replacing it with the DVD drive while running, only works if the machine was originally booted with the DVD drive. CPU-scaling also seems to work, according to /proc/cpuinfo. I've noticed that the speed of the laptop ranges from 600MHz to 1400MHz. This is automatic and I have not found a way to force to run it at full speed at on particular instant, (although I'm not really inclined to do so and thus have not tested it extensively). Many thanks to Tammy Fox, who was kind enough to email me information on how to control cpu scaling.
You mentioned that you don't know how to force the processor to
a certain speed, and I know. So, I thought I would pass it along so
you could add it to your page. You can use my email address if you want
togive me credit.You have to have the speedstep-centrino kernel module
loaded first.Then, if you type cat /proc/cpufreq, you will notice

      minimum CPU frequency -  maximum CPU frequency  - policy
CPU 0 600000 kHz ( 42 %)    -  600000 kHz ( 42 %)     - powersave

If you get the info from the second line, you know the kernel module
is working. I then modified the
CPUFREQ directive last line in the/etc/sysconfig/apmd file (on the
last line) to use the value "YES" (and uncommented the line). Restart
the apmd service, and plug the AC adapter in. You will hear a beep. If
you cat /proc/cpufreq again, you willnotice that the processor speed
is again at full capacity: 

      minimum CPU frequency - maximum CPU frequency    - policy
CPU 0 1400000 kHz (100 %)   - 1400000 kHz (100 %)      - performance

Take the plug out, hear a beep, it goes back to 600000
kHz. You can also force a speed with the following command (choose
yourvalues):
echo -n "< cpu-num >% < min-freq > % < max-freq > % < performance|powersave >" >/proc/cpufreq 
I have tried this procedure with kernel 2.4.22-1.2149.nptl as supplied by Fedora and APM (no recompilation is necessary, the speedstep-centrino module is there by default, you just have to load it) and it works! Now you can also play around with cpufreqd and cpudynd to set up policies... Also the fans are usually turned off and the machine is remarkably quiet.

Suspending the laptop seems to work: It even suspends if I close the lid and resumes by opening it. Obviously the events generated by these actions are recognised by the APM support. One issue is that upon resuming, the screensaver may have kicked in, depending on how long the machine was suspended for. UPDATE: Suspending is not stable. The machine often freezes upon resuming.

UPDATE: suspend is now working correctly (APM) when unplugged. Here's how to do it (note that some of the steps may not be strictly necessary. They work for me though) with kernel 2.4.20-20.9, as supplied from redhat (may work with other kernels):

You should be able to suspend and resume properly now.

UPDATE: I have now performed some tests with the battery and APM under Linux. For Wi-Fi connectivity, I used a Lucent Orinoco Silver PCMCIA card. I can report the following numbers for "average" usage (whatever that may mean):

Single Battery, Wi-Fi Enabled3 hours and 10 minutes
Single Battery, Wi-Fi Disabled3 hours and 21 minutes
Double Battery, Wi-Fi Enabled4 hours and 31 minutes


Notice that there's no significant change between tests 1 and 2. I'm not sure why, but I speculate that a. the lucent card uses very little power and b my "average" use of the machine during the second test was more power hungry than the one during the first test.

APM vs ACPI

I've tried using ACPI on the X31 and have been successful, using the Planet CCRMA kernels. However, I've decided on reverting back to APM with the speed-step cpu frequency module. The reason for this is that suspend does not seem to work with ACPI.

Networking

The machine sports 3 networking interfaces: an infrared port, an Intel PRO/100 Fast Ethernet adapter and an Intel(R) PRO/Wireless 2100 LAN MiniPCI 802.11b (Wi-Fi) card (part of the "centrino" specification). I cannot comment on the infrared port because I have not tried using it yet. The Ethernet adapter works out of the box correctly. The wireless card works! Drivers are available here. RPMs of the drivers are available here. However the 802.11b is NOT supported yet out under Linux. This is my biggest gripe with the machine. I have contacted Intel about this and was told that "Intel has no plans at this time to write Linux drivers for the Intel(R) PRO/Wireless 2100 LAN MiniPCI Adapters". Which is fair enough I suppose. I presume (and hope) that as Intel and IBM are Linux-friendly companies and as Centrino laptops become more popular, a driver will be released by some kind soul. In any case, you can write to the Intel Centrino team here (hopefully to politely ask about the wireless card and Linux).

And not only that, but there are two ways to make it work! Well, one currently really, apparently linux drivers for the wireless card are being developed by Intel! Could it be that enough people complained? Anyway, no word on whether the drivers would be binary or open source.

You can also get your card to work now! Linuxant has developed a product called driverloader that allows you to use win32 drivers under Linux. I know that this is highly controversial, but the controversy is out of scope. The driver specifically works with the intel wireless card. You need a license (currently free for 30 days, unknown after that) from Linuxant and the WinXP driver (use wine to unpack it). The driver is pretty stable nowadays. I did get some oopses however, but your mileage may vary. UPDATE: There's now an open source project, NDISwrapper, that functions similarly to driverloader and works well. Still waiting for the official Intel drivers though...

The X31 also has an integrated WinModem, an Agere Systems AC'97 Modem. The modem is not operational currently under Linux. I'm going to try with the drivers available (if any) shortly and post any positive results. UPDATE: I got the modem to work. You need to download the drivers from here. Note that versions above this do not apparently work. Unpack the archive and edit the file amrmo_init.c . Go to line 75 and change
#define PCI_DEVICE_ID_ICH3                      0x2486
to read
#define PCI_DEVICE_ID_ICH3                      0x24C6
, ie. the same as the next line. Follow then the instructions in the INSTALL file and you should have a working modem.
Thanks to the kind folks at the Linux on the X31 mailing list and this page at vgcomputing.com.au.

Expansion: USB, FireWire, PCMCIA and Compact Flash Slots

The X31 is equipped with an Intel 82801DB USB2 controller a IEEE-1394 (FireWire) adapter and a PCMCIA controller with a single slot/port each. The docking station has one extra USB slot. All are automatically recognised by RedHat Linux. I have not used the FireWire port yet, however I have had some limited use of the USB and PCMCIA port/slot and both seem to work correctly. UPDATE: I recently discovered (yes, I was unaware of this fact before ordering the machine), that the laptop has a built in compact flash slot. This seems to work well, at least with the memory card I tried, with the Linux pcmcia support.

The Pentium-M CPU

The X31 has a 1400MHz Pentium-M CPU which seems to run very fast. As mentioned above, speed scaling makes the CPU operate from 400MHz to its full potential, hopefully saving battery power. What is interesting is that /proc/cpuinfo reports the CPU as having 0 KB of cache (I think that's Level 2). However, I cannot "feel" any speed hit due to this (apparent) lack of cache memory.

Sound

The X31 has a "SoundMAX Integrated Digital Audio" sound card with a single speaker. The docking station has two extra speakers. It is basically an Intel 810-based card, which was automatically detected and that works well with the built in OSS driver (and presumably ALSA, though I haven't tried it).

Display Adapter

The video adapter is an ATI Radeon Mobility with 16MB of RAM, supported by the Intel 855M AGP chipset. I'm not aware of the speed of the AGP bus, but I assume it's 4x. The internal display (12 inch) supports resolutions up to 1024x768 and is, in my experience of very good quality. It is supported well by the XFree86 radeon.o driver. 3D acceleration is supported by XFree86 and the DRI project and was installed automatically by RedHat. I don't really play 3D games but I fired up Chromium and Tuxracer and they play well. Xscreensaver looks great in accelerated 3D :-) I get 221.600 FPS on a 300x300 glxgears window, running on a 24 bit X server.

External Display

I recently tried and managed to drive an external display from the X31's radeon. There were, however, some issues. In order to have the external display at a higher resolution than that of the internal LCD (ie. higher than 1024x768), you need to have the external display correctly configured in XF86Conig (Redhat 9's tools correctly detected and conigured mine) and you must have the display connected when the machine boots. You also need to add the following lines to the Device section in XF86Config:
    Option "CRTOnly"
    Option "CloneMode" "true"
    Option "PanelOff" "true"
    
These lines shut off the internal display and allow XVideo acceleration on the external one. There are, some issues however. When I have the external display at a resolution greater than that of the internal LCD (which is shut off), GLX and Xvideo accelerated applications (for example, mplayer, xscreensaver etc), only get a 1024x768-sized box when maximised, with the rest of the screen appearing as background to this box. It's very weird to have a non full-screen screensaver. I assume that these are issues with the radeon.o X11R6 driver, and would appreciate from anyone that knows how to solve them. The issues are minor though.

You can also run the internal LCD and external display "dualhead", using the Xinerama extention.

Keyboard, Mouse & Standard Ports

The X31 has a 3 button mouse with no mouse wheel (there's a software-based mouse wheel under Windows XP), which is supported under Linux as a PS/2 mouse, using the PS/2 mouse protocol.

The keyboard has 4 extra hardware keys, one of which is labeled "Access IBM" starts some IBM specific help & support under Windows XP. The rest control the sound card: They are volume down, volume up and mute buttons. I thought that the functionality of those was software-based but I was mistaken. They control the soundcard via the hardware and thus work correctly under Linux and presumably any operating system. The settings are even kept between reboots. Moreover the keyboard was a number of function key combinations, such as keys to increase or decrease the brightness of the LCD, that seem to work under Linux. The ThinkPad Button project provides excellent support and an On-Screen display for these buttons, even the "Access IBM" button, so you can get very similar functionality to the windows one, under Linux. However, TPB seems to die after a suspend and resume... Note that to use the TBP utility, you need to create the /dev/nvram device which is not present under stock RedHat 9, even though the default kernel has support for it. Create it with
mknod /dev/nvram c 10 144
To use the browser BACK and FORWARD keyboard keys, you need to map them as you would in a normal multimedia keyboard. You'll find instructions here.

The laptop has one VGA out and one parallel port and the docking station has one extra serial port. I have not tried using these yet, however I assume that they work, as they are recognised by the kernel.

Docking and Undocking

Docking and Undocking the laptop does NOT seem to work under Linux at runtime. I have to shutdown the laptop first before I dock/undock it. If i try to do this at runtime, the machine either hangs, or beeps horribly and constantly. The "undock" hardware button on the docking station does not seem to be recognised. As this docking station is the same one used with the IBM ThinkPad X30 as well, you might be able to find some information on any document about that laptop. If anyone has any information, please contact me.

BIOS Update

I recently updated the X31's bios. It was an easy process, which involved running an executable under Windows XP. I can't find any issues with the new bios and Linux.

Miscellaneous Issues

The kernel seems to detect a floppy drive, which is not present in the machine. This could be some sort of compatibility hack on behalf of the machine's BIOS. You can get a floppy drive for the docking station though.

I've also recently tried experimenting with kernel 2.6 (currently in it's test version). I obtained all the RPMs needed from the "rpm http://people.redhat.com arjanv/2.5 kernel" APT repository. Kernel seems to work fine, but I haven't done any extensive testing to report any results.

The X31 ships with a security chip, which is TCPA compatible. Yes, IBM ships palladium/TCPA compatible machines and has done so for a while. Although the chip (which can perform hardware encryption/decryption) is not supported under Linux, I activated it from the BIOS and installed all software and drivers from the IBM website. After this installation I had an issue with GRUB, however no data loss occured.

Links

I got the info for the ThinkPad Buttons project from Andrew's X31 page whom I thank. You will find additional information at that page, including a networked (PXE) installation method.

You may find a mailing list about Linux on the X31 here.

Machine Configuration Files & Logs

/etc/X11/XF86Config

# XFree86 4 configuration created by pyxf86config

Section "ServerLayout"
	Identifier     "Default Layout"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
	InputDevice    "DevInputMice" "AlwaysCore"
EndSection

Section "Files"
# RgbPath is the location of the RGB database.  Note, this is the name of the 
# file minus the extension (like ".txt" or ".db").  There is normally
# no need to change the default.

# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.

	RgbPath      "/usr/X11R6/lib/X11/rgb"
	FontPath     "unix/:7100"
EndSection

Section "Module"
	Load  "dbe"
	Load  "extmod"
	Load  "fbdevhw"
	Load  "glx"
	Load  "record"
	Load  "freetype"
	Load  "type1"
	Load  "dri"
EndSection

Section "InputDevice"
# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
#	Option	"Xleds"		"1 2 3"

# To disable the XKEYBOARD extension, uncomment XkbDisable.
#	Option	"XkbDisable"

# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults).  For example, for a non-U.S.
# keyboard, you will probably want to use:
#	Option	"XkbModel"	"pc102"
# If you have a US Microsoft Natural keyboard, you can use:
#	Option	"XkbModel"	"microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
#	Option	"XkbLayout"	"de"
# or:
#	Option	"XkbLayout"	"de"
#	Option	"XkbVariant"	"nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
#	Option	"XkbOptions"	"ctrl:swapcaps"
# Or if you just want both to be control, use:
#	Option	"XkbOptions"	"ctrl:nocaps"
#
	Identifier  "Keyboard0"
	Driver      "keyboard"
	Option	    "XkbRules" "xfree86"
	Option	    "XkbModel" "pc105"
	Option	    "XkbLayout" "gb"
EndSection

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "PS/2"
	Option	    "Device" "/dev/psaux"
	Option	    "ZAxisMapping" "4 5"
	Option	    "Emulate3Buttons" "no"
EndSection

Section "InputDevice"
# If the normal CorePointer mouse is not a USB mouse then
# this input device can be used in AlwaysCore mode to let you
# also use USB mice at the same time.
	Identifier  "DevInputMice"
	Driver      "mouse"
	Option	    "Protocol" "IMPS/2"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5"
	Option	    "Emulate3Buttons" "no"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Generic Laptop Display Panel 1024x768"
	HorizSync    31.5 - 48.5
	VertRefresh  40.0 - 70.0
	Option	    "dpms"
EndSection

Section "Device"
	Identifier  "Videocard0"
	Driver      "radeon"
	VendorName  "Videocard vendor"
	BoardName   "ATI Radeon Mobility M6"
	VideoRam    16384
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	Monitor    "Monitor0"
	DefaultDepth     24
	SubSection "Display"
		Depth     24
		Modes    "1024x768" "800x600" "640x480"
	EndSubSection
EndSection

Section "DRI"
	Group        0
	Mode         0666
EndSection


    

xdpyinfo:

name of display:    :0.0
version number:    11.0
vendor string:    The XFree86 Project, Inc
vendor release number:    40300000
XFree86 version: 4.3.0
maximum request size:  4194300 bytes
motion buffer size:  256
bitmap unit, bit order, padding:    32, LSBFirst, 32
image byte order:    LSBFirst
number of supported pixmap formats:    7
supported pixmap formats:
    depth 1, bits_per_pixel 1, scanline_pad 32
    depth 4, bits_per_pixel 8, scanline_pad 32
    depth 8, bits_per_pixel 8, scanline_pad 32
    depth 15, bits_per_pixel 16, scanline_pad 32
    depth 16, bits_per_pixel 16, scanline_pad 32
    depth 24, bits_per_pixel 32, scanline_pad 32
    depth 32, bits_per_pixel 32, scanline_pad 32
keycode range:    minimum 8, maximum 255
focus:  window 0x12002de, revert to Parent
number of extensions:    30
    BIG-REQUESTS
    DOUBLE-BUFFER
    DPMS
    Extended-Visual-Information
    FontCache
    GLX
    LBX
    MIT-SCREEN-SAVER
    MIT-SHM
    MIT-SUNDRY-NONSTANDARD
    RANDR
    RECORD
    RENDER
    SECURITY
    SGI-GLX
    SHAPE
    SYNC
    TOG-CUP
    X-Resource
    XC-APPGROUP
    XC-MISC
    XFree86-Bigfont
    XFree86-DGA
    XFree86-DRI
    XFree86-Misc
    XFree86-VidModeExtension
    XInputExtension
    XKEYBOARD
    XTEST
    XVideo
default screen number:    0
number of screens:    1

screen #0:
  dimensions:    1024x768 pixels (347x260 millimeters)
  resolution:    75x75 dots per inch
  depths (7):    24, 1, 4, 8, 15, 16, 32
  root window id:    0x48
  depth of root window:    24 planes
  number of colormaps:    minimum 1, maximum 1
  default colormap:    0x20
  default number of colormap cells:    256
  preallocated pixels:    black 0, white 16777215
  options:    backing-store NO, save-unders NO
  largest cursor:    64x64
  current input event mask:    0x5a20bd
    KeyPressMask             ButtonPressMask          ButtonReleaseMask        
    EnterWindowMask          LeaveWindowMask          PointerMotionHintMask    
    ButtonMotionMask         StructureNotifyMask      SubstructureNotifyMask   
    SubstructureRedirectMask PropertyChangeMask       
  number of visuals:    16
  default visual id:  0x23
  visual:
    visual id:    0x23
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x24
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x25
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x26
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x27
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x28
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x29
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x2a
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x2b
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x2c
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x2d
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x2e
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x2f
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x30
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x31
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits
  visual:
    visual id:    0x32
    class:    DirectColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits

    

/proc/cpuinfo:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 9
model name      : Intel(R) Pentium(R) M processor 1400MHz
stepping        : 5
cpu MHz         : 599.508
cache size      : 0 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 tm
bogomips        : 1196.03
    

dmesg:

Linux version 2.4.20-18.9 (bhcompile@porky.devel.redhat.com) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #1 Thu May 29 07:08:16 EDT 2003
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
 BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved)
 BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000002ff60000 (usable)
 BIOS-e820: 000000002ff60000 - 000000002ff79000 (ACPI data)
 BIOS-e820: 000000002ff79000 - 000000002ff7b000 (ACPI NVS)
 BIOS-e820: 000000002ff80000 - 0000000030000000 (reserved)
 BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
0MB HIGHMEM available.
767MB LOWMEM available.
On node 0 totalpages: 196448
zone(0): 4096 pages.
zone(1): 192352 pages.
zone(2): 0 pages.
IBM machine detected. Enabling interrupts during APM calls.
Kernel command line: ro root=LABEL=/ hdc=ide-scsi
ide_setup: hdc=ide-scsi
Initializing CPU#0
Detected 599.506 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 1196.03 BogoMIPS
Memory: 769304k/785792k available (1356k kernel code, 13924k reserved, 1004k data, 132k init, 0k highmem)
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode cache hash table entries: 65536 (order: 7, 524288 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 65536 (order: 6, 262144 bytes)
Page-cache hash table entries: 262144 (order: 8, 1048576 bytes)
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU:     After generic, caps: a7e9f9bf 00000000 00000000 00000000
CPU:             Common caps: a7e9f9bf 00000000 00000000 00000000
CPU: Intel(R) Pentium(R) M processor 1400MHz stepping 05
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au)
mtrr: detected mtrr type: Intel
PCI: PCI BIOS revision 2.10 entry at 0xfd906, last bus=8
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Ignoring BAR0-3 of IDE controller 00:1f.1
Transparent bridge - Intel Corp. 82801BAM/CAM PCI Bridge
PCI: Discovered primary peer bus 09 [IRQ]
PCI: Using IRQ router PIIX [8086/24cc] at 00:1f.0
PCI: Found IRQ 11 for device 00:1f.1
PCI: Sharing IRQ 11 with 00:1d.2
PCI: Sharing IRQ 11 with 02:00.2
PCI: Sharing IRQ 11 with 02:02.0
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16)
Starting kswapd
VFS: Disk quotas vdquot_6.5.1
pty: 2048 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI ISAPNP enabled
PCI: Found IRQ 11 for device 00:1f.6
PCI: Sharing IRQ 11 with 00:1f.3
PCI: Sharing IRQ 11 with 00:1f.5
PCI: Sharing IRQ 11 with 02:00.1
Real Time Clock Driver v1.10e
Floppy drive(s): fd0 is 1.44M
FDC 0 is a National Semiconductor PC87306
NET4: Frame Diverter 0.46
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00beta3-.2.4
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH4: IDE controller at PCI slot 00:1f.1
PCI: Enabling device 00:1f.1 (0005 -> 0007)
PCI: Found IRQ 11 for device 00:1f.1
PCI: Sharing IRQ 11 with 00:1d.2
PCI: Sharing IRQ 11 with 02:00.2
PCI: Sharing IRQ 11 with 02:02.0
ICH4: chipset revision 1
ICH4: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:pio
hda: IC25N040ATCS04-0, ATA DISK drive
blk: queue c03cdfe0, I/O limit 4095Mb (mask 0xffffffff)
hdc: MATSHITADVD-RAM UJ-810, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: attached ide-disk driver.
hda: host protected area => 1
hda: setmax LBA 78140160, native  72612853
hda: 72612853 sectors (37178 MB) w/1768KiB Cache, CHS=4802/240/63, UDMA(100)
ide-floppy driver 0.99.newide
Partition check:
 hda: hda1 hda2 hda3
ide-floppy driver 0.99.newide
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 8192 buckets, 64Kbytes
TCP: Hash tables configured (established 262144 bind 65536)
Linux IP multicast router 0.06 plus PIM-SM
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 146k freed
VFS: Mounted root (ext2 filesystem).
Journalled Block Device driver loaded
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
Freeing unused kernel memory: 132k freed
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
PCI: Found IRQ 11 for device 00:1d.7
PCI: Setting latency timer of device 00:1d.7 to 64
ehci-hcd 00:1d.7: Intel Corp. 82801DB USB EHCI Controller
ehci-hcd 00:1d.7: irq 11, pci mem f0849000
usb.c: new USB bus registered, assigned bus number 1
ehci-hcd 00:1d.7: enabled 64bit PCI DMA
PCI: 00:1d.7 PCI cache line size set incorrectly (0 bytes) by BIOS/FW.
PCI: 00:1d.7 PCI cache line size corrected to 128.
ehci-hcd 00:1d.7: USB 2.0 enabled, EHCI 1.00, driver 2003-Jan-22
hub.c: USB hub found
hub.c: 6 ports detected
usb-uhci.c: $Revision: 1.275 $ time 07:14:02 May 29 2003
usb-uhci.c: High bandwidth mode enabled
PCI: Found IRQ 11 for device 00:1d.0
PCI: Sharing IRQ 11 with 01:00.0
PCI: Sharing IRQ 11 with 02:00.0
PCI: Setting latency timer of device 00:1d.0 to 64
usb-uhci.c: USB UHCI at I/O 0x1800, IRQ 11
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Found IRQ 11 for device 00:1d.1
PCI: Setting latency timer of device 00:1d.1 to 64
usb-uhci.c: USB UHCI at I/O 0x1820, IRQ 11
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 3
hub.c: USB hub found
hub.c: 2 ports detected
PCI: Found IRQ 11 for device 00:1d.2
PCI: Sharing IRQ 11 with 00:1f.1
PCI: Sharing IRQ 11 with 02:00.2
PCI: Sharing IRQ 11 with 02:02.0
PCI: Setting latency timer of device 00:1d.2 to 64
usb-uhci.c: USB UHCI at I/O 0x1840, IRQ 11
usb-uhci.c: Detected 2 ports
usb.c: new USB bus registered, assigned bus number 4
hub.c: USB hub found
hub.c: 2 ports detected
usb-uhci.c: v1.275:USB Universal Host Controller Interface driver
usb.c: registered new driver hiddev
usb.c: registered new driver hid
hid-core.c: v1.8.1 Andreas Gal, Vojtech Pavlik 
hid-core.c: USB HID support drivers
mice: PS/2 mouse device common for all mice
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,2), internal journal
Adding Swap: 1572472k swap-space (priority -1)
hub.c: new USB device 00:1d.1-1, assigned address 2
input0: USB HID v1.00 Mouse [Microsoft Microsoft 3-Button Mouse with IntelliEye?] on usb3:2.0
ohci1394: $Rev: 693 $ Ben Collins 
PCI: Found IRQ 11 for device 02:00.2
PCI: Sharing IRQ 11 with 00:1d.2
PCI: Sharing IRQ 11 with 00:1f.1
PCI: Sharing IRQ 11 with 02:02.0
ohci1394_0: OHCI-1394 1.0 (PCI): IRQ=[11]  MMIO=[c0202000-c02027ff]  Max Packet=[2048]
ieee1394: SelfID completion called outside of bus reset!
ieee1394: Host added: Node[00:1023]  GUID[00061b0310007b46]  [Linux OHCI-1394]
SCSI subsystem driver Revision: 1.00
hdc: attached ide-scsi driver.
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
  Vendor: MATSHITA  Model: DVD-RAM UJ-810    Rev: C104
  Type:   CD-ROM                             ANSI SCSI revision: 02
IA-32 Microcode Update Driver: v1.11 
microcode: CPU0 no microcode found! (sig=695, pflags=32)
ip_tables: (C) 2000-2002 Netfilter core team
Intel(R) PRO/100 Network Driver - version 2.2.21-k1
Copyright (c) 2003 Intel Corporation

PCI: Found IRQ 11 for device 02:08.0
e100: selftest OK.
divert: allocating divert_blk for eth0
e100: eth0: Intel(R) PRO/100 Network Connection
  Hardware receive checksums enabled

Linux Kernel Card Services 3.1.22
  options:  [pci] [cardbus] [pm]
PCI: Found IRQ 11 for device 02:00.0
PCI: Sharing IRQ 11 with 00:1d.0
PCI: Sharing IRQ 11 with 01:00.0
PCI: Found IRQ 11 for device 02:00.1
PCI: Sharing IRQ 11 with 00:1f.3
PCI: Sharing IRQ 11 with 00:1f.5
PCI: Sharing IRQ 11 with 00:1f.6
Yenta IRQ list 06b8, PCI irq11
Socket status: 30000006
Yenta IRQ list 06b8, PCI irq11
Socket status: 30000006
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x3b8-0x3df 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean.
Linux agpgart interface v0.99 (c) Jeff Hartmann
agpgart: Maximum main memory to use for agp memory: 690M
agpgart: Detected Intel(R) 855PM chipset
agpgart: AGP aperture is 256M @ 0xd0000000
[drm] AGP 0.99 on Unknown @ 0xd0000000 256MB
[drm] Initialized radeon 1.7.0 20020828 on minor 0
PCI: Found IRQ 11 for device 01:00.0
PCI: Sharing IRQ 11 with 00:1d.0
PCI: Sharing IRQ 11 with 02:00.0 
    

That's it! It looks like it's working :-). Hope this guide has been useful for you. Thanks to all the kind people that have made this possible. You can now go back to the main page.
Stefanos Zachariadis
Last modified: Tue Sep 21 19:04:58 BST 2004