Table of Contents
Update, Upgrade and dist-upgrade
X Window System
VGA Out and Multi-Head
Suspend and DRI
I am very happy with Ubuntu 7.04 on the Latitude c600. It took some time to install, especially with the CD problems, but once installed Ubuntu provided everything I wanted.
I downloaded the Ubuntu Edgy Eft (6.10) Desktop Edition iso from http://ww.ubuntu.com. The Laptop CDROM drive had a lot of trouble reading the CD-ROM. Eventually I got it to boot by pressing F6 to modify the boot command and adding the nodma instruction to the boot command. But it was slow. The Desktop Edition iso is a live boot CD which includes an option to install to hard drive. The actual installation process was very simple - a few easy questions followed by about an hour copying files to the local hard drive.
Create a swap partition. Create a swap partition on the target driver before booting the ubuntu CD (use knoppix or a rescue tools CD to create the swap partition). Then boot ubuntu and most of the performance problems will disappear. Thanks to Jon L. Gardner for this tip.
The sound worked perfectly with the default installation.
It took me a while to figure out why the laptop's ethernet port didn't work. It turned out that on the Latitude c600 the ethernet and modem sockets are attached to the case, but the controllers are on a mini-PCI card which can be found by removing the memory compartment cover on the bottom of the laptop. Tiny wires connect the controllers to the sockets. But someone had removed the mini-PCI card. So the ethernet and modem ports on this machine are dead.
Fortunately I had a Dlink DFE650TX PCMCIA ethernet card in my spare parts box. I plugged in the DFE650, ubuntu detected it without any problems. I used the network-admin utility to configure the card and the network appeared.
The laptop came with a NovaTech "Wireless PC Card". That's the actual model name! It is a 802.11b/g card using the RT2500 chipset. Hooray! There is a rt2500 driver in the kernel! Kindly provided by http://rt2x00.serialmonkey.com. But I couldn't get it working using network-admin. Instead, I had to edit the config files by hand. I left the interface marked as disabled in network-admin and added these lines to my /etc/networking/interfaces file to get the rt2500 card to work with my WEP128 wireless b network (use your own values for essid and key, of course):
auto ra0 iface ra0 inet dhcp pre-up iwconfig ra0 essid linksys pre-up iwconfig ra0 mode managed pre-up iwconfig ra0 key 11111111111111111111111111
Now that the network is working I can fix the package management's /etc/apt/sources.list file. First, I change to the nearest ubuntu mirror, in my case http://ubuntu.mirror.rafal.ca. Next I add the universe and multiverse repositories. Then I did the familiar:
bash# apt-get update bash# apt-get upgrade
You could probably do this using the GUI package manager (synaptic?) but I prefer the command line. Then I add the http://medibuntu.sos-sts.com/repo repository for some non-free software such as mplayer and lame, and install them using this command:
apt-get -y install gstreamer0.8-plugins w32codecs xine-ui libflash-mozplugin mplayer \ gstreamer0.10-plugins-ugly gstreamer0.8-plugins-multiverse \ gstreamer0.10-plugins-bad-multiverse gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad \ libxine-extracodecs libxine-main1 faad sox lame ffmpeg mjpegtools vorbis-tools \ libxvidcore4 gstreamer0.10-pitfdll w32codecs libdvdcss2 timidity \ timidity-interfaces-extra freepats flashplugin-nonfree sun-java5-bin \ sun-java5-plugin totem-gstreamer rar gtk-gnutella frozen-bubble \ msttcorefonts gsfonts-x11 xfonts-intl-european libdvdread3
Ubuntu 7.04 (feisty) came out the day after I finished installing ubuntu 6.10. So I added feisty to my sources.list and did an apt-get dist-upgrade. Here is my final sources.list file:
# # edgy # deb http://ubuntu.mirror.rafal.ca/ubuntu/ edgy main restricted universe multiverse deb-src http://ubuntu.mirror.rafal.ca/ubuntu/ edgy main restricted universe multiverse deb http://ubuntu.mirror.rafal.ca/ubuntu/ edgy-updates main restricted deb-src http://ubuntu.mirror.rafal.ca/ubuntu/ edgy-updates main restricted deb http://ca.archive.ubuntu.com/ubuntu/ edgy-backports main restricted universe multiverse deb-src http://ca.archive.ubuntu.com/ubuntu/ edgy-backports main restricted universe multiverse deb http://medibuntu.sos-sts.com/repo/ edgy free non-free deb-src http://medibuntu.sos-sts.com/repo/ edgy free non-free deb http://archive.canonical.com/ubuntu edgy-commercial main deb http://security.ubuntu.com/ubuntu edgy-security main restricted universe deb-src http://security.ubuntu.com/ubuntu edgy-security main restricted universe # # feisty # deb http://ubuntu.mirror.rafal.ca/ubuntu/ feisty main restricted universe multiverse deb-src http://ubuntu.mirror.rafal.ca/ubuntu/ feisty main restricted universe multiverse deb http://ubuntu.mirror.rafal.ca/ubuntu/ feisty-updates main restricted deb-src http://ubuntu.mirror.rafal.ca/ubuntu/ feisty-updates main restricted deb http://ca.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse deb-src http://ca.archive.ubuntu.com/ubuntu/ feisty-backports main restricted universe multiverse deb http://medibuntu.sos-sts.com/repo/ feisty free non-free deb-src http://medibuntu.sos-sts.com/repo/ feisty free non-free deb http://archive.canonical.com/ubuntu feisty-commercial main deb http://security.ubuntu.com/ubuntu feisty-security main restricted universe deb-src http://security.ubuntu.com/ubuntu feisty-security main restricted universe
X worked fine on the default Edgy install. But I have had problems with the the default Ubuntu xorg.conf file in other systems because it contains too many input device configurations. Also, Edgy used the ati driver, and I wanted the r128 driver (the chipset is an ATI Rage Mobility M3 AGP 2x). So I used a slightly different xorg.conf:
# xorg.conf for dell latitude c600 by A. Howlett and others Section "ServerLayout" Identifier "Default Server Layout" Screen 0 "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" InputDevice "Generic Mouse" "AlwaysCore" EndSection Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/share/fonts/local" FontPath "/usr/share/fonts/misc" FontPath "/usr/share/fonts/75dpi:unscaled" FontPath "/usr/share/fonts/100dpi:unscaled" FontPath "/usr/share/fonts/Type1" FontPath "/usr/share/fonts/CID" FontPath "/usr/share/fonts/Speedo" FontPath "/usr/share/fonts/cyrillic" FontPath "/usr/share/fonts/artwiz-aleczapka" FontPath "/usr/share/fonts/TTF" FontPath "/usr/share/fonts/util" FontPath "/usr/local/share/fonts" FontPath "/usr/share/fonts" FontPath "/usr/share/fonts" FontPath "/usr/share/fonts/aquafont" FontPath "/usr/share/fonts/artwiz" FontPath "/usr/share/fonts/artwiz-aleczapka-en" FontPath "/usr/share/fonts/corefonts" FontPath "/usr/share/fonts/freefont" EndSection Section "Module" Load "GLcore" Load "dbe" Load "dri" Load "extmod" Load "glx" Load "pex5" Load "record" Load "xie" Load "v4l" Load "freetype" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "XkbModel" "pc104" Option "XkbLayout" "us" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "CorePointer" Option "Device" "/dev/psaux" Option "Protocol" "PS/2" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" Identifier "Generic Mouse" Driver "mouse" Option "SendCoreEvents" "true" Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "Emulate3Buttons" "true" Option "ZAxisMapping" "4 5" EndSection Section "Monitor" Identifier "laptop LCD" VendorName "Dell" ModelName "Latitude C600" HorizSync 31.5-48.5 VertRefresh 40-70 EndSection Section "Device" Identifier "Video0" Driver "r128" VideoRam 8192 Option "EnablePageFlip" "true" Option "AGPFastWrite" "true" Option "AGPMode" "2" BusID "PCI:01:00:0" Screen 0 Option "Display" "FP" Option "MonitorLayout" "CRT, LFP" EndSection Section "Screen" Identifier "Screen0" Device "Video0" Monitor "laptop LCD" DefaultDepth 16 Subsection "Display" Depth 32 Modes "1024x768" EndSubSection Subsection "Display" Depth 24 Modes "1024x768" EndSubSection Subsection "Display" Depth 16 Modes "1024x768" EndSubSection Subsection "Display" Depth 8 Modes "1024x768" EndSubSection EndSection Section "DRI" Mode 0666 EndSection
Notice that the default depth is set to 16 bits per pixel. On this laptop DRI will only work at 16 bpp. You need DRI if you want to play games or watch videos. If you don't play games or watch videos then you can increase the default depth to 24 (DRI will be de-activated).
There are three tricks to getting TV-out working on this machine. The first is to download the atitvout program:
bash# apt-get install atitvout
The second trick is to have the TV on and connected to the laptop before you turn the laptop on. This is very important because atitvout uses BIOS data that initialize when the laptop boots. If the TV isn't detected when your laptop boots, then no BIOS TV data and no TV Out.
The third trick is to use this command (as root):
bash# atitvout -f t
This command changes video output to the TV. To change back to the LCD, use this command:
bash# atitvout -f l
Here's a hack to get mirrored display on the LCD and TV. I couldn't get the display activated on both the TV and the LCD using atitvout -f lt. That command should work but it doesn't. I discovered that when I have the output directed to the TV and use mplayer to play a movie, mplayer activated the LCD screen and played the movie on both the LCD and the TV. After mplayer stopped the output remained active on both the TV and the LCD. So you can get mirrored output on the LCD and TV by switching to the TV, then briefly running and stopping mplayer.
VGA Out worked with the r128 driver and my xorg.conf file with an external LCD monitor in mirror mode. To switch to dual head I had to add the following to the end of myxorg.conf file:
# # Following lines are added to support multihead # Section "Monitor" Identifier "external LCD" Option "DPMS" End Section Section "Device" Identifier "Video1" Driver "r128" VideoRam 8192 BusID "PCI:01:00:0" Option "Display" "FP" Screen 1 EndSection Section "Screen" Identifier "Screen1" Device "Video1" Monitor "external LCD" DefaultDepth 16 SubSection "Display" Depth 8 Modes "1024x768" EndSubSection SubSection "Display" Depth 16 Modes "1024x768" EndSubSection EndSection Section "ServerLayout" Identifier "Multihead" Screen 0 "Screen0" Screen 1 "Screen1" rightof "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" InputDevice "Generic Mouse" "AlwaysCore" EndSection Section "ServerFlags" Option "xinerama" "true" Option "DefaultServerLayout" "Multihead" EndSection
These commands define a second server layout named Multihead. This second layout uses a second screen (the external monitor) and places it on the right side of the laptop screen. So if you move your mouse off the right edge of the laptop screen it will appear on the left edge of the external monitor. By convention, when the window manager opens a new window it will not split the window across the two monitors, but you can resize windows if you wish.
Ubuntu installs the Gnome Desktop. Gnome recognized and used the eject, volume up, volume down, mute, CRT/LCD, and Suspend function keys.
I like the fluxbox window manager. Fluxbox didn't support the sound function keys. But you can add support to fluxbox by adding these lines to ~/.fluxbox/keys:
None 176 :exec amixer -q set Master 10%+ None 174 :exec amixer -q set Master 10%- None 160 :exec amixer -q set Master toggle
The Latitude C600 supports two different types of suspend: both are incompatible with DRI. If you watch videos or play games then you need DRI and you can't use suspend. If you don't watch videos or play games then you must deactivate DRI before trying suspend. To de-activate DRI all you have to do is set the default depth in the xorg.conf file to 24. (DRI only works at depth 16.)
The first way to do software suspend is to use the Fn-Esc key combination. This suspend function has nothing to do with linux - I think it is implemented in BIOS. It works ... sort of. It suspends fine. Then when I restart the computer it seems to restore correctly, but then it stops and goes back to sleep. On the second restart it restores correctly. A bit weird, but it works.
The second way to suspend is to use the hibernate command either in a shell or bind it to a key. The hibernate command works fine without any modifications.
Back to Andrew's Projects.