Installing Debian 3.1 (Sarge) on a ThinkPad T43

From ThinkWiki
Jump to: navigation, search


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.

As of Knoppix 4.0, the default 2.6 kernel also works.

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 (Device Drivers → SCSI device support → SCSI low level drivers → <*>Intel PIIX/ICH SATA support (CONFIG_SCSI_ATA_PIIX)), the drive is seen through libata's SCSI emulation as /dev/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.

(2005-11-18) I have found that the new Debian Installer has got rid of the SATA hardisk issue compeletly, since I downloaded the daily-built Debian netinst CD Image from the URL above and successfully installed Debian Sarge on my office desktop PC which is a DELL Dimension 8400 with 250G SATA harddisk. [Joseph WU]

(2005-07-02) Debian Stable 3.1 (sarge) still has this problem.

(2005-09-20) To date the problem has NOT been fixed!

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 FnPgUp Just worked (can also be toggled through ibm-acpi's /proc/acpi/ibm/light)
Display brightness + FnHome Just worked (no software necessary)
Display brightness - FnEnd Just worked (no software necessary)
Backlight off FnF3 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. As a partial solution, 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

See Problem with fan noise for further discussion, alternative scripts and fine-level control of fan speed.


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.

External Sources