Linux on a Dell Latitude D600
RedHat 9.0 with >2.4.22-ac kernel / Fedora Core 2

note: This page is out of date now since the ACPI implementation in recent kernels has greatly improved. You will find that almost everything will work out of the box when running the latest Fedora Core. So be aware that things have moved on since the instructions listed below were compiled (and so have I to a new laptop)...

May'04: I have just performed a fresh install of Fedora Core 2 in place of my RedHat 9 setup which I strongly recommend. My original instructions to upgrade RedHat 9 to get some ACPI functionality etc. are still below. Installing Fedora Core 2 will offer better functionality, has additional advantages and is a more straightforward install for new users. Unfortunately, still no suspend out of the box with Core 2, but all it needs is a little patching.


Configuration

Dell Latitude D600 (BIOS Rev. A03)
Intel Pentium-M 1600MHz CPU
512MB RAM
14" 1400X1050 TFT / ATI Radeon 9000 32Mb AGP graphics
Hitachi 60Gb HD
Dell TrueMobile1400 WLAN 802.11a/b/g (Broadcom 4306 chip, not a true centrino)
Broadcom Gigabit Ethernet
Conexant D480 V.92 Modem
Philips SDVD6004 DVD+RW 2x
Intel/Sigmatel 810/AC97 soundchip
Accessory: LaCie d2 USB2.0 Hard Drive

Fedora Core 2 (Tettnang)

I did a fresh custom install of Fedora Core 2 using the covenient DVD-iso which I burned to a DVD+R using the internal writer. Manually partitioned to preserve NTFS partition with Windows XP. A fedora module for the NTFS r/w driver is available to get full acess to this partition under linux. ACPI implementation is much better than in Redhat 9 thanks to kernel with acipd/cpuspeed deamons. Of course, overall many other improvements thanks to the 2.6.5 kernel, KDE 3.2.2, ALSA sound etc. The main dissapointment was that ACPI suspend still did not work out of the box (it suspends, but video never comes back; fix available!). The internal wireless is easily activated using ndiswrapper, screen blanks properly, and power-button by default is assigned to a clean shutdown.

Get working suspend-to-ram under Fedora Core 2

August 04:A new kernel patch is available to deal with S3. Please see
Emmanuel Thome's instructions to create a suitable kernel.

The old way involved a patch to the radeon driver to wakeup video after suspend. The new kernel patch listed above is reportedly more stable and the preferred method. The old patched radeon driver does recover from suspend but leaves USB in an unhappy state. I have put this sequence of events in a simple script (/etc/acpi/actions/sleep) and use acpid to perform this sequence whenever the suspend button (Fn+Esc) is pressed. This is work in progress, the script is just a quick and dirty recipe for now.


Old stuff below, not currently the best way to go

Original install: RedHat 9.0 with custom 2.4 kernel

This serves to aid those who like to use power management features on the Dell D600 notebook and related systems under linux (using RedHat 9 in particular). Without BIOS APM support, kernel patching is required to use ACPI on a redhat system and access some of its capabilities. Recent 2.4 series kernels can actually provide a nice suite of power-management facilities for this laptop.

Latest updates (last change Oct 2003):
Aug 8 ; enhanced speedstep now works
Aug 12; radeon screen blank fixed
Aug 26; updated DVD writer info
Aug 28; kernel 2.4.22-ac1 released, this should be the kernel of choice now
Sep 22; added cpudynd daemon and removed some now outdated stuff
Sep 26; added LaCie USB hard disk info
Oct 8; ATI offers new linux
drivers for XFree-4.3
Oct 23; Linuxant offers wireless support via
DriverLoader (free trial availabe)!

RedHat 9.0 install

CD-ROM install proceeded without problems in graphical mode. I always do a custom install and make my own partition table to make sure the existing NTFS partition belonging to Windows XP was saved (and accessible via grub). PartitionMagic was used to split the 60Gb disk and make some space for Linux. After installing, apply the stack of RedHat errata for 9.0 and add some usefull utilities via freshrpms.net. With the way RedHat is going, its worth checking out yum to facilitate package installs and updates.

ACPI via kernel 2.4.22-ac (or later)

This turned out to be the combination that worked well for me and doesn't require manual patching to get ACPI functionality. Get the full 2.4.22 source-code, and apply the latest Alan Cox patch 2.4.22-ac (essential for speedstep/cpufreq capability).

Configure the kernel as you wish. Easiest is to start off with the redhat config, then I disabled APM, enabled all ACPI features. Make sure to enable CPU frequency scaling and include enhanced speedstep driver (needs the Alan Cox patches). Other things to check are AGP/DRI and framebuffer drivers for the Radeon, Broadcom tg3 driver for ethernet, Intel i8xx kernel driver for sound and the NTFS driver for access to my Windows XP partition. The Dell i8k module that is very usefull on many Dell laptops works when forced (insmod i8k force=1), but temperature info etc is already available via acpi.

Rebooting into this kernel now brings up a nice ACPI aware system. No need to patch DSDT if you are using this version in conjunction with an A03 BIOS machine. All ACPI info is there in /proc/acpi, KDE battery monitor is working, CPU states are reported correctly by ACPI (7 P-states spanning 600-1600MHz), but one cannot actually switch to lower clock frequency via ACPI (only P0/P1 are acessible wich are both 1600MHz states). Instead use cpufreq that you should have compiled into the kernel. Then /proc/cpufreq lets you drive the Pentium-M to various clocking states (as low as 600MHz). Throttling via ACPI also works (8 states), but is not as battery efficient as speedstep/cpufreq.

