FreeUnix.Dyndns.Org Sat, 21 November 2009 - 06:26:11 CET
Home ·  AcpiTool ·  Howto ? ·  Links ·  Hardware ·  FTP Archive ·  Search ·  Contact ·  About
>  Slackware 12.1 on a Dell Latitude D610 laptop   <
Intro
In this article, I will share my experience related to installing and running Slackware Linux 12.1 on a Dell Latitude D610 laptop. As I expected, Slackware 12.1 runs extremely well on this particular Dell model.

Actually, if you are looking for an absolutely trouble free Linux laptop, look no further, get yourself a Dell D610 ! Now, if you also read some of the older D610 reviews on the internet, you may think that I was lucky, but keep in mind that most of these reviews are outdated. With a current kernel and Linux distro (July 2008), there simply are no problems left.

I bought this used laptop, but looks like brand new, in July 2008, to replace my aging Latitude C640. The D610 and C640 are about the same size and weight. The most notable difference is the color: the C640 was all black, which I liked alot, whereas Dell adopted a less appealing silver/gray plastic for the D series.

The D610, being at least 2 years "younger", performs noticeably better than the C640. Even though it features outdated technology, with a 2.0 GHz Pentium M (Centrino) and 2 GB of DDR2 RAM, it packs a lot of power, feels very responsive, and has no problems handling whatever I throw at it.

As I did with my previous laptop reviews, I also submitted this document on the Linux on Laptops and on Tuxmobil.org. Linux on Laptops Tuxmobil.org

Technical overview Top

 CPU type  Intel Pentium M 760 (Dothan)
 CPU speed  2.0 GHz
 BIOS  Revision A06
 Chipset  Intel Mobile 915GM (ICH6)
 Memory  2048 MB DDR2 SDRAM
 Harddisk  Hitachi DK23EB-40, 40.0 GB, 5400 rpm
 Optical drive  HL-DT-ST CDRW/DVD GCC 4244, 24x
 Display  14" Color TFT, 1024x768
 Video card  Intel Mobile 915GM Graphics controller
 Network card #1  Broadcom NetXtreme BCM5751 Gigabit controller
 WLAN  Intel PRO/Wireless 2200BG, onboard
 Sound Card  Intel 82801 AC97
 Keyboard  full size Azerty
 Pointing device  "joystick" in keyboard + Touchpad
 I/O ports  1 x serial, 1 x parallel, VGA, TV-out, 4 x USB, RJ-45,
 RJ-11, 1 x PCMCIA/Cardbus, Mic in, Line out, Ir
 Installed OS'es  Slackware 12.1 + WinXP Prof.
 Linux kernel  2.6.25.9 (at date of article)
Pictures Top

Dell D610 Dell D610
Installation Top
I have to admit, I did not really "install" the D610. When I got the laptop, it came with a Dutch version of Winblows XP installed, as the previous owner had taken the trouble of reinstalling the machine. Now, I am really lazy, and didn't feel like reinstalling the laptop again with an English version of XP, and the latest Slackware, and then going trough the trouble of fine-tuning the whole pack. After all, I already had all of that, on the C640.

So, I used g4l to copy an image of my old harddisk onto the new one, as they are of equal size. As expected, Winblows XP called it a day, and instantly gave me a BSOD. What's new ? Otoh, Slackware simply booted the laptop :). Of course, I had to recompile the kernel to add support for the new hardware (Pentium M, Broadcom GigE,...), adapt Xorg.conf (915GM), and some minor stuff. As a bonus, the new(er) harddisk appeared to be a faster disk than the old one (8M cache vs 2M).

Update July 2009: The dual boot setup is history, since I started using Sun Virtualbox. No more reboot required when I need WinXP, I just start it in the virtual environment.

Harddisk/IDE controller Top
The IDE controller is an Intel Corporation 82801FBM (ICH6M) SATA controller . It is supported by the ata_piix driver, present in Linux kernel 2.6 series (Serial ATA section in the kernel config).

