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 [[http://www.thinkwiki.org/wiki/Xorg_RandR_1.2|the powerful randr extension]] (I recommend to use [[http://christian.amsuess.com/tools/arandr/|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 [[http://wiki.debian.org/wl#Squeeze|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 [[http://wiki.debian.org/wl#Squeeze|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 [[heads and sectors for partition alignment|my previous post]] and [[http://ldn.linuxfoundation.org/blog-entry/aligning-filesystems-ssd%E2%80%99s-erase-block-size|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: