Linux on the Dell Latitude D600

This document describes and summarizes the installation of Knoppix 3.2 (April 2003, DE) on my Dell Latitude D600 and subsequent modifications of the opeation system. The description should be self-explanatory. However, if there is something not clear, do not hesitate and ask. My email address is at the bottom of this page.

Disclaimer:
I am not responsible for anything that happens to you or your computer if you follow these instructions! You do this at your own risk!


Table of contents


Introduction

This guide (currently a work in progress) might help you to get the most out of your Dell Latitude D600. Mine arrived with Windows XP installed which was useless to me. I have erased and reconfigured the disk and installed on the entire hard disk the Debian system Knoppix 3.2 (April 2003, DE) from the live-CD.
The present model has the following components:
Other on-board components:
Note:
The following information assumes knowledge of how to install a new linux kernel at minimum. Although explicit instructions are given below, knowing how to patch and configure the kernel source will help. More help provides the Linux Kernel HOWTO .

Knoppix installation

Pre-boot

Knoppix boot

Hard disk

The installation of Knoppix on the hard disk has activated the correct DMA mode automatically. In the boot script /etc/init.d/bootmisc.sh there is the entry
/sbin/hdparm -qd1 /dev/hda
The command that yields timings is hdparm -tT /dev/hda. Run the command a few times to make sure its stable and anything else runs on the computer.
 hdparm -tT /dev/hda

 /dev/hda:
  Timing buffer-cache reads:   128 MB in  0.27 seconds =474.07 MB/sec
  Timing buffered disk reads:  64 MB in  2.50 seconds = 25.60 MB/sec

Ethernet

The Broadcom ethernet adapter works with the tg3 module without any problems.

Audio

The OSS i810 driver i810_audio works quite well. However, Mike Hardy recommends to install the the corresponding ALSA drivers to have fully functioning audio. the OSS driver might have some problems with respect to the clock frequency.
The bothering bell during insertion of pcmcia cards can be switched off with the entry
 CARDMGR_OPTS="-qvf"
in the file /etc/default/pcmcia. To disable the beeping when tab completes better reads the hints on http://www.tldp.org/HOWTO/mini/Visual-Bell.html. I have simply inserted xset -b into the $HOME/.xinitrc file.

PCMCIA

The PCMCIA decive is recognized by the Knoppix Debian kernel and seems to work. But the device is not checked yet because I do not have any PCMCIA cards.

USB

The default Knoppix kernel supports USB 1.0 and 2.0. In principle every kernel compiled with
CONFIG_USB=m
CONFIG_USB_DEVICEFS=y
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_UHCI=m
should provide the necessary modules (ehci-hcd, usb-uhci, usbcore) that the USB ports work. Here is my kernel configuration (.config) file. The programm usbview is a nice tool to visualize devices connected with the USB ports. However usbview needs access to /proc/bus/usb/devices, i.e. the entry
none  /proc/bus/usb  usbfs  defaults  0  0
should appear in /etc/fstab.

Post-install

LILO config

Adapt /etc/lilo.conf to your wishes. For example, change the labels in /etc/lilo.conf according to the name of of the linux version installed (cat /proc/version). Furthermore change the line

append="hda=scsi hdb=scsi ... hdf=scsi apm=power-off nomce"
to
append="hdc=ide-scsi apm=power-off nomce"
Or just examine lilo.conf

Kernel update

