Difference between revisions of "Dell Latitude D600"

From ArchWiki
Jump to: navigation, search
(Make a User)
 
(78 intermediate revisions by 12 users not shown)
Line 1: Line 1:
= Installing Arch on a Dell Latitude D600 =
+
[[Category:Dell]]
The d600 was a released by Dell on 3/12/03. At the time of its release it was met with great  [http://reviews.cnet.com/laptops/dell-latitude-d600/4505-3121_7-20906166.html reviews]. Despite being almost 5 years old this business laptop is perfectly capable of delivering a satisfying Linux experience.
+
{| class="wikitable" style="float: right;"
 
+
| '''Device''' || '''Status''' || '''Modules'''
== Introduction==
 
This is not a guide on how to install Arch (for help with that see the [http://www.archlinux.org/static/docs/arch-install-guide.txt installation guide]), but rather an attempt to cover the steps of how to take full advantage of the laptop's hardware. Despite being an Arch-wiki page, everything explained here should apply to other Linux distributions as well.
 
 
 
Getting most of the hardware to work correctly under Linux, is not overly difficult (in fact these days most things are auto-detected, and "just kinda work"<sup>TM</sup>. Keep in mind I am by no means an expert of hardware in Linux so you may find better solutions than the ones presented here. If you do ''please'' edit this guide so that other people may benefit as well.
 
 
 
== Documentation ==
 
As always the documentation for a Dell laptop is almost non-existant. The only documentation you are going to find for the [http://support.dell.com/support/downloads/driverslist.aspx?c=us&l=en&s=gen&ServiceTag=&SystemID=LAT_PNT_PM_D600&os=WW1&osl=en&catid=&impid= d600] is the [http://www.dell.com/downloads/us/products/latit/d600_spec.pdf spec sheet] and some useless [http://support.dell.com/support/edocs/systems/latd600/en/index.htm#online_documentation pdf] files (although the service guide can be useful if you need to take the laptop apart for some reason). So with that being said the only way to find out ''useful'' information is to inspect each individual hardware component.
 
 
 
= Hardware =
 
Here's the output of
 
{{Box Command|lshwd|
 
<pre>
 
00:00.0 Class 0600: Intel Corp.|82855PM Processor to I/O Controller (intel-agp)
 
00:01.0 Class 0604: Intel Corp.|82855PM Processor to AGP Controller (unknown)
 
00:1d.0 Class 0c03: Intel Corp.|82801DB USB Controller (uhci_hcd)
 
00:1d.1 Class 0c03: Intel Corp.|82801DB USB Controller (uhci_hcd)
 
00:1d.2 Class 0c03: Intel Corp.|82801DB USB Controller (uhci_hcd)
 
00:1d.7 Class 0c03: Intel Corp.|82801DB USB Enhanced Controller (ehci-hcd)
 
00:1e.0 Class 0604: Intel Corp.|82801 Hub Interface to PCI Bridge (hw_random)
 
00:1f.0 Class 0601: Intel Corp.|82801DBM LPC Interface Bridge (i810-tco)
 
00:1f.1 Class 0101: Intel Corp.|82801DBM IDE Controller (UltraATA/100) (piix)
 
00:1f.5 Class 0401: Intel Corp.|ICH4 845G/GL Chipset AC'97 Audio Controller (snd-intel8x0)
 
01:00.0 Class 0300: ATI Technologies Inc.|Radeon Mobility 9000 (M9) Lf (AGP) (ati)
 
02:00.0 Class 0200: Broadcom Corp.|NetXtreme BCM5702X Gigabit Ethernet (tg3)
 
02:01.0 Class 0607: O2Micro Inc.|OZ711EC1 SmartCardBus Controller (yenta_socket)
 
02:01.1 Class 0607: O2Micro Inc.|OZ711EC1 SmartCardBus Controller (yenta_socket)
 
02:03.0 Class 0280: Intel Corp.|Intel(R) PRO/Wireless 2200BG (ipw2200)
 
</pre>
 
}}
 
 
 
 
 
'''Overview'''
 
* Intel Pentium M Processor
 
* ATI Radeon 9000 (RV250 Mobility FireGL 9000 4x AGP)
 
* Intel 2200 Pro/Wireless LAN card '''OR'''
 
** Broadcom 54g Wireless card
 
* Broadcom BCM570 Ethernet card
 
* Integrated Intel 82801 (intel8x0) sound card
 
* PCMCIA card port
 
* Alps touchpad
 
* Function/Audio keys
 
* CD/RW, DVD+/-RW
 
* IRDA
 
 
 
 
 
'''Working'''
 
* Cpu frequency scaling
 
* Video Card: including framebuffer (open source radeon driver)
 
* Intel 2200 Pro/Wireless Lan card (ipw2200 driver)
 
** Broadcom 54g Wireless card (ndiswrapper with windows driver bcmwl5 or native kernel module)
 
* Soundcard (including mixing with alsa)
 
* Function/audio keys
 
* Touchpad
 
* PCMCIA
 
* CD/RW, DVD+/-RW
 
* Ethernet Card
 
* Hardware monitoring (i8k kernel module)
 
 
 
 
 
'''Untested'''
 
* IRDA
 
* Modem (not planning on testing)
 
* ACPI Sleep States
 
 
 
= Pre-Installation =
 
==Bios Update==
 
Now before you delete the Windows partition, you'll want to update the bios to the newest version (rev. A16 as of this writing), to avoid any potential non-OS hardware related problems. Grab the [http://support.dell.com/support/downloads/driverslist.aspx?c=us&l=en&s=gen&ServiceTag=&SystemID=LAT_PNT_PM_D600&os=WW1&osl=en&catid=&impid= executable] and install it.
 
 
 
= Post Installation =
 
 
 
==PC Speaker==
 
The first thing to do is to disable that annoying PC speaker, for our current session.
 
{{Box Command|# modprobe -r pcspkr|
 
(No output means it was successful.)
 
}}
 
 
 
 
 
Now to make it permanent. Edit {{Filename|/etc/inputrc}}and add or uncomment the following:
 
{{Box File|/etc/inputrc|
 
set bell-style none
 
}}
 
 
 
 
 
==Make a User==
 
If you forgot to make a user now is the time to do so. Arch comes equipped with <tt>adduser</tt> which is a nice command line interface for <tt>useradd</tt>. So use that. When prompted for '''''Initial group''''' you should most likely take the default of '''''users'''''. For '''''Additional groups''''' <tt>lp,wheel,network,video,audio,optical,floppy,storage,camera</tt> will probably cover most everything. You can always add a user to a group later via:
 
 
 
#gpasswd -a USERNAME DESIRED_GROUP
 
 
 
==Compiling from Source==
 
 
 
Chances are you'll probably want to setup [[ABS]] so that you can use the [[AUR]]. (For more complete instructions see the appropriate wikis.) Edit {{Filename|/etc/abs/abs.conf}}to your liking, and then setup the ABS tree via:
 
 
 
{{Box Command|# pacman -Sy csup wget fakeroot; abs|
 
<pre>
 
Connected to 66.211.213.17
 
Updating collection core/cvs
 
Checkout base...
 
  ...
 
</pre>
 
}}
 
 
 
 
 
Once the tree is built it's a good idea to create a build directory, so
 
 
 
$ mkdir /home/your_user/packages
 
 
 
 
 
Now whenever you want to build a package put the PKGBUILD in the {{Filename|packages}}folder and build it by
 
 
 
$ fakeroot
 
# makepkg -i
 
 
 
 
 
Now that we have our build environment setup, the next step is to configure GCC to optimize our package builds. To do this lets take a look at the CPU.
 
 
 
 
 
{{Box Command|cat /proc/cpuinfo|
 
<pre>
 
processor      : 0
 
vendor_id      : GenuineIntel
 
cpu family      : 6
 
model          : 9
 
model name      : Intel(R) Pentium(R) M processor 1400MHz
 
stepping        : 5
 
cpu MHz        : 600.000
 
cache size      : 1024 KB
 
fdiv_bug        : no
 
hlt_bug        : no
 
f00f_bug        : no
 
coma_bug        : no
 
fpu            : yes
 
fpu_exception  : yes
 
cpuid level    : 2
 
wp              : yes
 
flags          : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 tm pbe up est tm2
 
bogomips        : 1196.60
 
clflush size    : 64
 
</pre>
 
}}
 
 
 
 
 
(Information taken shamelessly from [http://ubuntuforums.org/archive/index.php/t-328588.html here]).
 
Most of the information isn't critical although some of it is interesting, so here it is for the curious. (If you are going to do a lot of your own package building and want to know more about optimization, then you may be interested in {{Filename|/include/asm/cpufeature.h}}
 
{| class="wikitable" style="text-align:left"
 
|-
 
! processor
 
| Linux's denotation of what processor is being used.
 
|-
 
! vendorID
 
| The vendor of your processor. Intel/AMD/Cyrix/etc.
 
|-
 
! CPU family
 
| Indexed indication of your processor's architecture.
 
|-
 
! model
 
| ???
 
|-
 
! model name
 
| English language string specifying what CPU your computer has.
 
|-
 
! stepping
 
| CPU revision number (more or less).
 
|-
 
! cpu MHz
 
| Speed of CPU.
 
 
|-
 
|-
! cache size
+
| Video || {{G|Working}} || radeon
| Amount of cache your CPU has.
 
 
|-
 
|-
! *_bug
+
| Wireless || {{G|Works after installing firmware}} || b43legacy/ipw2200
| Tells whether or not your CPU is susceptible to some well known processor bugs.
 
 
|-
 
|-
! fpu
+
| Ethernet || {{G|Working}} || tg3
| Whether your processor has a math co-processor (floating point unit).
 
 
|-
 
|-
! fpu_exception
+
| Audio || {{G|Working}} || snd_ac97_codec
| Whether your processor follows the IEEE specifications for handling floating point exceptions.
 
 
|-
 
|-
! cpuid level
+
| Trackpad || {{G|Working}} || xf86-input-synaptics
| Allows programs to get specifications from the CPU.
 
 
|-
 
|-
! wp
+
| PCMCIA || {{G|Working}} || pcmcia-cs
| ???
 
 
|-
 
|-
! bogomips
+
| Modem || style="text-align:center;" | Untested, probably works || hsfmodem
| A Linux approximation of your processor speed.
 
 
|-
 
|-
 +
| IRDA || style="text-align:center;" | Untested || ?
 
|}
 
|}
  
 +
The Dell Latitude D600 was released on 3/12/2003. Despite its age, it can prove to be quite a capable machine. With a couple exceptions, Linux support for the D600 is outstanding. Most of its components work automatically with Arch.
  
 +
== Configuration ==
  
Now that we know about our processor it's time to setup {{Filename|/etc/makepkg.conf}}. An example file using safe Cflags with optimization set for a pentium M is listed below.
+
=== Video ===
{{Box File| makepkg.conf|
+
Use the open source {{pkg|xf86-video-ati}} driver. ATI dropped support for the Mobility Radeon 9000 in their proprietary Catalyst driver after version 8.28.8.
<pre>
 
    ...
 
CARCH="i686"
 
CHOST="i686-pc-linux-gnu"
 
#-- Exclusive: will only run on i686
 
# -mtune builds exclusively for an architecture
 
CFLAGS="-mtune=pentium-m -O2 -pipe -fomit-frame-pointer"
 
CXXFLAGS="${CFLAGS}"
 
MAKEFLAGS="-j2" # number jobs to run simultaneously
 
BUILDENV=(fakeroot !distcc color !ccache)
 
  ...
 
</pre>
 
}}
 
 
 
==Locales==
 
A common error is to not set a locale which leads to pacman complaining with "warning: current locale is invalid; using default "C" locale". So uncomment your locale from
 
 
 
{{Box File|/etc/locale-gen|
 
en_US.UTF-8 UTF-8
 
}}
 
 
 
 
 
and then run
 
 
 
{{Box Command|locale-gen|
 
Generating locales...
 
  en_US.UTF-8... done
 
Generation complete.
 
}}
 
 
 
== Wireless ==
 
The D600 comes with either an Intel Pro Wireless 2200 or a Broadcom BCM43xx. The BCM43xx can be quite fickle under Linux, however the Intel Pro Wireless works flawlessly and is trivial to install. As the driver is already included in the kernel the only thing that needs to be done is to install the firmware.
 
 
 
# pacman -S ipw2200-fw
 
 
 
Now add the entry ''ipw2200'' in the modules section of {{Filename|/etc/rc.conf}}, and add/change the line <tt>NET_PROFILES=(main)</tt>. Now make a <tt>main</tt> network-profile in {{Filename|/etc/network-profile|}}following the template in that directory.  It will look something like the following.
 
 
 
{{Box File|/etc/network-profile/main|
 
<pre>
 
# Network Profile
 
DESCRIPTION="Default Network Profile"
 
 
 
# Network Settings
 
INTERFACE=eth1
 
HOSTNAME=home
 
 
 
# Wireless Settings (optional)
 
ESSID=Router
 
IWOPTS="dhcp $ESSID"
 
#WIFI_INTERFACE=wlan0  # use this if you have a special wireless interface
 
                        # that is linked to the real $INTERFACE
 
WIFI_WAIT=2            # seconds to wait for the wireless card to
 
</pre>
 
}}
 
 
 
==CPU Scaling==
 
 
 
==Frame Buffer==
 
 
 
=Kernel=
 
The pre-compiled Arch kernel certainly works, however, it has a lot of bloat so you'll probably want to compile your own. It's possible to make a custom kernel via [http://wiki.archlinux.org/index.php/Kernel_Compilation_with_ABS ABS], however, building a kernel manually is much easier. Grab the source from [http://www.kernel.org/pub/linux/kernel/v2.6/ kernel.org] and extract it to {{Filename|/usr/src/linux|}}. Make a simlink (<tt>ln -s /usr/src/linux /usr/src/kernel-folder</tt>) and then <tt>make menuconfig</tt>.
 
 
 
(NOTE: You probably need to install <tt>make</tt> (for obvious reasons) and <tt>diffutils</tt> or you will probably get the following error message.)
 
 
 
/bin/sh: cmp: command not found
 
Inconsistent kallsyms data
 
Try setting CONFIG_KALLSYMS_EXTRA_PASS
 
make: *** [vmlinux] Error 1
 
 
 
If you need a starting point for your kernel a sample <tt>.config</tt> can be found [http://www.geocities.com/beissemj/config_2.6.23.12.txt here].
 
 
 
('''IMPORTANT:''' if you use this you will probably have to edit {{Filename|/etc/fstab|}}and {{Filename|/boot/grub/grub.conf}}to use <tt>/dev/hdax</tt> and not <tt>/dev/sdax</tt> or else your kernel will not boot!!)
 
 
 
 
 
When the .config is to your liking do:
 
 
 
# make prepare
 
# make
 
# make modules_install;
 
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/kernel_name
 
 
 
Before you reboot be sure to edit {{Filename|grub.conf}}.
 
 
 
 
 
{{Box File|grub.conf|
 
<pre>
 
# general configuration:
 
timeout  5
 
default  0
 
color light-blue/black light-cyan/blue
 
 
 
# (1) Arch Linux
 
title Arch Linux (2.6.23.12)
 
root  (hd0,1)
 
kernel /kernel-2.6.23.12.arch root=/dev/hda3 vga=792 video=vesafb:mtrr:yrap splash=verbose,theme:darch console=tty1 processor.max_cstate=2
 
initrd /fbsplash-darch-1024x768
 
 
 
# (2) Windows
 
title Windows
 
rootnoverify (hd0,0)
 
makeactive
 
chainloader +1
 
</pre>
 
}}
 
 
 
 
 
'''''Aside:''''' The kernel line <tt>processor.max_cstate=2</tt> disables the CPU from going into the 2 higher power saving states. While this causes the battery to use several hundred more mW of power it also disables the ''annoying'' CPU wine that is usually very noticeable. (This problem also exists in Windows.) It seems that the kernel module <tt>usb-uhci</tt> is partially related to this problem. Disabling this is an option but it will disables USB support...
 
 
 
=Xorg=
 
With the constant stream of updates, and TONS of outdated documentation on the web, Xorg can be a pain to configure.
 
 
 
==Video Card==
 
'''Use the open source "xf86-video-ati" radeon driver.''' ATI dropped support for the Radeon (RV250) Mobility FireGL 9000 after catalyst driver version 8.28.8. The [http://aur.archlinux.org/packages.php?do_Details=1&ID=8286 binary] and the [http://aur.archlinux.org/packages.php?do_Details=1&ID=8287 userspace tools] are available in the AUR, however they ''WILL NOT'' load with Xorg >= 7.2.
 
 
 
'''Note:''' Don't specify <tt>AGPFastWrite</tt> or <tt>AccelMethod</tt> in the xorg.conf <tt>Device</tt> section as it will cause X not to start.
 
 
 
==Fonts==
 
To make your fonts look better you can follow the wiki directions [http://wiki.archlinux.org/index.php/Fonts#Beautify_Fonts_for_LCD_in_X here] and/or [http://wiki.archlinux.org/index.php/Xorg_Font_Configuration here] and install cairo-lcd and libxft-lcd. Personally I don't think those packages look nearly as good as Fedora's, so I use those. Get <tt>rpmextract</tt> from pacman and then download the [http://www.bevenhall.se/jim/fedora-cleartype/ packages]. Extract the .so files and copy them into <tt>/usr/lib</tt>. ('''Important!''' Copying over the old files may crash your current X-session, so it's best to do this from a console.)
 
 
 
==Dual Monitors==
 
Setting up dual monitors used to be an insanely frustrating ordeal because you would have to edit xorg.conf and then start/test/reset X. Luckily RandR fixes this. To summarize from [http://wiki.debian.org/XStrikeForce/HowToRandR12 here] and [http://intellinuxgraphics.org/dualhead.html here] "RandR 1.2 provides automatic discovery of modes (resolutions, refresh rates, etc.) coupled with the ability to configure outputs dynamically (resize, rotate, move, etc.)." The only thing required by the user is to specify a virtual display area, and run the appropriate <tt>xrandr</tt> command.
 
 
 
'''Notes'''
 
#Xinerama is deprecated and will cause X to segfault. This is a known regression by the X developers and they have no intention of fixing it as Xinerama was basically a hack anyways.
 
#MergedFB has now been completely replaced by RandR.
 
 
 
This particular setup uses an external 20" LCD running at 1680x1050 and is connected to a docking station via a DVI cable. Now, it would be useful if the external monitor was auto detected and configured whenever we started the computer. Now because the computer is a laptop we also don't want to try and configure the screen if it isn't connected. The following bash script will do just that.
 
<pre>
 
#!/bin/bash
 
monitor=`xrandr | grep -i DVI | cut -d" " -f2`
 
if [ $monitor = "connected" ]; then
 
    xrandr --output DVI-0 --right-of LVDS --mode 1680x1050
 
else
 
    xrandr --output DVI-0 --off
 
fi
 
</pre>
 
 
 
==Mice==
 
Getting both the touchpad and an external mouse to play nicely together can be tricky. If you use the <tt>evdev</tt> driver then you don't have to specify the ButtonMapping, however, I've had better luck using the regular <tt>mouse</tt> driver. This particular setup specifies a Logitech MX400 USB mouse along with setting up the Alps touchpad. (For more complete instructions see [http://wiki.archlinux.org/index.php/Get_All_Mouse_Buttons_Working here].)
 
 
 
==Xorg.conf==
 
{{Box File|xorg.conf|
 
<pre>
 
#Xorg configuration file created by Matt Beisser (Dec 2004)
 
# One external Screen running at 1680x1050
 
# Note to myself: fglrx for D600 requires v28.8? and breaks, so
 
#    I need to use the opensource Radeon drivers
 
# Update: Still not sure on fonts...
 
#
 
# Feb 2007: Changed to work with Arch
 
# Dec 2007: xinerama is depracated use Virtual Screens instead
 
 
 
Section "ServerLayout"
 
Identifier    "Dualhead Layout"
 
Screen      0  "Default Screen" 0 0
 
#      Screen      1  "ACER Screen" Rightof "Laptop Screen"
 
InputDevice    "External Mouse" "CorePointer"
 
InputDevice    "Keyboard0" "CoreKeyboard"
 
InputDevice    "Synaptics" "SendCoreEvents"
 
Option "AllowMouseOpenFail"  "true"
 
        Option "OffTime" "30"
 
Option "AIGLX"    "true"
 
EndSection
 
 
 
Section "DRI"
 
Group "video"
 
Mode 0666
 
EndSection
 
 
 
Section "Extensions"
 
Option "Composite" "true"
 
EndSection
 
  
Section "Files"
+
=== WiFi ===
RgbPath      "/usr/share/X11/rgb"
+
The D600 comes with either an Intel Pro Wireless 2200 or a Broadcom BCM4306 rev 2. Both are supported natively.
ModulePath  "/usr/lib/xorg/modules"
 
FontPath    "/usr/share/fonts/misc:unscaled"
 
FontPath    "/usr/share/fonts/Type1"
 
FontPath    "/usr/share/fonts/TTF"
 
  
# Additional fonts: Locale, Gimp, TTF...
+
==== Intel PRO Wireless 2200 ====
FontPath    "/usr/share/fonts/cyrillic"
+
The driver, ipw2200, is included in the kernel, so just install the {{pkg|ipw2200-fw}} package and it should work.
FontPath    "/usr/share/fonts/util"
 
FontPath    "/usr/share/fonts/speedo"
 
FontPath    "/usr/share/fonts/OTF"
 
FontPath    "/usr/share/fonts/75dpi:unscaled"
 
FontPath    "/usr/share/fonts/100dpi:unscaled"
 
FontPath    "/usr/share/fonts/artwiz-fonts"
 
EndSection
 
  
Section "Module"
+
==== Broadcom BCM4306 rev.2 ====
Load  "drm"
+
The b43legacy driver is included in the kernel, but unlike with the Intel card, the firmware license is not as permissive, so this process is a little more involved.
Load  "type1"
 
    Load  "ddc"
 
    Load  "freetype"
 
    Load  "type1"
 
    Load  "bitmap"
 
    Load  "dbe"
 
    Load  "extmod"
 
    Load  "record"
 
    Load  "glx"
 
#    Load  "dri" 
 
EndSection
 
  
####################################################
+
You'll need to download the following two firmware files:
# Input Devices
 
####################################################
 
  
Section "InputDevice"
+
* http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2<br />
Identifier  "Keyboard0"
+
* http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o
Driver      "kbd"
 
# Driver      "keyboard"
 
    Option      "CoreKeyboard"
 
Option "XkbRules" "xorg"
 
Option "XkbModel" "pc105"
 
Option "XkbLayout" "us"
 
Option "XkbVariant" ""
 
EndSection
 
  
Section "InputDevice"
+
And use {{pkg|b43-fwcutter}} to install the firmware files:
Identifier  "External Mouse"
 
Driver      "mouse"
 
Option      "Name" "Logitech MX400 Optical Mouse"
 
Option      "Resolution" "1200"
 
# Option      "Protocol" "auto-dev"
 
Option      "Protocol" "auto"
 
# Option      "Protocol" "IMPS/2"
 
Option      "Device" "/dev/input/mice"
 
Option      "Buttons" "9"
 
Option      "ButtonMapping" "1 2 3 6 7 8 9"
 
Option      "ZAxisMapping" "4 5"
 
Option      "Emulate3Buttons" "no"
 
Option      "SendCoreEvents" "yes"
 
EndSection
 
  
Section "InputDevice"
+
  $ tar xfvj broadcom-wl-4.150.10.5.tar.bz2
Identifier  "Synaptics"
+
  # b43-fwcutter -w /lib/firmware wl_apsta-3.130.20.0.o
Driver      "synaptics"
+
  # b43-fwcutter --unsupported -w /lib/firmware broadcom-wl-4.150.10.5/driver/wl_apsta_mimo.o
Option      "Device" "/dev/input/mice"
 
Option      "Protocol" "auto-dev"
 
Option      "Emulate3Buttons" "yes"
 
Option      "LeftEdge" "120"
 
Option      "RightEdge" "830"
 
Option      "TopEdge" "120"
 
Option      "BottomEdge" "650"
 
Option      "FingerLow" "14"
 
Option      "FingerHigh" "15"
 
Option      "MaxTapMove" "110"
 
Option      "VertScrollDelta" "20"
 
Option      "HorizScrollDelta" "20"
 
Option      "MinSpeed" "0.5"
 
Option      "MaxSpeed" "1.5"
 
Option      "SHMConfig" "true"
 
EndSection
 
  
####################################################
+
It would be bad if udev were to load the b43 driver, as it would conflict with b43legacy, so we'll need to blacklist it:
# Monitors
 
####################################################
 
  
Section "Monitor"
+
  # modprobe -r b43
Identifier "Laptop Monitor"
+
  # echo "blacklist b43" >> /etc/modprobe.d/modprobe.conf
Option "DPMS" "true"
 
#HorizSync    28.0 - 96.0 # Warning: This may fry old Monitors
 
#VertRefresh  50.0 - 75.0 # Very conservative. May flicker.
 
    #VertRefresh  50.0 - 62.0 # Extreme conservative. Will flicker. TFT default.
 
   
 
ModeLine "1400x1050" 122.61  1400 1488 1640 1880  1050 1051 1054 1087  -HSync +Vsync
 
  
# 1400x1050 @ 72.00 Hz (GTF) hsync: 78.77 kHz; pclk: 149.34 MHz
+
Finally, load the b43legacy driver:
ModeLine "1400x1050"  149.34  1400 1496 1648 1896  1050 1051 1054 1094  -HSync +Vsync
 
  
# 1400x1050 @ 75.00 Hz (GTF) hsync: 82.20 kHz; pclk: 155.85 MHz
+
  # modprobe b43legacy
# ModeLine "1400x1050"  155.85  1400 1496 1648 1896  1050 1051 1054 1096  -HSync +Vsync
 
  
# 1400x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 179.26 MHz
+
=== Trackpad ===
# ModeLine "1400x1050"  179.26  1400 1504 1656 1912  1050 1051 1054 1103  -HSync +Vsync
+
{{Note|This configuration may not be necessary on a modern system. Only follow these instructions if you find the trackpad is not working properly.}}
  
# 1400x1050 @ 100.00 Hz (GTF) hsync: 111.20 kHz; pclk: 214.39 MHz
+
The trackpad and pointing stick are supported out-of-the-box, but to enable certain features, such as tap-to-click or edge scrolling, you'll need to write some Xorg configuration files.
# ModeLine "1400x1050"  214.39  1400 1512 1664 1928  1050 1051 1054 1112  -HSync +Vsync
 
DisplaySize 370  277 #1400x1050 96dpi
 
EndSection
 
  
Section "Monitor"
+
Open {{ic|/etc/X11/xorg.conf.d/10-evdev.conf}} and comment out every line in the section referring to touchpads. It should look like this when you're done:
Identifier "ACER Monitor"
 
VendorName "Acer"
 
ModelName "X203W"
 
#HorizSync 30-83
 
#VertRefresh 55-75
 
Option "DPMS"
 
EndSection
 
  
###################################################
+
  #Section "InputClass"
## "DualHead" (default) Layout
+
  #       Identifier "evdev touchpad catchall"
####################################################
+
  #        MatchIsTouchpad "on"
Section "Device"
+
  #       MatchDevicePath "/dev/input/event*"
    Identifier "ATI Radeon 9000"
+
  #       Driver "evdev"
    Driver      "radeon"
+
   #EndSection
#   Option      "AccelMethod"  "EXA"
 
#   Option      "AccelMethod" "XAA"
 
    Option      "AGPMode" "4"
 
#   Option      "AGPFastWrite" "Yes"
 
    Option      "EnablePageFlip"  "on"
 
    Option      "ColorTiling"  "on"
 
    Option      "RenderAccel" "on"
 
    Option     "XAANoOffscreenPixmaps" "true"
 
    Option      "DRI" "true"
 
#   Option      "GARTSize" "64"
 
    Option      "DynamicClocks" "on"
 
    Option      "Monitor-DVI-0" "ACER Monitor"
 
    Option      "Monitor-LVDS-0" "Laptop Monitor"
 
EndSection
 
  
Section "Screen"
+
Next, you'll want to create a configuration file for your trackpad. The following is a good starting point.
Identifier "Default Screen"
 
Device    "ATI Radeon 9000"
 
Monitor    "Laptop Monitor"
 
DefaultColorDepth 24
 
SubSection "Display"
 
Depth    24
 
        ViewPort  0 0
 
        Virtual  3080 1050
 
Modes    "1400x1050" "1680x1050"
 
EndSubSection
 
SubSection "Display"
 
Depth    16
 
        ViewPort  0 0
 
        Virtual  3080 1050
 
Modes    "1400x1050" "1680x1050"
 
EndSubSection
 
EndSection
 
  
#Section "Screen"
+
{{hc|/etc/X11/xorg.conf.d/10-synaptics.conf|2=
# Identifier "ACER Screen"
+
Section "InputClass"
# Device    "ATI Radeon 9000"
+
  Driver      "synaptics"
# Monitor   "ACER Monitor"
+
  Identifier "touchpad catchall"
# DefaultColorDepth 16
+
  MatchDevicePath      "/dev/input/event*"
# SubSection "Display"
+
   MatchIsTouchpad      "on"
# Depth    24
+
  Option "VertEdgeScroll" "on"
# Modes "1680x1050"  
+
  Option "HorizEdgeScroll" "on"
# EndSubSection
+
  Option "TapButton1" "1"
# SubSection "Display"
+
EndSection}}
# Depth    16
 
# Modes "1680x1050"  
 
# EndSubSection
 
#EndSection
 
</pre>
 
}}
 
  
 +
After saving, reboot or restart X to apply the changes.
  
 +
== Troubleshooting ==
  
 +
=== CPU powersaving ===
 +
Some BIOS revisions don't work properly with acpi-cpufreq, likely due to the driver being buggy or incorrect DSDT tables. If you're experiencing problems, flash your BIOS to A16 (the latest version.)
  
 +
If your D600 lacks a battery, the BIOS will forcibly downclock the CPU to 600MHz. To override this behavior, add {{ic|<nowiki>processor.ignore_ppc=1</nowiki>}} to your kernel command-line.
  
=Printer=
+
=== Resuming from sleep ===
 +
There is a serious problem with KMS in the radeon driver that prevents normal resume from sleep mode with this laptop. [https://bugzilla.redhat.com/show_bug.cgi?id=531825] A quirk was [https://github.com/torvalds/linux/commit/45171002b01b2e2ec4f991eca81ffd8430fd0aec included in Linux 3.7] that works around this issue automatically. If you're using an older kernel, either add {{ic|1=AGPMode=1}} to your kernel command-line or set a primary password in the BIOS.
  
=Config Files=
+
== See also ==
 +
* [http://www.dell.com/downloads/us/products/latit/d600_spec.pdf Dell specifications brochure] (PDF)

Latest revision as of 22:37, 18 June 2015

Device Status Modules
Video Working radeon
Wireless Works after installing firmware b43legacy/ipw2200
Ethernet Working tg3
Audio Working snd_ac97_codec
Trackpad Working xf86-input-synaptics
PCMCIA Working pcmcia-cs
Modem Untested, probably works hsfmodem
IRDA Untested  ?

The Dell Latitude D600 was released on 3/12/2003. Despite its age, it can prove to be quite a capable machine. With a couple exceptions, Linux support for the D600 is outstanding. Most of its components work automatically with Arch.

Configuration

Video

Use the open source xf86-video-ati driver. ATI dropped support for the Mobility Radeon 9000 in their proprietary Catalyst driver after version 8.28.8.

WiFi

The D600 comes with either an Intel Pro Wireless 2200 or a Broadcom BCM4306 rev 2. Both are supported natively.

Intel PRO Wireless 2200

The driver, ipw2200, is included in the kernel, so just install the ipw2200-fw package and it should work.

Broadcom BCM4306 rev.2

The b43legacy driver is included in the kernel, but unlike with the Intel card, the firmware license is not as permissive, so this process is a little more involved.

You'll need to download the following two firmware files:

And use b43-fwcutter to install the firmware files:

 $ tar xfvj broadcom-wl-4.150.10.5.tar.bz2
 # b43-fwcutter -w /lib/firmware wl_apsta-3.130.20.0.o
 # b43-fwcutter --unsupported -w /lib/firmware broadcom-wl-4.150.10.5/driver/wl_apsta_mimo.o

It would be bad if udev were to load the b43 driver, as it would conflict with b43legacy, so we'll need to blacklist it:

 # modprobe -r b43
 # echo "blacklist b43" >> /etc/modprobe.d/modprobe.conf

Finally, load the b43legacy driver:

 # modprobe b43legacy

Trackpad

Note: This configuration may not be necessary on a modern system. Only follow these instructions if you find the trackpad is not working properly.

The trackpad and pointing stick are supported out-of-the-box, but to enable certain features, such as tap-to-click or edge scrolling, you'll need to write some Xorg configuration files.

Open /etc/X11/xorg.conf.d/10-evdev.conf and comment out every line in the section referring to touchpads. It should look like this when you're done:

 #Section "InputClass"
 #        Identifier "evdev touchpad catchall"
 #        MatchIsTouchpad "on"
 #        MatchDevicePath "/dev/input/event*"
 #        Driver "evdev"
 #EndSection

Next, you'll want to create a configuration file for your trackpad. The following is a good starting point.

/etc/X11/xorg.conf.d/10-synaptics.conf
Section "InputClass"
   Driver      "synaptics"
   Identifier  "touchpad catchall"
   MatchDevicePath      "/dev/input/event*"
   MatchIsTouchpad      "on"
   Option "VertEdgeScroll" "on"
   Option "HorizEdgeScroll" "on"
   Option "TapButton1"  "1"
EndSection

After saving, reboot or restart X to apply the changes.

Troubleshooting

CPU powersaving

Some BIOS revisions don't work properly with acpi-cpufreq, likely due to the driver being buggy or incorrect DSDT tables. If you're experiencing problems, flash your BIOS to A16 (the latest version.)

If your D600 lacks a battery, the BIOS will forcibly downclock the CPU to 600MHz. To override this behavior, add processor.ignore_ppc=1 to your kernel command-line.

Resuming from sleep

There is a serious problem with KMS in the radeon driver that prevents normal resume from sleep mode with this laptop. [1] A quirk was included in Linux 3.7 that works around this issue automatically. If you're using an older kernel, either add AGPMode=1 to your kernel command-line or set a primary password in the BIOS.

See also