X: Radeon graphics

With this setup, direct rendering on the Radeon works (AGPART/DRI loaded correctly; 800 FPS with glxgears on 24-bit X-desktop), and also the Radeon framebuffer support is there. Unfortunately, screen DPMS is not working, screen is blanked rather than switched off (known XFree86/radeon bug) which doesn't save power. A fix has been found and should be available in the next XFree86 release, or you can patch the driver yourself. This can save up to 8W of power (see below). Ethernet, DMA/32-bit access to the hard-drive, sound and USB2.0 all work nicely. The proprietary ATI drivers that are compatible with XFree4.3 do seem to offer higher 3D speeds (1400FPS in glxgears), but console switching freezes the system (probalby interfering with the compiled kernel radeon DRI/framebuffer) and the implemented TV-out didn't seem to work for me.

Wireless

The internal wireless card based on a Broadcom 4309 chip is not currently supported via an open-source linux driver. However, it was pointed out to me (thanks Hendrik) that Linuxant recently announced support for the Broadcom wireless chips (including the one in Dell TrueMobile 1400) through a linux wrapper called DriverLoader that allows binary windows drivers to be used. DriverLoader is currently offered as a 30 day free trial, though Linuxant indicate that they hope to provide it to end users free of charge.

Enhanced-Speedstep

With pre-release kernels, cpufreq didn't recognise the system as an enhanced speedstep capable centrino, and employed Pentium-4 style clock scaling instead. This lets you drive the CPU to as low as 200MHz, but power savings are not very efficient (numbers below). However, in the final release (2.4.22-ac1 and later) cpufreq works, and recognizes the CPU as an enhanced speedstep capable Pentium-M, with 600-1600MHz states accessible via /proc/cpufreq. Power savings are much better using these modes compared to the P4 frequency scaling modes (see below).

Automatic power management

I use acpid to monitor ACPI events and act accordingly. Power-button sends a clean shutdown (and power off), lid down turns off the screen, and AC/DC status is monitored to send the CPU to a low clock-speed when on batteries and to maximum performance when plugged in (via /proc/cpufreq). Suspend to state S1 (CPU off) also works (resume with powerbutton) as well as state S5 for power off . See Alan Fritz' D800 page for some usefull acpid example scripts. Of course it would be nice to do a proper suspend to RAM/disk. More about this soon (likely via a 2.6 kernel).

CPU load management: cpudyn

This little daemon uses the cpufreq capabilities of your CPU and cycles to a lower or higher state according to load. It works with all cpufreq supported CPUs, including the D600's Pentium-M. At the moment it only supports cycling between two states (600/1600MHz in my case), but is good for keeping the system cool under low load without limiting performance when load demands it. Add a link to /etc/rc.d/rc5.d/ to start the daemon automatically during boot. I didn't like the default switching parameters, but these can be changed in the configfile or passed via the commandline.

Power drain

Some measured power usage levels (single 48Wh battery, using /proc/acpi/battery/BAT0/state->present rate).

Using enhanced speedstep states:
600 MHz, full load, screen bright : 22.0W
1.0 GHz, full load, screen bright : 25.0W
1.2 GHz, full load, screen bright : 27.5W
1.6 GHz, full load, screen bright : 35.0W
1.6 GHz, low load, screen off : 16.0W
600 MHz, low load, screen off : 12.4W

Using the P-4 frequency scaling mode of cpufreq (pre 2.4.22):
1600MHz, full load, screen brightest : 33.5W or 1.4 hours with a 48Wh battery
600MHz, full load, screen brightest : 27.6W or 1.7 hours
1600Mhz, full load, screen off : 26.5W or 1.8 hours
1600MHz, low load, screen brightest : 23.1W or 2.1 hours
1600MHz, low load, screen dimmest : 19.3W or 2.5 hours
1600Mhz, low load, screen off : 15.9W or 3.0 hours

The screen uses up to 7W and cpufreq frequency modulation only leads to modest improvement compared to speedstep states (20% drop in power after threefold drop in clock). At least the CPU seems to switch to proper low power idle states during low load, dramatically increasing battery life (three C-states are reported via ACPI).

DVD writing using the DVD+R drive

XCDROAST (RPMs) has always been my favorite CD burner program under linux and through the use of cdrecord.proDVD supports writes to DVD media. I have so far only tried DVD+R discs on the internal Philips drive, which works smoothly at 4.7Gb capacity and 2X speed. Created data DVDs read fine on a couple of DVD readers on other machines. Note that cdrecord.proDVD needs a (free) key to make it work. Just checked out K3b, a very capable and user friendly CD/DVD burner program with a KDE interface, check it out!

LaCie USB hard drive

The two USB2.0 ports on the back are supported, and I have successfully attached a 250Gb LaCie d2 USB2.0 hard drive. This USB2/Firewire800 drive is picked up by the usb-storage driver and after setting up an ext3 partition with fdisk/mkfs works nicely as a plug and play backup device that I share with other linux boxes. USB2.0 provides 480Mbits/s throughput but the drive seems to deliver around 106Mbits/s read performance. The Lacie drive looks great and feels solid and is silent (no fan, case cooled).

Misc

Last modified August 18 2004