The linux kernel came with Knoppix (2.4.20-xfs) does not support ACPI (Advanced Configuration and Power Interface) as well as the DRI (Direct Rendering Inteface) of the ATi Mobility Radeon 9000 graphic card. ACPI is a standard that defines power and configuration management interfaces between an operating system and the BIOS. It is meant to supersede the older APM standard (for power management) and provide a generic interface for recognition and configuration of hardware devices. To use ACPI on the D600 a DSDT (Differentiated System Description Table) is necessary. The table contains the DBB (Differentiated Definition Block), which supplies the information and configuration information about the base system. It is always inserted into the ACPI Namespace by the OS at boot time.
Knoppix 3.2 installs XF86 4.3 but the DRI is not enabled hence no 3D graphic driver for the card is available on the system. DRI is a hardware accelerated 3D graphics and also very helpful for DVD playback.
The following procedure describes briefly how to install a new debian kernel source (2.4.21-rc8) with patches from http://savannah.nongnu.org/projects/laptopkernel/ (laptopkernel-2.4.21-rc8-laptop1) and http://gaugusch.at/kernel.shtml .

  1. Become root (su).
  2. To get the kernel source add the line
    deb http://ftp.arege.jp/debian-arege sid kernel-source
    to /etc/apt/sources.list and run apt-get update.
  3. Fetch the kernel source (apt-get install kernel-source-2.4.21-rc8).
  4. Move to /usr/src and unpack the new kernel source (tar -jxvf kernel-source-2.4.21-rc8.tar.bz2).
  5. Rename the directory of the newer kernel source (mv kernel-source-2.4.21-rc8 linux-2.4.21-rc8).
  6. Delete the symbolic link linux (rm linux).
  7. Grab the ACPI and DRI kernel patch (wget http://savannah.nongnu.org/download/laptopkernel/laptopkernel.pkg/2.4.21-rc8-laptop1/laptopkernel-2.4.21-rc8-laptop1.diff.bz2).
  8. Uncompress the patch (bunzip2 laptopkernel-2.4.21-rc8-laptop1.diff.bz2) and patch the kernel source (cd linux-2.4.21-rc8; patch -p1 < ../laptopkernel-2.4.21-rc8-laptop1.diff; cd ..).
  9. Rename the directory of the kernel source to match its version (mv linux-2.4.21-rc8 linux-2.4.21-rc8-laptop1).
  10. Make a new link to linux-2.4.21-rc8-laptop1 (ln -s linux-2.4.21-rc8-laptop1 linux).
  11. Grap the kernel patch to put the DSDT into the initrd (wget http://gaugusch.at/acpi-dsdt-initrd-patch-v0.3-2.4.21-rc1.diff).
  12. Patch the kernel source (cd linux-2.4.21-rc8-laptop1; patch -p1 < ../acpi-dsdt-initrd-patch-v0.3-2.4.21-rc1.diff; cd ..).
  13. In /usr/src/linux/drivers/char/drm/i810_dma.c change the line
    #define DO_MUNMAP(m, a, l)	do_munmap(m, a, l, 1)
    to
    #define DO_MUNMAP(m, a, l)	do_munmap(m, a, l)
    Otherwise the kernel compilation stops with an error.
  14. Move to the kernel directory (cd linux and use the file config-2.4.21-rc8-laptop1 to configure your kernel source.
  15. Build the kernel (make clean; make dep; make bzImage; make modules; make modules_install)
  16. Install the kernel (cp System.map /boot/System.map-2.4.21-rc8-laptop1; cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.21-rc8-laptop1)
  17. Modify lilo.conf according to the example given here and re-run lilo.
  18. Grab the DSDT of Martin List-Petersen (wget http://www.marlow.dk/tech/src/dsdt-d600-a03.aml)
  19. Prepare the initrd using the grabed DSDT
    echo "INITRDDSDT123DSDT123" >> /boot/initrd 
    cat dsdt-d600-a03.aml >> /boot/initrd
      
  20. Reboot. ACPI should come up and work.
  21. Run dmesg and compare it to my dmesg output.

ACPI: Power Management

The power management works paritally. I have installed the acpid daemon (acpid debian package) and load the acpi modules ac, battery, button, fan, processor, thermal, and input at system boot. Here is the output of the battery state (cat /proc/acpi/battery/BAT0/info):
present:                 yes
design capacity:         47730 mWh
last full capacity:      47730 mWh
battery technology:      rechargeable
design voltage:          11100 mV
design capacity warning: 3000 mWh
design capacity low:     1000 mWh
capacity granularity 1:  200 mWh
capacity granularity 2:  200 mWh
model number:            DELL 0001M5
serial number:           21144
battery type:            LION
OEM info:                Sony
I run the program gkrellm (debian package gkrellm) to control the battery status. The current temperature of the system is displayed with cat /proc/acpi/thermal_zone/THM/temperature. Intel's Speedstep technology, CPU throttling and performance driver do not work at the moment. The acpid daemon reads on line at a time /proc/acpi/events and calls a custom handler based on the event string. More information of the daemon provides man acpid and the web page Gentoo on Dell Latitude D800 of Andrew Fritz. Software-power-off works when the power button is pushed. For that if have installed the perl scripts handle.pl (has to be copied to /etc/acpi/) and default (has to be copied to /etc/acpi/events) Andrew Fritz. In principle both script supply the possibility that the notebook starts sleeping when the lid is closed. However, this does not work in my case yet.

Suspend and resume do not work yet. In the ACPI documentation is written how the computer components work together to manage system hardware and which sleep and processor states should exist.

Xserver (ATi Mobility Radeon 9000)

The 2D Xserver works quite well already after the Knoppix installation. However, to enable DRI and and the 3D driver the kernel update is necessary because the agpgart part of the kernel has to be improved. Note: I have compiled the agpgart stuff into the kernel and not as module! Have a look in my kernel config file. Knoppix 3.2 has the packages for XF86 4.3. Nevertheless, I have updated the xlibmesa4 (4.3.0-0ds4) packages from ftp://ftp.skolelinux.no/debian-unofficial/x4.3/sid/i386. Here is my XF86Config-4 file. The DRI test program glxgears yields about 800 fps with approximately 10% CPU usage (on average).

The linux stuff of ATi can be found here. ATi provides rpm packages of their binary only drivers for XF86 4.1 and 4.2. You may get the drivers by going through their menus and accepting their license.

CDRW/DVD

To read/write CD-RWs the ide-scsi module must be loaded and append="hdc=ide-scsi" has to appear in the appropriate stanza in /etc/lilo.conf Furthermore, [re]link cdrom and dvd under /dev.
    rm cdrom
    ln -s sr0 cdrom
    ln -s sr0 dvd
The configuration of cdrdao is quite easy. The configuration file /etc/cdrdao.conf looks like the following:
   write_buffers: 32
   write_device: "0,0,0"
   write_driver: "generic-mmc"
   read_device: "0,0,0"
   read_driver: "generic-mmc"
   write_speed: 24
and you should be up and running. The configuration of cdrecord is found in /etc/defaults/cdrecord and looks like this:
   CDR_DEVICE=hlds
   CDR_FIFOSIZE=4m
   hlds=0,0,0 -1 -1 ""
For more on cd writing see http://www.tldp.org/HOWTO/CD-Writing-HOWTO.html and elsewhere for ide based cdrw drives and cd writing.
To play DVD's upgrade to libdvdread3...

apt-get update
apt-get install libdvdread3 
...and run the script that is included in Debian and Knoppix:
/usr/share/doc/libdvdread3/examples/install-css.sh 
I use xine --auto-play --auto-scan dvd to watch whole DVD movies.

In principle the optical drive is hot-swappable, with full operating system support. This means, the Combo DVD/CD-RW drive can be taken out and another device that fits into the open slot (e.g. floppy can be plugged in. For that the idectl script can be used. Normally the script comes with hdparm (ls -la /usr/share/doc/hdparm/examples/idectl. With idectl 1 off the optical drive can be taken out and put the, e.g. a floppy in. The optical drive works again with idectl 1 on.
NOTE:Use the script on your own risk! It does not work with any ide-scsi stuff loaded. As a check, first remove all the scsi/ide-scsi modules, run idectl 1 off, plug the Combo DVD/CD-RW drive out of the slot and in again and run idectl 1 on. Or just invoke idectl 1 rescan and check whether the Combo DVD/CD-RW works fine.

Keyboard - special keys

The fn keys like volume up and down and the mute buttons and the the Windows button are driven by the hotkeys packages. Here is my hotkeys configuration file. The volume keys are associated with the sound mixer aumix and mute/unmute with the aumute script. The script is adapted from mute/unmute script of Ted Guild for his Dell Inspiron 600m. When the CD eject key is activeted in the hotkeys configuration file the keyboard freezes. I recommend not to define the CD eject button the configuration file. Save the hotkeys configuration file in your ~/.hotkeys as, e.g. latd600.def and run hotkeys -t latd600 when your window manager starts.

Modem

A linux driver is provided by the manufacturer of the modem chip, Conexant, and it works well. Add the entry hsfserial in /etc/modules that the appropriate modules are loaded at system boot.

Infrared device

In principle it work provided the kernel supplies the appropriate models. I did not check the device because I do not have a printer, a mobile phone or something similar which use an infrared device. Anyway, visit also the pages of Ted Guild and Martin List-Petersen.

Wireless LAN device

There are two wrapper programs that use the appropriate Windows XP WLAN drivers within Linux: NdisWrapper costs nothing. For the Linuxant DriverLoader you have to pay a very small amount of money, in principle nothing. I have checked both programs and both are running fine, at least for my purposes. NdisWrapper as well as the Linuxant DriverLoader provide understandable and almost self-explanatory installation manuals.

Status

Subsystem
Status
Updated
Info
Hard Disk - IDE/(U)DMA

07/17/2003 25.60 MB/sec throughput after installation of Knoppix 3.2
Ethernet

07/17/2003 Working out of the box with drivers provided by Knoppix 3.2
Audio

07/17/2003 Works out of the box with drivers provided by Knoppix 3.2
USB
07/30/2003 Works out of the box, but has apparently some problems with external SCSI HDD
Modem

07/17/2003 Found a driver that works well.
ATi Mobility Radeon 9000

07/17/2003 3d (DRI) is enabled
DVD-ROM/CD-RW

07/17/2003
reads CD-RW and DVDs, burns CD-RW
WLAN (Mini-PCI)

03/24/2004 Works with wrapper programs that use Windows XP drivers within Linux
PCMCIA
07/17/2003 Seems to work out of the box, but is not really checked yet
Keyboard - special keys

07/17/2003 partial functional after configuration
ACPI: power Management

07/17/2003 requires kernel 2.4.21-rc8 + patches for ACPI/DSDT, but some things do not work (cpu performance, throttling)
Floppy

07/18/2003
Needs more tests
Infrared

07/17/2003 Haven't even tried it yet.

[ Green - Working/tested ] [ Yellow - Partly working / tested ] [ Orange - Untested ] [ Red - Not working ]

Summary

07/31/2003 -- It turns out to be very easy to use Knoppix to do a Linux install on these relatively "cutting edge" pieces of hardware. However, to support all of the hardware of the notebook (e.g. ACPI, DRI) a new Kernel is necessary and requires much work (at least 1-2 days).

Acknowledgements

First, let me acknowledge that this page is adapted from the pages of Mike Hardy and Austin Murphy about linux on the Dell Latitude D800 and IBM T40, respectively. Additionally, Ted Guild's instructions for running Debian Linux on an Dell Inspiron 600m was my starting point for my installation and very helpful.


For related info and install HOWTO's for other centrino laptops, check out centrino.html .
March 2004 Rene Windiks



Paul Scherrer Institute, Condensed Matter Theory Group