| Hardware Components | Status | Notes |
|---|---|---|
| Intel Pentium M (Dothan) 2.0GHz | works | For cpu frequency scaling, see below |
| Intel 915PM chipset | works | |
| ATI Mobility Radeon x300 | works | For configuration parameters, take a look here |
| 14.1” TFT Display with 1400×1050 pixel | works | |
| 80GB PATA HDD | works | |
| AD1981B AC'97 Audio controller | works | Works out of the box with ALSA, for the necessary kernel options see below |
| Broadcom 10/100/1000 Ethernet | works | Works out of the box, for necessary kernel options see below |
| DVD-ROM/CD-RW Combo | partly works | further documentation to be done, burning not tested yet |
| IBM Integrated Bluetooth IV with 56K Modem (BMDC-3) | works | |
| IBM 11a/b/g Wireless LAN Mini PCI Adapter II | works | For necessary modules, see below |
| CardBus slot (Type 2) | not tested | |
| ExpressCard/54 slot | not tested | |
| IBM Embedded Security Subsystem 2.0 | not tested | |
| IBM Active Protection System | works | see below |
| Integrated Fingerprint Reader | not tested | to be tested and documented |
| UltraNav (TrackPoint / Touchpad combo) | works |
In recent nighty builds (this is important, etch beta 2 doesn't support the following) of Debian it is sufficient to add libata.atapi_enabled=1 as a kernel parameter and then continue with the normal installation procedure without needing any special tricks.
I haven't tested this yet, as my T43 still runs on it's first install of Debian back in November, but both Michael A. Jaeger and Nicholas Reilly (thanks to them) assured me of this being enough to make the installation work.
For the old instructions, take a look here.
I run Linux Kernel 2.6.16.20 which (thankfully) makes it unnecessary to apply any patches to make the T43's hardware work. For the old instructions (kernel 2.6.14.2), take a look here.
My current kernel config can be download here: config-2.6.16.20.txt. Information about what specific features to enable follow.
CONFIG_MPENTIUM=y
CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_TABLE=y CONFIG_CPU_FREQ_STAT=y CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_X86_ACPI_CPUFREQ=m CONFIG_X86_SPEEDSTEP_CENTRINO=m CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
apt-get install cpufreqd/etc/cpufreqd.conf slightly to also make the frequency scale when on AC power1): cpufreqd.conf.txt.CONFIG_SCSI_SATA=y CONFIG_SCSI_ATA_PIIX=y
CONFIG_ACPI=y CONFIG_ACPI_SLEEP=y CONFIG_ACPI_SLEEP_PROC_FS=y CONFIG_ACPI_SLEEP_PROC_SLEEP=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y CONFIG_ACPI_VIDEO=y CONFIG_ACPI_FAN=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_IBM=y CONFIG_ACPI_BLACKLIST_YEAR=2001 CONFIG_ACPI_EC=y CONFIG_ACPI_POWER=y CONFIG_ACPI_SYSTEM=y CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=m
acpi_sleep=s3_bios as a kernelparameterCONFIG_TIGON3=m
I'm currently using the Madwifi-NG driver for the built-in Atheros a/b/g chipset.
I previously used the standard Madwifi driver, but wasn't able to get this to work together with a WPA-PSK + TKIP setup via wpa_supplicant, it simply was stuck in an endless authentication loop, disassociating from the AP again every time right after the 4-way-handshake2). The new ng driver solved my issues:
madwifi-ng-current.tar.gz from here, extracted it to /usr/src/madwifi-ng and built and installed the driver.ifup and ifdown scripts by Matt Brown as suggested here and modified my /etc/network/interface: iface ath0 inet static
madwifi-base wifi0
.
.
.
wireless-mode Managed
Now a simple ifup ath0 does all that wlanconfig stuff necessary by madwifi-ng for me.
ath_pci module behaves strange after a resume. So I simply unload it before each suspend and reload it with each resume.wpa_supplicant-0.4.9.tar.gz) from here, and built the sources using this .config: CONFIG_DRIVER_MADWIFI=y CFLAGS += -I/usr/src/madwifi-ng CONFIG_CTRL_IFACE=y
Then installed the tools via make install
/etc/init.d/wpa_supplicant: ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="thessid"
key_mgmt=WPA-PSK
psk="averysecretkey"
}
iwconfig ath0 essid thessid
wpa_supplicant -iath0 -Dmadwifi -c/etc/wpa_supplicant.conf -B
The Wavemon package fetched via apt didn't want to work with the driver3):
gina@ione:~$ wavemon fatal error: could not get range information
Compiling the package from source resolved that issue:
apt-get -b source wavemondpkg -i wavemon_0.4.0b-8_i386.debMy T43 came with an ATI Mobility Radeon x300. Using the proprietary drivers from ATI, version 8.26.18, I have a working DRI setup with Suspend/Resume support. With driver versions newer than 8.25.18 it is also finally possible to switch on the VGA out on the fly, either cloning the display, or enabling it as the only port, using Fn+F7.
I installed them from the official driver package from ATI and let the provided installer script build some Debian packages for Etch, which I then installed:
./ati-driver-installer-8.26.18-x86.run –buildpkg Debian/etchdpkg -i *.debcd /usr/src && tar xvfj fglrx.tar.bz2 && cd modules/fglrx && ./make.sh
After installation I added the driver to the “Device” section of my xorg.conf:
Section "Device"
Identifier "ATI Technologies, Inc. M22 [Radeon Mobility M300]"
Driver "fglrx"
EndSection
I also added the DisplaySize and the DPMS option to the “Monitor” section:
Section "Monitor"
Identifier "LCD"
HorizSync 30-67
VertRefresh 50-75
Option "DPMS"
DisplaySize 474 355
EndSection
The DisplaySize values were calculated using the formula 25.4 * width / 75 and accordingly 25.4 * height / 75, with width and height being the resolution of my display in pixels, namely 1400 for width and 1050 for height.4) To be on the safe side I also set the resolution to 75dpi in Firefox (Edit > Preferences > Fonts & Colors > Display Resolution). These steps solved the issues I had with the fglrx driver and my system fonts, namely the fonts being too big and having weird scrolling issues.
Small tip: If you find yourself in the same situation as me, and your DRI stops working although you can't find any related Errors or Warnings in your Xorg.log, do a LIBGL_DEBUG=verbose fglrxinfo. If you see something like
libGL: OpenDriver: trying /usr/X11R6/lib/modules/dri/fglrx_dri.so libGL error: dlopen /usr/X11R6/lib/modules/dri/fglrx_dri.so failed (/usr/X11R6/lib/modules/dri/fglrx_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to find driver: fglrx_dri.so
in the output, you might want to try out this workaround discovered by Maciej Matysiak.5)
CONFIG_SND_INTEL8X0=m CONFIG_SND_INTEL8X0M=m
CONFIG_HWMON=y CONFIG_SENSORS_HDAPS=m
apt-get install hdaps-utilsVia SMAPI (System Management Application Program Interface) one can adjust the charging settings of the Thinkpad: The capacity treshould on which to start charging, the treshold on which to stop charging, and manually an amount of time to charge for.
In order to get a /sys-interface to this functionality, get the tp_smapi kernel module from http://tpctl.sourceforge.net, unpack it, cd to the new directory and do a make load (or make install). You now have a new interface at /sys/devices/platform/smapi to play around with.
Also see SMAPI Support for Linux at ThinkWiki.org and this thread on the linux-laptop mailinglist. Thanks to Shem for writing this great module!
swsusp) still has some issues. Suspend/Resume works, but from time to time after Resume ACPI events aren't issued anymore. I have yet to figure out what is causing this. Joseph WU suggested a switch to Software Suspend 2, I'm currently working on that and am quite confident that this will work out just fine :)As the T43's fan has some weird issues (pulsing sounds, always on, also take a look at the ThinkWiki), I installed the tp-fancontrol script6) which now controls the fan and by doing so reduced the noise my ThinkPad produces a lot.
In order for it to work, I had to pass ibm-acpi.experimental=1 as a parameter to my kernel. I also added an initscript which now takes care of starting the script on bootime:
#!/bin/sh PROGRAM="/usr/bin/tp-fancontrol" PARAMS="-l -d" PID="/var/run/tp-fancontrol.pid" checkconfig() { if [ ! -e /proc/acpi/ibm/fan ]; then echo "The ibm_acpi module must be loaded with (experimental=1)" return 1 fi } case "$1" in start) checkconfig || return 1 echo "Starting tp-fancontrol" $PROGRAM $PARAMS ;; stop) echo "Stopping tp-fancontrol" $PROGRAM -k ;; esac
Gaim-Thinklight is a plugin for the multiprotocol messenger Gaim that makes the ThinkLight flash on incoming instant messages. The rate of missed IMs has highly decreased since I installed it, so a big thumbs up to Joachim Breitner for creating this
echo enable,0xffff > /proc/acpi/ibm/hotkey. Take a look here for further information.
I simply added the line to /etc/init.d/bootmisc.sh
apt-get install radeontool/etc/acpi/events/backlight: event=ibm/hotkey HKEY 00000080 00001003 action=/etc/acpi/actions/standby.sh
/etc/acpi/actions/standby.sh: #!/bin/bash if [ -e /tmp/backlightoff ] then radeontool light on rm /tmp/backlightoff else radeontool light off touch /tmp/backlightoff fi
Don't forget to make it executable.
/etc/init.d/acpid restartfglrx prior to 8.19.10: apt-get install vbetool - we'll need this to save the state of video card memory to the disk and restore it after standby in order to prevent graphic failures. Do not use it with versions after and including 8.19.10, as it breaks the resume process!apt-get install xtrlock/etc/acpi/events/lid: event=button/lid action=/etc/acpi/actions/sleep.sh %e
/etc/acpi/events/sleep: event=ibm/hotkey HKEY 00000080 00001004 action=/etc/acpi/actions/sleep.sh %e
/etc/acpi/actions/sleep.sh: #!/bin/sh # if launched through a lid event and lid is open, do nothing echo "$1" | grep "button/lid" && grep -q open /proc/acpi/button/lid/LID/state && exit 0 # lock X, subsitute 'user' for your username export DISPLAY=:0 LOCKAS=user su $LOCKAS -c xtrlock & /usr/bin/tp-fancontrol -u # switch to text virtual terminal FGCONSOLE=`fgconsole` chvt 10 sleep 1 # save vbestate - necessary if either the xorg-ati driver or an fglrx prior to 8.19.10 is used #vbetool vbestate save > /tmp/vbestate # nighty night, don't let the vampire bite echo -n "mem" > /sys/power/state # restore vbestate - see above #vbetool vbestate restore < /tmp/vbestate #rm /tmp/vbestate #switch back to intial virtual terminal chvt $FGCONSOLE
Don't forget to make it executable.
/etc/init.d/acpid restartfglrx prior to 8.19.10: apt-get install vbetool - we'll need this to save the state of video card memory to the disk and restore it after standby in order to prevent graphic failures. Do not use it with versions after and including 8.19.10, as it breaks the resume process!apt-get install xtrlock/etc/acpi/events/disk: event=ibm/hotkey HKEY 00000080 0000100c action=/etc/acpi/actions/disk.sh
/etc/acpi/actions/disk.sh: #!/bin/sh # lock X, subsitute 'user' for your username export DISPLAY=:0 LOCKAS=user su $LOCKAS -c xtrlock & /usr/bin/tp-fancontrol -u # switch to text virtual terminal FGCONSOLE=`fgconsole` chvt 10 sleep 1 # save vbestate - necessary if either the xorg-ati driver or an fglrx prior to 8.19.10 is used #vbetool vbestate save > /tmp/vbestate # see you later, alligator echo -n "disk" > /sys/power/state # restore vbestate - see above #vbetool vbestate restore < /tmp/vbestate #rm /tmp/vbestate #switch back to intial virtual terminal chvt $FGCONSOLE
Don't forget to make it executable.
/etc/init.d/acpid restart/etc/acpi/events/bluetooth: event=ibm/hotkey HKEY 00000080 00001005 action=/etc/acpi/actions/bluetooth.sh
/etc/acpi/actions/bluetooth.sh: #!/bin/bash STATE=`cat /proc/acpi/ibm/bluetooth | head -n 1 | awk '{print $2}'` if [ $STATE = 'disabled' ] then echo "enable" > /proc/acpi/ibm/bluetooth else echo "disable" > /proc/acpi/ibm/bluetooth fi
Don't forget to make it executable.
/etc/init.d/acpid restartAs the ThinkPad's keyboard doesn't have a windows key, which comes in quite handy when defining shortcuts in the window manager, I remapped CapsLock - which is totally useless otherwise IMO - to serve its purpose.
~/.Xmodmaprc: remove Lock = Caps_Lock keycode 66 = Super_L
/etc/X11/xorg.conf to be on the safe side:
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
.
.
.
Option "XkbOptions" "altwin:left_meta_win"
EndSection
(compare "Windows Key is not working as Meta Key for shortcut definitions")
In order to enable two-fingered-vertical-scrolling on the T43's touchpad, all you have to do is add
Option "VertTwoFingerScroll" "1"
to your touchpad's InputDevice section in your /etc/X11/xorg.conf.
0000:00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03) 0000:00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 03) 0000:00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03) 0000:00:1c.2 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 (rev 03) 0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03) 0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03) 0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03) 0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03) 0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03) 0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3) 0000:00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03) 0000:00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03) 0000:00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03) 0000:00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03) 0000:00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 03) 0000:01:00.0 VGA compatible controller: ATI Technologies Inc M22 [Radeon Mobility M300] 0000:02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751M Gigabit Ethernet PCI Express (rev 11) 0000:04:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev 8d) 0000:04:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
ipw2200 driver on an X41 though, so it will stay here either way