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 FedoraCore2
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.
kernel: 2.6.6 stock Fedora kernel
ACPI: battery/temperature reporting, CPU states, button events; all OK
CPU: cpufreq in kernel with cpuspeed daemon does enhanced
speedstep cycling (600-1600MHz in 6 steps), also power saves
via C-states
X: radeon driver in X.org's release works fine, screen blanks
properly
RPMs: many RPM repositories now have Core 2 trees, I like freshrpms via yum
Wireless: ndiswrapper with Dell's windows driver works fine
NTFS: get Linux-NTFS module to enable read/write access to NTFS partitions
DVD+RW: no problems, no longer uses scsi-emulation, K3b is an excellent DVD burner program
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.
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).
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
For more info on the ACPI implementation under linux see the ACPI4Linux
site
Disable PCMCIA beeps by supplying quiet option to
/etc/sysconfig/pcmcia (CARDMGR_OPTS=q)
Enable AGPx4 mode over the default 1x in /etc/X11/XF86Config (add
Option "AGPMode" "4" to radeon device section)
Enable DMA/32-bit IDE access and drive power management on boot through
/etc/sysconfig/harddisks (EXTRA_PARAMS="-B128 -W1 -u1 -S60"). Hitachi 60Gb disk delivers around
28 Mb/s.
Download some usefull add-on software packaged for RedHat 9 using freshrpms.net. These are in particular good for DVD functionality.
Todo: ALSA sound, Conexant modem driver, ATI's Powerplay
under X??