Difference between revisions of "Dell Latitude D600"

From ArchWiki
Jump to: navigation, search
(Kernel: there's a kernel compilation page, and the info here is outdated)
(use https for links to archlinux.org)
(10 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Dell (English)]]
+
[[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.
+
The Dell Latitude D600 was released 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.
  
 
== Introduction==
 
== 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.
+
This is not a guide on how to install Arch (for help with that see the [https://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 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.
 
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 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.
Line 11: Line 11:
  
 
= Hardware =
 
= Hardware =
Here's the output of
+
===Working===
{{Command|name=lshwd|output=00:00.0 Class 0600: Intel Corp.|82855PM Processor to I/O Controller (intel-agp)
+
* Pentium M, with CPU frequency scaling
00:01.0 Class 0604: Intel Corp.|82855PM Processor to AGP Controller (unknown)
+
* ATI Mobility Radeon 9000, including framebuffer (open source radeon driver)
00:1d.0 Class 0c03: Intel Corp.|82801DB USB Controller (uhci_hcd)
+
* Wireless card:
00:1d.1 Class 0c03: Intel Corp.|82801DB USB Controller (uhci_hcd)
+
** Intel 2200 Pro/Wireless Lan card (ipw2200 driver)
00:1d.2 Class 0c03: Intel Corp.|82801DB USB Controller (uhci_hcd)
+
** Broadcom BCM4306 rev2 Wireless card (b43legacy driver)
00:1d.7 Class 0c03: Intel Corp.|82801DB USB Enhanced Controller (ehci-hcd)
+
* Sigmatel STAC9750 audio (including mixing with alsa)
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)}}
+
 
+
 
+
'''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
 
* Function/audio keys
* Touchpad
+
* Alps Touchpad and pointing stick (synaptics driver)
* PCMCIA
+
* O2Media PCMCIA slot
 
* CD/RW, DVD+/-RW
 
* CD/RW, DVD+/-RW
* Ethernet Card
+
* Broadcom BCM5702 ethernet card
* Hardware monitoring (i8k kernel module)
+
* Hardware monitoring (i8k kernel module, hddtemp)
  
 
+
===Untested===
'''Untested'''
+
 
* IRDA
 
* IRDA
* Modem (not planning on testing)
+
* Modem
 
* ACPI Sleep States
 
* ACPI Sleep States
  
= Pre-Installation =
+
= Post-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 =
+
 
+
 
== Wireless ==
 
== 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.
+
The D600 comes with either an Intel Pro Wireless 2200 or a Broadcom BCM4306 rev 2. Both cards work flawlessly with their ipw2200 or b43legacy drivers, respectively.
 +
 
 +
=== Intel PRO Wireless 2200 ===
 +
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
 
  # 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.
+
Now add the entry ''ipw2200'' in the modules section of {{ic|/etc/rc.conf}}, and add/change the line {{ic|1=NET_PROFILES=(main)}}. Now make a {{ic|main}} network-profile in {{ic|/etc/network-profile}}following the template in that directory.  It will look something like the following.
  
{{File|name=/etc/network-profile/main|content=# Network Profile
+
{{hc|/etc/network-profile/main|2=# Network Profile
 
DESCRIPTION="Default Network Profile"
 
DESCRIPTION="Default Network Profile"
  
Line 89: Line 55:
 
WIFI_WAIT=2            # seconds to wait for the wireless card to}}
 
WIFI_WAIT=2            # seconds to wait for the wireless card to}}
  
 
+
If you run into the strange problem of your wireless interface switching between eth0 and eth1 at boot then you may want to use {{ic|nameif}}. Simply put your network id followed by the mac address in /etc/mactab.
If you run into the strange problem of your wireless interface switching between eth0 and eth1 at boot then you may want to use <tt>nameif</tt>. Simply put your network id followed by the mac address in /etc/mactab.
+
  
 
  eth0 00:0C:DB:E8:38:5A
 
  eth0 00:0C:DB:E8:38:5A
 
  wlan0 00:1F:12:62:2E:CC
 
  wlan0 00:1F:12:62:2E:CC
  
(Taken from [http://wiki.archlinux.org/index.php/IBM_Thinkpad_T30 here].)
+
(Taken from [https://wiki.archlinux.org/index.php/IBM_Thinkpad_T30 here].)
 
In addition, a small change to /etc/rc.d/network is necessary to run the nameif command prior to configuring the interfaces. The following excerpt from /etc/rc.d/network shows the lines that need to be added. This change simply checks for the existance of the /etc/mactab file and if it exists executes nameif to assign interface names.
 
In addition, a small change to /etc/rc.d/network is necessary to run the nameif command prior to configuring the interfaces. The following excerpt from /etc/rc.d/network shows the lines that need to be added. This change simply checks for the existance of the /etc/mactab file and if it exists executes nameif to assign interface names.
  
Line 110: Line 75:
 
               # bring up ethernet interfaces
 
               # bring up ethernet interfaces
  
If you are using a Broadcom wireless card you will probably have issues trying to get the Gnome or KDE network gui's to manage your card correctly. <tt>[http://wiki.archlinux.org/index.php/Wicd wicd]</tt> doesn't seem to have any problems managing this card, however.
+
=== Broadcom BCM4306 rev 2 ===
 +
Not long ago, Broadcom cards used to be a nightmare under Linux, until the b43 drivers came along. The b43 and b43legacy drivers are included in the kernel, so as with the Intel card, we just need to get the firmware for it.
 +
 
 +
If you have an Ethernet connection, install b43-fwcutter from pacman, like so:
 +
 
 +
  # pacman -S b43-fwcutter
 +
 
 +
If not, download the b43-fwcutter tarball and compile it:
 +
 
 +
  wget http://bu3sch.de/b43/fwcutter/b43-fwcutter-015.tar.bz2
 +
  tar xjf b43-fwcutter-015.tar.bz2
 +
  cd b43-fwcutter-015
 +
  make
 +
  sudo make install
 +
  cd ..
 +
 
 +
Next, you'll need to download the following two files:
 +
 
 +
* http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2<br />
 +
* http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o
 +
 
 +
And use b43-fwcutter to install the firmware files. Note that the latter two commands require a root shell.
 +
 
 +
  $ 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
 +
 
 +
Since this card uses the b43legacy driver, we'll blacklist and remove the b43 driver just in case.
 +
 
 +
  # modprobe -r b43
 +
  # echo "blacklist b43" >> /etc/modprobe.d/modprobe.conf
 +
 
 +
Finally, load the b43legacy driver:
 +
 
 +
  # modprobe b43legacy
 +
 
 +
Once the firmware is installed, NetworkManager and Wicd both handle the card flawlessly. I haven't tested any other connection managers, but those are the two most popular.
  
 
==CPU Scaling==
 
==CPU Scaling==
See [[cpufrequtils]].
+
See [[CPU Frequency Scaling]].
 +
 
 +
Some BIOS revisions don't work properly with acpi-cpufreq, likely due to the driver being buggy or incorrect DSDT tables. There isn't a fix for this that I know of yet.
  
 
==Suspend to Ram==
 
==Suspend to Ram==
This is easily accomplished by installing <tt>[http://aur.archlinux.org/packages/uswsusp/uswsusp/ uswsusp]</tt> from AUR. Contrary to the ominous output from pacman no additional configuration is needed. Additionally, <tt>s2ram</tt> will probably output an error message saying that ''This machine can only suspend without framebuffer.'' but I have not encountered problems with resuming from suspend.
+
There is a serious problem with KMS in the radeon driver that prevents normal wake-up from sleep mode with this laptop. Bug reports have been filed at [https://bugzilla.kernel.org/show_bug.cgi?id=16140 kernel.org], [https://bugzilla.redhat.com/show_bug.cgi?id=531825 redhat.com], and [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/559163 launchpad.org]. Currently, there are no known fixes, but there is a workaround: set a primary password in the BIOS. The BIOS will initialize the video card on wake-up to ask for the password, and then Linux will resume normally.
 +
 
 +
This is easily accomplished by installing {{ic|[https://aur.archlinux.org/packages/uswsusp/uswsusp/ uswsusp]}} from AUR. Contrary to the ominous output from pacman no additional configuration is needed. Additionally, {{ic|s2ram}} will probably output an error message saying that ''This machine can only suspend without framebuffer.'' but I have not encountered problems with resuming from suspend.
  
{{Command|name=# s2ram -i|output=This machine can be identified by:
+
{{hc|# s2ram -i|2=This machine can be identified by:
 
     sys_vendor  = "Dell Computer Corporation"
 
     sys_vendor  = "Dell Computer Corporation"
 
     sys_product  = "Latitude D600                  "
 
     sys_product  = "Latitude D600                  "
Line 125: Line 130:
  
 
  # s2ram -f
 
  # s2ram -f
 
=Xorg=
 
With the constant stream of updates, and TONS of outdated documentation on the web, Xorg can be a pain to configure.
 
  
 
==Video Card==
 
==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.
+
'''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.  
 
+
==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. (For a nice tutorial see [http://ubuntuforums.org/showthread.php?t=581947 here].)
+
 
+
'''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.
+
The xf86-video-ati package is available in the Extra repository.
<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>
+

Revision as of 00:46, 6 December 2012

The Dell Latitude D600 was released on 3/12/03. At the time of its release it was met with great reviews. Despite being almost 5 years old this business laptop is perfectly capable of delivering a satisfying Linux experience.

Introduction

This is not a guide on how to install Arch (for help with that see the 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 work"TM. 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 d600 is the spec sheet and some useless 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

Working

  • Pentium M, with CPU frequency scaling
  • ATI Mobility Radeon 9000, including framebuffer (open source radeon driver)
  • Wireless card:
    • Intel 2200 Pro/Wireless Lan card (ipw2200 driver)
    • Broadcom BCM4306 rev2 Wireless card (b43legacy driver)
  • Sigmatel STAC9750 audio (including mixing with alsa)
  • Function/audio keys
  • Alps Touchpad and pointing stick (synaptics driver)
  • O2Media PCMCIA slot
  • CD/RW, DVD+/-RW
  • Broadcom BCM5702 ethernet card
  • Hardware monitoring (i8k kernel module, hddtemp)

Untested

  • IRDA
  • Modem
  • ACPI Sleep States

Post-Installation

Wireless

The D600 comes with either an Intel Pro Wireless 2200 or a Broadcom BCM4306 rev 2. Both cards work flawlessly with their ipw2200 or b43legacy drivers, respectively.

Intel PRO Wireless 2200

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 /etc/rc.conf, and add/change the line NET_PROFILES=(main). Now make a main network-profile in /etc/network-profilefollowing the template in that directory. It will look something like the following.

/etc/network-profile/main
# 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

If you run into the strange problem of your wireless interface switching between eth0 and eth1 at boot then you may want to use nameif. Simply put your network id followed by the mac address in /etc/mactab.

eth0 00:0C:DB:E8:38:5A
wlan0 00:1F:12:62:2E:CC

(Taken from here.) In addition, a small change to /etc/rc.d/network is necessary to run the nameif command prior to configuring the interfaces. The following excerpt from /etc/rc.d/network shows the lines that need to be added. This change simply checks for the existance of the /etc/mactab file and if it exists executes nameif to assign interface names.

              stat_busy "Starting Network"
              error=0
              ##### begin nameif change #####
              # set names
              if [ -n /etc/mactab ]; then
                /sbin/nameif
              fi
              ##### end nameif change #####
              # bring up bridge interfaces
              bridge_up
              # bring up ethernet interfaces

Broadcom BCM4306 rev 2

Not long ago, Broadcom cards used to be a nightmare under Linux, until the b43 drivers came along. The b43 and b43legacy drivers are included in the kernel, so as with the Intel card, we just need to get the firmware for it.

If you have an Ethernet connection, install b43-fwcutter from pacman, like so:

 # pacman -S b43-fwcutter

If not, download the b43-fwcutter tarball and compile it:

 wget http://bu3sch.de/b43/fwcutter/b43-fwcutter-015.tar.bz2
 tar xjf b43-fwcutter-015.tar.bz2
 cd b43-fwcutter-015
 make
 sudo make install
 cd ..

Next, you'll need to download the following two files:

And use b43-fwcutter to install the firmware files. Note that the latter two commands require a root shell.

 $ 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

Since this card uses the b43legacy driver, we'll blacklist and remove the b43 driver just in case.

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

Finally, load the b43legacy driver:

 # modprobe b43legacy

Once the firmware is installed, NetworkManager and Wicd both handle the card flawlessly. I haven't tested any other connection managers, but those are the two most popular.

CPU Scaling

See CPU Frequency Scaling.

Some BIOS revisions don't work properly with acpi-cpufreq, likely due to the driver being buggy or incorrect DSDT tables. There isn't a fix for this that I know of yet.

Suspend to Ram

There is a serious problem with KMS in the radeon driver that prevents normal wake-up from sleep mode with this laptop. Bug reports have been filed at kernel.org, redhat.com, and launchpad.org. Currently, there are no known fixes, but there is a workaround: set a primary password in the BIOS. The BIOS will initialize the video card on wake-up to ask for the password, and then Linux will resume normally.

This is easily accomplished by installing uswsusp from AUR. Contrary to the ominous output from pacman no additional configuration is needed. Additionally, s2ram will probably output an error message saying that This machine can only suspend without framebuffer. but I have not encountered problems with resuming from suspend.

# s2ram -i
This machine can be identified by:
     sys_vendor   = "Dell Computer Corporation"
     sys_product  = "Latitude D600                   "
     sys_version  = ""
     bios_version = "A16"
# s2ram -f

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 xf86-video-ati package is available in the Extra repository.