Debian Linux on an IBM Thinkpad R50

TuxMobil - Linux on Laptops, PDAs and mobile Phones Last updated 28th March, 2004
Please forward comments to Brian Williams (remove the # from the email address).

Selection of PC

I recently decided to purchase a notebook. There were many different brands and models to choose from. I eventually selected the IBM Thinkpad R50, type 1829-4AM. This model appeared to be a relatively good price, while satisfying my main requirements on capabilities.

Looking at the specifications, this model appears to be only a small upgrade of the Thinkpad R40, which by oither accounts is quite well supported by linux. Thus, I expected this model to also be well supported.

I installed Knoppix to give a base debian setup, then started modifying the system to my preference (although having done so, I think I still prefer a straight debian install where I know more about exactly what is installed and needs to be configured).

I have compiled custom 2.4.25 and 2.6.3 series kernels running satisfactorily on this machine.

Sound

The sound chip is identified as the Intel i8x0, and works without any problems. The volume up/down buttons above the keyboard can be used to control the volume, as an alternative to the normal software controls.

Display

The display under Xfree86 was configured and works reasonably for my needs using the 14" 1024x768 LCD screen. The function keys allow switching between the internal and external monitors.

After a bit more googling around and looking at some information, I have adapted the XFree configuration to support Xinerama. It works quite well with my current window manager (sawfish). At some time I will try out metacity again, but so far, everytime I play with it I end up dropping back to sawfish. At present, the "primary" display appears to be the LCD, and the secondary display is the external VGA. I have tried various changes to the  configuration file to make the external display the primary, but either it did not change it, or the external display did not come up. For now, I am living with the LCD as the primary display.

My XF86config file is here.

PCMCIA

The R50 sports one double height PCMCIA slot, with a TI PCI-4520 controller. Initially I had difficulty with the PCMCIA cards. The PC did not appear to react when cards where inserted or removed during operation, on both the 2.4.x and 2.6.x series kernels I had compiled. The PCMCIA card did work if it was inserted when the PC was booted, but would no longer operate if it was then removed/re-inserted (no indication that the removal/re-insertion events were noted). From a quick google around, I changed the file /etc/default/pcmcia (*) to use PCIC=i82365 instead of PCIC=yenta_socket, and this appeared to fix the problem.
(*) Note: since the problem occurred again as indicated below, this change was removed.

Update 28th March, 2004
However, at some point my original problem returned. I could not work out the reason, and considered that it might be a result of the BIOS update I performed. I tried various changes to the settings using information from the PCMCIA Howto, and information about the hardware available from within windows. All to no avail. Then I realised something very interesting; the card removal/insertions are recognised if I have logged in to X, but not if I am still at the GDM screen (I was often doing testing from the virtual terminals, rather than from logging into X). I still can't explain it, but the the PCMCIA interrupt handling seems to be dependent on the video. Any suggestions welcomed.

The PCMCIA slot has been tested with 3 different wireless cards, and an ethernet card.

Hard Disk and Dual Booting

Since the original primary partition is fat32, but will be converted to NTFS at first boot, the first time I booted the PC was using a Knoppix CD into linux (i.e. so it never booted into windows at this point). I could then repartition the disk easily, after which I could boot into windows and let the c: partition be converted to NTFS.

I could then repartition the hard disk to have a mixture of fat32 and linux partitions, and an NTFS c: partition only for the windows system (no need for access from linux).

I installed linux into /dev/hda7, and also did a grub-install into /dev/hda7. I initially selected to do this because the hard disk initially contains a reserved area which is not visible. This is used for the "access IBM" functions, including all software for recovery of the hard disk to the status "as delivered from factory". At this time I did not want to lose the possibility to boot into these functions using the blue "Access IBM" button.

In order to allow linux to be booted from the hard disk, I installed grub into this partition. I then used dd to read the first sector (512 bytes) from /dev/hda7, and put this into a file bootsect.lnx. I copied this file into a fat32 partition, then allowed the PC to boot into windows.

Within windows, I copied the bootsect.lnx file to the location indicated, and added the line below to the file c:\boot.ini:

c:\bootsect.lnx [Linux]

With this setup, my PC now boots into a short menu from the NTFS loader which offers either WinXP, or linux. If I select linux, it then starts the grub menu.

Since I intend to keep regular backups of the windows area of the system using another program, I no longer require this IBM restore functions here (and the additional rapid restore feature for performing/restoring backups, but which apparently does not handle extended partitions). However, it was not until some time after the initial setup that I decided I no longer required this hidden IBM area at all, and recovered it.

I then reinstalled grub so that grub boots directly, instead of the NTFS loader. WinXP is then just an option in the grub menu, and the boot.ini file can be removed.

Ethernet

The built in ethernet is an Intel eepro100, and it is detected correctly under linux, and works without any problems.

Wireless

The R50 comes with an inbuilt Intel ipw2100. Preliminary drivers for this are just now becoming available. I have downloaded and compiled them, but not yet had the opportunity to test with them.

I run 802.11g though, so I prefer to use my PCMCIA cards based on the Atheros chipset. The cards I have access to (a Dlink DWL-G650, and a Netgear WG-511T) are working correctly using the madwifi driver.

USB

The USB interface is correctly detected and supported, and has been tested with a memory key, a USB2 HDD enclosure, and a card reader.

Parallel, Infra red

I don't currently have a need for any of these devices, and have not done any tests with them.

APM/ACPI

I have compiled in both APM and ACPI. I have not had any success with ACPI, but APM works reasonably. The standby function (Fn-F5) and recovery works. I have not yet setup the suspend to disk.

Modem

I also don't have much need for the modem at present, so it is not yet tested (but it is not too far down my list of things to do). I have compiled and installed the driver for the smart modem from www.smlink.com (and working through the support/download options to get the linux drivers).

Update 28th March, 2004
I have compiled and installed the drivers under both the 2.4 and 2.6 series kernels. In both cases, I can communicate with the modem, but have not tested connection to an ISP yet. For some reason, there were problems compiling/installing the software which I have not looked into. The end result is that I have different versions of the modem software used for the two different series kernels (more details will be provided when I have actually tested the modem).

Pointing Devices

The IBM UltraNav device works sufficiently for my normal use (mouse movement and tapping), but I have not configured X to support the extended features available with a trackpad (i.e. the equivalent of wheel functions). To get the tapping function to work, I had to add the parameters psmouse.proto=imps2 to the command line for booting linux.

Other

The keyboard light controlled by Fn-PgUp works.

Not Tested/To Do

1) modem
2) built-in wireless
3) Suspend to Disk
4) middle mouse button, and enhanced trackpad functions
5) 3D acceleration
6) infrared, serial, parallel