Debian GNU/Linux on a DELL Inspiron 8500

This is yet another page for installing GNU/Linux on a DELL Inspiron 8500. It is possible that most of this information can be used with the DELL Inspiron 8600, since they are very similar models.

I will report how I got most of the components working, and give some tips on how to do some tasks the "Debian way", although I am still new to Debian myself.

Update 11-04-2004: Major Page lifting. Removed the old stuff about the 2.4 kernel. The old page is here and an even older version is here.

A summary of components and installation status follows.

Device Type Status Updated Comment
Graphics card ATI Radeon Mobility 9000 Working 07-02-2005 TV-out! Finally!
Screen WSXGA+ (1680x1050) Working 11-04-2004 1680x1050 modeline auto-detected!
Hard Disk Hitachi DK23EB-40 (40 GB) Working 11-04-2004
DVD/CDRW Hitachi GCC-4240N Working 11-04-2004 No SCSI emulation needed in 2.6
On-board Ethernet Broadcom BCM4401 Working 11-04-2004 Driver module built-in
On-board Sound Card Intel i810 Working 11-04-2004 Works with alsa. Built-in in kernel 2.6
On-board Modem Pctel Working 11-04-2004 Uses alsa DSP and smartlink software
Mini-pci wireless DELL Truemobile 1150 Working 17-06-2004 Aux antenna connected during motherboard upgrade!
Touchpad/Stick Unknown Working 11-04-2004 Works out of the box
PCMCIA/Cardbus Texas Instruments Working 11-04-2004 Works out of the box
Infared Unknown Working 11-04-2004 SIR driver. Only up to 115200 bps
Firewire Texas Instruments Working 17-06-2004 Serialized I/O needed to work properly
USB Intel Working 11-04-2004 Works out of the box with USB2 support.
Keyboard special keys DELL Working 11-04-2004 Some hacks needed

Other sections:

All downloadable files all located in this directory.

Introduction

The laptop came with Windows XP Home pre-Installed. I resized the Windows XP partition to 6 GB and installed debian woody (3.0r0) to the rest of the disk, from the CDs (7 of them). When the installation ended, almost nothing worked (this is quite expected on a laptop installation). Once I got the ethernet working, I hacked the apt sources file (replaced the CD entries with network entries) and updated everything:

# apt-get update
# apt-get -u upgrade

Essentially, from that moment on, my system was not 3.0r0 anymore :-).

In february (2004) I changed my repositories to sarge and did:

# apt-get dist-upgrade

(You have to be really patient to do that behind a modem).
After resolving some problems and repeating:

# apt-get -f install
# apt-get dist-upgrade
until nothing new appears, my system was a shinny debian sarge with lots and lots of recent software :-)

Kernel Compile

Update 17-06-2004: Just upgraded to 2.6.7. Both 2.6.6 and 2.6.7 have a problem with IRQ handling with ACPI. PCMCIA and sound card are not detected. I added the pci=noacpi parameter to my lilo.conf to fix this.

I got linux kernel from my local kernel mirror (at the time of this writting 2.6.5).

If you don't compile the kernel the "debian way" you are not a true debian user :-). You will need to install the kernel-package package in order to do that. Documentation for the compilation proccess can be found on the man page of make-kpkg and the documentation directory (/usr/share/doc/kernel-package).
Briefly, here is how it goes:

tar xzvf linux-2.X.Y.tar.gz
cd linux-2.X.Y

For the configuration you can either use an old configuration file (here is mine):

$ cp config-2.X.Y-1 .config
$ make oldconfig

or start from the beginning:

$ make menuconfig

Nothing unusual up to this point, but here is where the debian magic begins:

# make-kpkg --revision Custom.1 binary

This command will produce four debian packages on the directory below the kernel tree. Installing the kernel is as easy as installing the packages:

dpkg -i kernel-image-2.X.Y_Custom.1_i386.deb
dpkg -i kernel-headers-2.X.Y_Custom.1_i386.deb
dpkg -i kernel-source-2.X.Y_Custom.1_all.deb (optional)
dpkg -i kernel-doc-2.X.Y_Custom.1_all.deb (optional)

If you want to recompile, you have to increase the revision (Custom.2) and remove the /lib/modules/`uname -r` directory. Be aware that all the modules you installed by hand will be deleted...

The default lilo.conf has two entries for /vmlinuz and /vmlinuz.old. Every time you install a kernel package, the new kernel is linked to /vmlinuz and the old to /vmlinuz.old. So when the post-install script of the kernel-image package is executed, both the latest kernel and the previous kernel are installed. It never hurts though to check these things, if you don't want to be looking for rescue disks...

