Linux on Dell Inspiron 41000

Configuration

Ordering

I ordered my laptop on January 4, 2002 for $1627 (US). I tried to pare down the system, so it only has a 1-year support agreement. I got two batteries, though I have to pin that idea on my roommate (he got an 8100, which can run with two batteries and still has an internal DVD drive).

The Estimated Ship Date (defined by Dell as the date by which it should leave them) was January 11, 2002. It was shipped on Monday, January 7th and arrived at my apartment building on Wednesday, January 9th (traveling from Texas to Minnesota). However, I'd stayed at work late, so I had to pick it up from the office the next morning.

Installation

I decided to immediately install Linux on my laptop. Dell apparently doesn't allow refunds, unless you send in the whole computer. Dell gave me a lot of stuff I'm not using (Windows XP, many Dell utilities, MS Works, and a trial AOL CD).

I downloaded the first disc of an unofficial Debian Woody distribution with rsync, and burned it onto a CD-RW. When I turned on the system, I went into BIOS setup (F2 at the startup screen) and changed the CD/DVD drive to be ahead of the hard drive in the boot sequence. I already had the disc in the drive, so as soon as I saved that configuration, I saw Debian's boot prompt and pressed Enter to start things up.

I've never installed Woody off of a CD before (I've generally done the dist-upgrade route in the past). It's a pretty nice installer, but it installed ISDN utilities by default, and wanted me to configure the network with a program called `netenv'. That looks like it's a nice utility if you have static IP addresses set up at a few locations, but I always use DHCP, so it was pointless. I did `dpkg --purge' on quite a few packages, and even then they'd often leave little bits floating around (especially in /etc/init.d, where they affect the speed of the system boot).

X Windows

Once the system was installed, I went about adding more software and making the system easier to use. X had not configured properly, as I had told it to use the `ati' driver. I understand that Radeon support is coming in XFree86 4.2, but that may be a while. To get X working, I just edited /etc/X11/XF86Config-4 and changed the `ati' driver to `vesa'. This is unaccelerated, but with the 1 GHz processor I have, it's not too bad..

Update April 24, 2002: I just downloaded some X 4.2.0 .debs from here and set it up. It seems to work decently. DRI doesn't appear to work, so no playing Quake III against my coworkers yet. However, XVideo seems to work alright, and I was able to play a DVD decently. (Unfortunately, I had to reboot the system before getting it to play smoothly, as I couldn't get UDMA enabled when I just hot-plugged the drive.)

Here are some config files:

