Initial Step
The initial step was to boot an
Ubuntu Live CD (Hoary Hedgehog
was current at the time). Once booted I reconciled the output
of the lspci command with the list of modules
loaded. The results of Ubuntu's hardware detection confirmed
some guesses and provided some information that I wouldn't have
guessed - I think I saved a lot of time by doing this.
Preliminaries
I decided to use the Hitachi HTS548080M9AT00 disk that I'd previously upgraded to in my old laptop. The idea was to save on setup time. The T43 came with a 5400 RPM 40GB disk and my old disk was a 5400 RPM 80GB disk. The BIOS complained that the disk might not be properly supported, so I downloaded some new firmware and reflashed the disk under Windows - this seemed to be the only option... and I was in a hurry! I also needed a machine with a floppy drive, so I used the one in my old T22.
I started with a standard
kernel.org
2.6.11.12 kernel but have since moved to 2.6.15.
Hardware and Kernel Drivers
IDE Controller
0000:00:1f.2 IDE interface: Intel Corp. 82801FBM (ICH6M) SATA Controller (rev 03)
Although Ubuntu showed the disk as sda and the
CD-ROM drive as sr0, I missed this hint. First I
tried the PIIX IDE driver with associated IDE device drivers.
ATA/ATAPI/MFM/RLL support (IDE) [Y/n/m/?] y
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (BLK_DEV_IDE) [Y/n/m/?] y
Intel PIIXn chipsets support (BLK_DEV_PIIX) [Y/n/m/?] y
Include IDE/ATA-2 DISK support (BLK_DEV_IDEDISK) [Y/n/m/?] y
...
Include IDE/ATAPI CDROM support (BLK_DEV_IDECD) [M/n/y/?] m
This configuration worked but I could not enable DMA on the disk. After some random Google searches I decided to try the PIIX/ICH SATA driver.
SCSI device support (SCSI) [Y/m/?] y
...
SCSI disk support (BLK_DEV_SD) [Y/n/m/?] y
...
SCSI CDROM support (BLK_DEV_SR) [M/n/y/?] m
...
* SCSI low-level drivers
Serial ATA (SATA) support (SCSI_SATA) [Y/n/?] y
...
Intel PIIX/ICH SATA support (SCSI_ATA_PIIX) [Y/n/m/?] y
The help for the last option says this, so I've left the IDE driver compiled in as well.
This option enables support for ICH5 Serial ATA.
If PATA support was enabled previously, this enables
support for select Intel PIIX/ICH PATA host controllers.
This works nicely.
I discovered after a while that DMA wasn't working on the CD-ROM
drive either. As of Linux 2.6.14 libata will
handle ATAPI drives and provides a boot (or module) option to
enable this. There have been comments about ATAPI support being
experimental, but it seems to work just fine for me. I have
this in my kernel command-line options:
libata.atapi_enabled=1
Works like a bought one! I've now compiled all the IDE support as modules and have none of it loaded. I'll remove it from my configuration next time I compile a kernel.
Sound card
0000:00:1e.2 Multimedia audio controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)
It uses the SND_INTEL8X0 PCI driver:
Sound card support (SOUND) [Y/n/m/?] y
*
* Advanced Linux Sound Architecture
*
Advanced Linux Sound Architecture (SND) [M/n/y] m
...
*
* PCI devices
*
...
Intel/SiS/nVidia/AMD/ALi AC97 Controller (SND_INTEL8X0) [M/n/?] m
Initially, the default settings for esd under GNOME
caused distorted output. Changing the sample rate to 48000
fixed this problem. I added a line containing
default_options=-r 48000 to
/etc/esound/esd.conf to make this permanent. Then
something changed, presumably in the driver, and the sample rate
of 48000 was causing things to sound horrid. My first step was
to remove the above esd setting, which improved
things. My second step was to simply stop using
esd and start using ALSA directly. Much better!
Wired Network Card
0000:02:00.0 Ethernet controller: Broadcom Corporation: Unknown device 167d (rev 11)
Ubuntu used the tg3 driver.
* Ethernet (1000 Mbit)
...
Broadcom Tigon3 support (TIGON3) [M/n/y/?] m
Initially this card didn't seem to support MII and I had to do
some strange hacks to laptop-net to get it to play
nicely. Since then, probably with a new kernel version, MII
started working and everything works as expected.
Wireless Network Card
0000:04:02.0 Network controller: Intel Corp. PRO/Wireless 2200BG (rev 05)
Ubuntu used the ipw2200 driver. Linux 2.6.15
includes version 1.0.8 of this driver, which looks to be the
latest. It was first included in the mainline kernel in version
2.6.14, although this was only version 1.0.0. Prior to that I
was used version 1.0.8 courtesy of the
ipw2200-source Debian package. The main web site
for this driver is at
Sourceforge.net.
To use the driver you have to download some
firmware.
I installed it in /lib/firmware, ignoring some
documentation.
I'm using netapplet to control this interface.
USB
0000:00:1d.0 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
0000:00:1d.1 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)
0000:00:1d.2 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)
0000:00:1d.3 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)
0000:00:1d.7 USB Controller: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)
These work with the EHCI and UHCI drivers. I've compiled them as modules so they can be unloaded when suspending (see later).
Support for Host-side USB (USB) [M/n/y/?] m
...
*
* USB Host Controller Drivers
*
EHCI HCD (USB 2.0) support (USB_EHCI_HCD) [M/n/?] m
...
OHCI HCD support (USB_OHCI_HCD) [N/m/?] n
UHCI HCD (most Intel and VIA) support (USB_UHCI_HCD) [M/n/?] m
Modem
0000:00:1e.3 Modem: Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03)
I've compiled the Intel MC97 modem driver.
Sound card support (SOUND) [Y/n/m/?] y
*
* Advanced Linux Sound Architecture
*
Advanced Linux Sound Architecture (SND) [M/n/y] m
...
*
* PCI devices
*
...
Intel/SiS/nVidia/AMD MC97 Modem (EXPERIMENTAL) (SND_INTEL8X0M) [M/n/?] m
I've tried using this module, and I've also compiled various non-standard modules, but I haven't been able to get the modem working.
X
0000:01:00.0 VGA compatible controller: ATI Technologies Inc M22 [Radeon Mobility M300]
This works fine using the radeon driver under the
X.Org X Server (currently 6.8.2.dfsg.1-10 under Debian
unstable). It didn't work under XFree86 when I initially tried
it.
This configuration doesn't support accelerated 3D graphics, but I can live without that.
There's one problem I haven't yet solved (although I haven't tried recently). If X is started while the laptop is connected to an external monitor, I can never get anything to display on the laptop's LCD screen under X.
Software Suspend
I downloaded the Software Suspend
2 patch and hibernate script. I accepted
something resembling the default options when I configured my
kernel. Debian has a hibernate package, but it was
one version out-of-date, so I applied the Debian patches as best
as possible to the newer version and built a package and
installed it.
This generally works flawlessly (but see below). Following a
recommendation found via a random Google search, I've configured
/etc/hibernate/hibernate.conf to remove the
tg3 driver before suspending (via
UnloadModules tg3 - and reload it via
LoadModules auto). I've also configured it to
bring down my network interfaces before suspending - I bring
them back up manually as needed. I also restart Postfix (via
RestartServices postfix and run Anacron upon
resume (StartServices anacron).
Occasionally the machine hangs when suspending. I get messages that say something like "scheduling while atomic". I've got some debugging enabled to try and help track this down.
One important thing is that LZF compression needs to be built into the kernel.
*
* Cryptographic options
*
Cryptographic API (CRYPTO) [Y/?] y
...
LZF compression algorithm (CRYPTO_LZF) [Y/n/m/?] y
I also added the following lines to
/etc/hibernate/hibernate.conf:
ProcSetting disable_encryption 1
ProcSetting compressor lzf
I found this in the mailing list archives - it seems that the new encryption API in version 2.1.9.5 is broken, although I'm now using 2.2-rc9.
One vaguely undocumented thing is that, when using the
swapwriter, more recent versions of Software Suspend 2 require
the default resume location to contain the prefix
"swap:", as follows:
CONFIG_SUSPEND2_DEFAULT_RESUME2="swap:/dev/sda5"
Other
-
IRDA works fine. I did nothing special to set it up compared
to my old laptop - I had the right kernel modules selected and
had
irda-utilsinstalled and setup from my previous laptop. When I set that up I just followed a HOWTO... -
I'm using all manner of ACPI stuff, along with the
speedstep_centrinomodule. The GNOME CPU Frequency Scaling Monitor is a pretty way of watching what's going on with the CPU. I let the battery run down the other day and the machine didn't auto-suspend before it died. Since then I've put in an ACPI event handler for battery events and modified a script I downloaded to act as the ACPI battery handler - I took out the polling and the machine now hibernates when the battery is low (I hope! :-) I'll make these snippets available here if anyone asks... -
I had this problem under Linux 2.6.11.12:
Jun 21 14:19:27 localhost kernel: irq 11: nobody cared! ... Jun 21 14:19:27 localhost kernel: Disabling IRQ #11
This was inconvenient, since a lot of the hardware is on IRQ 11!
I also had problems where the system clock would become very wrong in a small amount of time. After some Google searches, I changed these kernel configuration options:
-# CONFIG_X86_UP_APIC is not set +CONFIG_X86_UP_APIC=y +CONFIG_X86_UP_IOAPIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y ... -# CONFIG_X86_PM_TIMER is not set +CONFIG_X86_PM_TIMER=y
I'm not sure how relevant those changes are but both of the above problems have gone away.
Conclusions
Apart from the modem, everything seems to work fine.