Now, before I recompiled my kernel to include this driver, the kernel saw the harddisk as a regular IDE drive, named /dev/hda. Only problem was that it did not enable UDMA, and that hurts a lot. The machine practically stalled at every major I/O operation. Hdparm showed me a pathetic 2.25 MB/sec buffered disk read.

Once the kernel was recompiled with this driver, I had another problem: with the SATA driver in place, the kernel would see the harddisk as a SCSI device, named /dev/sda. So, in my /etc/fstab and /etc/lilo.conf, I had to replace every occurence of /dev/hda with /dev/sda. But, this had to be done after running lilo, to install the new kernel first. Otherwise, lilo would have complained about a non existing /dev/sda. At first boot, I then supplied the kernel the "root=/dev/sda5" option, to make sure it would find the right root partition. Once logged in, I reran lilo to ensure the kernel was now installed with the proper device name. The drive now performs as can be expected.

Here are the hdparm benchmarks :

 [root@porty /home/david]# hdparm -Tt /dev/sda

 /dev/sda:
  Timing buffer-cache reads:  1888 MB in  2.00 seconds = 944.48 MB/sec
  Timing buffered disk reads:  108 MB in  3.03 seconds =  35.70 MB/sec
The harddisk is a 40.0 GB Hitachi, runs at 5400 rpm, and is equiped with 8MB cache:
 [root@porty /home/david]# hdparm -i /dev/sda

 /dev/sda:

  Model=HTS548040M9AT00                       , FwRev=MG2OA53A, SerialNo=     MRL202L2JEM6XB
  Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
  RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
  BuffType=DualPortCache, BuffSize=7877kB, MaxMultSect=16, MultSect=?0?
  CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78140160
  IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
  PIO modes:  pio0 pio1 pio2 pio3 pio4 
  DMA modes:  mdma0 mdma1 mdma2 
  UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 
  AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
  Drive conforms to: ATA/ATAPI-6 T13 1410D revision 3a:  ATA/ATAPI-2,3,4,5,6
It works fine, and damn fast too. The CDRW/DVD-ROM drive works fine as well.
X11/Framebuffer Top
The video controller is an Intel 915GM Graphics Express. It is supported by Xorg, using the i810 driver. It is part of the 915GM chipset and uses shared memory. Remember to enable DRI and AGP gart in the kernel and X for full acceleration. Performance is actually surprisingly good, both for 2D and 3D. Video playback is very smooth and these nifty OpenGL screensavers run pretty fast.

The 915GM is also VESA compliant, so I use 1024x768x8 VESA framebuffer mode in console, giving me a full screen console, with 128 colums x 48 rows of sharp text.

