IBM ThinkPad T43
Changelog
Sunday Nov 16 2008
- Added configuration option for getting two-finger-vertical-scrolling to work on the T43's touchpad.
Sunday Jul 30 2006
- Updated to fglrx 8.26.18
- Added information about a DRI problem I encountered when updating the fglrx driver
Thursday Jun 15 2006
- Updated to kernel 2.6.16.20
- Updated installation instructions to new Debian nightly builds
- Updated to fglrx 8.24.8
- Added info about used fan control script
- Fixed some typos
Friday May 12 2006
- Added a new sata trick to the installation instructions.
Wednesday Jan 4 2006
- Rewrote the wireless lan section to give a strategy on getting wpa to work with the Atheros properly.
- Introduced the Changelog
General Specifications
| 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 |
History
- 1. November 2005: Ordered at nofost.de, proposed delivery period 7 to 14 days
- 8. November 2005: Notified of shipment via DHL
- 9. November 2005: Delivered
- 7. March 2008: Systemboard is broken. Sent in for repair.
- 19. March 2008: Returned, all fine again.
Installation of Debian GNU/Linux
Installation instructions
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.
Compiling your own kernel
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.
Configuration
My current kernel config can be download here: config-2.6.16.20.txt. Information about what specific features to enable follow.
Getting everything to work
CPU
Processor Type
- Kernel config:
CONFIG_MPENTIUM=y
CPU Frequency Scaling
- Kernel config:
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- I adjusted my
/etc/cpufreqd.confslightly to also make the frequency scale when on AC power1): cpufreqd.conf.txt.
Harddisk
- Kernel config:
CONFIG_SCSI_SATA=y CONFIG_SCSI_ATA_PIIX=y
ACPI
- Kernel config:
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
- I also had to add
acpi_sleep=s3_biosas a kernelparameter - For some ACPI related scripts, scroll down a bit.
Ethernet
- Kernel config:
CONFIG_TIGON3=m
Wireless LAN
I'm currently using the Madwifi-NG driver for the built-in Atheros a/b/g chipset.
WPA
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:
- Downloaded
madwifi-ng-current.tar.gzfrom here, extracted it to/usr/src/madwifi-ngand built and installed the driver. - Added the
ifupandifdownscripts by Matt Brown as suggested here and modified my/etc/network/interface:iface ath0 inet static madwifi-base wifi0 . . . wireless-mode ManagedNow a simple
ifup ath0does all thatwlanconfigstuff necessary by madwifi-ng for me. - The version of madwifi-ng I have seems to have trouble to suspend correctly, the
ath_pcimodule behaves strange after a resume. So I simply unload it before each suspend and reload it with each resume. - Downloaded current wpa_supplicant sources (at the time of writing
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 - Edited
/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" } - In order to connect now with the WPA-PSK enabled wlan, I issue the following commands:
iwconfig ath0 essid thessid wpa_supplicant -iath0 -Dmadwifi -c/etc/wpa_supplicant.conf -B
Wavemon
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.deb
Graphics
My 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)
Sound
- Kernel config:
CONFIG_SND_INTEL8X0=m CONFIG_SND_INTEL8X0M=m
- Alsa worked out of the box.
Active Protection System
- Kernel config:
CONFIG_HWMON=y CONFIG_SENSORS_HDAPS=m
apt-get install hdaps-utils- Also take a look at the HDAPS entry in the ThinkWiki
SMAPI
Via 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!
Things not working
Suspend-to-disk (usingswsusp) 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 :)
With the recent kernel build, it so far looks promising.
Small Software Collection
Fan noise antidote
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
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
ACPI scripts
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
Screen off on Fn+F3
apt-get install radeontool- Create a file
/etc/acpi/events/backlight:event=ibm/hotkey HKEY 00000080 00001003 action=/etc/acpi/actions/standby.sh
- Create a file
/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 restart
Standby on close of Display or Fn+F4
- If you are using the xorg-ati-driver, or a version of
fglrxprior 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- Create a file
/etc/acpi/events/lid:event=button/lid action=/etc/acpi/actions/sleep.sh %e
- Create a file
/etc/acpi/events/sleep:event=ibm/hotkey HKEY 00000080 00001004 action=/etc/acpi/actions/sleep.sh %e
- Create a file
/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 restart
Suspend-to-disk on Fn+F12
- If you are using the xorg-ati-driver, or a version of
fglrxprior 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- Create a file
/etc/acpi/events/disk:event=ibm/hotkey HKEY 00000080 0000100c action=/etc/acpi/actions/disk.sh
- Create a file
/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
Toggle Bluetooth on Fn+F5
- Create a file
/etc/acpi/events/bluetooth:event=ibm/hotkey HKEY 00000080 00001005 action=/etc/acpi/actions/bluetooth.sh
- Create a file
/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 restart
Remapping CapsLock
As 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.
- My
~/.Xmodmaprc:remove Lock = Caps_Lock keycode 66 = Super_L
- Small addition to
/etc/X11/xorg.confto 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")
Two-finger-scrolling on the touchpad
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.
lspci output
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)
Links
- Helpful Resources:
- Listed at TuxMobil.org
- Listed at Linux on Laptops
ipw2200 driver on an X41 though, so it will stay here either way 