NOTE: The standard way to find kernel headers nowadays is the link /lib/modules/`uname -r`/build. This link *should* point to the root of the kernel tree (only the include directory is used). After the compilation, this links points to the kernel you untared. If this link is to be operational, you have two choices. Either leave the untared kernel intact, or change the link to point at /usr/src/kernel-headers-2.X.Y which is the location debian installs kernel headers. I did the former, because I like to have handy the kernel sources of the running kernel.

About kernel modules

When it comes to modules configuration, the "debian way" is NEVER to edit /lib/modules/modprobe.conf file by hand. A file has to be added in the directory /etc/modprobe.d, with the contents you would normally put in modules.conf, and the utility update-modules has to be called afterwards. Quite an elegant solution for installation of packages with kernel modules.

If you want a module to be loaded at system start-up you have to edit the file /etc/modules. One line per module, without options. My file looks like this:

# /etc/modules: kernel modules to load at boot time.
#
# This file should contain the names of kernel modules that are
# to be loaded at boot time, one per line.  Comments begin with
# a "#", and everything on the line after them are ignored.
uhci_hcd
ehci_hcd
hid
#snd-card-0
i8k

BIOS

DELL issues BIOS updates from time to time. There is a changelog, but I can't always figure out to what extent they have helped with linux problems.

Anyway, I got the laptop with version A02, but right now I have flashed up to A05. DELL's site is quite complicated so I can't give a direct link from where I got that, go find it yourself if you don't trust me :-).

Power Management

ACPI

Back in the 2.4 days, I applied the acpi patches to the vanilla kernel source. Now i don't do that anymore because most of the patches are already applied in the default kernel tree.

The ACPI module detects the processor, the lid and power button, the battery and the AC adapter. Info is available in the /proc directory, but the acpid daemon is needed to do automated tasks on various events.

I dowloaded the acpid package and configured some scripts. Be default a script to shutdown the machine is included. I added one for the battery and one for the lid switch. The battery script issues warnings on events and turns the system off when battery level is critical. The lid switch script turns off/on the display when the button is pressed/released. Here are the contents of my /etc/acpi directory.

Processor scaling

CPU frequency scaling has been included in the 2.6 kernel series.

I installed the the CPU frequency daemon cpufreqd from the debian repositories. This is my configuration file. This ruleset makes the CPU run at 1,2 MHz at most cases. When more power is needed and some conditions are met, the CPU switches to 2 GHz. When mplayer is running, the cpu is automatically switched to the maximum speed. During video decoding cpu needs a lot of power instantly, but the auto switching requires heavy usage for a few seconds. This causes underruns during video playback, so the CPU speed has to be manually set to the maximum value.

This configuration has decreased the laptop temperature and fan usage considerably!

System suspend (update 10-05-2006)

For a long time now, I have been using software suspend 2, I just haven't updated this page. The procedure is quite straight forward, I download the patch from suspend2.net, apply to the the current kernel and compile with the usual debian method.

Dell laptop kernel module (i8k)

The i8k module does not load gracefully, so I compiled it as a module and forced it to load. I created /etc/modprobe.d/i8k with the following contents:

#i8k has to be forced
options i8k force=1

After the module loads (see this), I can do:

$ cat /proc/i8k
1.0 A05 137KT21 48 1 2 144630 114360 -1 2

I use this module with the i8k plugin for GKrellM. Recently, after noticing that the fans where working too much, and they stopped at gkrellm stutdown, I found out that this plugin regulated the fan speed according to the temperature. This sucks! I want the system to regulate the fan speed, not an application.

While looking at the plugin code I found an option that disables the command sending to the kernel, but also disables reading the status from /proc/i8k. I hacked the module source to report the actual fan speed but not to send commdands to start and stop the fans.

Hard Disk

With the custom kernel, DMA is enabled by default at boot time. The performance is acceptable:

# hdparm -t /dev/hda

/dev/hda:
 Timing buffered disk reads:  86 MB in  3.06 seconds = 28.10 MB/sec

Graphics card / Screen

Framebuffer

The radeon framebuffer device didn't work at 2.6.0. The display was messed up, as if it had a wrong modeline. I patched it myself and the problem was fixed.

In 2.6.1 a patch was included that fixed this problem.

Since 2.6.3 a new radeonfb module has been included and is the default. It didn't work with my screen. I tried both with DDC/I2C and without it. On boot, the screen gets white and gradually dark. It looks like it enters an unsupported colour mode. I probably have to pass some option to the kernel to make it work. I decided to switch back to the old module that is still included in the kernel and autodetects the display and colour mode.

I see this at startup:

