Installing Debian 3.1 (Sarge) on a ThinkPad T43
Contents
This is how I slapped Debian/Sarge onto my shiny new T43, which seems quite a nice machine all in all. It's a very new type, being based on the Sonoma platform with PCI Express, SATA and other happy things. Does Intel marketing really call Sonoma a "platform"? Oh well.
Installation
Repartitioning/Resizing the Windows Partition
This is only necessary if you want to keep your Windows installation for dual booting. I kept mine just so I could update the BIOS more easily in case it becomes necessary.
I was able to boot Knoppix 3.7, but only with the 2.4 kernel. Then resizing the existing 70-odd GB NTFS partition presented no problems at all, but it was rather slow (no DMA mode) due to the ICH6 IDE/SATA controller not being recognized properly. Use ntfsresize, or if you don't trust your knowledge of this rather powerful and potentially confusing tool, try QtParted. Both are available in Knoppix' K menu. Don't be worried if nothing happens while you resize your partition, it took more than an hour on mine.
To repeat myself: You cannot boot Knoppix (at least up to 3.7) using the 2.6 kernel. Use 2.4.
The big switcharoo: /dev/hda becomes /dev/sda
When initially installing Sarge from the rc3 Debian Installer images, the installation disc's 2.4 kernel saw the hard drive as /dev/hda. Since the ICH6 controller doesn't support DMA that way, transfers are extremely slow. Therefore I started by installing a base system with a compiler so I could build my own kernel. After building my kernel with options to support ICH6 (CONFIG_SCSI_ATA_PIIX=y), the drive is seen through libata's SCSI emulation as /sev/sda, though.
To change that, you can boot to 2.4, edit /etc/fstab and /boot/grub/menu.lst (or your preferred bootloader's configuration file). Replace all occurences of "hda" with "sda" and reboot to your new 2.6 kernel. If things go wrong and your 2.6 doesn't boot properly, use the Debian installer CD as rescue system and change your fstab and bootloader configuration back to hda, then retry with new kernel options. I will post my working .config as soon as I figure out how to upload non-image files here :)
I suppose the Debian installer might at some time switch to a kernel that supports ICH6 natively, removing the need for this procedure.
Hardware
CPU and frequency scaling
2.6.11.7's CONFIG_X86_SPEEDSTEP_CENTRINO (speedstep-centrino.ko) and CONFIG_X86_ACPI_CPUFREQ (acpi-cpufreq.ko) both seem to work to scale the CPU frequency. Which of the two gets you more battery life and a less noisy CPU fan has yet to be determined. I noticed the CPU fan is rather loud and active a lot. Not something you'd expect for a laptop this expensive. On the other hand, the whole system is pretty brand new and perhaps future kernels will allow for a quieter machine.
Network
The network card identifies to lspci as "Broadcom Corporation NetXtreme BCM5751M Gigabit Ethernet PCI Express" and works with the tg3 module, both on kernel 2.4 and 2.6. I didn't find anyhting special here. Haven't tested it on an actual gigabit network, though, so nothing to benchmark with.
Bluetooth
Seems to work under 2.6.11.7. Make sure to enable RFCOMM in your kernel, and you will also need support for ibm-acpi. then:
apt-get install bluez-utils echo "enable" > /proc/acpi/ibm/bluetooth /etc/init.d/bluez-utils start
And you can try using "hcitool scan" to scan for nearby devices. My Sony Ericsson T630 was found immediately and I could back up its contens using MultiSync.
Buttons
ThinkLight | Fn + PgUp | Just worked (can also be toggled through ibm-acpi's /proc/acpi/ibm/light) |
Display brightness + | Fn + Home | Just worked (no software necessary) |
Display brightness - | Fn + End | Just worked (no software necessary) |
Backlight off | Fn + F3 | Supported with ibm-acpi, acpid and radeontool |
Backlight off
I turned this into something more like a backlight toggle by using this script as /etc/acpid/backlight.sh for acpid:
#!/bin/bash RADEONTOOL='/usr/local/sbin/radeontool' status=`$RADEONTOOL light`; if [[ "$status" = "The radeon backlight looks on" ]] ; then $RADEONTOOL light off elif [[ "$status" = "The radeon backlight looks off" ]] ; then $RADEONTOOL light on fi
You must first grab radeontool and copy it to /usr/local/sbin for this to work, of course. The script itself was stolen from someone else (whose name I forgot -- sorry!) and modified to work with the current version of radeontool.
My /etc/acpid/events/backlight looks like this:
event=ibm/hotkey.*1003 action=/etc/acpi/backlight.sh
Various Information
lspci Output
To have all the hardware show up with its proper name, I had to get a new pci.ids file from the Linux PCI ID Repostiory and copy it to /usr/share/misc/pci.ids. I believe newer distributions and kernels won't need that file anymore.
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 Network controller: Intel Corporation: Unknown device 4224 (rev 05)
Things are up and running, WLAN and all, and I will update this article with the details once I have the time :)
... To be continued ...
Complaints
It appears to me that even when the CPU is clocked down to 800 MHz, the CPU fan is very noisy and blows practically non-stop at the same speed. Does anyone else think this simply shouldn't be the case with a laptop this pricy? I've seen some that cost half as much, have a comparable processor and aren't as noisy. Is this simply a symptom of e.g. the graphics card's frequency scaling not being supported yet? I'd love some discussion about this.
I use a script (started from a an rc.d script as a daemon) to check the temperatures and turn the fan on or off depending on the temperature:
#!/bin/sh MAXTEMP=55 while [ 1 ]; do fan=no for temp in `sed s/temperatures:// < /proc/acpi/ibm/thermal` do test $temp -gt $MAXTEMP && fan=yes done command='disable' test "$fan" = "yes" && command='enable' echo $command > /proc/acpi/ibm/fan sleep 20 done
Seems like a solution, thanks :) Author of the script It's not really a solution, mearely a temporary fix. The ideal solution would be to find out how to control the fan speed. At low speed the fan is not noisy ==> work for ibm_acpi!
I cannot see /proc/acpi/ibm/fan yet, perhaps it's because /etc/init.d/acpid tries to load any and all available acpi modules when the system boots, so a module is already filling places that ibm_acpi wants to take. I'll reconfigure it so it leaves out "fan" and "thermal" and see if ibm_acpi can then grab those two.
It appears that wasn't the problem, but that the ibm-acpi that ships with 2.6.11.7 doesn't have the experimental fan adjustment support. I downloaded the latest available version and will try with that.
It works when using the downloaded ibm-acpi and when that's loaded with the "experimental=1" option.
All of this info is available on a separate page in this wiki, I'll link to it and add some text in the "CPU" section about fan noise.