Installing Debian Unstable on a Thinkpad T41

James Ballantine (james at ballantine.com.au)

2006-07-28 (Last update: 2006-08-18)

Summary

Basic install

Wireless setup

assuming an intel ipw2100 802.11b card

Xorg setup

assuming an ATI radeon 7500

VGA output

VGA output is enabled by default in X. To get toggleable VGA output via Fn-F7, add the following line to your Device section of /etc/X11/xorg.conf:
Option          "BIOSHotkeys"           "on"
tpb (discussed on this page) will also show the current status of this toggle.

I had an interesting issue where on some external monitors, the output was... squiggly... unless X was started with the monitor attached. This issue can be solved by switching to the monitor once it's connected.

CPU scaling/speedstep

'userspace' option

This is the established technique - it works well You can make module insertions permanent (i.e. happen on reboot) by adding them to /etc/modules.

'ondemand' option

This is apparently a more efficient method - it uses the kernel to do what powernowd (above) does in userspace Again, to make any module insertions permanent, just add their names to /etc/modules.

ACPI sleep

Required debian packages: acpid

This almost works out-of-the-box for me. See the next item for a fix to the high-power-drain nature of ACPI sleep on this laptop, though.

echo "mem" > /sys/power/state sends the machine to sleep. Note that (perhaps if you installed laptop-mode-tools) waking the system back up by pressing the power button might make it shut down. This is due to the contents of /etc/acpi/powerbtn.sh. If you like, you can comment out the line which invokes /sbin/shutdown to prevent this.

To get sleep-on-lid-close, make an file in /etc/acpi/events/ which contains:

event=button/lid
action=/etc/acpi/actions/my-sleep.sh %e
Then create the referenced my-sleep.sh, making it contain:
#!/bin/sh
echo "mem" > /sys/power/state
Make sure this file is chmodded executable. Invoke /etc/init.d/acpid restart, and you should be able to shut the lid to make the system sleep.

Solving the high-power-drain-in-sleep issue

Radeon patch (only required for pre-2.6.18 kernels)

With my ATI Radeon 7500 graphics card, power drain was still pretty high when the machine was in ACPI sleep. Until kernel 2.6.18, a kernel patch needed to be used against the `radeonfb' module to solve this by powering down the graphics card. It is now in the kernel, and activated by default when you use the radeonfb module. ThinkWiki entry on this issue.

Ethernet adaptor drain

Thinkiwiki also mentions switching off the Wake-On-Lan functionality of the card during sleep: ethtool -s eth0 wol d (requires ethtool package). You can add this line to your ACPI sleep script, which might be in /etc/acpi/actions/. This reduces the remaining drain (after the Radeon patch above) by about 40%.

Sound

Sound is basically automatically set up by Debian. To use apps like Audacity, you just need to enable OSS emulation: Again, these can be listed in /etc/modules instead to make them permanent.

Special buttons

BIOS built-in stuff

The volume, mute, brightness and think-light buttons all work automatically because they're supported in BIOS. To get some feedback from them, you can install the Debian package tpb, which gives OSD ('on-screen display') feedback when you use those buttons, including useful level indicators for the volume and brightness.

tpb requires the nvram kernel module.

Access IBM button

Again using tpb, just make (or uncomment) a line in /etc/tpbrc:
THINKPAD        /usr/bin/gnome-terminal
(or whatever command you'd like to run.)

Fn-F* buttons

These key combinations send ACPI events, and can't be read by X or by tpb. To use them, you need to create entries in /etc/acpi/events/ - for example for Fn-F5, the 'wireless' button, I have the following file (called wireless-combo):
event=ibm/hotkey HKEY 00000080 00001005
action=/etc/acpi/actions/wireless-combo.sh %e

The specific codes for each key combination are listed on the ThinkWiki page about special keys. You'll need the kernel module ibm-acpi to receive these events, and you'll need to do this: # echo enable,0xffff >/proc/acpi/ibm/hotkey.

In turn, the 'action' file /etc/acpi/actions/wireless-combo.sh could be anything, but currently just turns wireless off:
#!/bin/sh

iwconfig eth1 txpower off