Unfortunately, the screen resolution is only 1024x768. These last years, I got spoiled by high-res screens like the one on my C640 (1400x1050) and my desktop (20" 1680x1050). This makes me wonder how I ever coped with lower resolutions. I am considering to replace the LCD with an SXGA+ (1400x1050) panel.

Here is my xorg.conf, so you can use it too.

Sound Top
The sound controller is an Intel 82801FB AC'97 audio controller. It is supported by the ALSA snd_intel8x0 driver and works just fine.
Networking Top
The onboard Ethernet controller is a Broadcom NetXtreme BCM5751 Gigabit Ethernet controller. This controller gives you 10/100/1000Mbps full duplex networking. The connector is a regular RJ-45. It is supported by the Tigon3 driver and so far works just fine (at 100Mbps).

The laptop also features an Intel PRO/Wireless 2200BG Network Connection. This controller provides up to 54Mbps wireless networking. It is supported by the ipw2200 driver, present in kernel 2.6 series, and works fine.
I also tried Ndiswrapper on the 2200BG, in conjunction with the latest Windows drivers from Dell, but Ndiswrapper failed miserably with a kernel oops.

If the Wifi led on your D610 does not light up when the card is switched on, you can try loading the kernel module with an extra parameter. In /etc/modprobe.d, create a file called ipw2200, with the following content:

options ipw2200 led=1 
By default, the kernel module is loaded with led=0, because it might cause problems on other laptops. However, loading the ipw2200 module with this did not enable the wifi led at all. So, even if the wifi controller is switched on, the led stays dead. What did help however is the next command:
echo 0 > /sys/bus/pci/drivers/ipw2200/0000\:03\:03.0/rf_kill
Of course, the numbers following ipw2200/ will be different on your machine. Actually, this enables the wifi radio (echo 1 to disable it), but it also enables the wifi led, and does not seem to hurt if the radio is already enabled (as it should be when the driver is already loaded).
You can also switch the 2200BG on/off manually using the Fn+F2 key combination, and thus enable the led, but I find it more convenient to put the "echo 0 ..." line in rc.local .
USB Top
The USB controller is an Intel 82801CA USB rev 02. This controller powers 4 USB ports. It is supported by the UHCI (USB 1.1) and EHCI (USB 2.0) USB drivers and works fine.

Currently, I use 2 USB devices with this laptop :

  • a Logitech Optical WheelMouse
  • a 4 GB Memory Stick

Cardbus/PCMCIA controller Top
The Cardbus controller is a Texas Instruments PCI6515. This controller powers 1 slot. It is supported by the Yenta Cardbus driver and appears to work fine.

Mouse/Pointing Device Top
I have a total of 3 pointing devices on this laptop :
  • an external Logitech Optical USB WheelMouse
  • the built-in joystick thingie
  • the buitt-in touchpad.

    The joystick mouse and touchpad are recognised as a regular PS/2 Mouse. For the USB mouse, the usbhid driver is needed. All mice work fine simulteanously in X11, but the touchpad does not seem to work in console mode. For the console, I start gpm like this:

     /usr/sbin/gpm -m /dev/mouse -t imps2 
    The touchpad also appears to be extremely sensitive. Most of the time however, I only use the Logitech.
  • ACPI Top
    This laptop supports ACPI extremely well. I have to admit, the ability of this laptop to suspend to ram (S3) without any problem at all, was the major reason why I bought this machine (I did a lot of research on the internet). According to the reviews I found, similar Dell models (D620, 630, 810, ...) appear to show the same behavior.

    The Pentium M CPU, used in this Dell, supports dynamic frequency scaling. This CPU can run at speeds between 800 Mhz and 2.0 GHz, allowing to save energy, which is very interesting when running on battery. To enable this dynamic behavior, I installed the cpufrequtils, which can be found here. In rc.local, I added the following line:

    /usr/bin/cpufreq-set -g conservative
    This will put the CPU at it's lowest speed, but raise the speed gracefully as it is needed, just like that. Of course, your kernel must be compiled with support for ACPI CPU frequency scaling. If you want to see the current setting, you invoke cpufreq-info:
    [root@porty /home/david]# cpufreq-info
    cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006
    Report errors and bugs to cpufreq@lists.linux.org.uk, please.
    analyzing CPU 0:
      driver: acpi-cpufreq
      CPUs which need to switch frequency at the same time: 0
      hardware limits: 800 MHz - 2.00 GHz
      available frequency steps: 2.00 GHz, 1.60 GHz, 1.33 GHz, 1.07 GHz, 800 MHz
      available cpufreq governors: conservative, ondemand, userspace, performance
      current policy: frequency should be within 800 MHz and 2.00 GHz.
                      The governor "ondemand" may decide which speed to use
                      within this range.
    current CPU frequency is 800 MHz (asserted by call to hardware).
    cpufreq stats: 2.00 GHz:1.36%, 1.60 GHz:0.08%, 1.33 GHz:0.09%, 1.07 GHz:0.24%, 800 MHz:98.23%  (509)
    Other hardware Top
  • internal modem : never used it, so I can't say if it works
  • Ir receiver : idem as above
  • serial port : idem as above
  • parallel port : idem as above

    I can only assume these ports work fine, but since I have no use for them, I didn't bother to find out. Would have been nice if Dell dropped the serial and parallel port, and added firewire instead, and maybe 2 more USB ports.

  • Some files Top
  • kernel config, kernel 2.6.25.9
  • dmesg, kernel 2.6.25.9
  • lspci
  • see X11 section for xorg.conf
  • Top