[Université Paris Diderot, INRIA]

Pierre Letouzey

Debian sur un Dell Latitude D810

TODO: Désolé, la traduction française reste à faire

Some notes concerning the installation of Debian (Etch/Unstable) on my D810. This page is certainly not the first about Debian and this laptop, see for instance the one of Thomas Dilts. But, well, you may find here some additional and/or updated tips...

By the way, my main laptop page has some pictures of the beast. Have you seen them ?

Initial installation

For an installation via cdrom, you'd better use a really recent Debian-Installer CD, since the D810 comes with a SATA ATAPI drive. Check here for more information on compatible Installer versions. Then, even when support for SATA ATAPI is available, it's still considered experimental, hence disabled by default. You will currently have to enable it manually at the boot prompt of the CD:

install libata.atapi_enabled=1

You can then proceed freely with the rest of the installation...

Recent Debian Installers are supposed to propagate options like this atapi_enabled=1 of module libata to the final system, hence your CD drive should work out of the box after installation. If not, reactivate it manually:

echo "libata atapi_enabled=1" >> /etc/initramfs-tools/modules
update-initramfs -u

After installation, doing a general upgrade might be a good idea.

apt-get update
apt-get dist-upgrade

This way, you should get modular Xorg 7.0 and a recent linux kernel. Beware: for a working suspend-to-ram, you need at least 2.6.16 (earlier kernels have issues with SATA and power management), and not 2.6.17 (see this bug report). So currently:

apt-get install linux-image-2.6.16-2-686 linux-headers-2.6.16-2-686

X11

X Configuration

Here comes my xorg.conf file. It's amazing how this file has become straightforward compared with last decade's good old XF86Config. Points of interests of my config:

  • Some ad-hoc values to speed-up the synaptics touchpad. If you want to play with these values on-the-fly, see synclient of package xserver-xorg-input-synaptics.
  • For beamer presentations, you may activate a few lines that allow the external video output to operate at a different frequency or even a different resolution (say 1024x768 for an old beamer). Depending of the beamer, these lines may be required or not. Moreover, using a partially duplicated screen can also be handy: others see only the upper-left 1024x768 of your screen, while you can use the rest of the screen for various stuff like notes, clock, etc.
  • By default I use the open-source radeon driver. Concerning 3D and the proprietary driver fglrx, see below

3D

3D should be directly enable with the current open-source radeon driver. Currently I have Debian package xserver-xorg-video-ati in version 6.5.8.0-1 and package libgl1-mesa-dri in version 6.4.2-1.1. To check whether 3D is available, run program glxinfo of package mesa-utils, and look for a line with "direct rendering: Yes". My current output of glxinfo. You can play various games such as chromium or use google-earth for a while. Unfortunately I currently experience almost systematically a complete lock-up after several minutes of 3D use. Since 3D support of this video card (Radeon Mobility X600, a.k.a. M64 1P, a.k.a. RV380) is mentioned to be highly experimental, I haven't tried yet to debug these crashes. Wait and see...

In the meantime, a safer but less satisfactory solution is to switch to the proprietary driver fglrx. For that, do as root:

apt-get install fglrx-driver fglrx-kernel-src
cd /usr/src/
tar xf fglrx.tar.bz2
cd linux-headers-2.6.16-2-686
make-kpkg --append-to-version=-2-686 module-image
cd ..
dpkg -i fglrx-kernel-2.6.16-2-686*.deb

Then quit X, remove modules radeon and drm, load module fglrx instead, adapt xorg.conf accordingly, and re-launch X. Update: I just experienced a crash while doing that. Rebooting before re-launching X with a different driver seems safer. For information, the output of glxinfo when using this driver.

Beware: if you decide at some place to switch back to the open-source driver, don't forget to remove fglrx-driver, otherwise its own libGL.so will remain, hiding the one of open-source DRI.

Sound buttons

They corresponds to keycodes 174, 176 and 160. If you want to use then to control the sound level (or whatever task you want), do something like:

echo "keycode 174 = F24" >> ~/.xmodmap
echo "keycode 176 = F25" >> ~/.xmodmap
echo "keycode 160 = F26" >> ~/.xmodmap
xmodmap ~/.xmodmap

Then ensure that the last line is executed at each X launch (see .xinitrc for instance). The final config depends on your window manager. For example, I have in my .fvwm2rc the following lines:

Key F24     A       A      Exec aumix -v-5
Key F25     A       A      Exec aumix -v+5
Key F26     A       A      Exec aumix -v0

ACPI

Suspend-to-ram

The most interesting feature provided by ACPI is certainly suspend-to-ram, a.k.a. S3 sleep, a.k.a. "back-to-work-in-a-couple-of-seconds". And the _really_ good news is: it should work out-of-the-box, as soon as you have the right versions of packages.

Of course, the most important is the kernel version: as said above, Debian package linux-image-2.6.16-2-686 is fine, while those <= 2.6.15 have an issue concerning S3 and SATA, and 2.6.17 kernels seem bugged with respect to S3 (see here).

