http://gentoo-wiki.com/HARDWARE_Lenovo_Thinkpad_T61Contents[]
  • 1 Hardware status
  • 2 Introduction
    • 2.1 Packages that will need unmasking by keyword
    • 2.2 Packages that will need to be hard un-masked
  • 3 Hardware
  • 4 Configuration detail
    • 4.1 (u)vesafb
      • 4.1.1 1440x900 Resolution
      • 4.1.2 eyecandy
    • 4.2 Power Management
      • 4.2.1 Suspend to disk
      • 4.2.2 Suspend to RAM
      • 4.2.3 dynticks
    • 4.3 xorg.conf
      • 4.3.1 video drivers
    • 4.4 Multimedia keys
    • 4.5 Fn-Fx key combinations
    • 4.6 Usage of acpid
      • 4.6.1 Fn-F7 Video output toggle
      • 4.6.2 other buttons
      • 4.6.3 Wireless switch on the front beneath firewire
    • 4.7 Dockingstation
      • 4.7.1 Docking / Undocking
    • 4.8 Howto ...

Dynticks can only be used with x86 architecture at the moment - amd64 might get supported in the future but still has some issues.

A non-dynticks kernel had 1500 wakups minimum, a kernel with dynticks comes down to 20-40. Have in mind that there are some real "interrupter" both in user-software and drivers. Java and the nvidia closed-source drivers are two candidates. If in textmode only ehci_work is top with 10 wakeups per sec.

[ edit] xorg.conf [ edit] video drivers
  • x11-drivers/nvidia-drivers: No problems with glx and multihead.
    Eye-candy (compiz-fusion) lags hard because of nvidia's powermizer (it seems that it can be disabled, have a look at this)
    Brightness control is possible as of version 169.07.
    One has to do eselect opengl set nvidia first to ensure that the correct GLX module is loaded.
  • x11-drivers/xf86-video-nv: amd64 does not work due to unknown card. ~amd64 works (make sure proprietary nvidia module is not loaded).
  • x11-drivers/xf86-video-vesa: No problems resuming from sleep/hibernation. Does not run in 1440x900.
  • x11-drivers/xf86-video-i810: Use 2.1.1 or later drivers and media-libs/mesa-6.5.3 or later.
[ edit] Multimedia keys

Working keys : volume (up/down), back, forward, audio-play, audio-stop, audio-next, audio-noprevious.

File: ~/.Xmodmap keycode 234 = XF86Back
keycode 233 = XF86Forward
keycode 144 = XF86AudioPrev
keycode 164 = XF86AudioStop
keycode 162 = XF86AudioPlay
keycode 153 = XF86AudioNext
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume

Follow Assigning keys to special functions @ HOWTO Use Multimedia Keys to make these keys available in your favourite WM or DE.

[ edit] Fn-Fx key combinations FIXME: linux-2.6.23: ACPI will no longer report events through /proc/acpi/event by default so there will be major changes in September.

Without thinkpad-acpi only Fn-F4 will generate button/sleep event. All other Fn-Fx combinations are inactive. Use thinkpad-acpi to enable the rest of the Fn-Fx key combinations.

Brightness controls (Alt F10,F11) are hard wired, but only have effect while in text-mode, or using xorg-vesa- or xorg-nv-driver. x11-drivers/nvidia-drivers-169.07 supports xorg brightness control, too.
Sleep (F4) button registers in acpi. Mute is hardwired as well but no effect despite change in /proc/acpi/ibm/volume:mute so far recognized. For more details have a look at /usr/src/linux/Documentation/thinkpad_acpi.txt.

[ edit] Usage of acpid