radeonfb: ref_clk=2700, ref_div=12, xclk=19500 from BIOS
radeonfb: panel ID string: 7T774^D154P1
radeonfb: detected LCD panel size from BIOS: 1680x1050
Console: switching to colour frame buffer device 210x65
radeonfb: ATI Radeon M9 Lf DDR SGRAM 32 MB
radeonfb: DVI port LCD monitor connected
radeonfb: CRT port no monitor connected

X server

Initially I had to install the X server 4.3.0 myself because it wasn't included in the repositories. Recently it was added to the sarge repository so I removed the backport package.

Here is my XF86Config-4 file. A while ago, I had to define the modeline for 1680x1050 myself (I found it in another site). One of the updates caused the modeline to get automatically detected so I commented my entry (it was probably the radeonfb update). Here are the device and monitor sections:

Section "Device"
	Identifier	"RADEON 9000 - ati"
	# native X driver, loads "radeon" module
	Driver		"ati"
#	Kernel hangs when this is enabled
#	Option		"AGPMode"		"4"
#	This works
	Option		"AGPFastWrite"	"on"
#	Option		"DDCMode" "on"
#	Option		"CloneDisplay" "1"
#	Option		"CloneMode" "640x480"
EndSection

Section "Monitor"
	Identifier	"TFT"
	HorizSync	30-60
	VertRefresh	60
	Option		"DPMS"
#	UseModes	"WIDE"
EndSection

Actually there are two drivers for this card, ati (included in the X server) and fglrx (released by ATI, with binary-only parts). I have tried them both and they work pretty fine when it comes to X on the TFT monitor. I choose the ati driver not only because the other is proprietary, but because it offers nothing more.

DRI

The combination of the Xserver included in sarge and kernel 2.6 seems to be working out of the box. The radeon module is automatically loaded on X setarup.

TV-out (update 07-02-2005)

It finally works! I used the atitvout utility (I installed the debian version). It probably worked since the beginning, the problem was that this utility needs a reasonable screen resolution to work. The native resolution (1680x1050) is not one. When I switched to 1024x768 or 800x600 the utility works with TV only output with atitvout -f t.

When using the ATI driver, there is a problem with the screen colors. Any movement of the mouse will mess the screen colors, it will turn almosy white (like the colors are inverted). This is probably a color map issue. A solution I found on the internet was to switch to the vesa driver. Using this driver has some side effects though. First of all the native resolution is not supported (this is not bad, since we need 1024x768 for TV-out to work). Second, vesa does not support accelaration, so this rules out -vo xv for mplayer.

To cut a long story short, the solution I use is to keep the ATI driver for normal usage and switch to the vesa driver when i want TV output. This automatically will drop the resolution for the atitvout, so minimal changes to the X server configurations are required. For mplayer I use VIDIX output which works quite well with full screen mode, like this:

mplayer -vo xvidix dvd://

External Monitor

Both drivers work with the external monitor. The main problem is that the graphics card drives the CRT at "1680x1050" which is a resolution that no sane CRT monitor supports. I had no luck driving the external monitor and the LCD panel at different resolutions, although I have not done extensive tests.

Ethernet adapter

There is a lot of history here. I mentioned it in the older version of this page. In kernel 2.6 the driver is included by default and I compiled it built-in. It works fine.

Sound card

The chipset of the sound card works pretty well with ALSA. I tried almost all the versions since I got the laptop. Now I use the one included in the kernel tree (which is updated by kernel maintainers) and the utilities included in the sarge repositories. I installed the alsa-base,alsa-headers,alsa-oss and alsa-utils packages. During configuration I choose the snd-intel8x0 for the sound and the snd-intel8x0m for the modem DSP. The modules are loaded by the alsa init script. This script also maintains the volume levels across reboots, which is very handy, since the alsa soundsystem automatically mutes all controls on startup.

Modem

Finally, I found a way ot use the modem without external modules. In 2.6 a module for the modem DSP side exists snd-intel8x0 (which I already mentioned in the sound section).

This module can be used with the SmartLink software. The debian repositories countain the daemon software (sl-modem-daemon) and the module source (sl-modem-source). After reading the instructions contained in /usr/share/doc/sl-modem-source/README.Debian, I created a debian package with modules for my custom kernel. Once this package is installed, the smartlink modem daemon makes the modem appear in /dev/ttySL0.

The modem seems to be working fine with this solution!

Mini-pci Wireless

