First of all, thanks to all the people writing reports on www.tuxmobile.org. Without them I wouldn't have been able to do this.
Author: Roland Hagemann ( mail@-SPAM-rolandhagemann.de - remove the "-SPAM-" )
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
This is supposed to be a rough overview of how I set up Linux on my Dell Latitude D500 Laptop. This guide also tries to point you to information which I'm not giving in this guide explicitly. I recently switched distributions and now use Ubuntu Linux. But as before, most of the information on this page is not distribution-specific.
Feel free to use the information provided here, but don't blame me if it doesn't work. Feedback and suggestions, however, are most appreciated.
I can't be made responsible for data loss or other damages in any way.
|ACPI - Power management
||Most things work|
|Suspend to disk||Working, needs SoftwareSuspend patch|
|Suspend to RAM||Working with uswsusp|
|USB||USB 1.0 working, no hardware to test 2.0|
|Keyboard special keys||Partly working|
|PCMCIA||Should be working, but no hardware to test|
|Working||Partly working||Not tested||Not working|
I guess you all know how to install Linux, so I'll spare you that part.
At the moment, I use kernel version 220.127.116.11 patched with Software Suspend-18.104.22.168 and
supermount. Con Kolivas
provides more recent supermount patches: http://ck.kolivas.org/patches/2.6/
The kernel configuration file can be found here: config-22.214.171.124
You might want a resolution of 1024x768 on the console, so when you set up your bootmanager, don't forget:
vga=773 # 1024x768 resolution on the console resume2=swap:/dev/hdXX # default resume partition
For the first parameter also check
The last parameter for the use of software suspend. It is not necessary when you set
You might be interested in these:
Let me know if you need anything else
ACPI works very nicely. You can check how long your battery will last with "acpi" or use klaptopdaemon (kde) / Battery Charge Monitor (gnome) to see the battery status in the bottom-right corner of your screen.
To dynamically change the CPU frequency, either use a program based approach like cpufreqd or a CPU load based approach like cpudynd or lamp (latter only for 2.6).
You can save some battery life when you're not actually using
the laptop and put it in standby S1 mode. I wrote a small script
which I run when I want the laptop to go into standby mode.
Only the active user can blank the screen, hence "su roland -c ..." in the second line.
#!/bin/sh su roland -c "xset -display :0 dpms force off" # turn off screen hdparm -y /dev/hda # put harddisk into standby mode echo "1" > /proc/acpi/sleep # put CPU in sleep mode hwclock --hctosys # set the system time to bios time after resume
However, since software suspend works flawlessly, I normally
prefer to suspend the laptop to disk when I'm not using it.
I don't use the -Y option for the deepest harddisk sleep mode because it takes about 30 seconds for the drive to spin up again and only saves about 200mW.
Being in this state the laptop only needs 7297mW ( according to /proc/acpi/battery/BAT0/state ). When working normally the consumption is about twice that amount.
For another option to save some power look at laptop-mode in the harddisk section.
Software Suspend is working with kernel 2.6 since version 126.96.36.199. I recommend using version the stable version 2.1, which has recently been released. Check the SoftwareSuspend homepage for updates. The only remaining problems are concerning usb. It is recommended to stop hotplug and unload all usb modules before suspending. The module psmouse might also have to be unloaded.
Important: Make a backup of your whole system before trying software suspend ! It corrupted my filesystem irreparably twice !
After a long I recently (Dec 2006) tried Suspend to RAM again, and much to my own surprise it worked straight out of the box. I used a standard Debian-Etch kernel (2.6.18-3-686) and installed uswsusp (also Debian-Etch, version 0.3~cvs20060928-6). All you need to do is
/usr/sbin/s2ram -f -s -p
Check the swsusp website and the documentation that comes with it for more information.
If possible, do not use XFree86 Version 4.3.0, it has two bugs regarding Intel's I855GM on-board graphics chip:
Both of these bugs are fixed since XFree-4.4rc2. As you might know, just before its 4.4 release, XFree86 adopted a new licensing scheme incompatible with the GPL. I therefore chose to use Xorg's XFree. The two above mentioned bugs are not existent in X11R6.7.0.
When configuring your kernel make sure you set CONFIG_AGP_INTEL=y/m. To make use of DRI also set CONFIG_DRM=y and CONFIG_DRM_I830=m.
You might be interested in my /etc/X11/xorg.conf and my /var/log/Xorg.0.log for reference here's also the old /var/log/XFree86.0.log.
To use the vga-out on a CRT or a projector, check out i855crt
With older kernel versions there was supposed to be a problem, but with the latest kernel DMA works. I set the DMA mode and other hdparm options in my startup scripts with the command
hdparm -d1 -A1 -X69 -m16 -u1 -a64 -c3 -B128 -W1 /dev/hda
I also enable DMA for the cdrom with
hdparm -d1 -u1 -a8 /dev/hdc
Since Linux 2.6.6 laptop-mode is part of the 2.6 kernel series. For more information look at linux-2.6.6/Documentation/laptop-mode.txt
No problems at all with the drive. For kernel 2.4 you need to specify the "hdc=scsi" boot option in order to burn CDs. For 2.6 that is no longer necessary, since CD recording is supported directly through ATAPI.
To use OSS, set up your kernel with "CONFIG_SOUND_ES1371=m" and "CONFIG_SOUND_ICH=m" and use the modules i810_audio and ac97_codec.
ALSA, however, should be preferred. It is already in the 2.6
For 2.4 on Debian, you're best installing Alsa the Debian way. The generic instructions for 2.4 can be found on the alsa-project page. After installing, unload any OSS modules, load snd-intel8x0 and ALSA works like charm.
USB is not a problem. Look at the kernel-config for the appropriate options. I could not yet test USB 2.0, due to the lack of hardware.
The built-in 10/100 MBit network-card works without any problems. Just use the module e100 which you get when you use "CONFIG_E100=m" in your Kernel.
I use the wireless card regurlarly now both at university and
It works with the ndiswrapper module (ndiswrapper.sf.net for more information). To set up the wireless device you need the wireless-tools, which should be available for every distribution. I had some trouble with WPA (Wireless Protected Access) in the past. But these issues have been resolved since ndiswrapper-0.12 with wpa_supplicant-0.3.0. On Gentoo all you have to do is
emerge ndiswrapper wpa_supplicant
Then edit /etc/conf.d/wpa_supplicant and /etc/wpa_supplicant.conf and then
/etc/init.d/wpa_supplicant start /etc/init.d/net.wlan0 start
to bring up the wireless network. For more information and more detailed explanations look at the ndiswrapper and wpa_supplicant homepages, especially the ndiswrapper wiki. The wpa_supplicant homepage is http://hostap.epitest.fi/wpa_supplicant/. Thanks to Jos Delbar for his help with my WPA problems
The ndiswrapper module should work with the Dell
TrueMobile 1400 (Broadcom) and the Intel PRO/Wireless
2100 (Centrino) cards.
You might also want to look at these sites:
Jon Lech Johansen started writing a 2.6 driver for the Intel PRO/Wireless 2100 card. http://nanocrew.net/blog/ipw2100/
And there is the closed source driver from Linuxant, which costs 20$. It should be working with both kinds of cards.
Get the pctel driver pctel-0.9.6.tar.gz from http://linmodems.technion.ac.il/pctel-linux/
tar xzf pctel-0.9.6.tar.gz cd pctel-0.9.6 ./configure --with-hal=i8xx --with-kernel-include=<path-to-kernel-source>/include make insmod modules/pctel.o insmod modules/ptserial.o irq=11 iobase=0xd400 iobase1=0xd080
I finally tested the modem. After these steps you can use the
WinModem like any other.
Only works with Kernel 2.4 as far as I know.
You can get some of the keys working with hotkeys. Namely volume up & down and mute. Use "xev" to find out the keycodes and write an appropriate .def file. I won't go into any detail here, because I don't actually use it. Please look at
Infrared is working.
After loading the modules irport and ircomm I issued the following command:
irattach /dev/ttyS1 -s
The following command:
gave me the output below with my mobile phone lying next to the laptop:
IrLMP: Discovery log: nickname: SIEMENS S35, hint: 0x9024, saddr: 0xafb00a22, daddr: 0x08703434
I have not actually tested this myself, due to the lack of hardware, but I got an email of Patrick Allison, pointing out all the problems.
PCMCIA does *not* work right out of the box for most distributions. If you try to plug in a PCMCIA card with the standard installs of the pcmcia tools, it'll hang the machine immediately! The problem is that cardmgr's default list of "allowed memory regions" is (in /etc/pcmcia/config.opts) include port 0x100-0x4ff, port 0x800-0x8ff, port 0xc00-0xcff However, if you check /proc/ioports, you'd see... 0800-087f : Intel Corp. 82801DBM LPC Interface Controller 0880-08bf : Intel Corp. 82801DBM LPC Interface Controller So when cardmgr tries to probe that region, it hangs the machine. Whoops... The solution is to change /etc/pcmcia.config.opts from include port 0x100-0x4ff, port 0x800-0x8ff, port 0xc00-0xcff to include port 0x100-0x4ff, port 0xc00-0xcff and then it works happily.
Thanks again to Patrick for providing this information.