WARNING: The radeon driver (both the XFree86 driver, and from what I've seen, the framebuffer console driver) has an odd issue where the display can occasionally appear to be ``melting.'' Really. I'm not kidding. It's very disconcerting, though there hasn't yet been any permanent damage to my display (as far as I could tell). As I write this, I can't use the text console anymore, and doing suspend-to-RAM and resume causes this to happen momentarily.

If this happens to you, I'd recommend pressing Fn+D, which will tell the display to go to sleep, and (hopefully) will prevent anything bad from happening. If you want to be safe, just use the vesa driver for now (I might go back to using that shortly).

Back to less scary things..

I was happy to see that Mozilla (and therefore, Galeon) now supports anti-aliased text via X's RENDER extension. When you get the Galeon package (from Debian testing or unstable), you'll be prompted if you would like to use rendered text or not. I'd recommend using it and then making a few extra tweaks to make sure that you're using your system to it's fullest.

Beyond just doing anti-aliased text, XFree86 supports sub-pixel rendering, which can make the text much more readable. Generally, all you have to do is add a line to /etc/XftConfig like this:

match edit rgb = rgba;
You may wish to just put that in your own directory, in ~/.xftconfig. Some programs didn't seem to work with this, so I also added a line to ~/.Xresources:
Xft.rgba:               rgb
If none of that works for you, there is a mini-HOWTO with more information.

Network

When the system was installed, the network apparently didn't get configured -- even `lo' was missing! Needless to say, a number of programs got confused when they tried to start at boot (notably wwwoffle, which I actually removed. That's a useful program, so I may re-install it later). I edited /etc/network/interfaces and added the lines
auto lo
iface lo inet loopback
iface eth0 inet dhcp
which sets up the loopback interface to start automatically at boot, and tells the system that eth0 will be configured via DHCP.

I was surprised to see that the ethernet card is reported as a 3c905C by `lspci'. I thought it'd be something else. It's just really strange, because 99% of the time, whether at home or at work, I'm using a 3c905 variant.

Anyway, I created /etc/modutils/eth0 and added the line `alias eth0 3c59x'. Not too hard. Run 'update-modules' and /etc/modules.conf gets updated appropriately.

After a while, I got really tired of opening up a terminal window, su'ing to root, and running `ifup eth0' or `ifdown eth0' as appropriate when connecting/disconnecting the network. PCMCIA cards will automatically configure/deconfigure when they get plugged in, so I wanted to emulate that behavior. There isn't a standard way of doing it, but 3Com cards can report the transciever status with Donald Becker's `mii-diag' utility. I set up an expect script that ran `mii-diag --watch eth0' and would ifup or ifdown the interface automatically.

I created these files:

And compiled mii-diag and put it in /usr/local/bin. I ran `update-rc.d fake-dhclient defaults' and the system booted up with the network running. Unplug the network cable, and the interface goes down. Plug in a cable, and the system requests a DHCP address. Note that when you go between different networks, it can take a while (15-30 seconds, maybe longer) to get an IP address.

Kernel

At some point, I installed Debian's stock 2.4.16 and 2.4.17 kernels. They seemed to install okay, so I configured LILO to have three images -- Linux (2.4.17), LinuxOLD (2.4.16), and linux22 (the 2.2.20 kernel that came on the install CD).

Unfortunately, upon rebooting, the system would hang every so often. My guess was that an APM event of some kind was causing the kernel to go nuts, though there wasn't even as much as an Oops out of the kernel when this happened. Fortunately, I remembered that the install had gone just fine, so I rebooted with the linux22 image.

Fortunately, I found an answer of sorts in one of the first places I looked. The first page I saw for an Inspiron 4100 at Linux on Laptops. I compiled a 2.4.17 (I called it 2.4.17-aeon) kernel based on geek@goatee.net's .config with make-kpkg and installed it. (note: I used Debian's patched source that I downloaded with `apt-get install kernel-source-2.4.17') It worked!

I went merrily along installing all sorts of other stuff, and then at some point converted my ext2 partitions to ext3 by adding journals with `tune2fs -j /dev/hda1'. This seemed to go okay, but then I compiled a kernel with ext3 support, an initial ramdisk, and added `ext3' to /etc/modules so the root partition could be mounted as ext3. I rebooted with that kernel, played around for a while, and the system froze again. I hadn't gotten it right!

I tried rebooting to 2.4.17-aeon, but it wouldn't mount the root partition due to unknown extensions -- presumably the ext3 journal, and some stuff indicating that the filesystem had not been cleanly unmounted. After a while, I realized that if I could get the system to cool down a bit, long enough to boot up and then shut down with the new kernel, I could mount my root paritition as ext2 with 2.4.17-aeon.

Once I figured that out, I decided to go along and try to figure out what was causing the kernel to freeze up. I had tried adding some extra APM support to the kernel, as Debian comes with many APM options disabled. That didn't work.. I tried removing Enhanced Real-Time Clock support, as I'd noticed the 2.4.17-aeon kernel didn't have that installed. That didn't work either. Finally, I decided to look closely at the difference between the stock Debian kernel and the -aeon kernel. I noticed that the -aeon kernel didn't have APIC support enabled. I'm not entirely sure what APIC is, but it apparently makes interrupt handling easier on SMP (symmetric multi-processing) systems. Since my laptop only has one processor, I tried disabling that.

That was the magic element. The kernel booted and stayed running. I then made a near-stock Debian kernel that only had the modifications of removing APIC support, and adding a few APM options. At the same time, I decided to compile ALSA sound modules. `apt-get install alsa-source' downloads an alsa-driver.tar.gz file to /usr/src. Unpack that into /usr/src/modules, and you should be able to compile modules along with the kernel with make-kpkg:

make xconfig
make-kpkg clean modules_clean
make-kpkg --append-to-version -mhicks1 --revision 20020111 --initrd \
	binary-arch modules_image
There are some dependencies for the ALSA drivers that you must install, but that's just another apt-get. When installing some of this ALSA stuff, you'll likely be prompted for what driver you want to use. You want to pick `intel8x0'.

Sound

Like I said above, you want the intel8x0 ALSA sound driver. I tried the i810_audo driver that comes in the normal kernel, but it played sound too fast. The sound card is an AC97 card, and it can only play audio at 48kHz. Since most audio out there in the world (or at least on my computer) is encoded at 44.1kHz, there's some math involved in getting things to sound right. Even then, it often fails to sound very good, but with the tiny speakers inside the machine, you can't tell anyway. I have some nice headphones, and the output in those is pretty terrible. However, I expect that DVDs should sound pretty good -- they're generally encoded at 48kHz or 96kHz (double of 48kHz).

I didn't put too much effort into getting sound working exactly right, and mostly just followed what I found on the web for configuring ALSA. I created an /etc/modutils/sound file, though I think the Debian packages might be able to create a module configuration automatically.
# set up the driver for the sound card (ALSA)
alias snd-card-0 snd-card-intel8x0
# fake the OSS driver out by redirecting to ALSA driver
alias sound-slot-0 snd-card-0
# load the OSS emulation modules
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

I'm not sure if that's a very appropriate configuration or not. It seems to work, though it must be noted that when the driver first loads, the mixer is turned all of the way down. Use your favorite mixer to fix that.

Update April 24, 2002: With kernel 2.4.18, there didn't appear to be a working implementation of the ALSA drivers (or, at least, it didn't work very well). Also, my 2.4.17 ALSA drivers wouldn't act sanely when more than one program attempted to access /dev/dsp. Any programs that attempted to access the device while it was in use would hang. This caused me no end of trouble with Galeon appearing to crash while it loaded the Macromedia Flash plugin.

In the meantime, the i810_audio driver improved enough so that it works fine on this system. Only one program can access the sound card at a time (I've gotten spoiled on my desktop by having an SB Live! that can handle multiple inputs at once). I added one relevant line to /etc/modutils/sound, commented out the rest of the file, and re-ran update-modules.

alias sound-slot-0 i810_audio

Problems

Ext3 seems to be attempting to commit the journal every five seconds. This may be tunable, but my hard drive is clicking every few seconds, probably meaning that it doesn't spin down.

The battery doesn't seem to fully charge -- it gets stuck at around 95% (as reported by Linux's APM driver -- pressing Fn-F1 and going to the battery status page indicates that the battery is at 100% and charging). I figure this is a BIOS or hardware issue. Unfortunately, this means that the battery can degrade over time (they're rated for 500 charges). Update April 24, 2002: This issue was fixed in the A04 and A05 versions of the BIOS.

It's recommended that if you're plugged into an AC outlet, and the battery is `fully' charged, remove the battery to prevent degredation. This is non-optimal, in my opinion, as if the plug accidentally gets pulled, bad things will happen.


The views and opinions expressed in this page are strictly those of the page author.
The contents of this page have not been reviewed or approved by the University of Minnesota.