HARDWARE Dell Latitude D610

From Gentoo Linux Wiki

Jump to: navigation, search
This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

This page is to cleanly sum up the results of this thread about this laptop. Any help welcome :)



Contents

[edit] Graphics

[edit] ATI Radeon Mobility M300 Chipset

To get the M300 working is quite simple

emerge ati-drivers

When you run fglrxconfig select single monitor mode.

NEW as of version 8.20.7 there is a new config tool replacing fglrxconfig; aticonfig --initial will create a good default base config for any radeon card and write it to xorg.conf

Note Make sure to install ati drivers version 8.16.xx or above. If you have ati-drivers version 8.14.13-r1 and earlier , and your laptop has 1Gb of ram and more -- DRI will fail. To work around that problem with the old drivers, you can decrease amount of memory at the boot time by specifying mem=832.

Note Be careful with version 8.32.5. With my D610, the resume after hibernation was hanging the machine (garbage on screen, then definitly hanged). I had to switch back to the 8.30.3 version, which seems to works fine with hibernation. If you don't want problems with hibernation, i recommand you to switch to a console (alt+ctrl+F1) before hibernate. Otherwise, the resume hangs sometime (but not all the time). Also note that 8.32.5 doesn't officially support the final version of Xorg 7.2, see the release notes (https://www2.ati.com/drivers/linux/linux_8.33.6.html#182529) for details.

For example,

kernel /vmlinuz root=/dev/sda3 resume2=swap:/dev/sda2 idle=halt vga=0x31B video=vesafb:mtrr,ywrap,vram=64 mem=832m

[edit] Intel i915GM

See this HowTo.

[edit] Disks

Edited by rfk, Jan 23 2006

HDD is SATA.

Linux Kernel Configuration: SATA config
Device Drivers  --->
 SCSI device support  --->
  <*>   SCSI disk support
  SCSI low-level drivers  --->
   <*> Serial ATA (SATA) support
    <*>   Intel PIIX/ICH SATA support

[edit] CD-RW/DVD-ROM

Edited by rfk, Jan 23 2006

Some drives are SATA ones. You can check with the following command:

dmesg|grep -i cd-r

If you see lines starting with hdX (e.g. hdc) you're lucky and can skip this step. For the others:

Linux Kernel Configuration: SATA config
Device Drivers  --->
 SCSI device support  --->
  <*>   SCSI CDROM support
  SCSI low-level drivers  --->
   <*> Serial ATA (SATA) support
    <*>   Intel PIIX/ICH SATA support

To make the CD/DVD rom work you have to do a bit of kernel hacking; edit /usr/src/linux/include/linux/libata.h:

File: /usr/src/linux/include/linux/libata.h

and change

 #undef ATA_ENABLE_ATAPI                /* define to enable ATAPI support */

to

 #define ATA_ENABLE_ATAPI                /* define to enable ATAPI support */

this will force atapi to work happy happy.

[edit] NOTE

To make the CD-RW/DVD-ROM work in newer versions of the 2.6 kernel (post 2.6.11?), you just need to add "libata.atapi_enabled=1" (without the quotes) to your kernel command line.

[edit] LAN

This works out of the box with

Linux Kernel Configuration: LAN
Ethernet (1000 Mbit)  --->
 <*> Broadcom Tigon3 support

[edit] Wifi

This works fine with net-wireless/ipw2200 >= 1.0.4 including monitor mode (useful for Kismet) You'll also need :

  CONFIG_CRYPTO=y
  CONFIG_CRYPTO_AES_586=m
  CONFIG_CRYPTO_ARC4=m
  CONFIG_CRYPTO_MICHAEL_MIC=m

The WiFi LED can be enabled by simply adding the following to your file /etc/modules.d/ipw2200 (if the file is not there, create it).

File: /etc/modules.d/ipw2200
options ipw2200 led=1

then run

modules-update

[edit] Bluetooth

I followed the The Host-to-Host-Bluetooth-HOWTO and it worked. The Bluetooth Status LED is turned on via hardware. As soon as I installed the bluetooth module in my laptop the blue led light up. Note the bluetooth AND wifi card are both controlled by the same Fn+F2 so when one is off, they both are. You can how ever turn the wifi off via software.

Kernel options :

Linux Kernel Configuration:
Device Drivers  --->
   Networking Support  --->
        <M> Bluetooth subsystem support  --->
             <M>   L2CAP protocol support
             <M>   SCO links support
             <M>   RFCOMM protocol support
                  [*]     RFCOMM TTY support
             <M>   BNEP protocol support
                  [*]     Multicast filter support
                  [*]     Protocol filter support
             <M>   HIDP protocol support
             Bluetooth device drivers  --->
                  <M> HCI USB driver
                       [*]   SCO (voice) support

Then i restarted hotplug (bluetooth is as module in my case). After that , the device seemed to work :

Code: grep ^[TPD] /proc/bus/usb/devices | fgrep Cls=e0 -B1 -A1
  T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
  D:  Ver= 2.00 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
  P:  Vendor=413c ProdID=8103 Rev=16.57

I just installed the hci tools, and it works.

[edit] ACPI

Works fine with default setup. I can read Temp and battery status. Now what i plan to do : suspend to ram when i close the screen, beeping when battery is low and auto suspend to disk when battery is very low.

I did the following to get my speedstep stuff working. I compiled all the acpi stuff into the kernel.

emerge acpid cpufrequtils radeontool
rc-update add acpid default

Edit the /etc/acpi/default.sh

File: /etc/acpi/default.sh
#This file modified by Ryan Neufeld August 2005
set $*

group=${1/\/*/}
action=${1/*\//}

case "$group" in
        button)
                case "$action" in
                        power)
                                /sbin/init 0
                                ;;
                        lid)
                                /etc/acpi/lid.sh
                                ;;
                        sleep)
                                ;;
                        *)      #logger "ACPI action $action is not defined"
                                ;;
                esac
                ;;
        ac_adapter)
                /etc/acpi/ac-adapter.sh
                ;;
        *)
                #logger "ACPI group $group / action $action is not defined"
                ;;
esac

I also created the following two scripts /etc/acpi/lid.sh to turn off/on the LCD when you close/open the lid. NOTE: In the latest versions, radeontool installs by default to /usr/sbin, not /usr/bin. Modify the following script accordingly.

File: /etc/acpi/lid.sh
#This file created by Ryan Neufeld August 2005
lidstate=`cat /proc/acpi/button/lid/LID/state | gawk '{print $2}'`;
case "$lidstate" in
        open)
                /usr/bin/radeontool light on;
                #non radeon users can use "xset dpms force on;"
                ;;
        closed)
                /usr/bin/radeontool light off;
                #non radeon users can use "xset dpms force off;"
                ;;
esac

And to change the cpu governor when your ac adapter changes I have created this. Put it in /etc/acpi/ac-adapter.sh

File: /etc/acpi/ac-adapter.sh
#Choose the governor you want to use when laptop is running on ac power
#(performance or ondemand recommended)
#This file created by Ryan Neufeld August 2005
ONAC_GOVERNOR="performance"
BATT_GOVERNOR="conservative"
range=`cpufreq-info | grep 'Hz -'`
minmhz=`echo $range | gawk '{print $3 $4}'`
maxmhz=`echo $range | gawk '{print $6 $7}'`
acstate=`grep state /proc/acpi/ac_adapter/AC/state | gawk '{print $2}'`;
case "$acstate" in
        on-line)
                #Do stuff when the ac adapter is plugged in
                cpufreq-set -g ${ONAC_GOVERNOR} -u ${maxmhz}
                logger "AC Adapter is plugged in. Setting CPU governor to ${ONAC_GOVERNOR}";
                #get the current speed in KHz
                speed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq`;
                #throw it to bc and get MHz
                mhz=$(echo "scale=0; ${speed}/1000" | bc -l);
                logger "Current cpu speed is $mhz MHz";
                ;;
        off-line)
                #Do stuff when the ac adapter is un-plugged
                cpufreq-set -g ${BATT_GOVERNOR} -d ${minmhz} -u ${maxmhz}
                logger "AC Adapter is un-plugged. Setting CPU governor to ${BATT_GOVERNOR}";
                #get the current speed in KHz
                speed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq`;
                #throw it to bc and get MHz
                mhz=$(echo "scale=0; ${speed}/1000" | bc -l);
                logger "Current cpu speed is $mhz MHz";
                ;;
esac

Also, dont forget to restart the acpid daemon when you make changes to default.sh. Also you MUST make the extra scripts executable,
owned and exec by root only works just fine (# chmod a+x).


(This information gleaned from: http://www.thinkwiki.org/wiki/Talk:Problem_with_high_pitch_noises)

Many people have reported high-pitched noise coming from the processor. Usually, this noise becomes more pronounced after a suspend-resume cycle. Various solutions have been proposed, including updating the bios to A04 and passing "idle=halt" to the kernel on boot. Unfortunately, I'm already at A06 and still experiencing the problem, and idle=halt isn't the best solution, as indicated below.

The noise itself is generated by the processor entering energy-saving idle states. the ACPI standard allows for several, with a higher number being a more energy-conserving state. The noise seems to come from the states 3 and 4. Therefore, by locking it in state 2, you can eliminate the noise. The kernel parameter "idle=halt" locks it in state 1. As a result, it is prefered to put it in state 2 if the noise bothers you. You can do that by passing a kernel parameter or setting a module parameter, depending on wether the acpi module "processor" is a loadable module or compiled into the kernel.

For compiled into the kernel, add this to your kernel options (grub.conf or lilo.conf):

processor.max_cstate=2

For the module approach, add this file and run "modules-update"

File: /etc/modules.d/processor
options processor max_cstate=2

Alternatively, you can use this in either case:

File: /etc/conf.d/local.start
echo 2 > /sys/module/processor/parameters/max_cstate


Some i915GM owners (including me :) experienced problems with the lid - the LCD did not resume operation after closing and reopening it. Here comes the fix:

echo 0x80000001 > /proc/acpi/video/VID/LCD/state

To automate that you could place the command above into your lid.sh script (for example instead of xset which did not work for me).

[edit] CPU Frequency Scaling

Works fine with cpuspeedy. at 2Ghz, average temp is 80°C. at 800Mhz, it drop to 43°C.

CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_TABLE=y

cpudyn seems to be nice to auto-regulate CPU frequency accordingly to system load. I'll post some feedback.

[edit] Suspend to

[edit] Ram

Suspend-to-ram needs a suitable kernel patch to nicely suspend and resume SATA disk.

New. A working kernel patch is already included in the gentoo-sources version greater than or equal to 2.6.15-r1.

I managed to have a working suspend-to-ram (Intel video card) by following the directions of http://www.thinkwiki.org/wiki/Problems_with_SATA_and_Linux

A working patch against kernel 2.6.14 (currently, I am using gentoo-sources v. 2.6.14-r5) can be downloaded from http://www-dimat.unipv.it/boffi/D610/01_sata.patch

To apply the patch, go to the directory where you build your kernel (typically /usr/src/linux) and issue the command

    patch -p1 $PATH_TO_PATCH/01_sata.patch

Then compile and install your kernel as usual. Include the following with your kernel configuration:

Linux Kernel Configuration:
Power management options (ACPI, APM) --->
 --- Power Management support
 [ ]   Power Management Debug Support
 [*] Software Suspend

A suspend cycle is started by issuing the command

    echo mem > /sys/power/state

The green power led starts blinking. In order to resume you can either push the power button or open the lid.

After suspending and resuming everything just works great! You might need to use vbetool to restore your video output (you can include the following line at the end of your suspend script):

    /usr/sbin/vbetool dpms on

If you have a conexant modem, you need to stop it before suspending and to restart it after resuming.

Note: There are important differences for models with different video cards (Intel vs. Radeon). For the Radeon X300, the video is blank after resuming, and vbetool does not fix the problem. (One can blindly type "/usr/sbin/vbetool dpms on" after resuming, but nothing happens.) Instead, try using the "hibernate-ram" script provided with suspend2-sources, and in /etc/hibernate/ram.conf, set:


### vbetool
EnableVbetool yes
# RestoreVbeStateFrom /var/lib/vbetool/vbestate
VbetoolPost yes
# RestoreVCSAData yes

Then as root, type "hibernate-ram" (either from the console, or from xterm), and it works. (Not yet tested in framebuffer.)


By Daniele Boffi 16Jan2006 daniele.boffi at gmail.com

[edit] Disk

Suspend2 writes contents of RAM to disk. This is a quick overview of how to set it up in Gentoo. There are things that can go wrong and lose your data, so be carefull. Read more at the suspend2 web page at:

http://suspend2.net/

Here are the steps I used to get suspend2 to work:

Use the supplied suspend2 kernel or patch your favorite one. The Gentoo kernel is masked for the stable ~x86 series so to use the Gentoo suspend kernel do:

echo "sys-kernel/suspend2-sources" >> /etc/portage/package.keywords
emerge -v suspend2-sources

Change directory to /usr/src and you should see a a new suspend2 kernel. As of this writing, it is linux-2.6.12-suspend2-r4. You have the option of using your swap file or a file system file to store the suspend file. I use my swap file to store the suspend2 data. This is an option under:

Linux Kernel Configuration:
Power management options (ACPI, APM) --->
 --- Software Suspend 2
  ---   Image Storage (you need at least one writer)
[ ]     File Writer
[*]     Swap Writer
  ---   General Options
(/dev/sda3) Default resume device name
[ ]     Allow Keep Image Mode
[*]     Warn if possibility of filesystem corruption

Configure the rest of your kernel as you like, compile, install and set up your boot loader (grub or lilo).

Install the hibernate package with:

emerge hibernate-script

Edit the /etc/hibernate/hibernate.conf file. This file has sections for using different methods to suspend: suspend2, sysfs_power_state, and acpi_sleep. I just enabled:

File: /etc/hibernate/hibernate.conf
UseSuspend2 yes
PowerdownMethod 5

For FGLRX (8.20.8 / suspend2-2.6.14-r7 confirmed to work) users be sure to add the following line:

File: /etc/hibernate/hibernate.conf
ProcSetting extra_pages_allowance 5000

and commented out the other sections. Note: for version 8.32.5 of the fglrx drivers, i had to raise the value of "extra_pages_allowance" from 5000 to 20000. Otherwise, fglrx was hanging the machine durinf hibernation.

Hibernate! From a root shell, type hibernate. Your computer should switch out of X to a raw console and you should see some disk action as the swap file is written and then your computer should shut down. When you press the power button, a normal power-on boot process should appear. Once you are booting the kernel and it loads the suspend2 code it will look for the suspend2 file and load it.

After resuming, X, wireless network, USB mouse and sound work just as before the suspend.

New update as of 16September05: After ugrading to Gentoo suspend kernel 2.6.12-suspend2-r6, wireless networking quit working. I did the commands:

 emerge -C ipw2200 ieee80211 && emerge ipw2200

to get it working again.

By Mark Holbrook 16August05 spamtrap at desertharmony.com

Added by Daniele Boffi 16Jan2006 daniele.boffi at gmail.com

If you prefer not to use suspend2, you can use the standard suspend procedure. Prepare your kernel as usual and add the following configuration:

Linux Kernel Configuration:
Power management options (ACPI, APM) --->
 --- Power Management support
 [ ]   Power Management Debug Support
 [*] Software Suspend
 (/dev/sda6) Default resume partition

Please, substitute /dev/sda6 with your swap partition ("cat /proc/swap" for more information)

Then (after installing the new kernel and rebooting) you can simply hibernate by issuing the command

    echo disk > /sys/power/state

A little hack is needed in order to restore the 1400x1050 resolution with the Intel video card. This is the part of my hibernate script dealing with this issue:

    chvt 1
    echo disk > /sys/power/state
    /etc/init.d/855resolution restart
    chvt 7

Added by rfk, Jan 23 2006

If you are having problems with suspend2 and the resolution after hibernation add the following line to your /etc/hibernate/hibernate.conf:

File: /etc/hibernate/hibernate.conf
OnResume 86 /etc/init.d/855resolution restart

[edit] Touchpad

Working quite fine, although the clic rate is too quick imo. Both buttons pairs (upside and downside the touchpad) work.

For more info, you should check HARDWARE Synaptics Touchpad and make sure you follow the ALPS Section.

[edit] Modem

Works very well with <M> Intel/SiS/nVidia/AMD MC97 Modem (EXPERIMENTAL)

- Added by Ryan Neufeld Sept 6 2005

I was unable to get mine functioning with the above method. I was able to get it working well with the linuxant drivers however.

There are several models of modems, your mileage may vary.

- Added by Milan Cosnefroy May 29 2006

You need SLMODEMD to make MC97' modems work. Compile and install it with only one command: "make install ALSA_SUPPORT=1". I use this startup script. (part-time link, often broken). Some extra modem commands are needed in your ppp client's config file, and you must disable waiting for line.

[edit] IRDA

Contributed by Mark Tomich 2006.02.04

In order for the instructions linked below to work, you need to emerge setserial. Many thanks to the author of this page: http://www.kcore.org/?menumain=4&menusub=2 (I'd love to give credit, I can't seem to find a name)

You'll need to compile your kernel with the following options:

Linux Kernel Configuration:
Networking  --->
 [*] Networking support 
     <M> IrDA (infrared) subsystem support  ---> 
         <M> IrLAN protocol  {optional?}
         <M> IrCOMM protocol {optional?}
         [*] Ultra (connectionless) protocol {optional?}
         [*] Cache last LSAP                 {optional?}
         [*] Fast RRs (low latency)          {optional?}
         [*] Debug information               {optional?}
             Infrared-port device drivers  ---> 
             <M> IrTTY (uses Linux serial driver) {optional?}
             <M> IrPORT (IrDA serial driver)      {optional?}
             <M> SMSC IrCC (EXPERIMENTAL) 

BTW, the author of the page linked above says that "Bus Options -> ISA support" is required, but I'm not so sure. I turned it on, just in case, but I haven't validated that it's required.

As you reboot after installing your fresh kernel, set your IR port to use COM2 in your BIOS...then you can use the settings below. Other settings should be possible, but then I wouldn't how to tell you how to configure your kernel module options.

Create the file /etc/modules.d/smsc-ircc2 and put the following line in it:

File: /etc/modules.d/smsc-ircc2
options smsc-ircc2 ircc_irq=4 ircc_dma=3 ircc_sir=0x2f8 ircc_fir=0x280

Then, run modules-update. Now, you should be able to run "modprobe smsc-ircc2" without trouble. Optionally, you can add a line reading "smsc-ircc2" to your /etc/modules.autoload.d/kernel-2.6, and then you'll have it turned on at each reboot (if you do that sort of thing often ;-)

[edit] PCMCIA

Added By Ryan Neufeld August 17/2005

Edited by rfk, Jan 23 2006 (removed unnecessary modules)

To get pcmcia working, just follow the gentoo guide.

Linux Kernel Configuration:
Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->
 PCCARD (PCMCIA/CardBus) support  --->
  <*> PCCard (PCMCIA/CardBus) support
  [ ]   Enable PCCARD debugging
  <*>   16-bit PCMCIA support
  ---   32-bit CardBus support
  ---   PC-card bridges
  <M>   CardBus yenta-compatible bridge support

Emerge the following packages

emerge pcmcia-cs
rc-update add pcmcia-cs default

[edit] Special Keys

[edit] xmodmap

Adding the following to your ~/.Xmodmap will map the volume keys to the XFree media names.

File: ~/.Xmodmap
keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume

Then add the following to the begining your .xinitrc (assuming its not there already)

File: ~/.xinitrc
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
    xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
    xmodmap $usermodmap
fi

[edit] lineakd

Another way of enabling the special keys is using lineakd. The advantage of lineakd is a nice OSD displaying the volume. To start off you have to emerge the following packages:

emerge -av x11-misc/lineakd x11-misc/lineak-defaultplugin x11-misc/lineak-xosdplugin

Once everything is installed run the following command as your primary user:

lineakd -c DELL-D600

This will write a configuration file to ~/.lineak/lineakd.conf. Open it and add (or change, if already existing) the following values:

File: ~/.lineak/lineakd.conf
Display_plugin = xosd

AudioLowerVolume = EAK_VOLDOWN
AudioMute = EAK_MUTE
AudioRaiseVolume = EAK_VOLUP

Afterwards start the daemon with the following command:

lineakd &

[edit] Alternate Special Keys for KDE

If you are using KDE, you can enable the volume keys by doing the following...

  1. Open the Control Center.
  2. Under "Regional & Accessibility," select the "Keyboard Layout" module.
  3. Select "Enable keyboard layouts"
  4. Select Keyboard model: "Laptop/notebook Dell Inspiron 8xxx"
  5. Feel free to select your appropriate keyboard layout here as well.

[edit] Links

Personal tools