Red Hat 8.0 on Dell Inspiron 8200
[Note: See my notes on upgrading to Red Hat 9
and Fedora Core 3.]
The Hardware
Processor | 1.8GHz Pentium 4 M
|
BIOS | Phoenix BIOS A08 (upgraded to A09)
|
Display | 15" SXGA+ (1400x1050) @24bit
|
Video Card | 32MB DDR 4X AGP NVidia NV17 (GeForce 440 Go)
|
RAM | 512MB DDR 266MHz (2 DIMM) SODIMM
|
Hard drive | 40GB, 5400RPM; Hitachi DK23EB-40
|
Floppy drive | Dell
|
Fixed optical | 24X CD-RW/DVD combo; Samsung CDRW/DVD SN-324B
|
Modem | v.92 56Kb internal softmodem; PCTel 2304WT V.92 MDC
|
LAN | 10/100Mb LAN; 3C920 (3C905C-TX compatible) controller
|
WLAN | Dell TrueMobile 1150 wireless mini-PCI (has Agere MPC13A-20/R chip)
|
Firewire | IEEE 1394 (Firewire); TI OHCI Compliant controller
|
USB | 2 slot USB 1.0; Intel 82801CA/CAM
|
PCMCIA | 2 slot; TI PCI-4451 controller
|
Audio | Crystal 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:
- Partitioned to divide the empty partition
into / (10GB) and /home (17GB)
- Chose GRUB, no password. Wrote Master Boot Record (MBR).
- Set timezone, non-UTC (so WinXP and Linux don't fight
about the time)
- Configured eth0 (wired Ethernet) and eth1 (WLAN); I used
static IP addressses
- Selected packages:
- KDE
- development tools
- kernel development
- KDE software development
- Created a boot floppy; I don't know whether it works;
previous RH installs produced an image too large to fit
on a boot floppy
- Configured display:
- default (NVidia GeForce 4), 32MB
- 1400x1050, 16-bit
(If you choose 24-bit, X will not be able to start up.)
- select Generic LCD 1400x1050
- Chose not to use video login.
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.
Feature | Out-of-the-box | After more work
|
---|
Suspend/resume | partial | yes
|
Wireless | partial | yes
|
Video card | partial | yes
|
Modem | no | yes
|
USB | yes | --
|
Firewire | (don't know) | --
|
Sound | yes | --
|
CD-R Recording | yes | --
|
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.]
- 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).
- Follow nVidia's instructions for installation.
(You'll need to do that as root.)
- 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
- 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).
- 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.
- Now we'll get APM working. In directory dd:
- $ sh NVIDIA-Linux-x86-1.0-4363.run --extract-only
This will extract a source package.
- 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.)
-
$ cd NVIDIA-Linux-x86-1.0-4363
$ make install
Builds driver with modified source and installs.
- 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
- 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.
- 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).
- 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.
- 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:
- network name (ESSID)
- encryption key
- power management
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.
- You may want to choose Mode = Managed, if you're connecting to
an access point.
- You may want to specify a Network Name.
- 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:
- 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.)
- Build the pieces according to the instructions.
- 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.
- Create a /dev/pctel device, per Linmodem-HOWTO:
- Change to the root user: su (enter root password when prompted)
- Create the device file: mknod /dev/pctel c 62 79
- Make convenience device: ln -s /dev/pctel /dev/modem
- 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.)
- Set device ownership: chgrp uucp /dev/pctel
- Set device permissions: chmod 666 /dev/pctel
- 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):
- cp pctel.o ptserial.o /lib/modules/`uname -r`/kernel/
- Create an /etc/init.d/pctel script, from
below.
- 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
- Linux
on Dell Laptops, a Yahoo! discussion group.
Extremely helpful discussions on configuring Linux on various
Dell laptops, along with an FAQ, useful archival files with X configurations,
and other goodies.
- Linux on Laptops
web site. The starting point for all investigations of Linux
on laptops.
Links
Dave Kristol,
dmk-yahoo@kristol.org
Last modified: 8 April 2015
$Id: i8200.html,v 1.10 2015/04/08 15:24:11 dmk Exp $