Linux on a Dell 300m

The 300m is a 3-pound laptop. It comes in a bright blue case, and I've named mine "dartfrog" since its coloration resembles that of a Dendrobates azureus.

Information about this machine on the Dell web site is here. I ordered mine with the media base with CD-RW/DVD, 640MB memory, 40GB hard drive.

I found I'm not the first person to install Linux on this machine. Read Mike Hoolehan's installation notes here.

My initial Linux installation (fall 2003) was Red Hat 9. In December 2004, I upgraded to Fedora Core 3.

Red Hat 9 Installation


Basic Red Hat 9 installation goes smoothly and most things can be made to work without too much trouble. The things that definitely do not work are any kind of sleep/suspend mode (at least with a 2.4 kernel), and the built-in wireless card. I also can't get the internal modem to work, but I'm not sure if that's my fault or Dell's.

Disk partitioning

With a 40GB hard drive, I figured I might as well make my machine dual-boot just for compatibility purposes. Defragmenting the disk in Windows left some clutter on the disk and at least one unmovable file towards the end of the C: partition, though, and since I know so little about messing around with system stuff in Windows I decided it would be easiest just to reinstall Windows from scratch in a smaller partition, than to try to figure out how to move this stuff around so I could split the existing partition non-destructively.

Reboot using the Windows XP reinstallation CD that came with the machine; it gives you a menu for fiddling with disk partitions. I created a 5 GB partition for Windows and left the rest of the disk free for Linux. After the Windows XP installation disk finishes, pop in the Dell drivers CD. You need to manually go down the list and extract and install each driver and application (bleah). I got lazy and skipped some of the diagnostics and documents. I'm not too likely to ever use Windows for much of anything anyway.

Red Hat 9 installation

This went smoothly. I told it to install in the newly-created free space on the disk, and used the auto-partitioning. But when I booted up after installation, what the heck is this GUI it throws me into? Bleah. I want a plain login shell on the console so that I can install my own .xinitrc and the like. There's probably a better way to disable this, but for now I went into /etc/inittab and edited the default runlevel to 3 instead of 5.

At this point, I checked that the system boots both with and without the docking base attached. (It was attached during installation, of course, so that I could use the CD drive.)

XFree86 and display

I didn't have to do anything special for this. During the Red Hat installation, I picked the "generic laptop display panel 1024x768" and the defaults for everything else. It recognized the display card as an Intel 852 and defaulted to 24-bit color.

One minor glitch: when you exit X, the console display is left with some flickering horizontal lines on it.

Initial network configuration

The built-in Ethernet port (Broadcom 5705M) on the 300x does not work until you download and install the driver for it, so there is a bit of a chicken-and-egg problem with it. I used a PCMCIA ethernet card to get started.

I have a DHCP server running on the gateway machine on my home network (lilypad), so the first thing to do is edit /etc/hosts to add entries both for the 300m itself and for the gateway machine.	localhost		dartfrog.localdomain dartfrog 	lilypad.localdomain lilypad
Then edit /etc/sysconfig/network to look like this:

And /etc/sysconfig/network-scripts/ifcfg-eth0 like this:

Reboot the machine, and it should come back knowing its name and able to talk to the rest of the world.

Broadcom 5705M ethernet card

I followed Mike Hoolehan's excellent notes on how to install the driver for the Broadcom ethernet card.

Change the ONBOOT line in ifcfg-eth0 to yes. Pop out the PCMCIA network card, plug the network cable into the built-in RJ-45 slot instead, and reboot. When kudzu detects the new hardware, tell it to re-use the existing network configuration.

Note: while there is a second RJ-45 port on the back of the docking base, there is only one NIC, and while the machine is docked, the base blocks access to the RJ-45 on the 300m itself.

ACPI support (2.4 kernel)

Mike Hoolehan's instructions and patch for rebuilding the kernel with ACPI support and a custom DSDT gave me a kernel that produced errors during ACPI initialization, and then wedged a little further on in the boot process. I found that the problem is that, since my machine has more memory than Mike's, the BIOS ACPI addresses that need to be hard-coded into the DSDT are different on my machine. To solve this, I had to make my own custom DSDT following the instructions in the ACPI Howto. You can download my original and hacked ASL files and the compiled DSDT here.

I found through my experiments with ACPI that the BIOS does not support the S1 sleep state. This was subsequently confirmed to me by Dell technical support, who also say there are no plans release an upgraded BIOS to fix this. Since the 2.4-series kernel doesn't support S3 (suspend-to-RAM) or S4 (suspend-to-disk), therefore about the only useful feature you get from installing ACPI in it is that the system will power down by itself if you do shutdown -h. At this point, I would say that if I were starting all over again, I would not bother with installing this kernel patch at all.

There's a lot more information about ACPI at the ACPI4Linux web site.


I tried installing swsusp 1.1-rc9 into my 2.4.22 kernel with the ACPI patches. Suspend seems to work OK, but not resume -- it just hangs while trying to read the saved data from the disk. Bleah. :-(

ACPI Support (2.6 kernel)

The 2.6 series kernel is supposed to include ACPI support for the S4 (suspend-to-disk) sleep state. I haven't had time to try this yet.


Windows says the internal modem is a Broadcom V.92 56K modem. Dell technical support claims that this is the BCOM 421x modem for which they have already released a Linux driver, but I haven't been able to get it to work.

This is what I did to try to install it:

  1. Download the source package for the driver.

  2. Unpack it with tar xzf. This creates a directory named bcm4212-source containing a source RPM and a README file.

  3. Use rpm -i to install the source RPM. This step had me confused for a while because I couldn't figure out where it was installing the sources, but eventually I found it in /usr/src/redhat/SOURCES/BCMSM-3.4.19.tar.gz.

  4. Unpack the above file with tar xzf. This creates a directory called BCMSM-3.4.19; cd into it.

  5. Do make KERNEL_DIR=/usr/src/linux BCMSM.o.

    I got a compilation error on lkvi.c that I was able to fix by adding an implicit #include <linux/kernel.h> near the top of the file.

  6. Try insmod BCMSM.o. Unfortunately, this gave me an error:
    BCMSM.o: init_module: No such device
So, I'm kind of stuck on this. I'm wondering if this is really the right driver after all. I have a PCMCIA modem card that works fine so I will probably just use that unless/until somebody else digs up a working driver for the internal modem.

Wireless card

Everybody says it doesn't work, so I'm not wasting my time trying. (Not to mention, I don't have wireless access to try it out on.)

Maybe someday Intel will release a Linux driver, though.

Fedora Core 3 Installation

Following Mike Hoolehan's notes, I upgraded my laptop to run Fedora Core 3. As Mike noted, the built-in Ethernet port is now recognized directly and there is a driver for the wireless card.


I haven't tried to mess with the ACPI configuration yet. One thing I did notice is that shutdown -h now powers down the machine.

X/Touchpad problem

I had a problem when I fired up the default X configuration: the touchpad was over-sensitive and jumpy, and the 3-button emulation feature seemed to be broken (causing button events for all 3 buttons when you pressed the left and right buttons simultaneously to emulate a button 2 press). Eventually I figured out that there is a better X11 mouse driver for the Synaptics touchpad. To enable it, go into your /etc/X11/xorg.conf and make these changes:

Then restart your X server and you should be in business. The Synaptics driver supports a bunch of options for customizing the sensitivity and speed, but the defaults seem OK to me so I haven't tried to mess with it further. Here is the web site for the driver if you want more information.

Copyright (c) 2003-2004 Sandra J. Loosemore
Last modified: 24 Dec 2004