Linux on Dell Latitude D820

Wednesday, May 24. 2006

Linux on Dell Latitude D820

Updates
  • 08 Dec 2006 General update of the Howto after switching to Ubuntu Edgy Eft. Removed BIOS-corrupting warning because it seems to be fixed (Either in the newest kernel or in one of the Dell BIOS updates (I have A04), don't know)
Dell Latitude D820 details
Processor Intel® Core™ Duo T2400 1.83 GHz Works
Memory 2 GB RAM Works
Harddisk 100 GB Hitachi HTS72101 ATA Drive Works
DVD/CD-ROM TSSTcorp DVD+-RW TS-L632D Works
Videocard 512 MB NVidia® Quadro NVS 120M TurboCache™ Works
TFT display 1280x800 Works
Soundcard Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller Works, but has some problems
USB Intel Corporation 82801G (ICH7 Family) Works
Firewire O2 Micro Works
Network Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express Works
WLAN Intel® Pro/Wireless 3945ABG Works
Touchpad Synaptics TouchPad Works
PCMCIA O2 Micro Works
Special buttons Mute volume, Increase volume, Decrease volume Works
ACPI Works but has suspend problems
Smart card reader O2 Micro Oz776 Works
IrDA SIR at /dev/ttyS1 Works
Used setup

I'm using Ubuntu Edgy Eft which comes with a 2.6.17 kernel. After the installation pretty much is working right out of the box. Some stuff needs some tweaking as described below.

Output of lspci

If you are interested in the output of lspci, here it is.

Processor

The two cores of the processor are working out of the box. Speed Step is also working fine with 1 GHz, 1.33 Ghz and 1.83 Ghz.

I had problems with Half-Life (via Cedega). I've solved them by disabling the second CPU and switching off speed step before I start the game. This can be done by executing the following commands as root before starting Cedega:

echo 0 > /sys/devices/system/cpu/cpu1/online
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

After closing Cedega you should run these commands as root to get the system back to normal:

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 1 > /sys/devices/system/cpu/cpu1/online

By using sudo all this can be put into some scripts so cedega can be started easily without bothering about technical details. Here is a step by step instruction how to do it (I assume you have installed Cedega as Debian package. If not, then you have to figure out the differences yourself):

  • Run dpkg-divert --add /usr/bin/cedega and rename /usr/bin/cedega to /usr/bin/cedega.distrib. This ensures that Debian always installs the cedega binary to cedega.distrib.
  • Download setgovernor, put it into /usr/local/bin and make it executable. This script is responsible for switching the frequency governor.
  • Download setcpu2, put it into /usr/local/bin and make it executable. This script is responsible for enabling and disabling the second CPU.
  • Download cedega, put it into /usr/bin and make it executable. This script replaces the original cedega binary which you have diverted to cedega.distrib in the first step. The script calls the other two scripts before and after running the original cedega. It also runs cedega with highest process priority to solve some schedular issues with kernel 2.6.
  • Install sudo and put this into /etc/sudoers (Replace your-user-name with your user name):
    your-user-name ALL=(root) NOPASSWD: /usr/local/bin/setgovernor
    your-user-name ALL=(root) NOPASSWD: /usr/local/bin/setcpu2
    This allows your user to run the setgovernor and setcpu2 scripts as root without entering a password.

I noticed another problem. This time with VMware. The clock of the guest operating system is running much to slow. This can be solved by reducing the maximum C-State of the processor with this command:

echo 1 > /sys/module/processor/parameters/max_cstate

After you are finished with Vmware you can reset the setting to save battery power with this command:

echo 8 > /sys/module/processor/parameters/max_cstate

You may put these commands into a script and run it with sudo like the other scripts described above.

Video card

The open source Xserver nv runs fine in 2D mode but I've upgraded immediately to the latest beta binary driver from Nvidia (version 97.42) to get 3D acceleration and TwinView.. This is my first contact with NVidia hardware. All my former laptops had ATI chipsets. It took a long time until a had TwinView running perfectly but when it's configured properly (Thanks to the great documentation) it's working like a charm. Here is the crucial part of my xorg.conf:

Section "Device"
    Identifier "Generic Video Card"
    Driver     "nvidia"
    BusID      "PCI:1:0:0"
    Option     "NoLogo"                    "true"
    Option     "ConnectedMonitor"          "DFP-0, CRT-0"
    Option     "UseDisplayDevice"          "DFP-0, CRT-0"
    Option     "UseEdidFreqs"              "false"
    Option     "UseEDID"                   "true"
    Option     "TwinView"                  "true"
    Option     "TwinViewOrientation"       "LeftOf"
    Option     "SecondMonitorHorizSync"    "30-160"
    Option     "SecondMonitorVertRefresh"  "30-85"
    Option     "MetaModes"                 "DFP-0:1280x800,CRT-0:1280x1024; DFP-0:1280x800,
CRT-0:NULL; DFP-0:1024x768,CRT-0:NULL; DFP-0:800x600,CRT-0:NULL; DFP-0:640x480,CRT-0:NULL"
    Option     "TwinViewXineramaInfoOrder" "DFP-0, CRT-0"
    Option     "DPI"                       "75 x 75"
    Option     "UseEdidDpi"                "false"
    Option     "FlatPanelProperties"       "Scaling = Centered, Dithering = Default"
    Option     "AddARGBGLXVisuals"         "true"
    Option     "TripleBuffer"              "true"
EndSection

With these settings I'm able to switch between Single-Head and Dual-Head with the xrandr program and it doesn't matter if the external display is connected or not.

Soundcard

Works with the ALSA driver snd_hda_intel but has some problems. A major problem is that the mixer capabilities are very limited. I can just control Master, PCM, Capture Mux and Capture. There is no mixer setting for the internal PC speaker which is quite annoying because it beeps very loud. I have disabled the bell in bash by putting the line set bell-style none into the file ~/.inputrc and also disabled it in gnome but sometimes it's still triggered by some programs. If you have a solution for this, let me know.

I had another problem with sound in Quake 3 but solved them by executing these commands as root before I start the game:

echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
echo "quake3.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss

Similar to the Cedega solution described above in the processor section I have created a alsafix script and a quake3 script. Put both into /usr/local/bin, make both scripts executable, edit the quake3 script and change the path to your real quake3 binary and then make sure your user can execute the alsafix script with sudo without entering a password. Then you can just run the quake3 script and quake starts up with working sound.

A more serious problem I have with timidity and games like FlightGear. The sound makes small breaks multiple times per second. The only solution to improve the sound quality (but it's still not perfect) I have found so far is disabling the second CPU core and setting the first CPU core to full power. If you know a better solution, please let me know!

Firewire

I don't have any firewire devices but the output in the kernel log file looks like the driver was loaded correctly.

Network

The intergrated network controller is working out of the box with the tg3 driver.

WLAN

The wireless network card is detected by Ubuntu and works out of the box with the shipped open source ipw3945 driver.

Touchpad

The touchpad worked out of the box but mouse pointer movement was pretty slow. The mouse settings in Ubuntu doesn't affect the touch pad. They affect only the track point. So I added the following lines to the touchpad section in xorg.conf to accelerate the mouse pointer movement

Option         "MinSpeed"    "0.7"
Option         "MaxSpeed"    "3"
Option         "AccelFactor" "0.025"

If you want to be able to configure the touchpad with qsynaptics then you may want to add this option:

Option         "SHMConfig" "1"

If you are like me and don't like the scroll area on the touch pad then you can disable it with this option:

Option         "VertScrollDelta" "0"
PCMCIA

PCMCIA works fine out of the box with the yenta driver. Because the laptop has integrated WLAN I don't need PCMCIA but I have tested it by inserting my old Orinocco WLAN card. It was detected and powered up correctly.

Volume buttons

The volume buttons are working right out of the box. They are handled by software (Gnome in my case). That means that they are not always working when you are in a game like Quake or Half-Life.

ACPI

ACPI support works fine. The battery state and CPU temperature can be read without any problems. But as usual suspend-to-ram has problems. I'm currently not sure what causes it. The laptop does not go to sleep, instead it freezes after some time. I have not investigated this problem yet. If you have some tips, please let me know.

Smart card reader

The smart card reader seems to work. The program pcsc_scan (included in the package pcsc-tools) detects the reader and recognizes my cash card. But I have no need for a smart card reader so I have not tested further. You also need to install the package pcscd and you have to set the driver option DRIVER_OPTION_USE_BOGUS_FIRMWARE in the file /etc/libccid_Info.plist (Restart pcscd after changing the file):

<key>ifdDriverOptions</key>
<string>0x0004</string>
IrDA

IRDA does not work out of the box because the /etc/init.d/irda-setup script of the irda-utils package shipped with Ubuntu thinks it has to load the smsc-ircc2 FIR driver which fails. I have modified this script so it looks like this (changes in bold):

IBM0071)
FIR="nsc-ircc";
OPTIONS="dongle_id=0x09";
;;
SMCf010*)
SIR="true"
;;
SMC*)
FIR="smsc-ircc2";
;;

