Debian GNU/Linux on the Dell Latitude D830

Created on: Nov 7, 2007
Last modified on: Mar 18, 2010
© Numerical analysis team

This page offers some guidelines to install Debian GNU/Linux on a Dell Latitude D830. If you would like to share advices or pinpoint mistakes, send me an email.

Configuration

Hardware components Status under linux Notes
Intel Core Duo T7500 (2.2Ghz 800Mhz) Works Recompile the kernel with SMP.
Nvidia Quadro NVS-140M Works The nv driver works out of the box but with some glitches. NVIDIA driver needed to talk to a data projector.
15.4'' WUXGA (1920×1200) LCD Screen Works Native resolution works out of the box.
120GB IDE (7,200rpm) SATA Hard Drive Works
8× SONY DVD+-RW Drive Works
ACPI Works More investigation is needed for memory and disk suspend.
Broadcom Corporation NetXtreme BCM5755M Gigabit Ethernet PCI Express (rev 02) Works module tg3 (included in the 2.6 kernel).
Intel PRO/Wireless 3945 802.11a/g Mini Card (54Mbps) Works Driver iwl3945 included in the kernel ≥ 2.6.24 (also works with the ipw3945 module).
Internal V.92 Modem Works Requires proprietary Linuxant driver and kernel version at least 2.6.16.
Intel Corporation 82801H (ICH8 Family) High Definition Audio Controller Works (including recording) Requires latest alsa drivers.
D830 Bluetooth Card Works Tested with a mouse.
USB Works  

Basic installation

