Running Debian Linux on a Dell Latitude D810

Last updated 2007-04-21 17:59:49 (+0200)


This page describes how I installed Debian Linux on a Dell Latitude D810. That is the page describes how I think one should do, the actual route I followed was a lot less direct with may false leads etc.

The hardware

My machine was configured like this: Initial impressions are good. The screen is wonderful and the keyboard feels nice. They machine is equipped with both glide-pad and a small steering pin. It does not have any PS/2 connectors but four USB ports (two in the back and two on the right side). According to the indicator the battery should be good for almost three hours. We will see about that...

Update: The expected battery life is heavily affected by the CPU speed (so frequence scaling works wonders) and display brightness. It seems that I can get close to four hours out of one battery with a dim screen and slow CPU.

Initial installation

The system came preinstalled with Windows XP. The XP partition took up the whole disk (except for a small Dell-specific partition). I shrunk the XP partition down to 7GB to give me room for Linux.

I used rc3 of the sarge installer. Initially I tried to use the 2.6-kernel but that one could not see the internal SATA hard drive so I reverted back to the 2.4 kernel. Using that the installation went without any problems.

Kernel

Switching over to a 2.6-kernel turned out to be much harder than expected. There turned out to be a lot of steps to perform.

The root disk is a SATA disk and thus the 2.6-kernel designates it as sda instead of hda which 2.4 uses. So the first thing one must do is to change /boot/grub/device.map to read:

(hd0)   /dev/sda
Then change the kopt settings in /boot/grub/menu.lst to read (/dev/sda5 is my swap partition):
# kopt=root=/dev/sda3 ro resume2=/dev/sda5
# kopt_2_4_27=root=/dev/hda3 ro

Currently I am running a custom built 2.6.15.1 kernel. The main reason for this is that I am using software suspend 2 to handle suspend/resume. See blow for details about setting up software suspend.

I downloaded my kernel source directly from kernel.org. Support for CD-ROM devices on a SATA bus is still experimental so I had to manually got in and edit the code. More exactly I had to edit drivers/scsi/libata-core.c and change line 81 from

int atapi_enabled = 0;
to
int atapi_enabled = 1;

Interested persons can view my entire .config for 2.6.15.1.

CPU frequency scaling

CPU frequency scaling works. I just made sure the relevant modules are loaded at boot by adding the following to /etc/modules
cpufreq_userspace
speedstep_centrino
Then I just installed powernowd.

Hibernation

I had a number of problems with hibernation but have now managed to get it working reliably. I have not been able to get suspend to memory (S3) to work (the system is strange when resuming) but suspend to disk, aka hibernation, works.

I am using software-suspend2 from http://www.suspend2.net/. This involves patching the kernel. I am now using version 2.2 of software suspend. I had to perform a number of steps to get this to work, the following is my recollection of them:

  1. Patch the kernel with the suspend2-2.2-for-2.6.15.1 patch.
  2. Update /boot/grub/menu.lst to reference my swap partition as the resume device.
    # kopt=root=/dev/sda3 ro resume2=/dev/sda5
      
  3. I am using mkinitrd to build the initial ramdisk. This initial ramdisk must be modified to request resume. To do this I placed the following script in /etc/mkinitrd/scripts/suspend2.
  4. Now everything is ready for actually building the patched kernel.
  5. I manually downloaded and built the suspend2ui program. The program is available from http://www.suspend2.net/.
  6. Install the hibernate package (it is available via atp-get). I had to edit /etc/hibernate/hibernate.conf. My hibernate.conf file is available. Note that I installed my suspend2ui program in /usr/local/sbin/suspend2ui_text. Adjust the configuration file to reflect your location.
  7. To make the system hibernate when the user presses the "Stand by" button create a file called /etc/acpi/events/sleepbtn with the followign contents:
    event=button[ /]sleep
    action=/usr/local/sbin/hibernate
    
    The irony is that the keyboard has a "Hibernate" button but ACPI does not see it so I had to bind hibernation to the "Stand by" button instead.

Networking (Cable & Wireless)

The built in NIC uses the Broadcom chip and once I enable the drivers it worked without a hitch.

When ordering the system I had a choice between three different integrated wireless cards. I chose the Intel Pro wireless 2200 since it has open source drivers (which require some priopietary firmware:-(). The driver can be found at http://ipw2200.sourceforge.net/.

Sound

Alsa supports the sound chip. But one problem is that the master volume control is ineffective. Instead I have use the PCM control which does have the desired effect. I will investigate this issue further.

X11

The video card is a ATI Radeon Mobility X600 card. I had to use the proprietary ATI drivers to get it to work. That was fairly easy thanks to the instructions at http://www.stanchina.net/~flavio/debian/fglrx-installer.html.

But of course I had to hit a problem here as well. It turns out that the fglrx kernel module does not work properly after a hibernation. Removing it solves the problem but also disables 3D-acceleration. So the choice is between 3D acceleration and hibernation.

Files

Revision history

Last modified 2007-04-21 17:59:49 by MaF.