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/cedegaand rename/usr/bin/cedegato/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.
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)
The way to do it and how it works, according to VMware is described here:
http://www.vmware.com/pdf/vmware_timekeeping.pdf
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
Amelioration to some extent.
Add to your system bashrc
setterm -bfreq 30000
setterm -blength 1
Will make speaker pop quietly instead of beep.
http://www.linlap.com/wiki/Dell+Latitude+D820
try to
rmmod pcspkr
and
add blacklist pcspkr to /etc/modprobe.d/blacklist