Secondly, X11 seems to play a crucial role when waking up the video card: suspend from the linux console leads to black screen at wake-up. I advise you to get a recent Xorg, see the previous version for the precise version I'm using. S3 works with both the open-source radeon driver and proprietary fglrx driver.

For actually suspending the laptop, do as root from X11:

echo mem > /sys/power/state

For information, after a suspend cycle, the linux console may be broken if you're using the open-source radeon driver. Well, you don't really need to see any nasty console messages during later suspends, do you ?

Suspend-to-disk

I'm not using this other nice feature of ACPI any more, so I can't tell much about it, except that it worked well the few times I've used it, without any particular configuration, as far as I recall. Just do a:

echo disk > /sys/power/state

Power savings

When on battery, you may want to save as energy as possible. You can use cpufreq to slow down the processor (see kernel modules speedstep-centrino, cpufreq-ondemand and cpufreq-powersave). More generally, the laptop-mode Debian package allows to customize the behavior of the laptop when on battery. Even with this, battery life seems way shorter than under windows (about 2h30), so something is still wrong. More on that later...

Wireless

The internal wireless card works fine with the default Debian ipw2200 driver, provided you download and install correctly some firmware files. With my current kernel 2.6.16, the ipw2200 is in version 1.0.8, so the firmware to fetch is v2.4 (see here for the complete list of firmware version). You should then unpack the content of the archive in /usr/lib/hotplug/firmware. After that, reload module ipw2200, check that everything is OK in dmesg (no "Unable to load firmware" message), and enjoy...

A more recent version (1.1.x) of ipw2200 exists, and is said to bring features like monitor mode. I haven't tried it yet, since I don't really need it, and prefer not to use a hand-compiled module. Let's wait until it reaches the default Debian kernel...

Misc tips

S.M.A.R.T.

It would be nice to be warned some time before a disk failure, wouldn't it ? So I advise you to install S.M.A.R.T. tools (package smartmontools). See for instance this article for details of use. Beware: don't stop nonetheless your regular backups...

Hdparm

Unlike previous linux installations on IDE disk, this time the SATA disk seems to be directly used with correct DMA values, so no hdparm tweaking seems necessary. Current speed is:

% hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   3864 MB in  2.00 seconds = 1935.76 MB/sec
 Timing buffered disk reads:  116 MB in  3.01 seconds =  38.56 MB/sec

Noatime

To prevent unnecessary disk writes, it's possible to stop recording access time of files (atime): in /etc/fstab, add the option noatime to the lines describing your partitions. If you do this, you end with a non-POSIX-compliant system, so things may go wrong. In practice, I haven't noticed any problem. Note that laptop-mode suggests to use noatime when on battery, but nothing prevents you to use it all the time.

Init cleanup

Even if I barely reboot these days thanks to suspend-to-ram, I prefer not to wait all day during these reboots. First, lots of useless stuff may be loaded during boot, so I usually do some aggressive cleaning in /etc/rcS.d and /etc/rc2.d. One solution is to simply kill the symlinks about useless stuff (like portmap, pcmcia, nfs and other depending on your needs). But if you proceed this way, the next Debian upgrade might bring back these symlinks. So using update-rc.d is better, for instance

update-rc.d -f portmap remove

It's always possible to re-activate this startup:

update-rc.d portmap default

Another idea is to start X as soon as possible, since the video mode switch takes a long time, during which other scripts can continue to load in background. So in /etc/rc2.d I've a symlink S05kdm instead of the default S99kdm.

Dev cleanup

Now that Debian uses udev by default, /dev is only populated with existing device, instead of the zillions of useless entries that used to be there. Now comes a purely cosmetic tip: it's slightly sad to see this clean /dev be polluted by lots of compatibility entries pty* and tty* that no program will ever use (except if you're using prehistorical stuff). So in a file /etc/udev/rules.d/000_myown.rules, place:

KERNEL=="pty[p-za-e]*", OPTIONS="ignore_device", NAME=""
KERNEL=="tty[p-za-e]*", OPTIONS="ignore_device", NAME=""

Informations

Processor

Here comes the content of /proc/cpuinfo:

processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 13
model name	: Intel(R) Pentium(R) M processor 2.13GHz
stepping	: 8
cpu MHz		: 2133.000
cache size	: 2048 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx est tm2
bogomips	: 4266.89

Devices

Here comes the list of devices as seen by lspci:

00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03)
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3)
00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03)
00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03)
01:00.0 VGA compatible controller: ATI Technologies Inc M24 1P [Radeon Mobility X600]
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751 Gigabit Ethernet PCI Express (rev 01)
03:01.0 CardBus bridge: Texas Instruments PCI6515 Cardbus Controller
03:01.5 Communication controller: Texas Instruments PCI6515 SmartCard Controller
03:03.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)

Boot log

A boot log given by dmesg.