Update 17-06-2004: Last month, I had to change the motherboard and the keyboard (thank God, DELL service here in Greece rules). The technician dismantled my laptop in the process (kids don't try this at home) and when he reassembled it, he found a way to connect and the aux antenna as well!

I bought the Dell truemobile mini-pci wireless card after reading reports that is is supported on linux. Indeed the card was recognized with the first boot.

Surprisingly, the card was used by the PCMCIA subsystem. The orinoco_cs module was loaded, which I already had compiled as a module in my kernel. I had compiled the orinoco_pci driver to be prepared, but that wasn't needed at all. It looks like the mini-pci slot is bridged to the second PCMCIA slot. Well, that explains the detection of the second PCMCIA slot in linux...

Of course I have the same problem the others did with the antenna. The auxiliary antenna cable is too short to be connected to this card. A cable was included in the package, but there is no way to find where the other side ends inside the laptop. So I connected only the main antenna and so far I have no problem with reception.

Touchpad / Stick

Works out of the box. Both devices are mapped to the PS/2 port and work simultaneously. I have not found a way to activate and de-activate the controls and buttons, like the winXP driver does.

PCMCIA

Works out of the box with all kernels. I have not tried a cardbus card, only PCMCIA cards, but I have no reason to believe that there will be a problem. I have tried several cards: two wireless adapters (Lucent orinoco and D-Link DWL-650) and two ISDN controllers from AVM (Fritz and B1). They all work as expected.

Infared

The infared interface it binded by the BIOS to ttyS1. Using the irda-utils package from sarge and the irtty_sir driver I have succesfully connected my laptop to my mobile phone. Because I have configured the irda drivers as modules, I had to create a file with the following contents in /etc/modprobe.d/irda:
alias tty-ldisc-11 irtty-sir
alias char-major-161 ircomm-tty
alias char-major-10-187 irnet

# for dongles
alias irda-dongle-0 tekram-sir
alias irda-dongle-1 esi-sir
alias irda-dongle-2 actisys-sir
alias irda-dongle-3 actisys-sir
alias irda-dongle-4 girbil-sir
alias irda-dongle-5 litelink-sir
alias irda-dongle-7 old_belkin-sir
alias irda-dongle-9 mcp2120-sir
alias irda-dongle-10 act200l-sir
alias irda-dongle-11 ma600-sir

# for FIR device
#alias irda0 nsc-ircc dongle_id=0x09

The irtty module restricts the irda port to serial speeds (115200 bps), while the port can support higher speeds. The proper way to support the irda device is with an FIR driver (4Mbps), but I believe that such driver does not exist for this chipset.

Using the ircomm module, I have successfully used my new nokia phone with GPRS and perform a PPP connection. It works quite nice.

Always the module phone is a pain to connect at first. I have to either point the phone downwards or lift the laptop quite a bit to archive a connection. Once the connection is archived, the phone works.

Firewire

Update 17-06-2004: The problem with the hard disk enclosure seems to disappear when I give use serialized I/O (serialize_io=1 when loading the sbp2 module).

I use firewire with an external hard disk enclosure from CHRONOS. After the upgrade to 2.6 someting is not quite right. During heavy I/O I see kernel errors from the ieee module and the disk disconnects. After a while it seems to recoved but this is unusable. I use USB2 instead.

USB / USB2

USB works also out of the box with the default kernel modules (usb-uhci). I use an optical mouse from Logitech (usbmouse and hid modules) and have also tested a lot of devices with the usb-storage module. An external hard disk enclosure, a memory stick, some digital cameras and a camcorder.

The USB2 devices (the disk enclosure and the memory stick) where recognized correctly and operated at high speeds.

DVD/CDRW

CD recording

The CD recorder access method has changed since 2.4. The SCSI emulation is not required anymore. I downloaded and compiled CDR tools 2.01a21 which support IDE block driver access for recording CDs. My CD devide is now again /dev/hdc. I have burned a few CDs without problems.

Sarge contains version 2.0+a26pre27-1. I have installed vesrion 2.01a21. I do not know it the sarge version supports IDE driver writting. It is quite possible.

DVD region

My DVD/CDRW combo is region 1 because I bought it from the US. Recently a firmware has been released from the The firmware page that makes the region information reset on every reboot. So technically, the DVD is not region free, it still has only 5 changes, but on every boot the number always resets to 5. I downloaded the firmware and the related DOS utilities from this page.

I heard a report that a new firmware has been released that makes the device fully region-free. I have not tested it myself though.

Keyboard special keys

I had configured the keys using the sawfish windowmanager, but now I switched to KDE. I have a solution with the hotkeys package, but it is not so flexible and I can get it to start automatically every time I log on. Soon I will try one of the other methods suggested by other people for this laptop.

Contact info

Email: amanous@softlab.ntua.gr

Valid HTML 4.01! Best view with VI!