Linux on the Dell Inspiron 8500 (I8500)The following information assumes knowledge of how to patch, configure, compile and boot a new Linux kernel. See the Linux Kernel HOWTO for help. You may find precompiled kernels/modules here in the future but for now it's just patches and advice.
Disk - IDE/(U)DMA
needs kernel patch (or 2.4.21-rc1/RH 2.4.20-13) for DMA
Keyboard - special keys
volume/CD buttons. Fn-F<1,3,8> problems
29/5/03 needs kernel patches
explicit modeline needed for 1680x1050
performance problems with ATAPI bridge
driver not in RedHat kernel. v2.0.0
new driver may fix 'DELAYED' error USB
USB 2.0 works fine
IR aim is a bit on the low side
Truemobile 1300 reported working
custom kernel breaks RH9 init script
[ Working/tested] [ Partly working] [ Untested] [ Not working] [ No information]
General updates05-04-04 - I still haven't got suspend/resume working, even using swsusp...
03-12-03 - Rafael Fernandez has told me that Fedora core 1 fully supports ACPI suspend/resume
03-06-03 - The IDE patches are integrated into the RedHat 2.4.20-13.9 kernel update
Quickstart(my megapatch is now a little out-of-date - you may want to use kernel 2.4.20-13.9 + ACPI or check for patches against Linus/Alan Cox kernels available on Shawn or Mike's pages, details in the updates below)
I8500 kernel mega-patch 030424 against RH9 2.4.20-9 containing all kernel patches listed on this page. NB. This patch contains a hacked ACPI DSDT. It works for me. If you own anything other than an I8500 with A01 BIOS, I strongly recommend you use an earlier mega-patch or selectively apply individual patches. My current kernel config. As with everything on this page - use at your own risk.
Patches and files
- obtain clean RedHat 2.4.20-9 kernel sources and cd to /usr/src/linux-2.4
- zcat <mega-patch> | patch -p1 or cat <patch1> <patch2> <...> | patch -p1
- optional - make clean or make mrproper (mrproper will remove .config)
- copy <config file> to .config
- make oldconfig
- make dep
- make modules
- make modules_install
- make install
IntroductionThis guide (currently work-in-progress) might help you to get the most out of your Inspiron 8500. Mine arrived with XP installed which was for the most part, useless to me. I installed RedHat 9.0 but most of this is distro-independent.
The I8500 is a fairly big machine due to it's wide aspect-ratio screen, but it's relatively light, looks good and comes packed with technology. Mine has these configurable components:
These are the main on-board components:
- 2.0GHz P4-M, 512Mb RAM
- 30Gb Hitachi ATA100 udma5 disk
- 1920x1200 WUXGA active-TFT panel
- 64Mb Nvidia Geforce4 4200 Go graphics
- DVD-ROM drive
- PCMCIA slot (1x)
- mini-pci slot (1x)
- ieee1394a (firewire) port (1x)
- USB 2.0 ports (2x)
- serial, parallel, vga connectors
- 10/100 ethernet
- AC'97 soundcard
- TV/video/SPDIF out
- mic in, stereo headphones out
Preparing for installationAs I was doing all of this from scratch (no linux-on-laptops I8500 page; web searches for Inspiron 8500+Linux yielded nothing), I decided to keep XP available in it's pre-installed guise. This helped by allowing me to do comparisons and also gave me some hardware info that was otherwise unavailable.
I used PartitionMagic 7.0 to clear some space on the disk. 6Gb for XP, 22Gb for Linux. There is also a small 39Mb Dell partition on hda1 that contains diagnostics. It's a bootable mini-win98 system on vfat filesystem - you can boot it (via grub) or mount it up if you like.
The modular-bay floppy drive was optional. I didn't buy it and needed a bootable distro on CD. RedHat 9 came out at the end of March 2003 and I thought it had the best chance of working on this new hardware...
Installing RedHat 9.0 (RH9)The first thing you notice is the ieee1394 driver being loaded. Then it boots anaconda and you're in X. The graphical install works fine. Don't panic if you see horrible lines across the screen for a few seconds, it takes a little while for the vesa graphics driver to kick in and initialise properly.
I did a custom install and used LVM container for all but the root filesystem - grub can't boot an LVM volume. I used LVM to give me the freedom to add/remove and change partition sizes at a later date and to re-incorporate the XP partition when I'm done with it. I used ext3 for all mountable filesystems.
Within Volume00, I created 384Mb /var, 500Mb /tmp, 4Gb /usr and 16Gb /home. You will almost definitely want something simpler and may want to forget about LVM and get the installer to auto-partition for you.
- /dev/hda3 - 256Mb /
- /dev/hda4 (extended partition)
- /dev/hda5 - 512Mb swap
- /dev/hda6 - 21807Mb LVM
Once the install gets going, the first thing you notice is how slow it is. A fairly basic set of packages took 49 mins to install! Here's why...
IDE interface: PCI device 8086:24ca (Intel Corp.) (rev 3)The RH9 out-of-the-box kernel (2.4.20-8) does not recognise the IDE chipset and this means that although your disk will work, it won't use (U)DMA. Without DMA, you get somewhere between 2 and 5Mb/s depending on hdparm options! Arggh. This is painful.
I dived into the kernel sources, started looking on Intel's website and searching around for info on this chipset. As packaged, kernel 2.4.20-8 supports:
I took a guess that the I8500 used an ICH4M (82801DB). However, the specs suggested an i845MP chipset that has an ICH3M. Anyhow, I hacked a few files to incorporate it. The ICH3/3M/4/5 all use the same settings so I replicated them for the ICH4M. Here's the patch. You'll need to install the kernel sources RPM, apply the patch, configure as appropriate and rebuild the kernel and modules.
- 8086:248a - ICH3M
- 8086:248b - ICH3
- 8086:24cb - ICH4
Update 11/04/03 - kernel 2.5.67 has a similar patch already applied
Update 02/05/03 - kernel 2.4.21-rc1 has a similar patch already applied
Update 03/06/03 - RedHat kernel 2.4.20-13.x is pre-patched
Once you've booted the custom kernel, you can expect to see a respectable 28Mb/s (hdparm -t /dev/hda).
Audio - Sigmatel 9750Bugs:
If you run the RH9 soundcard detection program, the sound system is recognised as:
- Chip supports stereo line-in but no stereo input jack on I8500
- Incorrect clocking [kernel driver]
- Occasional loss of sound [kernel + ALSA drivers]. Fix by mute/un-mute or level change of various mixer channels
Intel 810 + AC97 Audio, version 0.24, 20:53:19 Apr 8 2003and appears to work fine.
i810: Intel ICH4 found at IO 0xbc40 and 0xb800, MEM 0xf4fff800 and 0xf4fff400, IRQ 11
i810: Intel ICH4 mmio at 0xd1b01800 and 0xd1b42400
i810_audio: Primary codec has ID 0
i810_audio: Audio Controller supports 6 channels.
i810_audio: Defaulting to base 2 channel mode.
i810_audio: Resetting connection 0
i810_audio: Connection 0 with codec id 0
ac97_codec: AC97 Audio codec, id: 0x8384:0x7650 (Unknown)
i810_audio: AC'97 codec 0 supports AMAP, total channels = 2
i810_audio: setting clocking to 80222
Update: 24-4-03 - Actually, it doesn't work fine. It may be related to using the winmodem driver and/or nvidia driver but the clocking needs to be forced to 48KHz. Sometimes the driver picks 48KHz, sometimes it picks something odd like 80KHz (as above). To fix this, either add the following line to /etc/modules.conf:
options i810_audio clocking=48000
...or use ALSA. This is the approach I now take as the ALSA driver supports many more of the chip's capabilities and the setting of /dev/dsp mode to something sensible like 44.1KHz which is supported by all sound programs. To support the fixed 48KHz mode provided by the kernel i810_audio driver, sound programs need to support output format conversion. Although xmms does, many browser plugins and other sound programs don't. Read comments at the top of i810_audio.c file for more info.
ALSAGo find the latest ALSA RPMs at rpmfind. You need alsa-driver, alsa-utils and alsa-lib. I pulled the i386 RPMs for the libs and utils and the src RPM for the driver.
To build and install the ALSA driver, you need to do something like this as root: (version numbers may differ)
# ln -s linux-2.4 /usr/src/`uname -r`
# rpmbuild --rebuild --nodeps --define "cards intel8x0" alsa-driver-0.9.2-fr2.src.rpm
# rpm -Uv /usr/src/redhat/RPMS/i386/alsa-kernel-0.9.2-fr2.i386.rpm
# rpm -Uv /usr/src/redhat/RPMS/i386/alsa-driver-0.9.2-fr2.i386.rpm
and then install alsa-lib and alsa-utils. Finally, you need to add the following lines to /etc/modules.conf:
# ALSA portion
alias char-major-116 snd
alias snd-card-0 snd-intel8x0
# module options should go here
# OSS/Free portion
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
# card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
You can then unload the intel_i810 and ac97_codec modules and modprobe snd-card-0 (or reboot). Use alsamixer to un-mute the various output/mixer channels and set levels as appropriate.
Keyboard - special keys
Volume and CD/audio player control buttonsThe volume buttons completely fail to work. They also didn't work during the XP configuration stage. Looking at the i8k stuff, they appear to produce X scancodes rather than directly affecting control of the hardware. This needs more investigation.
Update: 28-04-03 - I've had some recommendations for how to get the buttons working:
I've tried lineakd and it worked ok as a userland/X solution. I wrote a new keyboard definition for the I8500 (the I8xxx definition didn't fit) and I hacked the internal volume-changing code to adjust the PCM channel rather than the master volume channel as the later had no effect on the headphone/line output.
- Lars Marius Garshol uses an xmodmap method as described on his I8500 page
- Walter Horsten recommended lineakd
- Roel Gloudemans recommended FunKeys using Greg Wards daemon
Fn-function keysI've had a report that the megapatch (probably the ACPI components) causes Fn-F1 (enter setup) and Fn-F3 (battery-status) to stop working. It may also stop Fn-F8 (LCD/CRT) from working.
ACPIThe I8500 does not support apm. It only supports the newer standard of ACPI.
This is important not only for suspend+resume but also for thermal management and battery cycle. With the default kernel, the cpu fan was on fast at all times. Even with the system doing no work, the laptop was really quite hot. ACPI support is needed to handle processor sleep at idle and generally cool things down and reduce power consumption.
The acpi support within 2.4.20-8/9 is turned off by default but doesn't appear to work even if you turn it on. I grabed the acpi patch against 2.4.21-pre6 from here and folded it into the RH9 kernel sources. It went in cleanly apart from two cosmetic changes that needed manual fixing. I configured in full acpi support. Kernel compilation failed. One of the new acpi files was using LDT and TR assembler #defines that didn't exist. I fixed this by looking at the 2.5.x patch and back-porting the change. At least one module failed to build with the newer acpi API and another got upset with the lack of apm. I removed them (they were obscure device drivers for kit I didn't have) and finally I had a working compile.
With (new) ACPI support enabled, I now see this at boot and although the fan is still on most of the time, it's much quieter and shuts off completely from time to time, particularly when on battery.
Here's the ACPI patch that I used against 2.4.20-9, cleaned up to include the manual fixups that were necessary to get it to compile. A lot of it doesn't work, including the battery status but it does kick the CPU into C2 state when idling.
More on this later...
- patch RH9 kernel sources with latest acpi patch + manual fixes
- configure in all ACPI functionality, remove APM
- remove failing device driver modules from build or ignore them if possible
Update: 24-04-03 - the saga continues.
DSDT - Differentiated System Description TablesAfter reading up on DSDTs and taking a look at the hacked ones here, I downloaded Intel's iasl tool (iasl-linux-20030228.tar.gz) which is necessary to dump and recompile the I8500 DSDT. There is a HOWTO but it's a little out-of-date so I'll list the steps here:
For step 3, I looked at a hacked I8200-A07 DSDT (patch originally ported from a Latitude C640) and patched up the I8500-A01 DSDT in a similar way. The result is this DSDT.
- cat /proc/acpi/dsdt > dsdt.dat
- iasl -d dsdt.dat
- <fix dsdt.dsl> - ASL file, disassembled DSDT
- iasl -tc dsdt.dsl
- cp dsdt.hex /usr/src/linux-2.4/drivers/acpi/tables/acpi_dsdt.c
- cat Custom-DSDT.diff | cd /usr/src/linux-2.4 && patch -p1
- rebuild kernel (make install) + reboot
Running with this hacked DSDT makes all of the previously unavailable /proc/acpi data available including battery, thermal_zone and processor info, eg:
[root@localhost root]# cat /proc/acpi/battery/BAT0/info
design capacity: 72000 mWh
last full capacity: 73500 mWh
battery technology: rechargeable
design voltage: 11100 mV
design capacity warning: 3000 mWh
design capacity low: 1000 mWh
capacity granularity 1: 200 mWh
capacity granularity 2: 200 mWh
model number: DELL 0002P6
*P0: 2000 MHz, 20000 mW, 250 uS
P1: 2000 MHz, 20000 mW, 250 uS
serial number: abcd
battery type: LION
OEM info: Sanyo
[root@localhost root]# cat /proc/acpi/processor/CPU0/performance
*P0: 2000 MHz, 20000 mW, 250 uS
P1: 2000 MHz, 20000 mW, 250 uS
state count: 6
active state: P0
*P0: 2000 MHz, 20000 mW, 250 uS
P1: 2000 MHz, 20000 mW, 250 uS
P2: 2000 MHz, 20000 mW, 250 uS
P3: 2000 MHz, 20000 mW, 250 uS
P4: 2000 MHz, 20000 mW, 250 uS
P5: 1200 MHz, 15000 mW, 250 uS
[root@localhost root]# cat /proc/acpi/thermal_zone/THM/temperature
temperature: 45 C
None of this works with the default A01 BIOS DSDT on the I8500. Having said that I still don't have ACPI sleep states working so suspend+resume continues to elude me. If you have any luck with this, please contact me.
Update 06-05-03 - There is still a problem with the battery info. Although it appears to work, it's practically unusable as polling the information causes the machine to momentarily stall. Each time the info is obtained, the machine stalls for longer. After a few minutes running a battery status applet, the applet takes 40% CPU and interactive response becomes very poor. Stopping the applet cures the stalling. I recall reading about a similar issue (I2600) on the ACPI list, so it may be a generic Dell problem.
Update 29-05-03 - Mike Hardy has fixed the battery status applet to make it usable on his Latitude D800 - very similar to the I8500. Read about and obtain his version here. It works great for me! He also has more info on the latest fun+games that people are having with ACPI.
Suspend+ResumePartly working. Please report any success, with ACPI or swsusp.
Update 29-05-03 - Shawn McCarthy has put a lot of work into getting suspend working with the latest 2.4 series kernels. ACPI seems to be better recognised (although still not allowing suspend) but swsusp seems to be working for I8500+ATI graphics. I didn't get it to work with the nvidia yet, but I've not had much time to play. Shawn's work can be found (via a cable modem) here. The patches are against 2.4.21-rc kernels.
Update 3-12-03 - Rafael Fernandez has reported that Fedore core 1 supports hardware suspend/resume if you use the acpi event scripts found on Diego Santa Cruz page and append acpi=on to the kernel command line. Rafael is running 2.4.22-1.2115.nptl kernel. His system has nvidia graphics hardware and i8500 BIOS rev 5.
CPU frequency and voltage scalingThere are two types of cpufreq feature available on the I8500:
The p4-clockmod module works out-of-the-box with an RH9 kernel. It allows control of the P4 clock from 12% to 100% of the current default frequency (1.2GHz on battery, 2GHz on AC) and understands performance and powersave policies.
- P4 CPU Clock Modulation
- Intel SpeedStep
The speedstep module doesn't load out-of-the-box due to the ICH3M/ICH4M issues described for the EIDE driver above. I created this patch to get it to recognise the I8500 ICH south-bridge. Once patched and rebuilt, the kernel module loads and allows control within 60%-100% of full speed (2GHz). In particular, it can be used to force the CPU into full-speed mode while on battery which p4-clockmod can't do.
NB. They both appear to use the same cpufreq API and only one module can be loaded at any time. Documentation is available in /usr/src/linux-2.4/Documentation/cpufreq
I use cpudyn to automatically control CPU power. It uses cpufreq (or ACPI directly) and can also be used to spin down disks to save power.
i8k - Inspiron 8k SMM BIOS driverInformation can be found here.The i8k driver is included in the default RH9 kernel but has to be force loaded on the I8500 (modprobe i8k force=1). It provides BIOS, CPU temperature, fan and button status under /proc/i8k. The i8k utilities package v1.17 allows manual/programmed control of fans and volume control button status.
NB. Right/left fan control is reversed on the I8500.
X @ 1920x1200 - AGP4x: Nvidia Geforce4 4200 GoThis works fine with the open-source nv driver from XFree86-4.3.0 that comes with RH9 or with the binary nvidia driver directly from Nvidia. Tested with nvidia release 1.0-4349. If you want accelerated 3D, you'll probably want the binary driver.
Update: 28-04-03 - new Nvidia driver 1.0-4363, no noticable changes.
Here's my XFree86Config file.
Update: 06-05-03 - 1680x1050 screens need an explicit modeline - recommended by Tarjei Huse. Mark Vojkovich (of XFree86.org) suggested using this modeline in the monitor section:
Modeline "1680x1050" 147.14 1680 1784 1968 2256 1050 1051 1054 1087and this in the screen section of XF86Config:
Firewire - TI PCI4510ohci1394: $Rev: 693 $ Ben Collins <firstname.lastname@example.org>Tested with a DV camcorder and kino using the raw1394 driver.
ohci1394_0: OHCI-1394 1.1 (PCI): IRQ= MMIO=[faffd800-faffdfff] Max Packet=
ieee1394: SelfID completion called outside of bus reset!
ieee1394: Host added: Node[00:1023] GUID[434fc0002bd85410] [Linux OHCI-1394]
Used daily with an external drive enclosure (ieee1394-ATAPI bridge) containing a 60Gb IDE drive. Also used with an iPod. Can't get the external drive and iPod working at the same time though...
Update: 3-12-03 - Although I have this working, I've had a lot of performance problems with the ATAPI bridge. I can only get around 9Mb/s throughput under linux whereas under XP, I see 20Mb/s+ depending on the head-rate of the disk in use.
Ethernet - Broadcom 4401 (4401:1028)No support in RedHat kernel. Broadcom-supplied drivers available v1.0.1 and v1.0.2. The bcm4400 v1.0.2 driver compiles against 2.4.20-9, loads and works fine. Tested at 100Mbit full-duplex.
Kernel 2.5.67 has a b44 driver written by David S. Miller. This can be coaxed into compiling and loading cleanly against a 2.4.20 kernel but the driver always reports that the link is down.
Update: 24-04-03 - v2.0.0 The driver is said to be beta. I've been using is on a saturated 100Mbit FD link for several days with no problems.
Modem - PCTEL 2304WTInfo/driver available here. FAQ available here.
I used pctel-0.9.6 configured with ./configure --with-hal=i8xx
The modules would not load using default settings but forcing iobase, iobase1 and irq worked. I used this in /etc/modules.conf:
# pctel modemThis is what I see in /var/log/messages. (the driver says it's 0.9.5 but the packaging is 0.9.6)
alias char-major-62 ptserial
below ptserial pctel
# force install due to gcc2/gcc3 complaints from insmod (as per pctel FAQ)
install pctel insmod -f pctel
# irq/iobase/iobase1 derived from lspci -v
# country code 6 is UK
install ptserial insmod -f ptserial irq=11 iobase=0xb400 iobase1=0xb080 country_code=6
AC97 modem device forced to iobase_0=0xb400, iobase_1=0xb080, irq=11This is tested as working with the following caveats
PCTel driver version 0.9.5 [5.05c-4.27.215 (09-14-2001)] (MR) (2002-01-31) with MANY_PORTS SHARE_IRQ SERIAL_PCI AUDIO_ROUTING[INTEL] enabled.
PCTel driver built on [Linux 2.4.20-9custom3 i686 i686 "2.4.20-9custom3 <132116>"] with gcc-gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5).
ttyS15 at 0xb400 (irq = 11) is a PCTel
PCTel initialization. Country code is 6.
Update: 28-04-03 - An updated driver is available here
- No dialtone or modem sounds can be heard during dialup
- The link stays up but becomes unresponsive after using full-screen (DGA2) VMWare
Update: 06-05-03 - I would often get 'DELAYED' as a responce from the 0.9.6 winmodem driver. This would cause wvdial to give up and fail to dial out. I'm not sure if this only happened after I started using ALSA or if it's always happened. The 0.9.7-6 driver gave a couple of AC'97 modem primary/secondary codec timeout messages before dialing out successfully. I didn't see this message with the older driver and I think it might cure the problem...
USB - 82801DB USB UHCI Controllerehci-hcd 00:1d.7: Intel Corp. 82801DB USB EHCI ControllerWorks fine with USB 1.0 devices (memstick, printer, CD-writer). USB 2.0 untested.
ehci-hcd 00:1d.7: irq 11, pci mem d0861c00
ehci-hcd 00:1d.7: enabled 64bit PCI DMA
ehci-hcd 00:1d.7: USB 2.0 enabled, EHCI 1.00, driver 2003-Jan-22
usb-uhci.c: $Revision: 1.275 $ time 20:54:24 Apr 8 2003
usb-uhci.c: High bandwidth mode enabled
usb-uhci.c: USB UHCI at I/O 0xbf80, IRQ 11
usb-uhci.c: Detected 2 ports
usb-uhci.c: USB UHCI at I/O 0xbf40, IRQ 11
usb-uhci.c: Detected 2 ports
usb-uhci.c: USB UHCI at I/O 0xbf20, IRQ 11
usb-uhci.c: Detected 2 ports
usb-uhci.c: v1.275:USB Universal Host Controller Interface driver
Update: 3-12-03 - USB 2.0 devices (ipod, USB2-ATAPI bridge) work fine. USB2-ATAPI bridge throughput currently limited by usb-storage driver. Apparently, this driver has been reworked in 2.6 to support scatter-gather and includes other performance enhancements.
InfraredDaniel Andersson reported success with his Ericsson T39.
Update: 3-12-03 -Works ok using gnokii with my Nokia but I noticed that the IR aim is a bit low. I need to raise the laptop a little to initialise an IR connect with my phone lying flat. Once the connection initialises, I no-longer need to have the laptop raised.
Update: 28-04-03 - As far as wireless cards are concerned, I've heard that the Dell Truemobile 1150 is supported, the 1500 might be and the 1180/1300/1400 are not. This information from owners of previous Inspiron/Lattitude models.
Update: 3-12-03 -I've heard that several people have had success retrofitting 1150 cards and are using them fine even though the card has two connectors and the antennae flylead(s) only reaches the main connector. Many people reported that commercial support is now available for some of the Dell Truemobile devices, in particular the 1300. Linuxant provide a driver-loader that can utilise Windows XP drivers to support WLAN cards under Linux. James Rosgen-Eaton says that he has had success getting the 1300 to work using the latest CVS pull of ndiswrapper on linux 2.6. The sourceforge page lists support for 1180 and 1300 on 2.4/2.6 via NDIS-compliant Windows drivers.
PCMCIADefault kernel yenta-socket works fine, however there is a bug in the /etc/init.d/pcmcia startup script that comes with kernel-pcmcia-cs-3.1.31-13 on RedHat 9. If you roll your own kernel, you'll need to patch the startup script.
April 2004 - Graeme Wilford <G.Wilford _at_ surrey _dot_ ac _dot_ uk>