Linux on a DELL Latitude E4200

by Martin Monperrus
I run GNU/Linux (Debian/Ubuntu) on my DELL Latitude E4200.

Graphics


Graphics works perfectly with the "intel" driver of xorg. I have a nice WXGA widescreen (1280x800), I am able to use a docking station and can switch to a video projector with the powerful randr extension (I recommend to use arandr). See also dual head with Intel GM45 on Linux.

Main configuration in /etc/X11/xorg.conf:
Section "ServerLayout"
        Identifier     "XFree86 Configured"
        #Screen        "fbdev-config"
        Screen        "intel-config" 
        #Inputdevice "touchpad catchall"
EndSection


Section "Device"
        Identifier  "intel"
        Driver      "intel"
EndSection
Troubleshooting:
$ lspci | grep Graph
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)

$ cat /var/log/Xorg.0.log | grep Graphics
[   409.190] (II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
[   409.207] (II) intel(0): Integrated Graphics Chipset: Intel(R) GM45

Touchpad

The touchpad is "AlpsPS/2 ALPS GlidePoint". It works with the synaptics driver. With some tweaking, it also supports two-fingers scrolling.

Main configuration in /etc/X11/xorg.conf:

Section "InputClass"
     Identifier "touchpad catchall"
     Driver "synaptics"
     MatchIsTouchpad "on"
     MatchDevicePath "/dev/input/event*"
 
     # required for running "synclient -m 300"
     Option "SHMConfig"  "on"

     Option "TapButton1" "1"
     # disabling spurious right click emulation when scrolling with two fingers.
     Option "TapButton2" "0"
     Option "TapButton3" "0"

     # enabling scrolling with two fingers à la Mac
     Option "VertTwoFingerScroll" "on"
     Option "HorizTwoFingerScroll" "on"
     
     # as shown by "synclient -m 300", z>80 when two fingers are used
     Option "EmulateTwoFingerMinZ" "80"
     # as shown by "synclient -m 300", w is not used on this touchpad
     Option "EmulateTwoFingerMinW" "0"
EndSection
Warning: gnome-settings-dameon overrides those settings. You may disable the plugins mouse and pointing-device with gconf-editor by deselecting "active" in /apps/gnome_settings_daemon/plugins/mouse and /apps/gnome_settings_daemon/plugins/pointing-device.

See also https://wiki.archlinux.org/index.php/Touchpad_Synaptics and http://pages.cpsc.ucalgary.ca/~jnjackin/docs/two_finger_scrolling-linux.html.

Troubleshooting (from the synaptics man page):
Option "EmulateTwoFingerMinZ" "integer"
              For touchpads not capable of detecting multiple fingers but are capable of detecting  finger  pressure  and
              width,  this sets the Z pressure threshold.  When both Z pressure and W width thresholds are crossed, a two
              finger press will be emulated. This defaults to a value that disables emulation on touchpads with real two-
              finger  detection  and defaults to a value that enables emulation on remaining touchpads that support pres-
              sure and width support.  Property: "Synaptics Two-Finger Pressure"

Option "EmulateTwoFingerMinW" "integer"
              For touchpads not capable of detecting multiple fingers but are capable of detecting finger width and pres-
              sure, this sets the W width threshold.  When both W width and Z pressure thresholds are crossed, a two fin-
              ger press will be emulated. This feature works best with (PalmDetect) off. Property: "Synaptics  Two-Finger
              Width"

Wireless


Update (August 2013): apt-get install broadcom-sta-dkms fails, but the following succeeds:
# latest version for amd64
$ wget http://fr.archive.ubuntu.com/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.248+bdcom-0ubuntu1_amd64.deb
$ dpkg -i bcmwl-kernel-source*.deb
There are two solutions to get the wireless working: using the module b43 or wl (aka broadcom-sta).

For wl (recommended), on Debian this page explains very well what to do, on Ubuntu see https://help.ubuntu.com/community/WifiDocs/Driver/bcm43xx#Installing_STA_drivers.

Note: After an upgrade to linux kernel 3.1, the wl solution stopped working, I had to redo the procedure described in this page to rebuil wl.ko (being created in /lib/modules/3.1.0-1-686-pae/kernel/drivers/net/wireless/wl.ko)
# error before rebuilding wl.ko
$ modprobe wl
FATAL: Module wl not found.
FATAL: Error running install command for wl
For b43, I had to do the following to get the appropriate firmware:

# debug info
$ lspci | grep Broadcom
0c:00.0 Network controller: Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller (rev 01)

# downloading the firmware
$ wget http://mirror2.openwrt.org/sources/broadcom-wl-5.10.56.27.3_mipsel.tar.bz2
$ tar xvjf broadcom-wl-5.10.56.27.3_mipsel.tar.bz2

# installing the installation tool
$ b43-fwcutter --version                      

# installing the firmware in /lib/firmware (from broadcom-wl-5.10.56.27.3_mipsel.tar.bz2)
$ b43-fwcutter -w /lib/firmware broadcom-wl-5.10.56.27.3/driver/wl_apsta/wl_prebuilt.o


# loading the kernel module
$ modprobe b43

# the rest of the configuration is made by ifconfig, NetworkManager, etc.

Virtualization


The processor provides hardware support for virtualization. It is disabled by default in the BIOS.

To enable it:
* press F12 at startup, choose Bios setup
* in the BIOS, select Virtualization Support >> Virtualization >> Enable Intel Virtualization Technology
* in the BIOS, select Virtualization Support >> Virtualization >> Enable VT for Direct I/O

You can then use KVM as a virtualization solution (e.g. for running Windows under Linux, see report on using kvm for virtualization on linux).


Audio


Sound works with the module snd-hda-intel ($ modprobe snd-hda-intel).

$ lspci | grep Audio   
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)

