Installing Debian Sid (October 2005) on a ThinkPad T42
Contents
Debian netinst
Insert the Debian net installation disk (download size ~130 MB) and on bootup, the laptop should go directly to the Debian splash image prompting you for a boot parameter. If you don't see this screen, then you possibly need to change the boot device configuration in your BIOS and make the CD drive the first boot disk.
Enter expert26 to start the installation with Kernel 2.6, and it will take you through the regular Debian setup which contrary to published reports on Slashdot and SuSe forums is very intuitive and non-scary. Everything I had on this machine (lspci output below) was detected with the sole exception of the Intel Pro Wireless 2200 wireless card. It turned out later that getting wirless to work was really easy in debian.
Debian should install just fine and on first bootup, install the packages you want. X should just work with all the auto-detect options in the installer. I have a SXGA monitor and the display worked correctly from the first go. The only problem I had with the Debian installer is that at the time of my install, gnome was in transition so I couldn't immediately install the mail client of choice -> Evolution.
My configuration
Here is the lspci output from my system, a more non-cryptic description of my config is below
- 0000:00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)
- 0000:00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
- 0000:00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
- 0000:00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
- 0000:00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
- 0000:00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)
- 0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)
- 0000:00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)
- 0000:00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)
- 0000:00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)
- 0000:00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
- 0000:00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)
- 0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500]
- 0000:02:00.0 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
- 0000:02:00.1 CardBus bridge: Texas Instruments PCI4520 PC card Cardbus Controller (rev 01)
- 0000:02:01.0 Ethernet controller: Intel Corporation 82540EP Gigabit Ethernet Controller (Mobile) (rev 03)
- 0000:02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)
In summary,
- Intel 1.73 Pentium M (Dothan)
- Intel Pro Wirless 2200
- SXGA monitor (14", 1400x1050)
- 512 MB of RAM
- Intel Gigabit Ethernet
- IBM Security System
- Integrated fingerprint reader
- 56 K modem
Getting wireless to work
I had a Sony Vaio for a few months and I had to go through hell to get wireless to work on that one. The reason for that primarily was that it was an old machine and wireless access was through the PCMCIA port. However, Vaios are notorius for not passing their IRQ requests correctly, and so Linux was never able to assign the PCMCIA bus a correct IRQ channel and the PCMCIA devices never worked. I had to make do with a USB ethernet driver and it wasn't as fast, and stuck out from the back and looked very ugly.
I'm happy to report that nothing like that occurred in my ThinkPad T42.
To get wireless to work on your Debian box, do the following
- $ apt-get install wireless-tools ipw2200-source ieee80211-source
In addition to this make sure you apt-get your kernel-source (linux-source as of 2.6.12), linux-headers, and linux-tree packages.
Once you have this navigate to /usr/src where all these packages are installed and bunzip/tar them so that a linux-source directory is created, and also a modules directory is created which has the ipw200, and ieee80211 sources.
Now, make a symlink called linux to your linux-sources directory
- $ ln -s linux-sources-2.6.x.y linux
Make sure it works by typing in ls -l in /usr/src and see that linux points to your linux-sources directory
To get the ipw2200 wireless utilities to work, you need to download the correct firmware from intel.com The ipw2200 sourceforge page at IPW-Sourceforge will have directions for you. Make sure you download the correct version that corresponds to your ipw2200-source. You can check your ipw2200-source version by going
- $ dpkg --info ipw2200-source
Now that you've downloaded and installed the firmware files in /usr/lib/hotplug/firmware/ you need to build your ipw and ieee80211 sources
You can do it by typing in these commands in /usr/src
- $ module-assistant a-i ieee80211
- $ module-assistant a-i ipw2200
This will create 2 .deb files in your /usr/src directory. If debian doesn't install them automatically, then do so yourself and then use the modules by modprobing them
- $ modprobe ieee80211
- $ modprobe ipw2200
You can add ieee80211 and ipw2200 in your /etc/modules to make sure they load up on boot time
Check that everything works by
- $ iwlist scanning
Either eth1 or eth0 should show a list of available wirless networks (if any)
You can create your wirless preferences by modifying your /etc/network/interfaces file. I show a part of mine as reference
Network intefaces file
mapping eth1 map home map work map none # The loopback network interface auto lo iface lo inet loopback # The primary network interface # auto eth0 iface eth0 inet dhcp autho eth1 iface eth1 inet dhcp iface home inet dhcp wireless-essid enter your wireless ID wireless-key whatever your wirless key is iface work inet dhcp wireless-essid whatever your work wireleess ID wireless-key whatever your wireless key is iface none inet dhcp wireless-essid ANY wireless-key none
Getting power management to work
In my earlier Sony Vaio, I couldn't get ACPI or APM to work. I'm happy to report that in this laptop, I could get power-management to work very well with ACPI. I was able to put the laptop to sleep, and I'm still working on the hibernate feature, although I consider that non-critical. Here is how I got it all to work
ACPI sleep
ACPI sleep worked straight of the bat. Just login as root and type
- $ echo mem > sys/power/state
Your laptop should go through the suspend cycle and the sleep light should come on. To resume, press the Fn key and the laptop shoud resume where you left it.
You can automate this whole operation, so that when you close the lid, the laptop should go to sleep automatically. Here's how.
ACPI sleep on lid close script
Add the following in your /etc/acpi/actions directory as lm_lid.sh and make sure that /etc/acpi/scripts/lm_lid points to it. This script was originally taken from Superk.org
#!/bin/bash test -f /usr/sbin/laptop_mode || exit 0 # lid button pressed/released event handler /usr/sbin/laptop_mode auto #!/bin/bash test -f /usr/sbin/laptop_mode || exit 0 grep -q closed /proc/acpi/button/lid/*/state if [ $? = 0 ] then chvt 12 echo mem > /sys/power/state else sleep 2 chvt 7
ACPI sleep drain problem
In the past, ThinkPads with Radeon graphics chips exhibited very high power consumption during ACPI sleep because the GPU was not put to sleep during ACPI suspend. A kernel patch has been available to fix this problem. As of Linux 2.6.18, the patch is not needed because it is merged into the kernel.org and Debian kernels. This was verified using Debian's stock linux-image-2.6.18-1-686, version 2.6.18-1, on an IBM ThinkPad T40 (2373-94U) on 2006-09-29.
Once you have a fixed kernel (either by using 2.6.18 or later, or by applying the patch to a previous version), you need to use the radeonfb framebuffer console driver to fix the problem. If the radeonfb driver is built as a module (as with Debian's stock kernel), add the following line to /etc/modules:
radeonfb
Note that the radeonfb driver maintains a whitelist of affected ThinkPad models. If your model is affected by the problem but is not in the driver's whitelist, you may need to supply the parameter force_sleep=1 to the radeonfb driver (this is not normally necessary). To do this, add the following to /etc/modprobe.d/local (or any other file in /etc/modprobe.d/ where you choose to keep your customized module parameters):
options radeonfb force_sleep=1
If you are using your own compiled kernel and the radeonfb driver is built in, append the following to your kernel command line (in /etc/grub/menu.lst or your other bootloader's configuration): video=radeonfb (or video=radeonfb:force_sleep=1 to override the whitelist as described above).
For more information, including the patch (only for kernels older than 2.6.18) and a test script to see if your model is affected, see OSDL_Bugzilla or the ThinkWiki page describing the problem.
CPU Frequency scaling
In debian this is really easy. With your default stock kernel, you can just modprobe cpufreq_userspace and speedstep_centrino and your CPU will dynamically change the frequency to conserver power. Very cool. Most of the time, my processor sits at 599 MHz. Again, add them to /etc/modules to enable them at bootup.
HDD spin down
Again in debian, this is really easy. Just apt-get laptop-mode-tools and powernowd and your HDD will spn down when idle to conserve power. Very cool.
Misc tweaks
You can use the powerplay feature of your Radeon GPU by adding the following in your /etc/X11/xorg.conf
Section "Device" Identifier "ATI Technologies, Inc. Radeon Mobility M7 LW [Radeon Mobility 7500]" Driver "radeon" VendorName "IBM Thinkpad" Option "DynamicClocks" "on" BusID "PCI:1:0:0" EndSection
Check to see that this is working by looking at /var/log/Xorg.0.log. This feature doesn't work with XFree86.
Hibernate
This for me is non-critical, and I haven't got it working just yet. The way I've tried it so far is by patching the kernel using Software suspend 2. However, the kernel panics on reboot, the reason for which is probably the initrd. I haven't quite figured out how to fix this. I tried making a bzImage kernl although that didn't work either. The kernel doesn't panic in this case but doesn't reusme either. If you have a solution, please edit this and let us all know.
Thinkpad buttons
You can get an online display for your screen brightness and volume control by apt-getting tpb. You need to make /dev/nvram user-writable to get it work with regular user perms. Add tpb to your .xsession file to have it running when you first start X