Discussion
Hi, why are you using MadWifi-NG instead of the ipw2200 driver? Is there a reason for this.
Because I have an Atheros card in this thing. I just realised though that I had made a copy-and-paste error in the table at the beginning of this node, which I now corrected to reflect the correct wlan nic.
Oh aber eine sache interessiert mich dann doch was hat es den gekostet? nen ThinkPad war ja schon immer ein Traum von mir. Kannst den Preis mir via GötterGatten zukommen lassen. Vorrausgesetzt wen man über sowas reden möchte
Let’s be nice and show folks how to build the ATI ‘fglrx’ module using the module-assistant. Don’t use make.sh, it doesn’t work very well.
# apt-get install debhelper module-assistant libstdc++5 # sh ./ati-driver-installer-8.26.18-x86.run –-buildpkg Debian/etch # dpkg -i *.deb # cd /usr/src # module-assistant prepare # module-assistant a-i fglrx # modinfo fglrx
Hi!
Thanks for the perfect description of the ACPI configuration (and for the scripts)! I did all your steps and it worked! Thanks.
Thanks for the tips. I have a T43p with Mandriva: the ACPI script for special keys were not working (Fn+F4 or Lid to suspend, or Fn+F3) with Mdv 2008.1, and with your help I fixed it.
BTW, another comment: the ibm_acpi is now called thinkpad_acpi but all works the same (cf. http://thinkwiki.org/wiki/ACPI_fan_control_script).
I lent my friend next door my ibm thinkpad – now the keyboard shows numbers for the letters. Instead of the letters. I don’t know how to toggle it back to using the plain keyboard – If you could help I would appreciate it a I have tried about everything I can think of but nothing seems to work. The Fn key with all the F1-12 function keys – pressing the Fn with them once doesn’t work. Any ideas? Thanks, jackie
My IBM ThinkPad T43 can't burn DVD-R, I've tried very hard already. I'm trying to burn videos, I've done it on CD-Rs but that's cause' the videos were rather small. Now my problem is that the video is AVI, 1 hour or so. PLEASE HELP ME!
My IBM Think pad T43 — YOUCH PAD not work. plz. advise me about that issue ASAP.plz. plz. plz.
hi i have a problem with my ibm t43 i cant connect to wifi using my laptop.. can you help me what should i do..please tel me what is the solution of this problem.? please………….
The functions of this IBM ThinkPad T43 notebook loos very powerful, what's more, just from the photo mentioned in this article, This IBM ThinkPad Laptop Lcd Screen is also very nice and cool!
Very nice and extensive article, though a bit obsolete.
Do you still use Linux with T43 ?
I have the same model specs and there is unfortunately degraded performance with recent kernels, i.e. CPU frequency scalling is not working correctly.
More info here:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/519142