$ head -n 1 /proc/asound/card0/codec*
==> /proc/asound/card0/codec#0 <==
Codec: IDT 92HD71B7X

==> /proc/asound/card0/codec#2 <==
Codec: Intel Cantiga HDMI

Hard drive (SSD)


The solid-state disk (SAMSUNG SSD PM810 TM 256GB) has excellent performance (see below). Note that I took a special care that the partitions are aligned with 128k physical blocks, i.e. that the starting addresses of partitions (in sectors, not in cylinders) are divisible by 256 (see my previous post and this post). I use the noop I/O scheduler (echo noop > /sys/block/sda/queue/scheduler in /etc/rc.local).

$ fdisk -l /dev/sda
Disk /dev/sda: 256.1 GB, 256060514304 bytes
224 heads, 56 sectors/track, 39869 cylinders, total 500118192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   449999871   224998912   83  Linux
/dev/sda2       449999872   500118191    25059160   82  Linux swap / Solaris
$ hdparm -tT /dev/sda
/dev/sda:
 Timing cached reads:   2614 MB in  2.00 seconds = 1307.77 MB/sec
 Timing buffered disk reads: 738 MB in  3.00 seconds = 245.89 MB/sec

$ seeker /dev/sda
Seeker v2.0, 2007-01-15, http://www.linuxinsight.com/how_fast_is_your_disk.html
Benchmarking /dev/sda [244198MB], wait 30 seconds..............................
Results: 4637 seeks/second, 0.22 ms random access time
$ hdparm -i /dev/sda
/dev/sda:

 Model=SAMSUNG SSD PM810 TM 256GB, FwRev=AXM06D1Q, SerialNo=S0NENEAB201091
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=500118192
 IORDY=on/off, tPIO={min:120,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 *udma6 
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1:  ATA/ATAPI-2,3,4,5,6,7
Error when apt-get install broadcom-sta-dkms
debian error struct cfg80211_bss has no member named len_information_elements



Tagged as: