I have been using Linux for some time now, but I have yet to take it for a test drive
on a laptop, so I decided it was finally time. (The last
Slashdot Meetup at
Maude's
certainly peaked my curiority, too. I had no idea a
WiFi card
could be so much fun.)
The 3800 series was available in a couple screen sizes, but other than that it's
pretty standard. That's good, as this guide will be valid for configurations
somewhat different from my own. As to PC Cards, we all have our own favourite
cards and I'll discuss playing with mine. Yours will no doubt differ.
My system has the 12.1" 800x600 Active Matrix TFT display, a 500MHz Celeron
(66MHz FSB) processor, 160MB PC100 (128MB + 32MB) RAM, 4.8GB Fujitsu IDE
hard disk, ATI Rage Mobility M1/P 8MB AGP 2x video card, a Maestro 3i
sound card coupled with an ActionTek 56K internal modem, and a Samsung 24X
modular CD-ROM drive. My assorted PC Cards include a Xircom 10/100
(half duplex) card and a Linksys 802.11b WiFi card. (Not from Dell, of course.)
Here's a quick list of kernel options to enable for full support of the
3800's hardware (other options are up to you):
While I am going to discuss configuring drivers for the components above in
that order, keep in mind that many of those items require specific kernel
options be enabled. I recommend you read everything and not just dive
right in. Where applicable, I am going to discuss Debian specific possibilities
and shortcuts since that's my distribution of choice.
Configuring the ATI Rage Mobility M1 (Mach64 chipset)
The M1 will work happily with XF86 v4.x and the ati driver option.
If you want access to the chipset's more interesting features you will need
to download and compile some things, however.
I am pleased to report that both S-Video (TV) out and VGA are supported on i386.
It works nearly out-of-the-box with Lennart Poettering's
atitvout
utility. His card is virtually identical to those that shipped with the
Inspiron 3800.
Simply download a copy of
version 0.4.
Then, untar it and run make.
jasonb@rachael:~/src$ tar -zxvf atitvout-0.4.tar.gz
atitvout/
atitvout/lrmi-0.6/
...
atitvout/vbecall.c
atitvout/mach64.h
atitvout/mach64.c
jasonb@rachael:~/src$ cd atitvout && make
Once that's complete, you can verify the utility works for you. I recommend
running it with the help argument (./atitvout help). It will give
you a list of supported commands and other helpful notes. If you want to
dive right into testing it, grab your S-Video cable or a VGA cable and plug
either into the corresponding port on your laptop. Ensure either is plugged
into a powered-on device you wish to test with. (I used a close VGA monitor.)
Now, run atitvout in detect mode (you'll want to do this as root or change
the permissions on /dev/mem accordingly for your user):
rachael:/home/jasonb/src/atitvout# ./atitvout detect
CRT is attached.
LCD is attached.
If you see output similiar to the above, you are good to go. Now run:
rachael:/home/jasonb/src/atitvout# ./atitvout auto
rachael:/home/jasonb/src/atitvout# ./atitvout c
rachael:/home/jasonb/src/atitvout# ./atitvout l
There is no status output, but you will receive visual feedback in
the form of your other device coming to life. In the commands shown
above my secondary device came to life (a CRT), then I deactivated
my LCD, then finally I deactivated the CRT in favour of the LCD.
All in all, extremely cool. This is definately one feature I was
pleased to find is now supported under Linux on the Rage Mobility M1.
Next up is accelerated 2D/3D support and this item is still a bit of a
challenge.
Hardware acceleration is provided via the
Direct Rendering Infrastructure
for X which consists of two important components:
the X driver for your video card and a
Direct Rendering Manager
kernel driver for your card. Mach64 chipset support is available,
but as of X 4.2.1 it is still not part of the standard distribution.
Instead, it is a branch in X CVS.
Fortunately, many people have old Mach64 graphics cards and desire Direct
Rendering Infrastructure support, so there are now serveral ways of acquiring
support for this card. I am going to walk through two ways, the first of which
I consider the brute force method, and the other the easy way. The brute
force method is to simply checkout the Mach64 X DRI branch and compile X.
The easy way to is to download a Debian package compiled against the latest
X package in Debian and simply use that. The former is available to all.
The latter is Debian specific.
Either method will require you to enable AGP support (/dev/agpgart)
(CONFIG_AGP)in your kernel. You will also benefit from enabling MTRR
(Memory Type Range Register) (CONFIG_MTRR) support; It improves performance.
You will want to compile both into your kernel. Upon boot up, your logs
will have something like this:
rachael kernel: mtrr: v1.40 (20010327) Richard Gooch
(rgooch@atnf.csiro.au)
rachael kernel: mtrr: detected mtrr type: Intel
...
rachael kernel: Linux agpgart interface v0.99
(c) Jeff Hartmann
rachael kernel: agpgart: Maximum main memory to use for
agp memory: 122M
rachael kernel: agpgart: Detected Intel 440BX chipset
rachael kernel: agpgart: AGP aperture is 64M @ 0xf4000000
First, let's walk through the brute force way. Fortunately, this path has been
walked by many before, and among them is Colin Leroy, who has written an
excellent
tutorial
to get the Mach64 X CVS branch compiled. As a bonus he
provides a shell script that will nearly do it all for you!
To build X, you will need the typical assortment of compiler tools, glide2,
glide3, ncurses5, bison, flex, libfreetype6, libz, and 400MB of free space.
With those in hand, download Leroy's build script
and put it in your favourite build directory. You will also need wget
installed for the downloading and cvs installed to fetch the Mach64 branch.
The script will insist that you not build as root, so your home directory is a
good choice. I used ~/src. (If cvs complains about a missing .cvspass
file just touch one in your home directory.)
jasonb@rachael:~$ touch ~/.cvspass
jasonb@rachael:~$ mv driplusxv.sh ~/src
jasonb@rachael:~/src$ chmod 755 driplusxv.sh
jasonb@rachael:~/src$ ./driplusxv.sh
...
The script will download the Mach64 CVS branch, patch it with support for
the X Video extension, which it lacks, and finally begin a compile. Once
complete, it will move your current XFree86 tree to /usr/X11R6-bck
and then copy your newly compiled X to /usr/X11R6. This will
break any package management system you have on your system. Consider
yourself warned!
Finally, the script will build the DRM kernel module for your running kernel.
Your kernel headers must match your running kernel for this to work. If they
do not, build a new kernel and install it so things sync up. The compiled module,
mach64.o, will be copied into
/lib/modules/`uname -r`/kernel/drivers/char/drm.
When you next start X, you will have full DRI support for your Mach64 card!
On a Debian GNU/Linux box, things are much simpler, thanks to Michel Daenzer.
He has compiled Debian packages for i386 and PowerPC that seemlessly install
along side your existing X packages (and replace others as necessary)
Add the following line to your /etc/apt/sources.list and
run apt-get update. You will likely need to be using Debian's
Testing distribution, which is 'Sarge' as of this writing, for this to work.
deb http://people.debian.org/~daenzer/dri-mach64/ ./
The package you want to install is xserver-xfree86-dri-mach64 which
will pull down xlibmesa3-dri-mach64 as a dependancy. You will see
a few warnings, but do not worry about those. Things are being installed
correctly.
You're half way there. Now you need to install the kernel module source
package. Your running kernel and the headers in /usr/src/linux
must match. If your kernel is in another directory, you will need to
symlink it to that location. (Alternately, you can specify a command line
like make TREE=/usr/src/linux-2.4.18 -f Makefile.linux and that will
ensure that your running kernel's include/ directory is found.)
rachael:/# cd /usr/src
rachael:/usr/src# apt-get install drm-mach64-module-src
...
rachael:/usr/src# tar -zxvf drm-mach64.tar.gz
modules/drm-mach64/
modules/drm-mach64/Config.in
modules/drm-mach64/debian/
modules/drm-mach64/debian/buildpkg
...
modules/drm-mach64/mach64.h
modules/drm-mach64/mach64_dma.c
modules/drm-mach64/mach64_drm.h
modules/drm-mach64/mach64_drv.c
modules/drm-mach64/mach64_drv.h
modules/drm-mach64/mach64_state.c
...
rachael:/usr/src#
rachael:/usr/src# cd modules/drm-mach64
rachael:/usr/src/modules/drm-mach64# make -f Makefile.linux
=== KERNEL HEADERS IN /lib/modules/2.4.18/build/include
=== SMP=0 MODULES=1 MODVERSIONS=1 AGP=1
=== Compiling for machine i686
=== WARNING
=== WARNING Use 2.4.x kernels ONLY !
=== WARNING
cc -O2 -c gamma_drv.c -o gamma_drv.o
...
rachael:/usr/src/modules/drm-mach64#
After a much more impressive looking compile phase than what I have above,
your new mach64.o kernel module will be ready.
After that, you'll need to copy it into your
kernel modules directory (and optionally clean the build).
rachael:/usr/src/modules/drm-mach64# mkdir -p \
/lib/modules/`uname -r`/kernel/drivers/char/drm
rachael:/usr/src/modules/drm-mach64# cp mach64.o \
/lib/modules/`uname -r`/kernel/drivers/char/drm
rachael:/usr/src/modules/drm-mach64# make -f Makefile.linux \
clean
rm -f *.o *.a *~ core
rachael:/usr/src/modules/drm-mach64#
Regardless of which method you select, your final step will be to
run startx as your user to verify X is working.
You ough to see something like this in your XFree86.0.log:
(II) Primary Device is: PCI 01:00:0
(II) ATI: Candidate "Device" section "Generic Video Card".
(II) ATI: Shared PCI/AGP Mach64 in slot 1:0:0 detected.
...
(II) ATI(0): [drm] installed DRM signal handler
(II) ATI(0): [DRI] installation complete
(II) ATI(0): [drm] Added 128 16384 byte DMA buffers
(II) ATI(0): [drm] Mapped 128 DMA buffers at 0x41301000
(II) ATI(0): Direct rendering enabled
Once you're up, you can experiment with the DMAMode option for the
ati driver, though you need not do this under normal circumstances.
The possible options are "async", "sync", and "mmio"
in order from best to worst performance. You can play with these
DMA modes in your XF86Config-4 file as shown below:
Section "Device"
Identifier "Generic Video Card"
Driver "ati"
Option "DMAMode" "async"
EndSection
The output you receive from the kernel DRM will appear much like this:
[drm] Setting 32-bit pci dma mask
[drm] Allocating dma descriptor ring
[drm] descriptor ring: cpu addr 0xc7ef8000,
bus addr: 0x07ef8000
[drm] Starting DMA test...
[drm] starting DMA transfer...
[drm] waiting for idle...
[drm] waiting for idle...done
[drm] DMA test succeeded,
using asynchronous DMA mode
Your best bet, and the default if you do not specify a DMAMode,
should be asynchronous DMA mode.
Congratulations! X is now using your Mach64 based Rage Mobility to
its fullest extent.
(If you're curious, and I know you are, here is my glxgears
scorecard without and with DRI. The scores without DRI are actually worse
because attempting to drag the glxgears window around results in a
lagged window following your mouse several seconds after you've moved it.)
jasonb@rachael:~$ glxgears
511 frames in 5.0 seconds = 102.200 FPS
500 frames in 5.0 seconds = 100.000 FPS
400 frames in 5.0 seconds = 80.000 FPS
500 frames in 5.0 seconds = 100.000 FPS
jasonb@rachael:~$ glxgears
1054 frames in 5.0 seconds = 210.800 FPS
1018 frames in 5.0 seconds = 203.600 FPS
1065 frames in 5.0 seconds = 213.000 FPS
1065 frames in 5.0 seconds = 213.000 FPS
1064 frames in 5.0 seconds = 212.800 FPS
ESS Maestro 3i
The Maestro 3i chipset is supported under Linux since early 2.4. When you compile,
you will want to select the option ESS Maestro3/Allegro (CONFIG_SOUND_MAESTRO3),
not Maestro/Maestr2. The driver is experimental, so you will need to toggle
prompting for development drivers on, as this driver is considered experimental.
I compiled support as a module, so it was necessary for me to add an entry for
maestro3 to my /etc/modules file. Alternately you can install
the discover package under Debian and on start up it will automagically
probe your hardware and load modules as needed. Either method works.
Upon loading, you will see output like the following in your logs:
maestro3: version 1.22 built at 20:54:30 Dec 28 2002
PCI: Found IRQ 5 for device 00:08.0
PCI: Sharing IRQ 5 with 00:08.1
maestro3: Configuring ESS Maestro3(i) found at IO 0xD800 IRQ 5
maestro3: subvendor id: 0x00bb1028
ac97_codec: AC97 Audio codec, id: 0x8384:0x7609 (SigmaTel STAC9721/23)
The careful reader will notice IRQ 5 is being shared with another device.
That's the ActionTek 56K modem which is not yet supported under Linux.
And that's all there is to sound support, enjoy!
ALPS Glidepad/Stickpointer
You will want to include PS/2 mouse support (CONFIG_PSMOUSE)
in your kernel to use the ALPS device. Thereafter you will be
able to use the glidepad and the stickpointer in X or from the
console.
You can install
tpconfig
to configure the device, though by
default it works fine. If you're running Debian, the package
name is the same and you can install tpconfig via the usual
method.
The only thing you can currently do with an ALPS touchpad is
to completely disable tapping mode, meaning you cannot tap
the pad to simulate a left mouse click. This may be desirable
if you never use the feature, but sometimes trigger it
accidently.
You can accomplish this by running tpconfig as root as shown below:
rachael:/home/jasonb# tpconfig --tapmode=0
...
Found ALPS Dual StickPoint/Glidepad.
ALPS Tap is OFF
You cannot do this from within the X Window System and the GPM
Mouse Manager must not be running. This command is best run
from a startup script before you load GPM.
USB Support
USB is fully supported. You will want to use the UHCI USB controller option
for proper support. (CONFIG_USB_UHCI_ALT) Upon bootup you should see
something like this in your kernel log:
rachael kernel: uhci.c: USB Universal Host Controller
Interface driver v1.1
rachael kernel: uhci.c: USB UHCI at I/O 0xdce0, IRQ 11
rachael kernel: usb.c: new USB bus registered, assigned
bus number 1
rachael kernel: hub.c: USB hub found
rachael kernel: hub.c: 2 ports detected
As to devices, I am using a Microsoft IntelliEye Mouse. The easiest way to
set it up for usage under X along with the ALPS touch device is to read the
USB device
configuration guide.
My own XF86Config-4 sections for pointing devices looks like this:
# Entry to support USB mouse
# You need input.o, mousedev.o, and hid.o from 2.4.x series
# for this to work properly.
Section "InputDevice"
Identifier "Secondary Mouse"
Driver "mouse"
Option "SendCoreEvents"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/psaux"
Option "Protocol" "PS/2"
Option "Emulate3Buttons" "true"
Option "ZAxisMapping" "4 5"
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Secondary Mouse"
EndSection
PCMCIA Support
I am using the Linux kernel PCMCIA card services. It seems to work fine.
You will need to have the
pcmcia-cs package
installed to get very far.
It provides the binaries necessary to do interesting things with your cards.
You'll want to enable the PCMCIA option (CONFIG_PCMCIA) during kernel configuration.
(You can ignore the CardBus option, as the Inspiron 3800 does not support CardBus.)
When PCMCIA support initializes, it should look something like the following:
rachael kernel: Linux Kernel Card Services 3.1.22
rachael kernel: options: [pci] [cardbus] [pm]
rachael kernel: PCI: Found IRQ 11 for device 00:03.0
rachael kernel: PCI: Sharing IRQ 11 with 00:03.1
rachael kernel: PCI: Sharing IRQ 11 with 00:07.2
rachael kernel: PCI: Found IRQ 11 for device 00:03.1
rachael kernel: PCI: Sharing IRQ 11 with 00:03.0
rachael kernel: PCI: Sharing IRQ 11 with 00:07.2
rachael kernel: Yenta IRQ list 0698, PCI irq11
rachael kernel: Socket status: 30000010
rachael kernel: Yenta IRQ list 0698, PCI irq11
rachael kernel: Socket status: 30000006
rachael cardmgr[246]: starting, version is 3.1.33
rachael cardmgr[246]: watching 2 sockets
rachael cardmgr[246]: Card Services release does not match
rachael kernel: cs: IO port probe 0x0c00-0x0cff: clean.
rachael kernel: cs: IO port probe 0x0800-0x08ff: clean.
rachael kernel: cs: IO port probe 0x0100-0x04ff:
excluding 0x270-0x277 0x4d0-0x4d7
rachael kernel: cs: IO port probe 0x0a00-0x0aff: clean.
If you've never used PCMCIA under Linux before, it's actually fairly easy.
You can generally insert and eject cards physically as often as you'd like.
The cardctl command allows you to do software inserts and ejects of
the card of your choice or all cards. For example:
rachael:/home/jasonb# cardctl status
Socket 0:
5V 16-bit PC Card
function 0: [ready]
Socket 1:
no card
I have a small pile of PCMCIA cards, but the only ones I currently use
on this laptop are the Xircom 100Mbps (half duplex) ethernet adapter
and a Linksys WPC11v3 802.11b WiFi card. For an extensive discussion
on configuring Prism2 chipset based WiFi cards, like my Linksys card,
you can read my
second Linux wireless article or
my HostAP configuration guide.
As to the Xircom PCMCIA card, it uses the xirc2ps_cs.o module
which you can obtain by enabling the CONFIG_PCMCIA_XIRC2PS option
during kernel configuration.
The only quirk I have encountered using PCMCIA under Linux 2.4 (2.4.18
specifically thus far) is inserted cards are not recognized when
the machine is first powered on. It's necessary to reinsert them
manually (or via cardctl eject && cardclt insert) for them
to be recognized and initialized. Otherwise, they are detected as
anonymous flash memory cards.
Infrared (IR) Port
I used an IR port for networking for the first time only a few months ago
(yeah, at a Slashdot Meetup). It was quite cool, and I cover this mostly
for the coolness factor.
The 3800 does have an IR port and you can enable it in the BIOS (Fn-F1).
You will need to compile your kernel with quite a few options for this
to work. I recommend:
CONFIG_IRDA=m
CONFIG_IRLAN=m
CONFIG_IRNET=m
CONFIG_IRCOMM=m
CONFIG_IRDA_CACHE_LAST_LSAP=y
CONFIG_IRDA_FAST_RR=y
CONFIG_IRDA_DEBUG=y
CONFIG_IRTTY_SIR=m
CONFIG_IRPORT_SIR=m
To speak to the IR port, you will want to download and compile the
irDA Utils. If you are using
Debian, the irda-tools and irda-common packages will
suffice. (There's no depends on irda-common, so you need to specify both
explicitly.)
To verify your IR port is being detected, run findchip:
rachael:/usr/src/linux# findchip -v
Found SMC FDC37N958FR Controller at 0x3f0,
DevID=0x01, Rev. 1
SIR Base 0x3f8, FIR Base 0x270
IRQ = 4, DMA = 3
Enabled: yes, Suspended: no
UART compatible: yes
Half duplex delay = 3 us
After that, you need another properly configured device to connect to,
such as another laptop. For complete configuration of irDA and irNET,
I refer you to Jean Tourrilhes'
irDA quick tutorial.
Inspiron 3800 BIOS interaction
Much to my surprise, there is a kernel module that allows you to interact with
the Inspiron's BIOS. You can toggle the exhaust fan mode between off, low, and
high states. You can also, it naturally follows, monitor the current CPU
temperature. Both these feats can be accomplished using Massimo Dal Zotto's
i8kutils package. Additionally, you can remap the volume keys such that
a sound mixer (or any other program) can be run, allowing you to increase, decrease,
and (un)mute sound. Nifty indeed.
You can either fetch i8kutils from Zotto's
directory or install the Debian
package by the same name using the usual procedure. As of this writing, the
most recent version of the package is available on Debian mirrors, but not
in Zotto's directory.
Dell laptop support (CONFIG_I8K) must be compiled either into your kernel
or as a module. If you compiled it as a module, make sure you have i8k
in your /etc/modules file so it's loaded on startup.
With that out of the way, you can use i8kctl to manipulate the speed of
your fan to your liking. It accepts fan speeds for both left and right fans,
but the Inspiron 3800 only has a right fan, so you will want to substitute the
dash (-) character for the left fan speed. For example:
rachael:/usr/src/linux# i8kctl fan - 1
-1 1
The above command will set the speed of the right fan to low and ignore the left
fan entirely. Running the command without any arguments at all will return
in a nicely formatted fashion the contents of the /proc/i8k entry.
If you would like to take a more hands off approach, you can use i8kmon
in daemon mode and specify in its configuration file at what temperature values
you wish it to change the fan speed. The i8kutils package comes with
an example configuration file which you can use. If you are using Debian,
placing it in your /etc directory as /etc/i8kmon with the daemon
option enabled will allow the daemon to run at startup.
As to the Inspiron sound keys (Fn-PgUp, Fn-PgDn, Fn-End), you can use the
i8kbuttons program to detect each keyboard event and run the
application of your choice. A sample configuration file for this also
comes with i8kutils. Again, placing this configuration file in
your /etc directory as /etc/i8kbuttons on Debian will allow
the daemon to run on startup. My configuration uses the aumix
package available in Debian by the same name. The file has these entries:
# Change these sample commands with your mixer commands!!!
I8KBUTTONS_UP_CMD="aumix -v +10"
I8KBUTTONS_DOWN_CMD="aumix -v -10"
I8KBUTTONS_MUTE_CMD="aumix -v 0"
i8kutils comes with a detailed README that explains other methods
of mapping your Inspiron volume keys such that they're available under
the X-Window System to do with as you please. You can map them to the
media player of your choice or to entirely different applications.
Advanced Power Management (APM Support)
The Inspiron works happily with Linux's APM support. (CONFIG_APM)
You can view the status of your battery(ies) via the usual Fn-F3, even
under X. You can also suspend to RAM using Fn-Esc. This also works under
X. The very top of the LCD display will be messed up when you resume
under X, but switching virtual desktops and back resolves it.
The Linux APM tools will be necessary for some APM options to exist.
You can obtain APM from here
or install the package by the same name via the usual method in Debian.
Suspend to disk (Fn-A) is said to work, but as I noted at the beginning
of the article, I have not setup the necessary hidden partition on my
disk and thus I cannot verify this. Setup is explained in detail in
several of the links in the resource section at the end of this tutorial.
When the system is suspended to RAM, PCMCIA cards cease to fuction.
You will need to reinsert them either manually or via cardctl
after your machine is awoken. I imagine this is true if you suspend
to disk as well, but I cannot verify it.
If you wish for your machine to remain on when you close the lid for
transport, as I do, you can set the status of the Display Close
BIOS option to Active and your machine will no longer suspend
when the lid is closed. This makes me happy. One word of warning, however:
If you allow your laptop to power down when you close the lid and you are
currently in X, when the machine resumes X will not come back to life. It
will be black and you'll have to switch to a virtual console and kill it.
Ultra DMA mode 2 IDE controller
Last, but not least, you can improve your disk performance with the hdparm utility.
I use the following with good success on my 3800:
rachael:~# hdparm -u 1 -d 1 -c 1 -X 66
That'll enable DMA (which is likely done for you by default by the kernel driver in 2.4.x),
enable IRQ unmasking, and enables 32-bit transfers across the PCI bus. The final option
enables Ultra DMA mode 2, often referred to as ATA33. The kernel driver will likely kick
that on for you as well at start up. The other options, if you like them, will need to
be run at start up from an init.d script. (The 66 number is, from the man page, the desired
Ultra DMA mode number plus the number 64. So if the 3800 supported UDMA mode 4, you could
specify -X 68, but I digress.)
You'll want to test these settings in single user mode, first, to verify everything is okay.
Links and Useful Resources
-
Mach64 DRI CVS branch compiling
mini-HOWTO
-
Mach64 DRI and XVideo support
patch and information
-
Mach64 DRI CVS guide
with autocompile script
-
Suspend to disk notes
that will save your bacon
-
Suspend to disk while dual booting
discussed in great detail
-
Tutorial
explaining setup
for irNET for irDA on Linux
-
Discussion
of Gentoo Linux and Debian GNU/Linux on an Inspiron 8000/8100, including
information about i8kutils
-
A power management
tutorial for Linux's APM and ACPI interfaces
-
A linux kernel patch that allows experimental
suspend to disk
functionality without the need for a special partition
-
Another
tutorial
on setting up Linux, Slackware 8.0, on an Inspiron 3800. Includes WiFi and LS-120.
-
An entire page linking to
Dell Inspiron Linux tutorials for various models.
Copyright and Revision Information
12-25-02 - Initial Draft
12-28-02 - Added basic USB configuration stuff
12-29-02 - Added Mach64 stuff
12-30-02 - Finished discussion of brute force and Debian X configurations
12-31-02 - Added MTRR and AGPART note; PCMCIA configuration; ALPS stuff
01-12-03 - Added kernel module quick list; Added ESS Maestro 3i section
01-13-03 - Completed BIOS interaction section and a portion of the APM section
01-19-03 - Finished the APM section
03-05-03 - Added section on Ultra DMA mode 2, for completeness
This document is copyright (c) Jason Boxman, 2002-2003. All rights reserved.