Configuration of IBM Thinkpad T41

Software

I like Debian GNU/Linux and I decided to try this distribution on this notebook. To support all the software & hardware, I have downloaded and installed kernel 2.6.0.

Power management

ACPI & cpufreqd seems to be a good choice. You should definitely install processor, thermal, battery, ac, button modules for ACPI. There seems to be a problem with processor being compiled as a module (oops when you rmmod from kernel), compile it directly into the kernel and it will work perfectly. For centrino you will need modules speedstep-centrino and proc_intf and some management daemon (cpufreqd is a good choice).

Suspending works best using software suspend. Download swsusp.sh and run it with '--install' parameter. In /etc/suspend.conf I did:

SWSUSP_INSERTMOSD=`cat /etc/modules | grep -v "^#"`
SWSUSP_FORCE_SUSPEND_MODE="ACPI"
Running the hibernate now works without any problem. To enable automatic suspend on 'lid' close, add this to /etc/acpi/events/lidclose:
event=button/lid
action=/usr/local/sbin/hibernate
The 'event' for Fn-F4 is 'button/sleep'.

Tpctl approach may be better, unfortunately, after compiling the module from here I still was not able to do suspend. The S3 state ('echo 3 > /proc/acpi/sleep') works, but you receive message about hardware fault after startup and the touchpad/trackpoint cease to work.

After software suspend I got empty /tmp and /var/run. The mountnfs.sh contained bootclean mountnfs command. Commenting it out makes everything work OK.

Update 25/12/2003

Do not compile the kernel with APIC enabled - it refuses to turn off and enters some kind of 'power-save' state and you must use the power-button to really turn it off.

There is a bug in 2.6.0 - do not compile the kernel with pre-emption enabled. If you compile it with pre-emption disabled, 'processor.ko' loading works without problems. This will be probably fixed in 2.6.1.

Disk spin-down: this is rather tricky. Set the spindown timeout in /etc/hdparm.conf ('apt-get install hdparm' if it does not exist). My /etc/hdparm.conf looks like this:

/dev/hda {
   io32_support = 1
   interrupt_unmask = 1
   spindown_time = 24
   mult_sect_io = 16
}
/dev/hdc {
   io32_support = 1
   dma = on
   interrupt_mask  on
}
Unfortunately this is not enough - there are still lots of writes to the disk and it just does not spin down. You must find the programs that do this and disable them. This works for me: Start vmstat 5 on some console and look if the 'bi' and 'bo' columns are zero. Can somebody tell me how to find the program that does the writes?

Touchpad & trackpoint

Check support for synaptics touchpad in kernel and install the Synaptics driver. Both trackpoint and touchpad work without problems.

BlueTooth

Install the bluez-* and hotplug packages. If you compiled bluetooth as modules, add 'bluetooth' to your /etc/modules to allow the daemons to start on boot. Pressing Fn-F5 should add USB bluetooth device. Use hcitool inq to scan for devices and read documentation to rfcomm.conf. There is a problem with deactivation: if you are in Xwindows and press Fn-5, the system totally freezes. Solution: either change to console, press Fn-5 and back to X, or disable the hci interface through hciconfig hci0 down before pressing Fn-5.

Update 25/12/2003

Use processor PentiumIII for compilation of kernel. It seems that Pentium M is not P4 type processor. If you compile the kernel for P3, you can enable/disable bluetooth as you want.

Update 30/12/2003

My Ericsson does not seem to answer LCP-echo requests, I had to add following lines into my dialing file for PPP:
lcp-echo-failure 0
lcp-echo-interval 0

InfraRed

SIR

The 8250 + irtty_sir modules work.

FIR

When compiling the kernel, add the nsc-ircc driver (you must have ISA bus enabled). To /etc/modprobe.d/some_file add:
options nsc-ircc dongle_id=0x09
and run update-modules. In /etc/irda.conf specify:
IRDADEV=nsc-ircc
#and if you want to enable discovery
DISCOVERY=-s
Try to start irda, find appropriate line in nsc-ircc.c in kernel sources and remove the lines that produce version mismatch error. Executing /etc/init.d/irda start enables the IR interface. If you have ericsson phone,you should add:
echo 1000 > /proc/sys/net/irda/min_tx_turn_time
echo 1 > /proc/sys/net/irda/max_tx_window
My phone at least appeared in the irdadump, I was even able to communicate, but could not do it repeat it. Somebody is luckier?

Ethernet

Use e1000 module.

Sound

Sound works - snd-intel8x0 is the module, it is part of ALSA.

WireLess

Your friend is ndiswrapper. Use the CVS version and download drivers from IBM. Automatic loading is described in README of ndiswrapper, if you want automatic unloading with 'ifdown eth1' (should probably save power), add this to the appropriate section of /etc/network/interfaces:
post-down rmmod ndiswrapper

Update 25/12/2003

The ndisdriver seems to be very slow on output. I got 600K/s in and 60K/s out. Unfortunately after configuring the card in WinXP, the ndisdriver ceased to work and causes reset always after loading the driver.

Update 30/12/2003

The ASUS driver on the ndiswrapper pages works OK. Slow output problem remains.

Modem

These drivers should work: ftp://ftp.smlink.com/linux/unsupported/. Compiled without problems, unfortunately there seems to be a problem with dialtone in eastern countries, so I was not able to call anybody.

Update 25/12/2003

Actually the problem was with the command for dialing, you must use 'ATDT' instead of just 'ATD'. I made the modem dial, unfortunately it did not connect. Please tell me if you are successfull!

Hardware keys

Add support for nvram to kernel and use the tpb package for on-screen display and to bind the special keys.

X11

X11 works out of the box, the radeon framebuffer too. There are problems with DRI acceleration: if you compile the AGPart (intel) and Radeon DRI as modules, it does not work (some problems regarding loading of modules). If you compile it directly into the kernel, it does not work either (this time the 'glxgear' segfaults). XVideo extension works without problems. You may want to install atitvout utility to set S-Video output characteristics.

Radeontool can be good for turning LCD backlight off during powersave.

TV-Out

Get atitvout. Use the 'xrandr' program (you must use the xserver-xfree86 4.3) to change resolution to 800x600. Now start 'atitvout -f t' to get TV output and 'atitvout -f l' to go back to LCD.

Update 13/01/2003

Ctrl-Alt-+ can be pressed on the 'numeric' keyboard. Enable numeric keyboard by pressing Shift-Scroll Lock.

Update 21/02/2003

Atitvout does not seem to like Hardware Cursor of Xfree 4.3. Add "Option SWCursor" to your XF86Config-4 and everything works OK.


Ondrej Palkovsky

TuxMobil - Linux on Laptops, PDAs and mobile Phones