After this change and restarting all the IrDA stuff irdadump recognized my Siemens mobile phone and scmxx --device=/dev/ircomm0 -i correctly connected to the phone and listed lots of information.

TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones

Posted in Linux | Comments (9)
Marco Gralike at 2007-07-10 22:55
Regarding your problem with "The clock of the guest operating system is running much to slow". Accoording to VMware there is only one valid solution. Update the guest OS with the latest (belonging to the VMware software) VMware tools package. This is all that is needed. The VMware Tools software keep the time synchronized with the host...
Klaus Reimer at 2007-07-11 07:58
This never worked for me. I think this VMWare time sync is only done once when the guest is booted or resumed and this sync is simply there to correct the clock after you have suspended the guest and resume it some days later. But the problem I meant is a clock running permanently too slow. If you watch the seconds of the running time in the guest os then you can see that the guest needs several real seconds to increase the time by one second.

But the solution I have written in the howto solves this problem pretty well. I'm pretty sure this is simply a power management problem. Maybe VMWare measures CPU speed during startup and it depends on the current power management state how fast the CPU is during this time. When the guest os is started the CPU throttles down to save power and then the clock runs slower. This also explains why the guest os is running with correct speed when the host system is under load (because then the CPU is running with full power). Setting the max c-state to 0 solves this problem perfectly (But it may consume more power)
Marco Gralike at 2007-07-11 16:35
Klaus,

