Linux on the IBM
ThinkPad R40 laptop
with the
Mandrake 9.2
distribution
17
January 2004
Specifications
- Model: IBM ThinkPad R40
2722-CDG "Centrino"
- CPU: Intel Pentium M @
1.4 GHz, 32 kB L1 cache, 1024 kB L2 cache
- RAM: 512 MB, DDR SDRAM -
266 MHz
Summary
Legend:
|
OK
|
: works out of the box, without
any configuration by hand or extra software installation |
|
OK
|
: works after some extra
software installation |
Subsystem
|
Hardware
|
Status
with Mandrake Linux 9.2
|
Graphics
|
15" active
matrix TFT, SXGA+ (1400 x 1050)
ATI
Mobility Radeon 7500 AGP, 32 MB |
OK :
max. resol. 1400x1050 works fine; 3D acceleration works |
Sound
|
Intel 82801DB
AC'97 Audio Controller (Analog Devices chip) |
OK
|
Hard disk
|
IDE Hitachi
DK23EA-40B, 40 GB |
OK : full
support of DMA |
Tracking
devices
|
IBM UltraNav: trackpoint +
touchpad
|
OK : both
touchpad and
the trackpoint can be used |
Ethernet
|
Intel
PRO/100 VE |
OK |
Modem
|
Audio Modem Riser (AMR) from Agere Systems
(operates under the Intel AC'97 audio controller) |
OK, thanks
to the Smart Link driver
|
Wireless
(WiFi)
|
Intel
PRO/Wireless LAN 2100 3B Mini PCI Adapter |
OK, thanks
to ndiswrapper
|
PC Card
(PCMCIA)
|
CardBus
controller
Texas Instrument PCI-1520 |
OK |
USB |
2 ports, Intel
82801DB controller |
OK
|
Firewire
|
1 port IEEE
1394, Open Host Controller Interface (OHCI) Texas Instrument TSB43AB21 |
OK ? (not
fully tested)
|
Infrared
|
1 port, Intel
82801 DBM
LPC Interface Controller |
not
tested |
CD
writing |
HL-DT-ST
RW/DVD GCC-4240N, CDRW:
24x/10x/24x |
OK |
DVD
playing |
HL-DT-ST
RW/DVD GCC-4240N, DVD: 8x |
OK |
Power
management
|
|
works partially
|
Control
buttons (screen light,
sound level) |
|
OK |
Software
- Linux kernel: version
2.4.22 (from Mandrake 9.2)
- X-window: XFree86
4.3.0 (from Mandrake 9.2)
- System library: glibc
2.3.2 (from Mandrake 9.2)
- Graphical environment:
KDE
3.1.3, Gnome 2.4 (from
Mandrake 9.2)
- Modem driver: slmdm
2.7.10 (from Smart Link)
- Wireless network card driver: ndiswrapper
0.3 (from NdisWrapper)
Installation of the Mandrake 9.2
Immediately after switching on the power, when the screen with the IBM
logo appears, press the blue button "Access
IBM". In the menu on the left, select "Setup". Insert the CD-ROM 1 of the
Mandrake 9.2 in the CD driver and double click on "ATAPI CD-ROM drive". The computer
is now booting on the CD-ROM and the Mandrake Linux installation
procedure starts.
The Mandrake Linux installation proceeds in a graphic mode and is
really straightforward. At the end, a summary appears, in which only
the graphical displays appears not to have been configured. Click on
the red tag "configure" and
select "Flat panel 1400 x 1050" for
the monitor and "ATI Radeon"
for the graphic card.
Graphics (X-window)
Hardware: 15" active
matrix TFT, SXGA+ (1400 x 1050), ATI
Mobility Radeon 7500 AGP, 32 MB
Linux
software: XFree86 4.3
Works nicely (XFree86 4.3 configured by the install to use the driver radeon, here is the resulting XF86Config-4 file). The display uses the 1400
x 1050 resolution and is very nice on the high qualitify ThinkPad LCD
screen.
Moreover 3D acceleration works, as shown by these pieces of the output
of glxinfo command:
direct
rendering: Yes
OpenGL version string: 1.2 Mesa 4.0.4
As a test, TuxRacer runs very smoothly, as well as
glxgears. Another sign of good behavior of 3D acceleration is
provided by the impressive increase of performance when activating the
"hardware rendering" option in the 3D visualization software OpenDX.
Sound
Hardware: SoundMax, Intel
82801DB AC'97 Audio Controller (Analog Devices chip)
Linux
software: kernel 2.4.22
module
snd-intel8x0 (ALSA sound driver)
Works without any trouble.
The loudspeaker buttons at the upper left of the keyboard can be used
to control the sound level.
Hard disk
Hardware: Hitachi
DK23EA-40B, 40 GB, IDE
Linux software: kernel 2.4.22
Works without any trouble; the DMA (Direct Memory Access) is used,
which increases the speed of disk access to around 20 MB/s. To check
wether DMA is on, type the command (being su):
hdparm
/dev/hda
The output must contain the line
using_dma
= 1 (on)
To check the access speed, type
hdparm -t
/dev/hda
The output is
/dev/hda:
Timing
buffered disk reads: 72 MB in 3.02 seconds =
23.84 MB/sec
Tracking devices
Hardware: touchpad, trackpoint (IBM UltraNav
system)
Linux software: kernel 2.4.22
Works out of the box. Both the touchpad and the trackpoint can be used.
Ethernet
Hardware: Intel 82801BD PRO/100 VE (MOB)
Ethernet Controller
Linux software:
kernel 2.4.22 module eepro100
Works out of the box.
Modem
Hardware: Audio Modem Riser (AMR) system: Agere Systems modem working
through the audio card Intel AC'97
Linux
software: Smart Link Soft
Modem for Linux slmdm 2.7.10; kppp
As for most (all ?) laptops, the
internal
modem of the ThinkPad R40 is not a real modem, but a "soft modem" (also
called a "winmodem"), i.e. a device which depends on software to perform
the functions traditionally
handled by modem hardware. For further details, see the Linmodem web page.
In the present case, the required software is provided by Smart Link as
a module for the kernel. To install it, one has to downloaded the file slmdm-2.7.10.tar.gz
from this link
(NB: following Bill
Giannikos' advice, one shall not use the slmdm-2.7.14 driver, but the slmdm-2.7.10 one). It contains the sources for the
Smart Link module and not any binary. So one
must compile these sources to get the binary module to be loaded
by the kernel. The compilation requires the sources of Linux kernel.
These latter are not provided in the 3 CD-ROMs of the Mandrake 9.2
download edition. They can be downloaded from any Mandrake mirror site
(package kernel-source-2.4.22-10mdk.i586.rpm),
in the directory Mandrake/9.2/i586/Mandrake/RPMS/.
The installation is performed by the command
rpm -Uvh
kernel-source-2.4.22-10mdk.i586.rpm
The compilation and installation of the Smart Link soft modem module
can then proceed:
cp
slmdm-2.7.10.tar.gz /usr/local/src |
copy the archive to
/usr/local/src
|
cd
!$ |
|
tar
-zxvf slmdm-2.7.10.tar.gz |
unpack the archive
|
cd
slmdm-2.7.10 |
enter the newly created directory
|
emacs amrmo_init.c
|
edit the file amrmo_init.c and,
following the advice of
Bill Giannikos, go to line 75 an replace 0x2486
at the end of this line by 0x24C6 (yes it should look like the line
below it)
|
make
|
start the compilation of the
module
|
make install-amr
|
install Smart Link module in the
directory /lib/modules/2.4.22-10mdk/misc and modifies the file
/etc/modules.conf
|
modprobe slmodem
|
load the module in the kernel
|
Then you can use kppp or DrakConnect to set up you modem connection.
Note that in DrakConnect the modem must be declared as "modem" and not
as "winmodem". Note also that the ethernet connection must be disabled
prior to any modem connection: type the command
ifconfig eth0
down
before launching a modem connection through kppp.
Note that the kernel automatically load the module slmodem if kppp is
launching a modem connection. Accordingly the command modprobe slmodem at the end of the above list is not
necessary but was issued as a test.
Thanks to the Smart Link driver, the modem works very well !
Wireless (WiFi)
Hardware: Intel
PRO/Wireless LAN 2100 3B Mini PCI Adapter
Linux software:
NdisWrapper 0.3; wireless-tools 26
Intel says that the linux
driver for the PRO/Wireless LAN 2100 card is in
preparation.
Hopefully a solution is provided by NdisWrapper project
which has devised a kernel module that can load Ndis (Windows network
driver API) drivers.
To install NdisWrapper, the following components must be downloaded:
- the kernel sources (see Section Modem
to install them);
- the archive file ndiswrapper-0.3.tar.gz
from NdisWrapper web page;
- the Windows XP driver for the Intel
PRO/Wireless LAN 2100 card: it can be obtained from this
page by selecting the Asus M2400 N to get the file v12056logo_xp.zip or
directely, from this link.
Then follow these steps (see also the README file
in ndiswrapper):
1/ Extract the Windows XP driver files and put them in
/usr/local/ndiswrapper:
unzip v12056logo_xp.zip
mkdir /usr/local/ndiswrapper
cp
V1.2.0.56_LOOG_XP/W70N51.SYS /usr/local/ndiswrapper/w70n51.sys
cp
V1.2.0.56_LOOG_XP/W70N51.INF /usr/local/ndiswrapper/w70n51.inf
2/ Compile the NdisWrapper module and loader:
cp ndiswrapper-0.3.tar.gz
/usr/local/src
cd !$
tar -zxvf ndiswrapper-0.3.tar.gz
cd
ndiswrapper/driver
make
cp
ndiswrapper.o /lib/modules/2.4.22-10mdk/misc
(if the above misc
subdirectory does not exist, create it first)
depmod -aq
cd
../utils
make
cp loaddriver
/usr/local/bin
3/ Configure the NdisWrapper loader:
3a/ Find out the vendor ID and device ID of your wireless card:
lspci | grep
Wireless
This should produce an output similar to
this one:
02:02.0
Network controller: Intel Corp. PRO/Wireless LAN 2100 3B Mini PCI
Adapter (rev 04)
You should note the 02:02.0 at
the begining (it might be different on your computer) and type the
command
lspci -n | grep
02:02.0
the output of which must look like
02:02.0 Class
0280: 8086:1043 (rev 04)
The two important numbers here are 8086 (vendor ID) and 1043 (device
ID).
3b/ Create the script file /usr/local/bin/wifiup:
emacs
/usr/local/bin/wifiup
write the following lines in this file:
modprobe
ndiswrapper
/usr/local/bin/loaddriver
8086 1043 \
/usr/local/ndiswrapper/w70n51.sys
\
/usr/local/ndiswrapper/w70n51.inf
exit
where the numbers 8086 and 1043 must be replaced by respectively the
vendor ID and the device ID found in step 3a. Then make this file
executable:
chmod +x
/usr/local/bin/wifiup
4/ ndiswrapper is then ready; you can launch it with the command
wifiup
or (if you are not root):
su -c wifiup
There remains to configure the wireless network interface. This is done
through the iwconfig
command, which is provided by the rpm package wireless-tools which
comes along with the Mandrake 9.2 distribution.
An alternative to ndiswrapper might be provided by Linuxant
DriverLoader.
PCMCIA
Hardware: CardBus controler
Texas Instrument PCI-1520
Linux software:
kernel 2.4.22 modules yenta_socket, pcmcia_core
Works out of the box. Tested on a MultiTech MultiMobile modem card.
USB
Hardware: Intel 82801BD USB
Linux software:
kernel 2.4.22 modules usbcore, usb-uhci
Works out of the box. Tested with a digital camera Canon PowerShot A40:
once the
camera had been plugged in, a new icon appeared on the desktop:
FLPhoto.
Clicking
on it opened the flPhoto application and selecting
Album->Import->Camera resulted in an automatic detection of the
Canon PowerShot A40. The photos could be transfered
without any trouble.
FireWire (IEEE 1394)
Hardware: Open Host Controller Interface (OHCI)
Texas Instrument TSB43AB21
Linux software:
kernel 2.4.22 module ohci1394
Seems to work, as shown by the
following lines in /var/log/messages:
ohci1394: $Rev$
Ben Collins <bcollins@debian.org>
kernel: PCI: Found
IRQ 11 for device 02:07.0
kernel: PCI:
Sharing IRQ 11 with 00:1d.0
kernel: PCI:
Sharing IRQ 11 with 01:00.0
kernel:
ohci1394_0: OHCI-1394 1.1 (PCI): IRQ=[11]
MMIO=[c0206000-c02067ff] Max Packet=[2048]
rc.sysinit:
Remise à zéro du controlleur firewire (ohci1394):
succeeded
but
I have no device to test it further.
CD writing
Hardware: HL-DT-ST RW/DVD GCC-4240N, CDRW:
24x/10x/24x
Linux software:
cdrecord 2.01, k3b 0.9
Works out of the box. In particular,
the SCSI emulation is automatically activated by the Mandrake
9.2 installation. Moreover, k3b (which comes along with KDE
3.1.3) is a very
nice tool for burning CDs.
DVD
playing
Hardware: HL-DT-ST RW/DVD GCC-4240N, DVD: 8x
Linux software:
totem 0.99.4
Works
out of the box. totem is a wonderfull application !
Power
management
Linux software:
apmd 3.1.0
ACPI
(Advanced Configuration and Power Interface) does not seem to work.
APM (Advanced Power Management) works.
Battery level indicator in the KDE panel: works.
The following problem appeared in switching the computer
off:
after a shutdown, the screen automatically switched off but the
computer stayed on. One had to press the I/O button for a few seconds
to
power off the computer.
Following the advice of Ethan Brown and Sebastian Kapfer, the solution
is to disable the Local APIC (Advanced Programmable Interrupt
Controller). This functionality can be disabled safely since it is
essentially usefull for multiprocessor computers. The Local APIC
desabling is performed via the kernel option nolapic in
the append
line in /etc/lilo.conf,
so that it becomes:
append="devfs=mount hdc=ide-scsi
splash=silent acpi=off apm=on nolapic"
For
more details, here
is my complete /etc/lilo.conf
file.
Note that after having edited the /etc/lilo.conf
file, one has to run the command /sbin/lilo
to make the change effective and reboot the computer. Then the laptop
will be switched off automatically at each shutdown.
Control keys:
- Fn-F3 : switch LCD
screen off: works
(but only after the Local APIC has been disabled, see above)
- Fn-F4
: suspend to RAM: works but
graphical display fails to resume from time to time
- Fn-F12
: suspend to disk: does not work : fails to
suspend
Before disabling the Local APIC, the BIOS pre-configured screen
blanking after some timeout suffered from
the
same trouble than the key Fn-F3 switch off: the screen stayed
black after the resume. In order to fix this, one has to change the
BIOS
parameters to disable screen blanking: at power switch on, when the
screen with the IBM logo appears, press the "Access IBM" blue key. Then
double-click on "Start Setup
Utility", select
"Config", and then "Power". Set the various parameters
to these values:
Power Mode for AC [Customized]
Power Mode for Battery [Customized]
Customized
Processor Speed [Fixed Max]
Suspend timer [Disabled]
LCD off timer [Disabled]
HDD off timer [5 Minutes]
Hibernate by timer [Disable]
Low battery action [Suspend]
Suspend when LCD is closed [No suspend]
Control buttons
- Fn-Home, Fn-End : control
screen light intensity: works
- Fn-PgUp : switch the
small light above the screen: works
- Loudspeaker buttons close
to the Access IBM key: works
Conclusion
The IBM ThinkPad R40 is a very nice laptop for Linux: every piece of
hardware is supported, including the modem and the wireless card.
Moreover the machine is very quiet and the SXGA+ (1400 x 1050) LCD
screen is of very good quality. Regarding the Linux distribution, it
has been found that the Mandrake 9.2 automatically recognized and
configured all hardware during the install (except for the wireless card and
the modem which must have been set up by
manually installing ndiswrapper and the Smart Link
driver), leaving the user with an
immediately functional laptop.
Usefull links
I have benefited from these previous Linux on ThinkPad R40 pages:
Other links: