Red Hat 8.0 on Dell Inspiron 8200

[Note: See my notes on upgrading to Red Hat 9 and Fedora Core 3.]

The Hardware

Processor1.8GHz Pentium 4 M
BIOSPhoenix BIOS A08 (upgraded to A09)
Display15" SXGA+ (1400x1050) @24bit
Video Card32MB DDR 4X AGP NVidia NV17 (GeForce 440 Go)
RAM512MB DDR 266MHz (2 DIMM) SODIMM
Hard drive40GB, 5400RPM; Hitachi DK23EB-40
Floppy driveDell
Fixed optical24X CD-RW/DVD combo; Samsung CDRW/DVD SN-324B
Modemv.92 56Kb internal softmodem; PCTel 2304WT V.92 MDC
LAN10/100Mb LAN; 3C920 (3C905C-TX compatible) controller
WLANDell TrueMobile 1150 wireless mini-PCI (has Agere MPC13A-20/R chip)
FirewireIEEE 1394 (Firewire); TI OHCI Compliant controller
USB2 slot USB 1.0; Intel 82801CA/CAM
PCMCIA2 slot; TI PCI-4451 controller
AudioCrystal WDM Audio Codec (Cirrhus Logic CS 4205)

My Purchase Requirements

My most important criteria for buying this laptop were:
Suspend/resume works well
Reliable suspend/resume is essential to me. I generally leave my machine powered on for weeks at a time, suspending when I don't use it, resuming when I need it. If a laptop can't do suspend/resume reliably, why bother with a laptop?
Wireless LAN works well
I could live with a PCMCIA wireless LAN (WLAN) card, but I hoped the Dell mini-PCI WLAN card would do the trick. It did. (See below.)
1400x1050x24 display
I wanted a nice big (in pixels) display, but I was afraid a 1600x1200 display would have text too tiny to read. So I chose the 1400x1050 display. Maybe a mistake.... (I could have had a 1600x1200 at no extra charge.)

From looking at comp.os.linux.laptops and http://www.linux-on-laptops.com/dell.html, I reached the conclusion that a Dell laptop would meet my requirements. (I had looked at other machines from Compaq, HP, Toshiba. Most of them use ACPI as their power management scheme, and Linux has notably bad support for ACPI. Consequently, suspend/resume would be iffy. Dell still supports the older APM standard, as well as ACPI.)

Before Installation

My machine came with Windows XP Home Edition. I wanted to keep that, and I didn't feel like reinstalling it and all the other glop that Dell supplies. So I bought a copy of PartitionMagic 8.0. (AFAIK, none of the open source disk partition tools can shrink a live NTFS partition.) After changing the boot order in the BIOS to put CD/DVD before Hard Drive, I booted up the PartitionMagic CD, and I shrank the NTFS (WinXP) partition to about 10GB and left the rest of the disk unallocated. (I let the installation partition the rest.)

Installing Red Hat 8.0

I chose Red Hat because I have prior experience with older releases, and I'm comfortable with the process. Also, I have an older Dell Latitude that's running RH 7.3, and I figured I could take advantage of some of the configuration experience I had with it. I also bought a copy(!), even though I had previously downloaded all the CDs, my self-imposed tax to support open source software.

During installation, I:

How'd it go?

The installation itself went smoothly. Most everything worked, though not perfectly. (WinXP continued to boot and work, too.) Some things required extensive fussing to get them to work. Here's a summary.

