Friday, January 18, 2008

Thinkpad T42 and Debian

The other week my wonderful girlfriend came over with a "present". While I was expecting food or something another I was pleasantly surprised when she handed me a relatively unused IBM Thinkpad T42. I have sort of a fetish for laptops, and at last count have around 6. All are in some state or working order save my poor iBook G3 which has suffered one to many logic board failures to resurrect again. This one however was different, it's almost perfect. It has all of the features and non of the defects than the others have. Each always had one thing that would bother me: trackpad would go crazy, lid was too loose and kept falling back, or simply ran way to hot. So far this Thinkpad is not only the best Linux laptop I've had but the best one I've owned period. Here's the specs:
  • Intel Pentium-M 1.7Ghz with SpeedStep
  • 1GB DDR Memory
  • 80Gb Hard Drive
  • DVD/CD-RW Drive
  • 802.11 B/G WiFi
  • 1 Gigabit Ethernet
  • ATI Mobility 7500 on a 1024x768 LCD
Desktop:


In the week or so leading up to getting the thinkpad I had been configuring my Dell Inspiron 8500 with Debian GNU/Linux Sid and found to my delight that transplanting it's 80Gb hard drive worked beautifully. All I needed to do was change the xorg.conf drive from the nvidia one to the Xorg ATI one. After that I was in business and with a few tweaks I got many things working properly:
  • ATI 7500 Mobility: Yes, Direct Rendering enabled using ati driver in xorg.conf (listed below)
  • Intel Pro Wireless 2100 3B MiniPCI: yes, after firmware download
  • Intel 82540EP Gigabit Ethernet: yes, with e1000 module
  • Intel SpeedStep: Yes, using cpufreq the processor will scale from 1.7Ghz down to 700Mhz depending on power settings
  • Suspend and Hibernate: Yes, using acpid. video and network come up correctly
  • HDAPS (disk head parking): sort of, works after a kernel patch, but seemed to cause instability and it was a bit too sensitive, somethings making the system unusable while it was parked.
The best resource I found when setting everything up and learning about the capabilities of the hardware was the ThinkWiki site that has excellent Linux information on almost all Thinkpad models.

Overall this is a solid laptop, I guess you could say the lid is a bit flimsy, but it's metal hinges are leagues above what Dells have. The gigabit ethernet is a big plus too, since we have gigabit connections at work and I'm planning to update my home router too. With auto-dim on the display, speedstep, and the tickless kernel option in 2.6.24 it's power management is capabilities are great. Hopefully this lasts me for a while with the only replacement part being the hard drive, but future laptop purchases will be guaged against this superb piece of hardware.

Some Linux info:

lspci
micheal@ruth:~$ lspci
00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500]
02:00.0 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
02:00.1 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)
02:02.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
/proc/cpuinfo
micheal@ruth:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.70GHz
stepping : 6
cpu MHz : 1400.000
cache size : 2048 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe bts est tm2
bogomips : 2792.87
clflush size : 64
xorg.conf (touchpad is disabled here)
Section "Files"
EndSection

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc104"
Option "XkbLayout" "us"
EndSection

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "Emulate3Buttons" "true"
EndSection

Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "HorizScrollDelta" "0"
Option "VertScrollDelta" "0"
Option "MaxTapTime" "0"
EndSection

Section "Device"
Identifier "ATI Mobility 7500"
Driver "radeon"
BusID "PCI:1:0:0"
Option "RenderAccel" "true"
Option "backingstore" "true"
Option "AllowGLXWithComposite" "true"
Option "AddARGBGLXVisuals" "True"
Option "TripleBuffer" "True"
EndSection

Section "Monitor"
Identifier "Generic Monitor"
Option "DPMS"
HorizSync 28-64
VertRefresh 43-60
EndSection

Section "Screen"
Identifier "Default Screen"
Device "ATI Mobility 7500"
Monitor "Generic Monitor"
DefaultDepth 24
SubSection "Display"
Modes "1280x1024" "1024x768"
EndSubSection
EndSection

Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Synaptics Touchpad"
EndSection

Section "Extensions"
Option "Composite" "true"
EndSection