The way to do it and how it works, according to VMware is described here:

http://www.vmware.com/pdf/vmware_timekeeping.pdf
Ybague at 2010-01-09 22:12
hello,

I'm Gabriel, I have a video card G72M Quadro NVS 110M Nvidia GeForce 7300.
I come from this web page:
http://ubuntuforums.org/showthread.php?t=414496
user Falstaff
For me, impossible to get working 3d drivers with the basic karmic ubuntu (173,185,195 ...). He said he was able to run the card with your post and the driver "the latest beta driver from Nvidia binary (version 97.42) "

I looked on nvidia but nothing about this driver! ... if You still have the 97.42 driver to make a good facility and try your manipulation, i would like you send me one! I already downloaded your file org.conf

Thank you

Gaby
Suse10 at 2007-07-20 21:54
(BEEEEP bash)
Amelioration to some extent.

Add to your system bashrc

setterm -bfreq 30000
setterm -blength 1

Will make speaker pop quietly instead of beep.
duke at 2009-08-19 22:55
perfect
Bill at 2007-08-22 12:30
I have another guide for the Dell Latitude D820 which can be viewed at:
http://www.linlap.com/wiki/Dell+Latitude+D820
Kristof Szabo at 2007-10-09 15:21
regarding the PC speaker:

try to
rmmod pcspkr
and
add blacklist pcspkr to /etc/modprobe.d/blacklist
liam at 2008-08-03 21:24
i deleted my sound card dont no what happened have tried every thing to get it back nothing happenind and have no disk is for the latitude d820 any advise please

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.