FeatureOut-of-the-boxAfter more work
Suspend/resumepartialyes
Wirelesspartialyes
Video cardpartialyes
Modemnoyes
USByes--
Firewire(don't know)--
Soundyes--
CD-R Recordingyes--

Details

Suspend/Resume

Basic suspend/resume worked right away. However, as I worked further, I found conflicts with both KDE and the mini-PCI wireless card. Here's what went wrong, and how I fixed it.

Oh, and apparently you need to add resume=force to your LILO or GRUB boot options; for example (in /etc/grub.conf):

        kernel /vmlinuz-2.4.18-27.8.0 ro root=LABEL=/ hdb=ide-scsi resume=force
KDE Conflict
I had been using KDE on an older laptop, so I chose to use it on the I8200. The mini-PCI WLAN card works through the PCMCIA interface. The KDE component klaptopdaemon, which gets run by default, has hooks into the ds kernel module. As a result, when the APM code tries to shut down the PCMCIA system, it can't do so properly: klaptopdaemon is still running, and its dependency on ds prevents the unloading of modules pcmcia_core, ds, and yenta_sockets. The machine shuts down, but when it resumes, the WLAN configuration (at least mine) is all messed up.

Resolution: I've been using Gnome instead of KDE. It doesn't have that conflict.

APM/wireless conflict
Even after I switched to Gnome, I still had problems with suspend/resume. Other people haven't had this problem, but they use DHCP for their network configuration, and I use static IP addresses. The problem seemed to be that, on resume, the WLAN interface was not properly initialized, and I couldn't set any of the wireless parameters.

Resolution: I created this /etc/sysconfig/apm-scripts/apmcontinue script:

	#!/bin/sh

	if [ "$PROG" = "suspend" ]; then
	    /etc/init.d/pcmcia stop
	fi
	if [ "$PROG" = "resume" ]; then
	    # No beep!
	    CARDMGR_QUIET=-q
	    export CARDMGR_QUIET
	    /etc/init.d/pcmcia start
	fi
    

The script has the disadvantage that it delays both suspend and resume, but it has the advantage that suspend/resume now work for me. (There's also a little fillip in there: I force the PCMCIA cardmgr not to beep when it "removes" or "reloads" the mini-PCI card. It requires a one-line change to /etc/init.d/pcmcia at line 127, from:

               /sbin/cardmgr $CARDMGR_OPTS
    
to
               /sbin/cardmgr $CARDMGR_OPTS $CARDMGR_QUIET
    
No suspend on lid close when plugged in
With the above changes, suspend/resume works great when the laptop is running on battery. However, if it's plugged in, closing the lid does not suspend the machine (although Fn+Esc does). I had to change a BIOS setting to get that to work. On p.6 of the BIOS, for item Display Close, under the AC Power column, select Suspend, in place of the default, Active.

Video Driver

Red Hat 8.0 installation selects the vesa driver for the nVidia video card. That works well enough for you to get started, but it's deficient. When I ran startx, I discovered that my display was shifted to the right by about 1/2 inch. If I ran the cursor to the right edge of the screen, it would wrap around to the left. I don't know why I saw that wrap-around (no one else seems to have reported this problem), but I proceeded to get nVidia's drivers.

The nVidia driver supports true 24-bit per pixel color, one reason to install it. Driver versions >= 4496 claim to support APM. Older drivers don't handle APM correctly unless you make source changes, which are described here. (nVidia disavows this change, of course.) The description below provides links to my already-modified version of the file.

nVidia versions >= 4496

[Retraction: as of 20 Aug 2003, I've decided to deprecate nVidia 4496. It failed to suspend or resume twice on me in just a few days' time. Stick to 4363, which I have found to be reliable.]
  1. Go to http://www.nvidia.com/view.asp?IO=linux. For the Inspiron I8200, you want the "Linux IA32" driver. Download the .run file, e.g., NVIDIA-Linux-x86-1.0-4496-pkg2.run, into a directory (call it dd).
  2. Follow nVidia's instructions for installation. (You'll need to do that as root.)
  3. APM suspend/resume to RAM should work.

Here's what I had to do to get older versions to support APM. (Note that these instructions changed between nVidia versions 4191 and later.)

nVidia versions >= 4349

  1. Go to http://www.nvidia.com/view.asp?IO=linux. For the Inspiron I8200, you want the "Linux IA32" driver. Download the .run file, e.g., NVIDIA-Linux-x86-1.0-4363.run, into a directory (call it dd).
  2. Follow nVidia's instructions for installation. Although this version will not handle APM suspend/resume, you should verify that you can get the driver working and with the resolution you expect. If you've got a 1400x1050 display like mine, you can try the new driver with my XF86Config file (goes in /etc/X11), to see how nice the display looks.
  3. Now we'll get APM working. In directory dd:
    1. $ sh NVIDIA-Linux-x86-1.0-4363.run --extract-only

      This will extract a source package.

    2. Replace NVIDIA-Linux-x86-1.0-4363/usr/src/nv/nv.c with my version. (Be sure to make backup copy of the original nv.c.)
    3.     $ cd NVIDIA-Linux-x86-1.0-4363
          $ make install
          
      Builds driver with modified source and installs.
  4. APM suspend/resume should now work okay, either using apm -s or by closing the lid (provided you've set the BIOS correctly.

nVidia version 4191

  1. Go to http://www.nvidia.com/view.asp?IO=linux. For the Inspiron I8200, you want the "Linux IA32" driver. Although there's a newer driver (1.0-4349), I couldn't get it to work satisfactorily with suspend/resume, although the installation process was slick and easy. The following remarks refer to 1.0-4191, which you must download from the archive, and which does handle suspend/resume correctly. It just takes a little work.
  2. Download a version of the README, as well as NVIDIA_GLX-1.0-4191.i386.rpm and NVIDIA_kernel-1.0-4191.src.rpm (bottom of the page).
  3. Follow the instructions carefully. If you're still running the (stock) VESA X driver, you can install the resulting nvidia driver while X is running, but that is not the case for the next steps. You can try the new driver with my XF86Config file (goes in /etc/X11), to see how nice the display looks. But it won't suspend/resume properly.
  4. Download nVidia's tarball and unpack someplace convenient:
    	$ tar zxf NVIDIA_kernel-1.0-4191.tar.gz
    	$ cd NVIDIA_kernel-1.0-4191
    	

    To support suspend/resume, you need to change nv.c in that directory. The simplist thing to do is download my version. Then

    	$ mv nv.c nv.c.O
    	$ mv nv.c.dmk nv.c
    	[At this point, make sure you're not running X, and you must be root.]
    	$ make
    	[ automatically installs the new nvidia.o driver ]
    	

    At this point you should be able to suspend/resume successfully, at least so far as the video driver is concerned.

Wireless LAN

Red Hat 8.0 supports many WLAN interfaces out of the box. In particular, it supports the Dell TrueMobile 1150, which is based on a Lucent/Agere Orinoco chipset. The Dell TrueMobile 1180 is not supported as of now; the 1180 is based on a Broadcom chipset, for which there is no Linux support yet.

When I bought my machine, I was unable to configure my machine using the online order system with the 1150. Dell expects you to buy the TrueMobile 1180 with the Inspiron 8200. You will probably have to speak to a real live sales representative to do otherwise. (That turns out not to be a bad thing. The guy I talked to provided me all the web-based discounts, plus tried pricing the configuration a couple of different ways to get the lowest cost.)

RH8 recognizes the TrueMobile 1150 right away. You can configure your wireless interface as eth1 during the installation process, but you're not given the opportunity to set important wireless-only parameters:

So, after you install RH8, boot the new system, and start Gnome, you have to run System Settings > Network. Double-click on the eth1 line, click the Wireless Settings tab.

  1. You may want to choose Mode = Managed, if you're connecting to an access point.
  2. You may want to specify a Network Name.
  3. You may want to supply a (encryption) key. I entered mine as hexadecimal in the format: aaaa-bbbb-cccc-dddd-eeee-ffff-gg. There may be other formats, particularly s:passphrase, but I haven't tried that.

One thing you can't do through the GUI is set some extra parameters. I edited /etc/sysconfig/network-scripts/ifcfg-eth1, adding the line IWCONFIG="power 100ms". This parameter gets passed to the iwconfig command, and it sets a lower duty-cycle for the wireless card, with the goal of reducing its power sucking. I haven't seen any adverse effect on performance by doing so. I also haven't verified that this actually extends battery life, but I know it changes the power behavior of the Orinoco Gold PCMCIA card, which is closely related to the TrueMobile 1150.

For what it's worth, my RH8 installation uses the wvlan_cs driver, and it works fine for me. Other people have reported that they have to use the orinoco_cs driver. One reported that his system selected orinoco_cs automatically. I can't explain the discrepancy.

As I mentioned above, I had major problems with resume messing up my wireless settings. As I described, I had to create an apmcontinue script, after which it worked great.

One final note: there's a nifty KDE tool, kwifimanager that will display wireless signal strength, network name, and other goodies. It will run under Gnome, just not in the Panel. Find it via Google.

Modem

The built-in modem does not work without extra work, but it does work within Linux. The modem is a software-assisted device, aka Winmodem/Linmodem. (These instructions apply only to devices identical to mine. They were assembled from various sources, including the Linmodem-HOWTO.) Here's what I had to do:
  1. Download modem code from Jan Stifter's pages. (I got a beta copy of 0.9.7 from http://www.medres.ch/~jstifter/pctel/pctel-0.9.7.html.)
  2. Build the pieces according to the instructions.
  3. Install the pieces:
        insmod -f pctel
        insmod -f ptserial
        

    Note: you will probably get dire warnings about modules being compiled with the wrong version of GCC. That's true, but benign. Parts of the modem code are vendor-supplied, closed source, and compiled with GCC v2.

  4. Create a /dev/pctel device, per Linmodem-HOWTO:
    1. Change to the root user: su (enter root password when prompted)
    2. Create the device file: mknod /dev/pctel c 62 79
    3. Make convenience device: ln -s /dev/pctel /dev/modem
    4. Make convenience device: ln -s /dev/pctel /dev/ttyS15
      (Note: this failed for me: I already have a /dev/ttyS15, but it doesn't really matter.)
    5. Set device ownership: chgrp uucp /dev/pctel
    6. Set device permissions: chmod 666 /dev/pctel
  5. Try your favorite dialing software, using /dev/modem as your modem device.

If the modem now works, make more permanent arrangements for loading the modules (as root):

  1. cp pctel.o ptserial.o /lib/modules/`uname -r`/kernel/
  2. Create an /etc/init.d/pctel script, from below.
  3. In /etc/rc3.d,
    $ ln -s ../init.d/pctel ./S99pctel

Sound

It just works, without any fussing.

Odds and Ends

Mouse/Touchpad
I discovered I had to select "ALPS GlidePoint (PS/2)" as the mouse (and emulate 3 buttons). Otherwise the Preferences > Mouse panel does will not adjust the "mouse" cursor speed and sensitivity. (If you do this within X, you have to restart X for it to take effect.) Unfortunately, after suspend/resume, the new settings are lost, and they revert to (apparently) the default. Restarting X restores the changed cursor speed and sensitivity.
Cooling Fans
Yes, they're noisy. They seem to behave without my doing anything special, except that sometimes on Resume, the fan insists on running. As has been related elsewhere, the BIOS has a bug and sometimes misreads the temperature. In that case, Fn+z forces the BIOS to take a new reading, discover it's low enough that no fan is necessary, and turns them off.
i8kutils
If you want to experiment with toasting your processor by changing how the fans operate, you need to download the i8kutils package. Use Google to find an RPM. RH 8.0 includes the kernel module, i8k.o, so you just need the utility programs, i8kctl, i8kmon, and i8kbuttons.

Note: i8kctl program requires the i8k kernel module to have been installed. You can do this by hand, as root, with insmod i8k. It's easier, though, to do it at boot time. You need to create /etc/init.d/i8k; you then need to do this:

	$ cd /etc/rc3.d
	$ ln -s ../init.d/i8k ./S87i8k
    

The i8kbuttons program makes it possible to program the special buttons on the I8200 to control volume and multimedia. I haven't tried this yet. You need to follow the instructions distributed with the i8kutils package.

gkrellm/i8krellm
gkrellm is a nifty system status monitor. And there's a nifty optional plug-in display, i8krellm, that can display Inspiron temperature and fan status, and can control the fans; it uses i8kutils. I had to jump through some hoops to get i8krellm to work under RH8. You can read about the process here.

There's another gkrellm plug-in that displays information about your wireless connection. Get information here.

tpconfig
The tpconfig package lets you make changes to the touchpad's behavior, in particular to disable tap mode completely. You can do other magic, but it requires modifying a kernel module, and I haven't bothered to do so yet.
ntp
You should use ntp, the Network Time Protocol, to keep your system's clock correct. Red Hat 8.0 supplies all the pieces except for a configuration file to make it work. (It even opens the appropriate hole in the firewall.) My /etc/ntp.conf file says:
    server sundial.columbia.edu

    driftfile /usr/tmp/ntp.drift
    

You should pick an NTP server that's relatively close, network-wise, to you from this list in place of my choice, sundial.columbia.edu.

Gnome battery applet
Some people have complained that their Gnome battstat battery monitoring applet causes their computer's clock to run slow. I have not seen that effect on my I8200 + RH8 + up2date.

This is the pctel module initialization file:
#!/bin/sh
#
# Startup script for PCTEL modem modules
#

# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
  start)
        echo -n "Starting pctel: "
        insmod -f pctel
        insmod -f ptserial
        echo done
        ;;
  stop)
        echo -n "Shutting down pctel: "
        modprobe -r ptserial
        modprobe -r pctel
        echo done
        ;;
  status)
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: pctel {start|stop|restart|status}"
        exit 1
esac

exit 0

This is the i8k module initialization file:
#!/bin/sh
#
# Startup script for i8k utilities
#

# Source function library.
. /etc/rc.d/init.d/functions

# See how we were called.
case "$1" in
  start)
	echo -n "Starting i8k: "
	modprobe i8k
	echo done
	;;
  stop)
	echo -n "Shutting down i8k: "
	modprobe -r i8k
	echo done
	;;
  status)
	;;
  restart)
	$0 stop
	$0 start
	;;
  *)
	echo "Usage: i8k {start|stop|restart|status}"
	exit 1
esac

exit 0

Important Resources


Links

My /etc/init.d/i8k filei8k
My /etc/init.d/pctel filepctel
My /etc/init.d/pcmcia filepcmcia
My /etc/sysconfig/apm-scripts/apmcontinueapmcontinue
My nv.c for nVidia drivernv.c for 4191, nv.c for 4363
My /etc/X11/XF86ConfigXF86Config
nVidia Linux drivershttp://www.nvidia.com/view.asp?IO=linux
Linmodem-HOWTOhttp://www.tldp.org/HOWTO/Linmodem-HOWTO.html
Unofficial PCTel modem on Linux sitehttp://linmodems.technion.ac.il/pctel-linux/

TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones


Dave Kristol, dmk-yahoo@kristol.org
Last modified: 15 January 2006
$Id: i8200.html,v 1.9 2006/01/15 18:41:21 dmk Exp $