There are a lot of solutions for acpid and thinkpad_acpi hotkey feature on the web mainly using files in /etc/acpi/events/ and /etc/acpi/actions/. For example you can download the old source package from ibm-acpis sourceforge download page containing such example files (do not choose the patches, you need one of the old *.tar.gz. Another way is to tweak /etc/acpi/default.sh a bit:

File: /etc/acpi/default.sh #!/bin/sh
# Default acpi script that takes an entry for all actions

set $*

ev_type=`echo "$1" | cut -d/ -f1`

# We have to take special care for events send by ibm/hotkey:
if [ "$ev_type" = "ibm" ]; then
ev_type=`echo "$1" | cut -d/ -f1`
event=`echo "$1" | cut -d/ -f2`
key="$2"\ "$3"\ "$4"
else
# Take care about the way events are reported
ev_type=`echo "$1" | cut -d/ -f1`
if [ "$ev_type" = "$1" ]; then
event="$2";
else
event=`echo "$1" | cut -d/ -f2`
fi
fi

case "$ev_type" in
button)
case "$event" in
power)
logger "acpid: power button pressed; starting shutdown"
# logger "acpid: received a shutdown request"
/sbin/init 0
break
;;
sleep)
logger "acpid: sleep button pressed; initiating hibernate-ram"
# logger "acpid: received hibernate request"
/usr/sbin/hibernate-ram
;;
lid)
logger "acpid: lid event"
;;
*)
logger "acpid: action $2 is not defined"
;;
esac
;;

# BEGIN customization for ibm/hotkey:
ibm)
case "$event" in
hotkey)
case "$key" in
"HKEY 00000080 00001002")
logger "acpid: lock button (Fn+F2) pressed"
# Lock the desktop,- only works for display :0
x_user=`who | sed -ne "s/^\([^[:space:]]*\)[[:space:]]*:0.*/\1/p"`
if [ -n $x_user ]; then
# Use a script or use any desktop lock command
export DISPLAY=":0.0"
su $x_user -c /usr/local/bin/lock_desktop.sh
fi
;;
"HKEY 00000080 00001003")
logger "acpid: battery button (Fn+F3) pressed; switching display off"
/usr/local/bin/thinkpad_acpi_battery.sh &> /dev/null
;;
"HKEY 00000080 00001004")
logger "acpid: sleep button (Fn+F4) pressed; initiating hibernate-ram"
/usr/sbin/hibernate-ram
;;
"HKEY 00000080 00001005")
logger "acpid: bluetooth button (Fn+F5) pressed; toggling bluetooth"
/usr/local/bin/thinkpad_acpi_bluetooth.sh &> /dev/null
;;
"HKEY 00000080 00001007")
logger "acpid: screen toggle button (Fn+F7) pressed"
;;
"HKEY 00000080 00001008")
logger "acpid: UltraNav toggle button (Fn+F8) pressed; toggling touchpad status"
/usr/local/bin/thinkpad_acpi_touchpad.sh &> /dev/null
;;
"HKEY 00000080 00001009")
logger "acpid: eject button (Fn+F9) pressed"
/usr/local/bin/thinkpad_acpi_dock-control.sh &> /dev/null
;;
"HKEY 00000080 0000100c")
logger "acpid: hibernate button (Fn+F12) pressed; initiating hibernate"
/usr/sbin/hibernate
;;
"HKEY 00000080 00007000")
logger "acpid: radio switch action; toggling all wireless devices"
/usr/local/bin/thinkpad_acpi_bluetooth.sh &> /dev/null
/usr/local/bin/thinkpad_acpi_wlan.sh &> /dev/null
;;
"HKEY 00000080 00001010")
logger "acpid: increase brightness"
echo up > /proc/acpi/ibm/brightness
break
;;
"HKEY 00000080 00005010")
logger "apcid: decrease brightness"
echo down > /proc/acpi/ibm/brightness
break
;;
"HKEY 00000080 00005001")
# This is the lid CLOSE event
# as of now it is already handled above
;;
"HKEY 00000080 00005002")
# This is the lid OPEN event
# as of now it is already handled above
;;
*)
logger "acpid: $ev_type/$event $key is not defined"
;;
esac
;;
dock)
case "$key" in
"GDCK 00000003 00000001")
logger "acpid: Dock eject request"
;;
"GDCK 00000003 00000002")
logger "acpid: laptop was undocked"
;;
"GDCK 00000000 00000003")
logger "acpid: laptop was docked"
;;
*)
logger "acpid: $ev_typ $event event $key is not defined"
;;
esac
;;
bay)
case "$key" in
"MSTR 00000003 00000000")
logger "acpid: got ultrabay eject request"
;;
"MSTR 00000001 00000000")
logger "acpid: ultrabay eject lever inserted"
;;
esac
;;
esac
;;
*)
logger "ACPI group $1 / action $2 is not defined"
;;
esac