How to make the Dell Dimension 4500 work with Red Hat Linux 7.3

I got a new Dell Dimension 4500 at work. It's a very nice machine, but it seems they have issues with regards to Red Hat Linux 7.3: the display/mouse aren't detected properly upon install, DMA won't work with a stock kernel (nor one updated via errata page download or rhupdate), and sound won't work with the integrated audio. These instructions will help correct two of those problems.

How to correct the display and mouse

The flat panel (an UltraSharp 1800FP 18") isn't properly detected (lower resolution, improper bit depth), and the mouse doesn't work properly (the scrollwheel and middle button don't work). Put this XF86Config-4 file in /etc/X11 and retsart X to correct these problems.

BTW, the monitor's specs are:

Size:   18"
Viewable Size:   18.1"
LCD Type:   TFT/Active Matrix
Inputs:   RGB and DVI
Pixel Pitch:   .281mm
Horizontal Scan:   31kHz - 80kHz
Vertical Scan:   55Hz - 85Hz
Vert. and Horiz.
Viewing Angle:
  Typical +/-80 degrees
Brightness:   250 nits
Contrast Ratio:   350:1
Prime Mode:   1280x1024 (SXGA)
Dimensions:   H: 17"
W: 16"
D: 8.8"
Weight:   17.20 lbs
I put those there because Dell took them off their web site, and I hate not having monitor timing specs.

How to build a new kernel which gets around the DMA bug

The IDE controllers (which are Intel 82801DB Ultra ATA Storage Controllers) won't work in DMA mode with a stock kernel. It's apparently a bug, or a controller whose specs changed even though its rev number didn't. I couldn't find a definitive answer either way. I do know that Alan Cox's 2.4.19-ac4 kernel patch solves the problem.

Here are the hdparm results before the new kernel is built (i.e., with an updated stock kernel):
[root@hostname root]# uname -a
Linux hostname.ucsd.edu 2.4.18-10 #1 Wed Sep 11 11:39:21 EDT 2002 i686 unknown

[root@hostname root]# hdparm /dev/hda

/dev/hda:
multcount = 16 (on)
I/O support = 0 (16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 2498/255/63, sectors = 40132503, start = 0
busstate = 1 (on)

[root@hostname root]# hdparm -t -T /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 0.38 seconds =336.84 MB/sec
Timing buffered disk reads: 64 MB in 23.25 seconds = 2.75 MB/sec

[root@hostname root]# hdparm -c1 -d1 -k1 /dev/hda

/dev/hda:
setting 32-bit I/O support flag to 1
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
setting drive keep settings to 1 (on)
I/O support = 1 (32-bit)
using_dma = 0 (off)

[root@hostname root]# hdparm -t -T /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 0.37 seconds =345.95 MB/sec
Timing buffered disk reads: 64 MB in 14.03 seconds = 4.56 MB/sec
As you can see, DMA won't engage and so disk access is slow.

To build the new kernel, first download the new kernel, the patch, and the .config file I made. Put them all in $HOME/download/kernel/2.4.19/. Then do the following as root (this is essentially a sub-mini-howto -- a cheatsheet for me; if you're already familiar with patching and building a kernel, then just do that using the links above):
cd /usr/src
tar zxvf $HOME/download/kernel/2.4.19/2.4.19.tar.gz
gunzip $HOME/download/kernel/2.4.19/patches/ac/patch-2.4.19-ac4.gz
ln -s linux-2.4.19/ linux
ln -s linux-2.4.19/ linux.vanilla
patch -p0 < $HOME/download/kernel/2.4.19/patches/ac/patch-2.4.19-ac4
cd linux
make mrproper
cp $HOME/download/kernel/2.4.19/.config ./
make xconfig (check that options match what are needed, save file)
make dep
make clean
vi Makefile (:s/EXTRAVERSION = /EXTRAVERSION = -ac4/)
make bzImage
make modules
make modules_install
/sbin/mkinitrd /boot/initrd-2.4.19-ac4.img 2.4.19-ac4
make install
/sbin/reboot
Here are the hdparm results after the reboot, with the new kernel selected from the GRUB menu:
[root@hostname root]# uname -a
Linux hostname.ucsd.edu 2.4.19-ac4 #2 Wed Sep 11 14:26:39 PDT 2002 i686 unknown
[root@hostname root]# hdparm /dev/hda

/dev/hda:
multcount = 16 (on)
I/O support = 1 (32-bit)
unmaskirq = 0 (off)
using_dma = 1 (on)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 2498/255/63, sectors = 40132503, start = 0
busstate = 1 (on)

[root@hostname root]# hdparm -t -T /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 0.38 seconds =345.95 MB/sec
Timing buffered disk reads: 64 MB in 1.65 seconds = 38.79 MB/sec
The machine should be noticeably faster, with less overall CPU usage.

If you want to make sure that the disk settings stick across a reboot (no matter what the -k1 flag is supposed to do, it doesn't seem to want to keep settings), make a small shell script like so:
#!/bin/shell

/sbin/hdparm -c1 -d1 /dev/hda
Save it as /etc/rc.d/init.d/dma. Then link it to the proper run-level you're using, as early in the boot process as you can (e.g., ln -s /etc/rc.d/init.d/dma /etc/rc.d/rc3.d/S04dma).

How to get sound working with the integrated audio

You can't.

The audio chip on the motherboard is a SoundMAX Integrated Digital Audio. Linux, and sndconfig, detect it as an Intel i810 AC97 Audio chip, using the intel_i810 module. Long story really short, the driver doesn't like that card at all. No amount of Google and newsgroup searching turned up statements to the contrary. It seems everyone's having trouble. If someone really wants sound, have them buy a $17 SoundBlaster Live! card and be done with it.

Comments for: How to make the Dell Dimension 4500 work with Red Hat Linux 7.3

Post a comment
Name:


Email Address:


URL:


Comments:


Remember info?