This is my personal experience with the Dell Latitude D620 using Debian GNU/Linux. As usual, you should try these tips under your own risk, and your mileage may vary.
Get windows out of the way…
…or not. Since the fingerprint utilities run in windows and I have no idea if they will ever be accessible from Linux -either natively or under WINE/Xen/VMware- I decided to keep it around for the time being. I booted with Knoppix DVD 5.0 and used qtparted to resize the original Windows partition down to 8GB. I created a dummy partion with 1GB as /dev/sda3 and a swap partition with 4GBas /dev/sda4 near the end of the disk. Then I erased and re-created /dev/sda3 using all the remaining space:
# fdisk -l /dev/sda Disk /dev/sda: 100.0 GB, 100030242816 bytes 255 heads, 63 sectors/track, 12161 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 1 6 48163+ de Dell Utility /dev/sda2 * 7 1051 8388608+ 7 HPFS/NTFS /dev/sda3 1051 11663 85246244 83 Linux /dev/sda4 11664 12161 4000185 82 Linux swap / Solaris
/dev/sda1 is the Dell Utility partition; it looks like it’s a standard DOS partition with the Dell diagnostic utilities.
Knoppix dutifully reports that this D620 has got this nifty collection of hardware:
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03) 00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express PCI Express Root Port (rev 03) 00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) 00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01) 00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 01) 00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 01) 00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 01) 00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 01) 00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 01) 00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 01) 00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1) 00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 01) 00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 01) 00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 01) 01:00.0 VGA compatible controller: nVidia Corporation Unknown device 01d7 (rev a1) 03:01.0 CardBus bridge: O2 Micro, Inc. OZ601/6912/711E0 CardBus/SmartCardBus Controller (rev 40) 09:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express (rev 02) 0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
I used the same official 3.1r2 Debian NetInst CD I use everywhere else. I formated /dev/sda3 for reiserfs and /dev/sda4 for swap space.
During installation neither the wireless nor the wired ethernet card were detected, so I just installed with no ethernet card and waited for the base installation to finish. When asked about grub, I went for a MBR installation.
While booting debian for the first time I inserted the USB ethernet adapter that’s in my toolbox (a generic rt1805 clone I got off eBay for US$10) which would not be recognized by netinst but that works fine with the base 2.4 system upon reboot.
I switched to tty2 and did a
# dhclient eth0
to autoconfigure the interface and complete the apt configuration and package downloading. I promptly added testing to sources.list:
#deb file:///cdrom/ sarge main #deb cdrom:[Debian GNU/Linux 3.1 r2 _Sarge_ - Official i386 Binary-1 (20060420)]/ unstable contrib main deb http://archive.progeny.com/debian stable main contrib non-free deb-src http://archive.progeny.com/debian stable main contrib non-free deb http://archive.progeny.com/debian testing main contrib non-free deb-src http://archive.progeny.com/debian testing main contrib non-free #deb http://archive.progeny.com/debian unstable main contrib non-free #deb-src http://archive.progeny.com/debian unstable main contrib non-free deb http://security.debian.org/ stable/updates main contrib non-free deb http://security.debian.org/ testing/updates main contrib non-free
and pinned to stable in /etc/apt/preferences
Package: * Pin: release o=stable Pin-Priority: 995 Package: * Pin: release o=testing Pin-Priority: 800 Package: * Pin: release o=unstable Pin-Priority: 500
I immediately installed linux-image-2.6.16-2-686-smp and its dependencies to take advantage of the core duo’s SMP capability after reboot. Please note that rebooting into 2.6 wasn’t exactly straighforward -I should have installed 2.6 from the beginning- so keep reading below.
Upon upgrading to kernel 2.6.16-2-smp and GRUB, the kernel hanged up after USB initialization. A quick peek to the kernel boot options in GRUB revealed that it had root=/dev/hda3 instead of /dev/sda3. I guess that the SATA disk was running in IDE emulation under 2.4, but it uses libsata under 2.6 so now it should be root=/dev/sda3. I changed the boot option from the GRUB boot menu (can you do *that* in your bootloader?) and changed the corresponding kopt in /boot/grub/menu.lst after booting.
I made a grub splashimage and a desktop wallpaper in JPEG format from the default Dell wallpaper in Windows. In order to use the splashimage I made a small change to /boot/grub/menu.lst:
# Pretty colours color cyan/blue white/blue +# splashimage +splashimage=(hd0,2)/boot/grub/splashimages/dell.xpm.gz
nVidia video card
During installation xorg insisted pretty heavily on going with a vesa-compatible card. I had to tell it to use the nv driver at least four times. I went for monitor autodetection and it chose the 1440×900 resolution automagically. Nevertheless, X just didn’t run at all under kernel 2.4, it complained about not finding the touchpad and not having a pointer, but after rebooting in 2.6.1 6 everything worked (mostly) fine.
To get hardware acceleration in OpenGL I apt-get installed nvidia-glx, nvidia-kernel-2.6.16-2-686-smp and nvidia-settings and modified these sections in /etc/X11/xorg.conf
Section "Device" Identifier "Generic Video Card" - Driver "nv" + Driver "nvidia" BusID "PCI:1:0:0" EndSection Section "Module" Load "i2c" Load "bitmap" Load "ddc" - Load "dri" Load "extmod" Load "freetype" Load "int10" Load "type1" Load "vbe" + Load "glx" EndSection
I was also supposed to zap the ‘Load “GLcore”‘ line in the Module section, but it didn’t exists anyway.
In order to enable TwinView the configuration must read like this:
Section "Device" Identifier "Generic Video Card" Driver "nvidia" BusID "PCI:1:0:0" Option "TwinView" Option "MetaModes" "1280x1024, 1440x900; NULL, 1440x900" EndSection Section "Monitor" Identifier "Generic Monitor" Option "DPMS" HorizSync 28-72 VertRefresh 43-60 EndSection Section "Monitor" Identifier "External Monitor" Option "DPMS" HorizSync 28-72 VertRefresh 43-60 EndSection
My complete xorg.conf is available for downloadincluding the proietary nVidia driver configuration, TwinView and TouchPad+TrackPoint configuration.
Trackpoint and Touchpad
The trackpoint works as intended right out of the box, but the touchpad has very little acceleration.
The touchpad configuration I had in the ThinkPad R50 just doesn’t cut it for the Dell: the acceleration is just too small. These parameters in /etc/X11/xorg.conf work a lot better:
Section "InputDevice" Identifier "Synaptics Touchpad" Driver "synaptics" Option "SendCoreEvents" "true" Option "Device" "/dev/input/mice" Option "Protocol" "auto-dev" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "on" Option "SHMConfig" "on" Option "LeftEdge" "85" Option "RightEdge" "1010" Option "TopEdge" "85" Option "BottomEdge" "730" Option "FingerLow" "25" Option "FingerHigh" "30" Option "MaxTapTime" "180" Option "MaxTapMove" "220" Option "VertScrollDelta" "100" Option "MinSpeed" "0.10" Option "MaxSpeed" "0.60" Option "AccelFactor" "0.2" Option "HorizScrollDelta" "0" EndSection
I’ll look into vertical and horizontal scrolling later.
Broadcom NetXtreme BCM5752 wired ethernet card (tg3)
Didn’t work at all during netinst and under kernel 2.4, but it was detected and worked flawlessly under 2.6.16.
Intel PRO/Wireless 3945ABG wireless card (ipw3945ABG)
To get the wireless card working you’ll need to compile a few non-free packages. Head over to http://ipw3945.sourceforge.net/ and get these tarballs: ipw3945-1.1.0.tar.gz, the microcode image and the regulatory daemon. You’ll also need a newer ieee802.1 1kernel infrastructure than what’s included in 2.6.16, and you migth also want to apt-get install wireless-tools and wpasupplicant.
I untarred all packages, read carefully all READMEs and LICENCEs, and then did
cd ieee80211-1.1.14/ $ sudo make check_old $ make $ sudo make install $ cd ../ipw3945-ucode-1.13/ $ sudo cp ipw3945.ucode /usr/local/lib/firmware/ $ cd ../ipw3945d-1.7.22/ $ sudo cp x86/ipw3945d /sbin/ $ cd ../ipw3945-1.1.0/ $ make $ ./load
The “sudo make check_old” is *very* important because ipw3945 doesn’t like the (older) stock version. If you leave it in place it will take precedence over the one you are about to install and you won’t be able to connect to the network.
In order to make the supervisor daemon run when the module is loaded, I followed the instructions in the INSTALL file to create /etc/modprobe.d/ipw3945 with these lines:
install ipw3945 /sbin/modprobe --ignore-install ipw3945 ; sleep 0.5 ; /sbin/ipw3945d --quiet remove ipw3945 /sbin/ipw3945d --kill ; /sbin/modprobe -r --ignore-remove ipw3945
I added ipw3945 to /etc/modules and then ran update-modules
Then in /etc/network-interfaces
auto lo iface lo inet loopback auto eth1 iface eth1 inet dhcp wpa-conf managed wpa-key-mgmt WPA-PSK wpa-ssid your-ssid wpa-passphrase your-passphrase
(Don’t forget to add the loopback interface! You might get unexpected hangs during KDE startup if this slips your mind!)
# ifup eth1
Voilá: instant Wireless!
After rebooting into 2.6.16-2-smp both cores are enabled and I get this in /proc/cpuinfo:
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 14 model name : Genuine Intel(R) CPU T2400 @ 1.83GHz stepping : 8 cpu MHz : 1829.086 cache size : 2048 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 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 ht tm pbe nx constant_tsc pni monitor vmx est tm2 xtpr bogomips : 3665.17 processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 14 model name : Genuine Intel(R) CPU T2400 @ 1.83GHz stepping : 8 cpu MHz : 1829.086 cache size : 2048 KB physical id : 0 siblings : 2 core id : 1 cpu cores : 2 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 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 ht tm pbe nx constant_tsc pni monitor vmx est tm2 xtpr bogomips : 3657.81
First of all, mute that annoying beep to keep your wife from beating the crap out of you. khaoohs’ HowTo: Turn off (mute) system beep comes in handy:
# rmmod pcspkr When I got tired of typing this whenever I rebooted, I decided to get rid of it *forever* # echo "pcspkr" > /etc/hotplug/blacklist.d/pcspkr
Now about proper audio, alsaconf detected the sound card just fine but no sound came out at all. Non-extensive research revealed that the alsa drivers included in 2.6.16-2-smp are way too old, so I used module-assistant to build them from source, I restarted KDE sound subsystem and the sweet, sweet KDE startup sound greeted my ears.
The only glitch so far is that the microphone channel doesn't work after suspend. I'll look into it in due time.
The drive won't be detected by default under 2.6.x. In order to work, the "atapi_enabled" option must be enabled when loading the libata module, but since that's loaded in initrd it must be enabled there:
# echo "libata atapi_enabled=1" >> /etc/mkinitrd/modules # cp /boot/initrd.img-`uname -r` /boot/initrd.img-`uname -r`.bak # mkinitrd -o /boot/initrd.img-`uname -r` # reboot
Sometimes when I try to hot-dock the laptop hangs. However, if I suspend the machine by closing the lid before docking/undocking everything works fine.
- ACPI, suspend-to-disk and ACPI-related glitches
- Mobile broadband. (The sucky Dell LA configurator didn't show WWAN options, but there's a SIM slot under the battery and the BIOS says something about the radio. We'll see...)
- Sound, beyond that annoying *bleep*
- SmartCard reader
- TPM chip
- Biometrics (Fingerprint reader! Yay!)