This laptop came with windows Vista.  Vista has a disk partioner but it would not let me resize the C: partition under about 50Gb (even after I turned vitrtual memory of and defragmented the disk).  So I used a GParted Live CD to shrink Vista to 20Gb (I will use it only very occasionally so I don't want to give it too much space).  Have a cup (or two) of coffee, this takes a long time.  Then reboot Vista.  The "Startup Repair" will kick in (have a rest); one more reboot and "chkdsk c:" will be executed.  In the end, Vista will accept the changes anyway!

The testing version of Debian combines enough stability for a desktop use (actually, I never got any serious problem) and recent software. So the weekly built images of the Debian testing Installer were used to set up Debian.  You must select the amd64 architecture (debian-testing-amd64-CD-1.iso is enough to install, you can get other packages from the web).  The rest of the installation is painless.

Compiling a custom kernel

The procedure is standard: download the kernel source, unpack it in /usr/src/, install kernel-package, configure your kernel (with e.g. make menuconfig), build it with

make-kpkg clean
make-kpkg --revision=custom.1.0 kernel_image
and finally install it with dpkg -i ../linux-image-2.6.25_custom.1.0_i386.deb.

Note that, since the disks are SATA, you do not need the ATA modules but instead build in the kernel the SCSI ones with the libata driver (see my .config). As a consequence, your disks are not labeled anymore /dev/hda1,... but /dev/sda1,... The kernel root parameter in /boot/grub/menu.lst must be set accordingly  (do not modify the boot section directly, set the kopt comment):

title Debian GNU/Linux, kernel 2.6.25
root (hd0,5)
kernel /boot/vmlinuz-2.6.25 root=/dev/sda6 ro
savedefault
boot

The file /etc/fstab must also reflect this.  For example, mine reads

/dev/sda6 / ext3 defaults,errors=remount-ro 0 1
/dev/sda10 /home ext3 defaults 0 2
/dev/sda7 /usr/local ext3 defaults 0 2
/dev/sda9 /var ext3 defaults 0 2
/dev/sda8 none swap sw 0 0
# etc.

Nvidia Quadro NVS-140M TurboCache graphic card

The open source driver nv works out out the box at the correct resolution (in my case 1920 × 1200). BTW, ignore the people who tell you 1920 × 1200 will make everyting too small.  I personally love the sharp and fine details — and you can always make your font larger anyway (and many applications allow you to zoom in if so you wish). I recommend you to set the DPI to 120 — if you use gdm, lauch gdmsetup as root, go to the "security" tab, click on "Configure X Server..." and replace the command with /usr/bin/X -dpi 120 -audit 0.  It is recommended to use the device /dev/input/mouse1 instead of /dev/psaux for the synaptics driver.

One important feature I need is to be able to make presentations.  For the VGA port to work correctly, you need to download the NVidia proprietary driver installer and run it.  Alternatively, you can do it the Debian way: install nvidia-glx, nvidia-kernel-source (at the time of this writing, these packages are in unstable, so you need to add a line like deb http://ftp.fr.debian.org/debian/ unstable main non-free contrib to your /etc/apt/sources.list to get them), nvidia-settings and kernel-package.  Then follow the instructions in /usr/share/doc/nvidia-kernel-source/README.Debian to build the kernel module.

To use a kernel version ≥ 2.6.25 with nvidia-kernel-source 169.12-1, apply the patch provided by nvidia on their forums by going to the directory /usr/src/modules/nvidia-kernel/ and issuing

patch -p2 < path/to/NVIDIA_kernel-169.12-2286310.diff.txt

However, we recommend you use nvidia-kernel-source 173.14.09 or above where the problem is fixed. Then compile the module with m-a --not-unpack build nvidia and install the resulting debian package.

Then enable twinview — in clone mode if you also like to see your presentation on your laptop screen. Details are in my xorg.conf file (in the Device section). I use xrandr to select dynamically which mode I want among the followings:

Getting OpenGL to work was a bit tricky.  For a start, the server and client libraries vendor did not match:

$ glxinfo | egrep "glx (vendor|version)"
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
client glx vendor string: SGI
client glx version string: 1.4

Following Andrew E. Schulman advice (and the NvidiaGraphicsDrivers page of the Debian wiki), I issued:

export NVVER=`dpkg -s nvidia-glx|grep Version|cut -d ' ' -f2|cut -d '-' -f1`
ln -fs /usr/lib/libGL.so.$NVVER /usr/X11R6/lib/libGL.so
ln -fs /usr/lib/libGL.so.$NVVER /usr/X11R6/lib/libGL.so.1
ln -fs libGL.so.$NVVER /usr/lib/libGL.so.1.2

The command glxinfo | grep "direct rendering" now says I have direct rendering.  Something must be missing however because the performance of glxgears is extremely poor (and the CPU usage goes to the sky).

I recommend you try the crystalcursors package.  After installing it, run update-alternatives --config x-cursor-theme and choose, for example, /etc/X11/cursors/crystalblue_classic.theme. The cursors are nice looking and big enough for the WUXGA resolution.

Warning: totem misconfigure the 'xv' (hardware video acceleration) which results in videos having a blue cast.  The workaround is to go to totem preferences,Display tab, and set the Hue to 0.

Remark: Jeffrey Hundstad who has "Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller" told me that in order to make it work you need to use the i810 driver in your xorg.conf file and to set up the file /etc/default/915resolution of the 915resolution package to get it to work at the correct resolution.

Sound

Playing sound is working out of the box with the latest alsa modules (≥ 1.0.13) — there used to be a bug that required to set the option position_fix but it is now resolved.  (Well, maybe you need to run alsamixer and unmute some channels.)  As suggested by Übergeeky YidMo and thanks to the kernel documentation Documentation/sound/alsa/ALSA-Configuration.txt, for recording through the built-in microphone, create a file /etc/modprobe.d/00alsa to set the option model=ref and restart ALSA (/etc/init.d/alsa reload).  You can then select Front Mic with your favorite mixer application (say kmix or gamix).

If you want to use the modem, just create /etc/modprobe.d/00alsa but do not compile newer ALSA module.  The Linuxant driver comes with a snd_hda_intel module of its own.

Keyboard & audio buttons

I have a french keyboard. However, for programming or for LaTeX math typesetting dead keys are not convenient at all. On the other hand, for French texts, accented letters and guillemots ('«' and '»') are a must! To have both together, I have written a .xmodmap file which, by default, makes all accents non-dead and combined with AltGr or AltGr+Shift enable the dead one. Guillemots '«' and '»' are given by AltGr+< and AltGr+> respectively. These modifications are activated at login time by the following lines in ~/.xsession (you will notice that I use .xmodmap_$HOSTNAME instead of .xmodmap; this is because I synchronize my files between several machines at different locations — also plays the role of a backup — with different keyboard layouts):

XMODMAP=`which xmodmap`
XMODMAP_FILE=$HOME/.xmodmap_$HOSTNAME
if [ -x "$XMODMAP" ] && [ -f "$XMODMAP_FILE" ]; then
$XMODMAP $XMODMAP_FILE
fi

In the .xmodmap file, I also assign keysyms to the audio buttons (you can check the keycodes of these buttons by launching xev, moving the cursor above its window and pressing them):

keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 160 = XF86AudioMute

As I use fluxbox, I only needed to put

None XF86AudioLowerVolume :ExecCommand amixer -q set Master 2- unmute
None XF86AudioRaiseVolume :ExecCommand amixer -q set Master 2+ unmute
None XF86AudioMute :ExecCommand amixer -q set Master toggle

in ~/.fluxbox/keys for the buttons to actually perform their function. For other window managers, see e.g. here.

Wireless

This section is for the Intel PRO/Wireless 3945 wireless card.  The D830 is also available with other wireless cards (notably the Broadcom Wireless 1390 WLAN Mini-PCI Card).  To make sure you have the right one for the instructions below, look at the output of lspci, it should contain a line like:

0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

iwl3945 driver

A driver for the  Intel PRO/Wireless 3945 is available. and included in kernels ≥ 2.6.24.  You need to install the package firmware-iwlwifi and check the following in your kernel configuration: Device Drivers → Network device support → Wireless LAN → Intel Wireless Wifi Core.  Some interesting information can also be found in the Debian wiki.

ipw3945 driver

Alternatively, you can install the packages ipw3945-source, ipw3945d and firmware-ipw3945. Compile the ipw3945 module with m-a. The iee80211 in the kernel 2.6.20.4 is recent enough. You then need to  insert the module into the kernel (modprobe ipw3945). You should now be able to see your interface with iwconfig under the name eth2.  How to launch the interface is standard in Debian: you setup an entry like

allow-hotplug eth2

iface eth2 inet dhcp
        wireless_essid accesspointname
        wireless_key off
        wireless_rate auto
        wireless_mode managed
        wireless_channel 6
in the file /etc/network/interfaces and invoke in a shell ifup eth2. If like me you prefer naming wireless interfaces with wlan0,..., it is possible to rename an interface with udev.  First check your device with udevinfo -a -p /sys/class/net/eth2/ and pay attention to the line SYSFS{address}=="mac address" or ATTR{address}=="mac address". Then create a file in /etc/udev/rules.d/, say /etc/udev/rules.d/010_netinterfaces.rules, with a line
SUBSYSTEM=="net", SYSFS{address}=="mac address", NAME="wlan0"
(with the SYSFS{address} part copied verbatim from the information gathered with udevinfo). Then restart udev (with /etc/init.d/udev restart) and reload the ipw3945 module. Of course, you need to change /etc/network/interfaces accordingly.

If you want to disable the wifi (say to save power), just remove the module (modprobe -r ipw3945).

Modem

The modem is a Conexant HDA D110MDC.  You need the HSF driver from linuxant; there is a Debian package, so use it.   Remember not to intall the newer alsa modules.

On a 2.6.18 kernel, you must download the tar.gz version, unpack it, go into the hsfmodem-7.47.00.03full directory, and follow the following procedure: first install it with make install.  Then run hsfconfig --patch (you must be connected to the internet) and select the snd_pcm_hw_param_set and read_size patches — ignore the errors.  Install again the patched driver with make install.  Finally run hsfconfig!

Bluetooth

You obviously need to compile your kernel with bluetooth support (the .config above does). The device is dected and the modules are loaded. To use it, install the bluez stack: aptitude install bluez-pin bluez-utils bluez-hcidump. To discover blutooth devices (you need set your devices to be discovered — for example on the mouse you push a "connect" button):
hcitool scan
It will print something like
Scanning ...
        00:0C:55:19:D1:03       Targus Bluetooth Mini Mouse
Then, as root, issue
hidd --server
hidd --connect 00:0C:55:19:D1:03
That's all — you can play with your mouse now! If you do not remember which devices you connected, issue
hidd --show
The output will look like:
00:0C:55:19:D1:03 Bluetooth HID Boot Protocol Device [0461:4b01] connected [boot-protocol]

ACPI

ACPI is woking fine as far as I can tell.  Install the powersaved (≥ 0.15) daemon (which will set the policy when you are not logged) and the kpowersave (≥ 0.7) applet (which will set the policy while you are logged in).  As said in /usr/share/doc/powersaved/README.Debian, in order to be able to use the powersave commands as a user you need to add it to the powerdev group and tell dbus to use the new group memberships with /etc/init.d/dbus reload. For Gnome, you have gnome-power-manager.

You do not need the apmd package (you can remove it if installed).

I need to investigate further for memory and disk suspend. Modify /boot/grub/menu.lst so in includes

# defoptions=resume=/dev/sda7

where /dev/sda7 is your first swap partition (leave the comment sign!) and run update-grub.

Hard disk

Under aggressive power management, the disk heads can park too often which reduces the disk life expectancy.  To see whether you are affected by the problem, install smartmontools and issue (as root)

smartctl -a /dev/sda

To get your average per hour hard disk load cycling, divide Load_Cycle_Count by Power_On_Hours.  My disk is a Seagate Momentus 7200.2 and, according to this page, one has to use

hdparm -B 254 /dev/sda

This fix is in the package acpi-support (see bug #448673).  I changed 254 to 253 in /etc/hdparm.conf  and /etc/acpi/start.d/90-hdparm.sh (symlinked as /etc/acpi/ac.d/90-hdparm.sh, /etc/acpi/battery.d/90-hdparm.sh/etc/acpi/resume.d/90-hdparm.sh is obsolete for acpi-support ≥ 0.122-2) as with the former value, some strange noise was sometimes heard from the disk led (!).

See also http://www.seagate.com/docs/pdf/datasheet/disc/ds_momentus_7200_2.pdf.

Saving power

PowerTOP (package powertop; see also the web site) is a tool that shows you software component(s) that make your laptop use more power than necessary while it is idle. A kernel ≥ 2.6.21 compiled with 

As reported by powertop, CONFIG_HPET is important because "without HPET support the kernel needs to wake up every 20 miliseconds for some housekeeping tasks".

Smart Cards (& belgian identity card)

Install the packages pcscd and beidgui.
ln -s libpcsclite.so.1 /usr/lib/libpcsclite.so
/etc/init.d/beid restart
To improve power consuption, I also recommend you to create a script in /etc/acpi/battery.d/ (say /etc/acpi/battery.d/80-local.sh) containing
/etc/init.d/pcscd stop
and another in /etc/acpi/ac.d/ (say /etc/acpi/ac.d/80-local.sh) containing
/etc/init.d/pcscd start
to restore pcscd when back on AC power.  Note that this relies on acpi-support to be installed.

Sony Clié handled

Most synchronisation software uses /dev/pilot to access the PDA.  The file /etc/udev/rules.d/udev.rules should already contain
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
    ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
                    SYMLINK+="pilot"

so that the link is automatically created created when the HotSync button is pressed. However, in order to work, this requires the visor module to be loaded.  Since the kernel does not do it by itself, I added to /etc/udev/rules.d/010_local.rules the following:

SUBSYSTEMS=="usb", ACTION=="add", \
    ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
    RUN+="/sbin/modprobe visor"
SUBSYSTEMS=="usb", ACTION=="remove", \
    ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
    RUN+="/sbin/modprobe -r visor"

Useful Software

Here are a few links to Debian packages that I use. I list them here with the hope you may make an interesting discovery or that they may ease your life! Enjoy!

Links & Files

 
Linux On Laptops TuxMobil - Linux on Laptops Iceweasel Get Firefox