Dell XPS M1530 and Gentoo Linux

Dell XPS M1530 and Gentoo Linux

  • (last updated: 2009.02.09)\\
  • Contents

    1. Introduction
    2. Why Gentoo Linux?
    3. My hardware configuration
    4. Keep Vista, but reduce the disk space occipied by it
    5. Video: setting up nvidia propertiary drivers
    6. WiFi: Dell Wireless
    7. Multimedia keys and remote control
    8. Power button
    9. CPU frequence/Power saving
    10. CardReader: SD/MMC - MS/Pro
    11. Ethernet
    12. Audio card: Intel HD Audio SigmaTel STAC9228
    13. Touchpad
    14. Thomson Microelectronics fingerprint reader
    15. Devices which I don't use(yet)
    16. Hybernate
    17. Files
    18. Links, external references


    Only half year since my latest hardware upgrade (explained here) and I am uprading again :-) The reason is bad - one of old notebooks died. But the good circumenstance is that I've got cool hardware much sooner then I expected.

    Latitude goes to happy wife, and I am getting brand new powerful XPS laptop to do my work (and rest). So, the initial task is:

    1. Copy Gentoo Linux from Dell Latitude D620 to Dell XPS M1530 and fine tune it (covered by this guide).
    2. Install Windows XP on Dell Latitude D620 (not covered in this document :).

    To my surprise, setting up Windows XP on Dell Latitude D620 took much longer that setting up Gentoo Linux on my 1530. Why? I've cheated a little, and just copied the files over 1:1. :-)

    After day of testing, my impressions of this new laptop are great. It is powerful, very nice screen, and all hardware worked flawlessly with Linux, just as-is. I've spent almost zero time to tune it up. Partly its because I've been moving from D620 with pretty similar configuration. But all new hardware also raised no questions. I've been able to spend 30 minutes of time at morning to tune all up, and can use every component of it from Linux.

    Why Gentoo Linux?

    Why Linux? - More secure. Much more user friendly then most of unexperienced people would assume. Easy to administer.

    The best part of Linux is that it is very transparent: source codes are open, so all bugs are fixed much faster then any commercial OS vendor will(or can) do. As result, Linux is much more robust, secure, and reliable.

    Why Gentoo? - All of the above in the best possible combination for our situation: development of web applications. Developer friendly: we can configure any software package (and version) which we need for our work. Sysadmin friendly. Powerful Portage system allows easy management of software packages. Great documentation and big community where any support questions are resolved easy and fast.

    My hardware configuration

    • Criteria of choice

      At first, every hardware must be supported by Linux. Standard things are already working out of box (HDDs, keyboard, mouse), but video, wifi, Web Cam needs to be confirmed first. I think it would be waste of money, time and weight to buy and expensive laptop and use 50% of it.

      Screen: XPS 1530 comes in variety of different configurations. I already tried 1280x800 and belive its too small resolution for that screen size. Also, my previos laptop resolution 1440x900 was too big for 14.4" screen. So, I decided that /1440x900 resolution makes great sense for software development jobs on 15.4"/ screen.

    • Making choice

      In fact, making choice was not easy, because to do it, you first need to understand which models are available on local market.

      Dell mentions all possible hardware options for M1530 on their web site, but for a local country markets only few combinations are possible. I did not (yet) found a single place, where I can review which models I can buy here, at Ukraine. The workaround: I've collected information manually from several shops, summarized it, and made a choice.






      Intel Core 2 T8300

      CPU Ghz






      Display type


      Display size


      Battery, cells


      Price variation




    • lspci
      00:00.0 Host bridge: Intel Corporation Mobile Memory Controller Hub (rev 0c)
      00:01.0 PCI bridge: Intel Corporation Mobile PCI Express Root Port (rev 0c)
      00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Contoller #4 (rev 02)
      00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 02)
      00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 02)
      00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
      00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)
      00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 02)
      00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 02)
      00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 02)
      00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 02)
      00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 02)
      00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 02)
      00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f2)
      00:1f.0 ISA bridge: Intel Corporation Mobile LPC Interface Controller (rev 02)
      00:1f.1 IDE interface: Intel Corporation Mobile IDE Controller (rev 02)
      00:1f.2 SATA controller: Intel Corporation Mobile SATA AHCI Controller (rev 02)
      00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
      01:00.0 VGA compatible controller: nVidia Corporation Unknown device 0407 (rev a1)
      03:09.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 05)
      03:09.1 Generic system peripheral [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
      03:09.2 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
      03:09.3 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)
      09:00.0 Ethernet controller: Marvell Technology Group Ltd. Unknown device 4354 (rev 12)
      0b:00.0 Network controller: Broadcom Corporation BCM4312 802.11a/b/g (rev 01)

    Keep Vista, but reduce the disk space occipied by it

    I've decided to keep Windows Vista for one reason: we often need to test our software on different variety of platforms, so I decided that executing this system once per month makes sense for me, especially because I've already paid for it. (It is not possible to buy this notebook without Vista in Ukraine, so I had to buy it anyway).

    Windows Vista have internal "partition resize" tool. But when I tried it, it refused to resize to ~25Gb which I think I can allow for Vista. It said that it needs at least 50Gb for work… What a voracious system… So, I used Partition Magick, to resize it to 25Gb. Also, it seems Vista ate all 4 primary partitions on disk (Dell utility, Dell Backup & restore, and something else). I have removed them. Vista works without them fine. Here is my final config:

    avk ~ # fdisk -l
    Disk /dev/sda: 160.0 GB, 160041885696 bytes
    255 heads, 63 sectors/track, 19457 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x40000000
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            3257        3269      104422+  83  Linux
    /dev/sda3   *           1        3256    26153788+   7  HPFS/NTFS
    /dev/sda4            3270       19457   130030110    5  Extended
    /dev/sda5            3270        3768     4008186   82  Linux swap / Solaris
    /dev/sda6            3769       19457   126021861   83  Linux
    Partition table entries are not in disk order

    To make configuration easier, here is grub config for the dual boot of Windows Vista and Gentoo Linux:

    alex@avk ~ $ sudo cat /boot/grub/menu.lst
    default 0
    timeout 2
    fallback 1
    title Gentoo 2.6.27 (resume)
    root (hd0,0)
    kernel /bzImage-2.6.27 root=/dev/sda6 resume=/dev/sda5
    title Gentoo 2.6.27
    root (hd0,0)
    kernel /bzImage-2.6.27 root=/dev/sda6
    title Windows
    rootnoverify (hd0,2)
    chainloader +1
    alex@avk ~ $

    Video: setting up Nvidia propertiary drivers

    At first, tune up your portage:

    alex@avk ~ $ grep nvidia /etc/portage/*
    /etc/portage/package.keywords:x11-drivers/nvidia-drivers ~x86

    Then, emerge propertiary video drivers:

    alex@avk ~ $ sudo emerge -av x11-drivers/nvidia-drivers
    These are the packages that would be merged, in order:
    Calculating dependencies... done!
    [ebuild     U ] x11-drivers/nvidia-drivers-180.22 [177.80] USE="gtk -acpi -custom-cflags (-multilib)" 12,897 kB
    Total: 1 package (1 upgrade), Size of downloads: 12,897 kB
    Would you like to merge these packages? [Yes/No]

    To make X config file, you can use nvidia-xconfig tool.

    Here is part of my config, which relates to Nvidia. Please note, that I use this laptop with external monitor, so I configured additonal modes for it.

    Section "Device"
     Option "TwinView" 
            Option          "CursorShadow" "on"
            Option          "TwinViewOrientation" "LeftOf"
       Option "MetaModes" "1280x1024, 1440x900; 1680x1050, 1440x900; NULL, 1440x900;"
        Identifier  "Card0"
       Driver      "nvidia"
      VendorName  "nVidia Corporation"
      BoardName   "Quadro NVS 110M / GeForce Go 7300"
       BusID       "PCI:1:0:0"
       Option "UseEdidDpi" "FALSE" 

    P.S. nvidia-drivers version 180.22 brake kuickshow image viewer. If you intend to use it, use 177.82 of nvidia-drivers instead, until kuicshow team resolved their problem.


    WiFi: Dell Wireless

    It was one of my greatest worries about this laptop. After looking all possible configurations, I've found, that despite it is possible to get XPS M1530 with Intel WiFi at US, same is not true for Ukraine. Neither of models with Intel WiFi are shipped to this region.

    This was also good surprise that Dell Wireless (Broadcom Corporation BCM4312 802.11a/b/g) worked flawlessly, and even better then Intel. It finds wifi spot nicely after hybernate, and automatically switches to it.

    To configure it, first, lets configure kernel first

    Device Drivers  --->
      Network device support --->
        Wireless LAN  --->
    [*] Wireless LAN (IEEE 802.11)
    <M> Broadcom 43xx wireless support (mac80211 stack)
    Networking support --->
      Wireless  --->
     {*} Improved wireless configuration API
         [*]   nl80211 new netlink interface support
         -*- Wireless extensions
         [*]   Wireless extensions sysfs files
         <M> Generic IEEE 802.11 Networking Stack (mac80211)
        Rate control algorithm selection
         [ ]   Enable mac80211 mesh networking (pre-802.11s) support
         -*-   Enable LED triggers
         [ ]   Export mac80211 internals in DebugFS
         [ ]   Select mac80211 debugging features
         <*> Generic IEEE 802.11 Networking Stack (DEPRECATED
         [ ]   Enable full debugging output
         <*>   IEEE 802.11 WEP encryption (802.1x
         <M>   IEEE 802.11i CCMP support
         <M>   IEEE 802.11i TKIP encryption

    But the kernel driver is not enough. This driver requires firmware loaded during booting. Firmware is under some commercial end user license, so you have to download it manually. I've followed guide from to get and install it. Here is history of my commands:

    export FIRMWARE_INSTALL_DIR="/lib/firmware"
    emerge net-wireless/b43-fwcutter
    tar xjf broadcom-wl-
    cd broadcom-wl-
    b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta_mimo.o
    rmmod b43
    modprobe b43
    /etc/init.d/net.wlan1 restart

    As you can guess, it worked without any additional configuration steps. For those, who configure it on clean environment, I have to say that I have installed net-wireless/wpa\supplicant package to access WPA/WPA2 protected networks.

    Multimedia keys and remote control

    # /etc/conf.d/local.start
    # This is a good place to load any misc programs
    # on startup (use &>/dev/null to hide output)
    # -------------------------- DELL keys 
    /usr/bin/setkeycodes e005 122
    /usr/bin/setkeycodes e006 122
    /usr/bin/setkeycodes e007 122 # Battery key
    /usr/bin/setkeycodes e008 122 # Wireless on/off key: do nothing (prevent extraneous kernel logs)
    /usr/bin/setkeycodes e009 122 # Eject media key:
    /usr/bin/setkeycodes e00a 123 # Dell Latitude X1 "Fn-F1/Hibernate" button:
    /usr/bin/setkeycodes e012 124 # Dell Home
    # --------------------------

    Power button

    I prefer that my laptop shuts down when I press on "power" button. Installed acpi daemon:

    alex@avk ~ $ sudo emerge -av acpid
    Password or swipe finger: 
    These are the packages that would be merged, in order:
    Calculating dependencies... done!
    [ebuild   R   ] sys-power/acpid-1.0.6-r1  24 kB
    Total: 1 package (1 reinstall), Size of downloads: 24 kB
    Would you like to merge these packages? [Yes/No] 
    alex@avk ~ $ sudo rc-update add acpid default

    CPU frequence/Power saving

    Kernel configuration

    Power management options  --->
       [*] CPU Frequency scaling
          [*]   Enable CPUfreq debugging
          <*>   CPU frequency translation statistics
          [*]     CPU frequency translation statistics details
                Default CPUFreq governor (userspace)
          <*>   'performance' governor
          <*>   'powersave' governor
          -*-   'userspace' governor for userspace frequency scaling
          <*>   'ondemand' cpufreq policy governor
          <*>   'conservative' cpufreq governor
                *** CPUFreq processor drivers --->
          <*>   ACPI Processor P-States driver
          <*>   AMD Opteron/Athlon64 PowerNow
          [*]     ACPI Support
          <*>   Intel Enhanced SpeedStep (deprecated
          -*-     Built-in tables for Banias CPUs
          <*>   Intel Speedstep on ICH-M chipsets (ioport interface)
          <*>   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
          <*>   Intel Pentium 4 clock modulation
          [*]   /proc/acpi/processor/../performance interface (deprecated)

    By default, CPU works in most performance mode, 2.4Ghz, 100%. In this configuration it will ate all resources of 6-cell battery in around 3Hrs. To achieve better results, some politics of power saving must be introduced. The most popular Linux software is cpufreqd, but when I tried to install it, it had a problem of reading own config file. So, instead, I emerged package sys-power/cpufrequtils and uncommented following lines in /etc/acpi/

     case "$value" in
       cpufreq-set -g ondemand
       cpufreq-set -g performance
      *) log_unhandled $* ;;

    Another popular choice is to use KDE internal klaptop\check which also can control some of power saving aspects.

    CardReader: SD/MMC - MS/Pro

    Kernel configuration

    Device drivers  --->
      <M> MMC/SD card support  --->
        --- MMC/SD card support
              *** MMC/SD Card Drivers
        <M>   MMC block device driver
        [*]     Use bounce buffer for simple hosts
              *** MMC/SD Host Controller Drivers
        <M>   Secure Digital Host Controller Interface support
        <M>     SDHCI support on PCI bus
        <M>       Ricoh MMC Controller Disabler  (EXPERIMENTAL)


    Device drivers  --->
    [*] Network device support 
        [*]   Ethernet (1000 Mbit
        <M>   SysKonnect Yukon2 support

    Audio card: Intel HD Audio SigmaTel STAC9228

    Device drivers  --->
     Sound card support --->
    <*>   Advanced Linux Sound Architecture  --->
    --- Advanced Linux Sound Architecture
        <*>   Sequencer support
        <*>   OSS Mixer API
        <*>   OSS PCM (digital audio) API
        [*]     OSS PCM (digital audio) API - Include plugin system
        [*]   OSS Sequencer API
        <*>   RTC Timer support
        [*]     Use RTC as default sequencer timer
        [*]   Support old ALSA API
        [*]   Verbose procfs contents
    --- PCI sound devices
         <*>   Intel HD Audio                                  
         [*]     Build Realtek HD-audio codec support          
         [*]     Build Analog Device HD-audio codec support    
         [*]     Build IDT/Sigmatel HD-audio codec support     
         [*]     Build VIA HD-audio codec support              
         [*]     Build ATI HDMI HD-audio codec support         
         [*]     Build Conexant HD-audio codec support         
         [*]     Build C-Media HD-audio codec support          
         [*]     Build Silicon Labs 3054 HD-modem codec support
         [*]     Enable generic HD-audio codec parser

    At first I tried to compile it as module, but got strange result, when front digital microphones not working. Compiling it into kernel solved the problem.

    Devices which I don't use(yet)

    Did not yet tested:

    • HDMI
    • S-Video
    • ExpressCard


    Thomson Microelectronics fingerprint reader

    All you need to do is to enable this option in kernel:

    Symbol: INPUT_UINPUT [=y]                                                          
     Prompt: User level driver support                                                 
       Defined at drivers/input/misc/Kconfig:183                                       
       Depends on: !S390 && INPUT && INPUT_MISC                                        
         -> Device Drivers                                                             
           -> Input device support                                                     
             -> Generic input layer (needed for keyboard, mouse, ...) (INPUT [=y])     
               -> Miscellaneous devices (INPUT_MISC [=y])

    Compile kernel, and when done, install the following package:

    emerge sys-auth/thinkfinger

    Please follow the instructions after installation to alter your PAM configuration to use tf-tool. Adding new user is easy:

    tf-tool --add-user "alex"


    1. emerge x11-drivers/synaptics
    2. configure it as input device in xorg.conf
    Section "InputDevice"
      Identifier "Touchpad"
      Driver "synaptics"
      Option "SendCoreEvents"
      Option "Device" "/devices/platform/i8042/serio2/input/input5"
      Option "SHMConfig" "on"
      Option "Emulate3Buttons" "on"
      Option "LeftEdge" "130"
      Option "RightEdge" "840"
      Option "TopEdge" "130"
      Option "BottomEdge" "640"
      Option "FingerLow" "7"
      Option "FingerHigh" "8"
      Option "MaxTapTime" "180"
      Option "MinTapTime" "110"
      Option "ClickTime" "0"
      Option "EmulateMidButtonTime" "75"
      Option "VertScrollDelta" "20"
      Option "HorizScrollDelta" "20"
      Option "MinSpeed" "0.35"
      Option "MaxSpeed" "0.8"
      Option "AccelFactor" "1"
      Option "EdgeMotionMinSpeed" "200"
      Option "EdgeMotionMaxSpeed" "200"
      Option "UpDownScrolling" "1"
      Option "CircularScrolling" "1"
      Option "CircScrollDelta" "0.1"
      Option "CircScrollTrigger" "3"
      Option "VertEdgeScroll" "on"
    Section "ServerLayout"
      Identifier     " Configured"
      Screen      0  "Screen0" 0 0
      InputDevice    "TouchPad" "CorePointer"
      InputDevice    "Keyboard0" "CoreKeyboard"

    Optionally, you can use synclient program to fine-tune the panel.

    Update 2009.01.27: I've added i8042.nomux=1 to the kernel boot options so touchpad restores OK after lid close.

    Update 2009.02.09: Added multimedia keys config.

    Update 2010.01.09: One thing is missing in this notebook: the indicator of AC in. Sometimes I forget to enable it until battery fully discharges.




    I am using standard Linux hibernation and pretty happy with it:

    Power management options  --->
     [*] Hibernation (aka 'suspend to disk')
        (/dev/sda5) Default resume partition

    P.S. Tell me if you find that other hibernation options work as well.


Comments powered by Disqus