HOME
 
  INFORMATION
   Curriculum vitae (PDF)
   Publication list
 
  RESEARCH & PROJECTS
   Projects
   Publications
   Teaching
 
  RESOURCES
   TeX & LaTeX
   Linux
 
  LINKS
   VisioWave
   ITS
   MultiMedia SPL
   My alumni ITS page
 
  MISC
   Swiss Train Schedules
 
Created by XEmacs
Valid HTML 4.0!

Red Hat Linux 9 on the Dell Inspiron 8500

Note that I have not been able to maintain this page since March 2004, so its content might be outdated.

NOTE: it has been reported to me that most of the material on this page also applies to the newer Inspiron 8600 model (although I don't own that machine). Where possible, I provide some notes specific to the 8600. Also note that the fixed DSDTs for ACPI are specific to the BIOS version and machine, so they will probably not work on the 8600. The fix (i.e. patch), however, might be applicable.

Being a Linux fan I have installed Red Hat Linux 9 on a Dell Inspiron 8500 laptop. Unfortunately, installing Linux on a laptop is still far from straightforward, so I put up the information I have recollected for running Linux on this laptop. During installation I've found the i8500 pages by Graeme Wilford extremely useful.

Note that this page is currently a work in progress and I will regularly update it with more information as I configure my machine. Note also that the RPMs provided on this page, in particular the ACPI enabled kernel, are not specific to this computer model and can prove to be useful for other laptop models.

In the following it is assumed that you are familiar with Linux and that you know how to install and upgrade RPM packages, in particular the kernel (which requires special care). You can find more information on RPM on the Red Hat Linux 9 Customization Guide: part V (Package Management) and chapter 30 (Upgrading the Kernel). Note also that many of the extra RPM packages that I suggest can be installed using apt and synaptic, check the installing additional software section for more info.

Finally a note about kernel module loading. Some features depend on a kernel module driver being manually loaded using the modprobe utility. Loading of these modules at boot time can be automated by adding a line like

modprobe <module name>
to the /etc/rc.local or /etc/rc.modules scripts. The latter does not exist and should be created as an executable bash script. The rc.local script is executed at the end of the boot process, and thus is often inappropriate to load modules that are already required during boot time. The rc.modules script is executed at the beginning of the boot process and is therefore much more appropriate in many cases.

Updates

  • 2004-01-21 Added some info about the docking station and updated XFree86 mode lists, config file and info to accomodate 1920x1200 LCDs.
  • 2003-12-10 Documented the fact that the latest alsa release (1.0-rc1) is buggy (bad sound quality).
  • 2003-12-09 Changed kernel version string from 2.4.22-1.2129.1.fc_dsc to 2.4.22-1.2129.1.nptl_dsc, as some versions of some packages detect kernel features by searching for 'nptl' in the version string. Fixed minor problem in kernel RPM spec file.
  • 2003-12-08 Upgraded to latest Fedora Core 1 kernel. Removed old kernels. Added document pointers. Updated/fixed some remarks.
  • 2003-11-07 Added fixed DSDTs for BIOS version A05 (same as A04) and documented availability of driver for the Wi-Fi card.
  • 2003-09-19 Added fixed DSDTs for BIOS version A04 and documented the fix for incorrect clocking with the stock sound driver.
  • 2003-08-27 Upgraded alsa kernel modules to 0.9.6 on recent kernels.
  • 2003-08-26 Added info on dynamically adjusting CPU performance level using cpudyn and updated acpi event scripts to manage it. See the power management section, in particular frequency scaling.
  • 2003-08-26 Added documentation on using DV camcorder on the Firewire (IEEE-1394) port.
  • 2003-08-26 Fixes to IrDA (infrared) settings to make it actually work, see IrDA section.
  • 2003-07-28 Updated my kernel changes to the latest Red Hat kernel (2.4.20-19.9). Also reworked the handling of special keys for USB keyboards so that they act in a more standard way (now they act like an extended MS Office keyboard).
  • 2003-07-23 Fix typo in script of acpid-events package.
  • 2003-07-17 Use ifplugd to auto start network interface.
  • 2003-07-17 Updated acpid-events to only modify the standby times of harddisk with laptop mode (and not CD-ROMs).
  • 2003-07-16 Added info on apt and synaptic (see installing additional software).
  • 2003-07-03 New kernel RPM that solves stale /proc/ide entries when hotplugging CDROM module.
  • 2003-07-02 New fix for ACPI DSDT (previous was apparently broken) from Adrian Dewhurst, see ACPI section.
  • 2003-07-02 Upgraded to ALSA 0.9.4 from FreshRPMS and the RPM driver packages for my ACPI enabled kernels.
  • 2003-07-02 Updated cdromctl script to solve issue of SCSI emulation initialization when hotplugging the CD burner.

Document pointers

  1. Patched kernel RPMS and extra drivers
  2. ACPI and fixed DSDTs
  3. CPU frequency scaling (SpeedStep)
  4. Laptop optimized disk spindown (laptop mode)
  5. XFree86 and NVidia card
  6. Broadcom 4401 Ethernet card
  7. Audio
  8. Keyboard, multimedia keys
  9. Wireless LAN, Dell Truemobile 1300
  10. Modem
  11. USB Floppy drive
  12. IrDA (infrared port)
  13. Firewire (a.k.a. IEEE-1394)
  14. DVD/CD-ROM hotplugging
  15. Docking station
  16. Extra software

My kernels

In order to get things working on this laptop, as explained in the sections below, I have created a few RPMs of patched kernels and dependent packages that you can download and install. Note that the latest kernels are based on the kernels of Fedora Core 1 (i.e. Red Hat Linux succesor), since they provide almost all the functionality that I need.

The laptop

The laptop is a Dell Inspiron 8500, with the following characteristics:

  • Mobile Intel Pentium 4 2.4 GHz
  • 756 MB RAM DDR SDRAM
  • NVidia GeForce 4200 Go video card with 64MB RAM
  • 1680x1050 LCD (WXSGA+)
  • 60 GB FUJITSU MHT2060AT hard drive
  • Samsung CD-RW/DVD-ROM module
  • Floppy drive module (USB floppy drive NEC UF000x)
  • Integrated Broadcom 4401 Ethernet device (10/100 Mbit/s)
  • Internal Broadcom 4306 MP WLAN 802.11b/g device (Mini-PCI)
  • Internal Bluetooth
  • Integrated Firewire and USB 2 ports
  • 1 PC Card (PCMCIA) port (TI 4510 CardBus controller)
  • Sigmatel 9750 audio chip
  • PCTEL 2304WT soft modem
  • BIOS version A02

Red Hat 9 installation

The laptop comes with Windows XP preinstalled into one partition taking almost all the drive. There is also a little 40 MB partition that contains Dell diagnostics. I used Partition Magic 8.0 to shrink the Windows partition from 60 down to 6 GB. I'm planning on using Windows only sporadically, so I left a relatively small place for it. If you are planning on actively using Windows and installing some software you might want to leave more than 6 GB for it.

Then I proceeded to install Red Hat Linux 9 from DVD. I chose the custom install and I made the following partitioning:

  • /dev/hda1 - 40 MB: Original Dell diagnostics (untouched)
  • /dev/hda2 - 6 GB: Pre-installed Windows XP (shrinked)
  • /dev/hda3 - 400 MB: Linux root partition
  • /dev/hda5 - 990 MB: Linux swap
  • /dev/hda6 - 20 GB: LVM partition 1
  • /dev/hda7 - 20 GB: LVM partition 2
  • /dev/hda8 - 10 GB: LVM partition 3

I'm using Linux's Logical Volume Manager (LVM) for the partitions so that I can easily resize them later. LVM allows to create virtual disks out of several LVM partitions and divide it into Logical Volumes (LV) to install filesystems on them. It is a very flexible system but depending on how you use Linux it might be a bit of overkill. The system (actually the boot loader GRUB) cannot boot off a Logical Volume so the root partition must be a true partition (according to the manual having just /boot on the non-LVM partition is enough). I've made three LVM partitions so that I can later modify rather easily the amount of space available for LVM.

I made the swap partition somewhat larger than the amount of physical RAM installed plus the video RAM (756+64) so that I can later use the suspend to disk features (a.k.a. swsusp). The non-LVM root partition should probably be at least 200 MB in the setting below (i.e. /usr, /var, /tmp and /home on other partitions). However, if you put just /boot on the non-LVM partition (which should be a better choice), 100 MB for that partition should be more than enough.

The 50 GB Volume Group (i.e., LVM virtual disk) made of the three LVM partitions is partitioned in the following:

  • /usr - 6 GB: system partition
  • /tmp - 500 MB: main temporary partition
  • /var - 500 MB: variable data partition
  • /opt - 2 GB: locally installed software partition
  • /home - 6 GB: for my home account
  • /asis - 2GB: for EPFL's software distributed by ASIS
  • /data - 32 GB: misc data / scratch area

For the X11 configuration I chose the "nv" driver. The display was not listed, so I chose "Dell 1600x1200 Laptop Display Panel" as a close enough display. The 1680x1050 display resolution of my laptop is not listed, so I selected other smaller modes and configured the 1680x1050 mode later (see below).

The install takes a fairly long time (approx. 45 min.) because the installation program does not recognize the IDE chipset and uses the standard (i.e., old and slow) disk access method. It can therefore be much faster to proceed with only a minimal install and then add packages one the system is up and running.

Note that the network install most probably does not work because the Ethernet card is not recognized by the standard kernel (although I did not try it out).

IDE chipset

The original Red Hat 9 kernel does not recognize the IDE chipset and therefore uses a slow access method. You will notice that the laptop is fairly slow due to this. Fortunately, the later Red Hat 9 updated kernels do recognize the chipset. I upgraded to the 2.4.20-18.9 kernel and the disk works in UltraDMA mode and thus is much faster (around 28 MB/sec instead of 2.8 MB/sec.).

Power management

As for any modern laptop there are quite a few power management capabilities. Most of them require ACPI as the laptop does not implement the older APM standard.

ACPI

The Red Hat 9 kernels are not ACPI enabled, however ACPI is required to have the CPU go to lower power consumption levels when idling. I ported the acpi-20030523 patch for 2.4.21-rc3 (see http://acpi.sourceforge.net/) to the Red Hat 2.4.20-18.9 kernel and now I have a working ACPI implementation. You can get the patched kernel RPMs at the start of this page.

This kernel includes the acpi-20030523 patch ported to the Red Hat kernel, an extra patch to be able to load custom DSDTs from the initrd (initial RAM disk) image (see http://gaugusch.at/kernel.html) as well as the Intel SpeedStep patch (see below). The acpi-20030523 patch applies cleanly to the Red Hat 2.4.20-18.9 kernel, except for a couple of cosmetic changes. A couple of extra fixes are still required to get it to build though: linux-2.4.20-18.9-acpi-20030523-gdt-ldt-fix.patch and linux-2.4.20-18.9-acpi-20030523-acpiphp_glue-fix.patch. The kernel configuration is identical to the stock Red Hat kernel 2.4.20-18.9 except that it has APM disabled and ACPI enabled (the ACPI support for ac, battery, button, fan, processor and thermal are compiled as modules) and the battery status driver for Gericom laptops disabled (does not compile with ACPI).

The Fedora Core 1 kernels have a working version of ACPI included and it's compiled in. To enable it you have to add acpi=on to the kernel command line (it defaults to off).

The BIOS support for ACPI is partially broken and it is necessary to fix the DSDT as explained at Graeme Wilford's page (see links below) to get things working (e.g., battery status). The original changes are from Graeme Wilford, but the fix is apparently not correct. I recently received a better fix from Adrian Dewhurst. The patches for the various BIOS versions (A01 through A04) are:

The corresponding fixed and compiled DSDTs are:

The, apparently incorrect, DSDT fix by Graeme Wilford are:

To use the fixed DSDT do the following after installing the kernel RPMs (pick the version matching your BIOS and the initrd version matching your kernel):

echo "INITRDDSDT123DSDT123" >> /boot/initrd-2.4.20-18.9.acpi.2.img
cat dsdt-i8500-A04-fixed-v2.aml >> /boot/initrd-2.4.20-18.9.acpi.2.img
Note that whenever the initrd is recreated with the mkinitrd command you have to repeat this procedure.

With these fixed DSDTs I've got everything working (thanks Graeme and Adrian!), except the fan information (apparently the i8500 DSDT does not have fan management). Note also that the battery status button (Fn+F3) becomes non functional. To load the ACPI modules at boot I added the following to the /etc/rc.modules file:

# Load working ACPI modules (no fan ACPI control for this laptop)
modprobe ac
modprobe battery
modprobe button
modprobe processor
modprobe thermal

When you boot you should see something similar to the following messages: i8500-boot-acpi.txt. Note that ACPI debugging is enabled so the messages are fairly verbose. In particular look for the "Looking for DSDT in initrd ... found" line, which means that the fixed DSDT embedded in the initrd image has been correctly retrieved.

As reported in Graeme Wilford's page there is a problem with the GNOME battery monitor applet in that it takes a high amount of CPU when checking for the battery level. The following patch solves this problem: battstat-acpi-events.diff, and the following RPM has the patch applied: gnome-applets-2.2.0-9.i386.rpm (source RPM gnome-applets-2.2.0-9.src.rpm). The RPMs and patch are from David Moore pages

You will also find useful to install the acpid daemon. This daemon watches for ACPI events (e.g., closing the lid or pressing the power button) and takes appropriate actions (configurable). The daemon is not included in Red Hat 9, but you can get it from RawHide (Red Hat's development distribution): acpid-1.0.1-5.1.i386.rpm. The only preconfigured action is to perform a clean shutdown when the power button is pressed.

I have configured my acpid events as follows:

  • Change processor power saving features on AC power plug / unplug events, using one of the following methods (configurable): CPUFreq driver, ACPI performance states or the cpudyn daemon.
  • Toggle laptop mode (see below) on AC power plug / unplug events.
  • Turn display power off when the lid is closed when on battery power.
  • Cleanly shutdown the machine when the power button is pressed.
  • Go to ACPI sleep state S1 when the suspend button is pressed. This makes use of the APM config file /etc/sysconfig/apmd.
the events and actions scripts are acpid-events-0.3.tar.gz. To install them unpack the TAR file in the root directory (cd / ; tar xvzf acpid-events-0.3.tar.gz) and remove the sample config file from the Red Hat RPM (/etc/acpi/events/sample.conf). Note, however, that the ac_adapter script (that adjusts power settings) will not be executed until the power plug is first plugged or unplugged after the acpid daemon is started. To solve this add the following line to /etc/rc.local
/etc/acpi/actions/ac_adapter

Under Linux 2.4.x only the ACPI S1 sleep state works, deeper sleep states don't work (actually they often crash the machine). Note that when S1 is entered the machine is in standby mode and not suspended, many devices are still powered on. In particular, the fan remains on; but don't be tempted to turn it off manually since the CPU temperature would rise and some damage could result.

The problems I currently have with ACPI are:

  • When resuming from standby the cursor is missing in X, switching to a text console and back solves it. To automate this is I uncommented the CHANGEVT line in /etc/sysconfig/apmd.
  • The ACPI processor performance control does not work correctly (I get "Transition failed" messages). I use CPUFreq's SpeedStep driver (see below). This is handled by setting the CPUPOWER variable in the /etc/acpi/actions/config of my acpi events above.

Fan control

As noted above there is no fan control interface through ACPI for this laptop. The i8k kernel module for Inspiron 8000 laptops allows, however, to directly control the fan. The i8k module does not load as it does not recognize the laptop model. That can be solved by providing the force=1 option. I added the following to my /etc/modules.conf file:

# Interface to BIOS fan control?
options i8k force=1 restricted=1

The functionality provided by the module is accessible through the i8kutils package. It is not included in Red Hat 9 but can be downloaded from the FreshRPMS site. Included in the package is the i8kmon utility that monitors the temperature and turns on the fans accordingly.

Suspending

With ACPI enabled suspending the laptop should work. However, the Linux 2.4 kernel series do not support suspending. Only the S1 sleep state (standby) works, as noted above. I will try the software suspend package sometime in the future and will report any success.

Frequency scaling

The Mobile Pentium 4 CPU is capable of modifying its frequency so as to reduce power consumption. When the laptop boots on AC power it starts at full speed, while on battery power it starts at 1.2 GHz (half speed).

There are two methods to modify the processor frequency: P4 clock modulation and Intel SpeedStep. P4 clock modulation is not enabled in the Red Hat 2.4.20-18.9 kernel (although Graeme Wilford reports that it works on previous Red Hat kernels, see links) and is not as flexible as Intel SpeedStep. The Intel SpeedStep feature requires a kernel patch (linux-2.4.20-18.9-speedstep-ich4-m.patch from Graeme Wilford's page) to recognize the ICH4-M chipset (similar to the IDE problem above), which is not included in Red Hat's kernel. I have included the patch in my ACPI enabled kernel above. The module to load is called speedstep, check the /usr/src/linux-2.4/Documentation/cpufreq for its usage. In order to load it at boot time I have added

modprobe speedstep
to the /etc/rc.modules file. Note that newer Inspirons have a processor with a higher stepping that are not recognized by the above CPUFreq patch, a newer version is required (normally the latest kernels above should support them). Recent CPUFreq versions changed the name of the required module to speedstep-ich (it was split into speedstep-ich and speedstep-centrino). The following line is therefore more appropriate:
modprobe speedstep > /dev/null 2>&1 || modprobe speedstep-ich

The adjustment of the CPU power state can be automatically adapted using a daemon such as cpudyn. This daemon monitors the CPU usage and switches to the performance mode when the CPU is fully utilized and back to powersave when mostly idle, using the CPUFreq interface. I now use it all the time and it works great. Starting with version 0.3 of my acpid scripts above, if configured, cpudyn will be locked to performance mode when on AC power and brought back to dynamic mode when on battery power.

Laptop mode

The default Linux kernel writes to disk very often. This is inconvenient for laptops since it prevents the disk from spinning down to save power. The timings can be changed in the regular kernel and so this problem can be partly solved. However, whenever to disk spins up it will not profit from the occasion and will not dump all dirty buffers to disk. The "laptop-mode" patch by Jens Axboe solves this problem. I have thus included it in my recent kernel RPMs above. It is also included in the Fedora Core 1 kernels.

Laptop mode can be enabled and disabled at run time. It is disabled by default. When enabled all dirty buffers will be written to disk shortly after the disk spins up, thus enabling longer spin down times. A detailed explanation is available in the laptop-mode.txt file in the kernel Documentation directory.

Typically, laptop mode is enabled when the AC power is unplugged and disabled when the AC power is plugged. I have integrated the laptop-mode.sh script into my acpi events package above to automate this.

XFree86 - ATI MOBILITY RADEON 9000

I do not have this card on my laptop, but I have received reports that the stock XFree86 server supports it fine. You might also be interested in the wide video modes given below for the NVidia card, as they also apply to the ATI.

XFree86 - NVidia GeForce 4200 Go

For the NVidia cards there is the official XFree86 driver (i.e., "nv") that comes bundled with Red Hat 9 or the binary driver provided by NVidia (i.e., "nvidia"). Note that 3D acceleration is only available when the nvidia driver is used. Besides that both drivers work well. Here is my XFree86 config file.

The nvidia driver can be downloaded from from NVidia's web site. Installation is straightforward following the included instructions. I have tested the 1.0-4363 and 1.0-4496 release without trouble.

8600 note: It has been reported that the 4496 release has troubles on the 8600 (at least with the 1680x1050 display), but that the 4363 works OK.

The 1680x1050 resolution of the display (and probably other wide resolutions) is not recognized by XFree and it has to be added. Add the following section to your /etc/X11/XF86Config file:

Section "Modes"
        # Here we define 16:10 modes
        Identifier "16:10"
        # 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz
        ModeLine "1280x800" 83.5 1280 1344 1480 1680 800 801 804 828
        # 1280x800 @ 75.00 Hz (GTF) hsync: 62.62 kHz; pclk: 107.21 MHz
        Modeline "1280x800"  107.21  1280 1360 1496 1712  800 801 804 835
        # 1280x800 @ 85.00 Hz (GTF) hsync: 71.40 kHz; pclk: 123.38 MHz
        Modeline "1280x800"  123.38  1280 1368 1504 1728  800 801 804 840
        # 1280x800 @ 100.00 Hz (GTF) hsync: 84.80 kHz; pclk: 147.89 MHz
        Modeline "1280x800"  147.89  1280 1376 1512 1744  800 801 804 848
        # 1680x1050 @ 60.00 Hz (GTF) hsync: 65.22 kHz; pclk: 147.14 MHz
        Modeline "1680x1050"  147.14  1680 1784 1968 2256  1050 1051 1054 1087
        # 1680x1050 @ 75.00 Hz (GTF) hsync: 82.20 kHz; pclk: 188.07 MHz
        Modeline "1680x1050"  188.07  1680 1800 1984 2288  1050 1051 1054 1096
        # 1680x1050 @ 85.00 Hz (GTF) hsync: 93.76 kHz; pclk: 214.51 MHz
        Modeline "1680x1050"  214.51  1680 1800 1984 2288  1050 1051 1054 1103
        # 1680x1050 @ 100.00 Hz (GTF) hsync: 111.20 kHz; pclk: 256.20 MHz
        Modeline "1680x1050"  256.20  1680 1808 1992 2304  1050 1051 1054 1112
        # 1920x1200 @ 60.00 Hz (GTF) hsync: 74.52 kHz; pclk: 193.16 MHz
        Modeline "1920x1200" 193.2 1920 2048 2256 2592 1200 1201 1204 1242
        # 1920x1200 @ 75.00 Hz (GTF) hsync: 93.97 kHz; pclk: 246.59 MHz
        Modeline "1920x1200"  246.59  1920 2064 2272 2624  1200 1201 1204 1253
        # 1920x1200 @ 85.00 Hz (GTF) hsync: 107.10 kHz; pclk: 282.74 MHz
        Modeline "1920x1200"  282.74  1920 2072 2280 2640  1200 1201 1204 1260
        # 1920x1200 @ 100.00 Hz (GTF) hsync: 127.10 kHz; pclk: 337.58 MHz
        Modeline "1920x1200"  337.58  1920 2072 2288 2656  1200 1201 1204 1271
EndSection
	
And then add the following line to the "Monitor" section:
UseModes "16:10"
Finally add the 1680x1050 (or whatever non-standard wide mode is applicable to your display) to the front of the mode lists in the "Screen" sections.

Note that I experienced problems when coming from graphical mode back to text mode in that the screen would be all garbled. I disabled the display expansion in the BIOS and the problem disappeared. Your mileage might vary.

External monitor

Note that the following information applies to the "nvidia" driver only.

At work I use an external monitor and the "nvidia" driver's switching between the external and internal monitor with the Fn+F8 key works very well. Pressing the Fn+F8 key cycles between internal only, internal+external and external only. If the current display mode is not supported in a device the driver will automatically switch to a valid mode. You can switch between all the available display modes for a display combination with the Alt+Ctrl+Keypad-Plus and Alt+Ctrl+Keypad-Minus key combinations (the xvidtune program can also be used, but be careful since it has many potentially dangerous options).

There are, however, some minor problems that are easily solvable.

  • By default the "nvidia" driver will not use the frequency range information provided by the external monitor, so it will probably not be able to exploit the highest refresh rates and highest resolutions of your monitor. To enable it add
    Option "UseEdidFreqs" "yes"
    to the "Device" section of your /etc/X11/XF86Config file. Each time that you plug a monitor it will probe for its frequency ranges and use the highest refresh rate available.
  • The internal LCD will scale small modes by default, without respecting the aspect ratio, leading to distorted images. You can disable this by adding
    Option "FlatPanelProperties" "Scaling = aspect-scaled"
    If your prefer no scaling you can specify "centered" instead (you will probably agree that the name is rather counter-intuitive though).
  • The internal LCD does not provide frequency range information. This is normally not a problem since the frequency ranges specified in the monitor section are used. However, when both the internal and external displays are active no frequency range information is available for the LCD and default values are used. These defaults are extremely low and prevent the use of any high resolution modes on the internal LCD. To avoid this add
    Option "TwinView" "yes"
    Option "TwinViewOrientation" "Clone"
    Option "SecondMonitorHorizSync" "31.5 - 94"
    Option "SecondMonitorVertRefresh" "50 - 90"
    to the "Device" section of your /etc/X11/XF86Config file. Note that the frequency ranges above are not the actual ones supported by the internal LCD (I don't know them) but are for a similar Dell model and work well in practice. Note that it is also necessary to explicitly enable TwinView to have the secondary frequency ranges recognized, but contrary to the documentation this does not disable the Fn+F8 key combination as long as the "orientation" is set to clone.

The XFree86 config file above includes all these additions, plus untested options for TV output.

Note that the XVideo scaler is only available on the device on which X was started (internal LCD or external monitor) and you will see a solid blue area on the other screen. The driver documentation says that one should use the secondary XVideo adapter ("Video Blitter") to overcome this limitation. However, I don't know how one tells that to movie playing software.

Finally note that the desktop size is always 1680x1050 even if the display size is smaller. To access the invisible parts just move the mouse to the appropriate edge. In general this is not a major problem. However, since XFree86 4.3.0, one can change the desktop size using the xrandr command. This functionality is however very recent and some components of my desktop crash if I attempt to change the desktop's size.

Update 2003-06-24

A workaround to use the Video Blitter XVideo adapter is to first start xine, which takes the first available XVideo adapter, and then play your video with mplayer. Since the first XVideo adapter is taken, mplayer will use the second one, which is the Video Blitter.

I currently experience problems when going back from X to text mode console. It only works properly if the X server was displaying to the internal LCD only and in the 1680x1050 mode. Otherwise I just get a black screen on the text console.

Broadcom 4401 Ethernet card

The on board Ethernet card is not recognized by the Red Hat 9 kernels (not even the updated ones). Broadcom however supplies a Linux driver that works very well. The driver can be downloaded from Broadcom's site and is easily installed following the instructions. You can also get the precompiled RPMs for my kernels at the start of this page. My kernel RPMs above, have the driver included and no extra RPM is necessary.

Note that Broadcom's RPM packaging is not very good and you cannot install them for two different kernels at the same time, unless you provide the --force option to the rpm command.

After installing the driver the easiest is to reboot the system (although, as usual with Linux, it is not strictly necessary). The card will be autodetected and you can proceed to its configuration as with any other network driver.

Update 2003-07-17

I have installed ifplugd to automatically start or stop the network interface whenever the network cable is plugged or unplugged. It works like a charm. See my main Linux page for the RPMs.

Update 2003-12-08

The Fedora Core 1 kernels have the official Linux driver for the Broadcom 4401 series, named b44, included. So you might use it instead of Broadcom's bcm4400 driver (the kernel developers do not think very well of the quality of this driver and developed their own). I'm currently using this one without trouble.

Audio - Sigmatel 9750

This audio chipset is recognized by the standard kernel driver. It can be configured with the "Soundcard detection" utility of Red Hat 9 (redhat-config-soundcard). I added the

options sound dmabuf=1
line to the /etc/modules.conf file to force the loading of the audio driver at boot time. Graeme Wilford reports that there is occasionally a problem with the autodetection of the audio device's clocking. The fix is to force the correct clocking by adding the following to your /etc/modules.conf file:
options i810_audio clocking=48000
Another option is to use the supposedly better ALSA drivers below.

ALSA

You can also use the more capable ALSA drivers, which are not included in the standard kernel. They allow to access many more features of the audio device and work very well. They can be downloaded from the FreshRPMS site. Install the alsa-driver, alsa-lib, alsa-utils, gnome-alsamixer and xmms-alsa packages. If there is no prebuilt RPM for your running kernel, follow the instructions given at http://freshrpms.net/docs/alsa/. I have built the kernel module (i.e., drivers) RPM for my ACPI enabled kernels, they are available at the top of this page.

One you have the packages installed comment out in /etc/modules.conf all the lines containing "sound-slot-0" and add the following

# ----- ALSA audio drivers -----
# native alsa support
alias char-major-116 snd
alias snd-card-0 snd-intel8x0
# module options
#options snd-intel8x0
# 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
# Save/restore mixer settings
post-install snd-card-0 /usr/sbin/alsactl restore >/dev/null 2>&1 || :
pre-remove snd-card-0 /usr/sbin/alsactl store >/dev/null 2>&1 || :
Then remove the i810_audio and ac97_codec modules and do "modprobe snd-card-0" to start alsa, or reboot. Note that alsa starts by default with a zero volume, so you need to use alsamixer or gnome-alsamixer to set appropriate volume levels before hearing anything.

If /usr is a separate partition (as is the case for me) remove the "options sound dmabuf=1" line (commenting it out does not work) from the /etc/modules.conf file. If not the alsa modules will load before the /usr filesystem is mounted, so the alsactl utility is unavailable, and the volume settings will not be restored.

Keyboard - Multimedia keys

The laptop keyboard has some multimedia keys. XFree86 has a keyboard description for Inspiron keyboards, but it does not match that of the 8500. You have to use the "hp2505" keyboard description as the keyboard model (XkbModel) in the XFree86 configuration (as in my config file above). The keys generate the following X key events:

  • lower volume: XF86AudioLowerVolume
  • raise volume: XF86AudioRaiseVolume
  • mute: XF86AudioMute
  • play/pause: XF86AudioPlay and XF86AudioPause (shifted)
  • stop: XF86AudioStop
  • previous: XF86AudioPrev
  • next: XF86AudioNext

These key events can be then captured by the window manager or a daemon. I use the acme daemon that works under the GNOME Desktop Environment. It is not included in Red Hat 9, but you can get the RPM from Ximian's Desktop 2 (XD2) at: ftp://ftp.ximian.com/pub/xd2/redhat-9-i386 or any other Ximian mirror. To configure it go to the "Applications->Preferences->More Preferences->Multimedia Keys" menu. Configure the volume management keys, so that the daemon takes action on the key presses. By default the daemon controls the master volume, which is independent of the headphone volume. Check the "Use PCM volume ..." to solve this problem. To have the daemon restart on every login logout from GNOME and check the "save current desktop" option in the logout dialog.

The extra multimedia keys are not directly managed by acme and need to be interpreted by your application, or you can use your window manager to bind them to some action.

Update 2003-07-28

Now I also have an external USB keyboard. However, Linux's USB keyboard driver generates scancodes for multimedia keys that do not comply to the Microsoft standard (which has become the de facto standard). As the laptop's internal PS/2 keyboard does comply we get incompatible key assignments between the two. This is solved in my kernels starting with version 2.4.20-19.9.acpi.5, where the USB keyboard driver complies with Microsoft's standard and also handles many more keys. Therefore I now use the "microsoftpro" keyboard description as the keyboard model (XkbModel) in XFree86.

Broadcom 4306 MP WLAN 802.11 b/g card (Dell Truemobile 1300)

Unfortunately, Broadcom has not released the specs for their WLAN chipsets so there is no native Linux driver available for the WLAN interface. This situation will probably change some day in the future, but not yet.

There is, however, a solution available to use this WLAN card under Linux. Linuxant has released a driver that let you use the Windows driver under Linux. It has been reported to work fairly well for this laptop. The product name is driverloader, there is a free-trial 30 days license and a full license costs US$ 20. I have not yet tried it myself, but I have received many e-mails about happy users.

A very similar solution is ndiswrapper which is also a wrapper that let you load the Windows driver under Linux. Unlike driverloader is's free (i.e. GPL), but less mature. Lately I have tested it and it works beatifully with this WLAN card, follow the instructions on the site for the setup.

Yet another, much more costly option, is to replace teh WLAN card by one supported under Linux. Since the card lives in the Mini-PCI slot it can be easily replaced by another Mini-PCI WLAN card. A list of WLAN cards with mention of Linux working/non-working status can be found at http://www.linux-wlan.org/docs/wlan_adapters.html.

Integrated modem: PCTel 2304WT

This is a software modem and requires special drivers. There are two versions available: 0.9.6 and 0.9.7-6. The latter link is now broken (i.e. the page was removed) so I provide the package locally: pctel-0.9.7-6.tar.gz. Note also that for recent Fedore Core 1 kernels you need this trivial patch: pctel-0.9.7-6-fedora-fix.patch.

I have tested version 0.9.7-6. To build it do the following:

tar xzvf pctel-0.9.7-6.tar.gz # This will create a pctel directory
cd pctel/src
Change the
kernel_inc=/usr/src/linux/include
line at the top of the configure file to
kernel_inc=/lib/modules/`uname -r`/build/include
Now type
./configure -manual
This will prompt for a hal, enter i8xx. A proper makefile will be created, type make to build the driver. Now copy the pctel.o and ptserial.o files to the /lib/modules/<kversion>/misc directory (where <kversion> is the version of your running kernel, returned by uname -r).

You can get the drivers already built for my ACPI enabled kernels at the top of this page. Expand the TAR file (tar xzvf pctel-0.9.7-6-<kversion>.tar.gz), the drivers are in the pctel-0.9.7-6-<kversion>/driver/ directory. Copy the two files to the /lib/modules/<kversion>/misc/ directory.

Add the following to your /etc/modules.conf file:

# PCTel soft modem
alias char-major-62 ptserial
below ptserial pctel
# device config and country code for pctel modem (13 = Switzerland)
options ptserial country_code=13 irq=11 iobase=0xb400 iobase1=0xb080
# need to force install pctel module (compiler mismatch)
install pctel insmod -f pctel
and run depmod -a. The list of country codes is available in the FAQ included in the pctel package. Although unlikely, the irq, iobase and iobase1 parameters might differ on your machine (you can check them with the lspci -v command). Doing a modprobe ptserial loads the driver. On my system the pctel modem reports itself as /dev/ttyS15 (use dmesg to know which one it takes in your system). However, the major device number of /dev/ttyS15 (4) is not the same one as for the pctel device (62) and therefore /dev/ttyS15. An
ls -l /dev/ttyS15
reports
crw-rw----    1 root     uucp       4,  79 Jan 30 11:24 /dev/ttyS15
meaning the /dev/ttyS15 uses major 4 and minor 79. The pctel device has therefore major 62 and minor 79. The following commands create an appropriate device file
mkdir /dev/pctel
mknod /dev/pctel/ttyS15 c 62 79
Now the /dev/pctel/ttyS15 is the device file for the pctel modem, you can use it as the modem in the dialup configuration. The kernel modules will be autoloaded when the modem is accessed.

The modem interferes somehow with the sound device. It seems that once the sound has been used the modem driver will not work correctly. You have to stop all applications using sound, unload the sound driver (modprobe -r snd-card-0 for ALSA), unload the modem driver (modprobe -r ptserial) and then attempt the modem connection again.

USB floppy drive

When the USB floppy is plugged it is recognized as a SCSI device on /dev/sda. However, the automatic management of /etc/fstab is not performed since it is not recognized by the updfstab utility. I added

device floppy {
    match floppy "USB UF"
}
to the end of the /etc/updfstab.conf file and now the ownership of the device file and /etc/fstab is performed. After connecting the USB floppy drive the floppy can be mounted on /mnt/floppy as usual.

PC Card (PCMCIA)

The PCMCIA controller is recognized out of the box and I have nothing special to do in order to get it working.

IrDA (Infrared port)

The IrDA port is disabled by default. You can enable it in the BIOS (press F2 while booting to access the BIOS setup). You have the choice of configuring it as one of several COM ports. I have selected COM2. Note that COM3 does not work correctly on Linux (at least for me).

In Linux, make sure you have installed the irda-utils package. Then edit the /etc/sysconfig/irda file and change the DEVICE line to reflect the COM port selection in the BIOS. For COM2 that is /dev/ttyS1 (ttyS2 for COM3 and so on). By default it is /dev/ttyS2 (which does not work correctly on this machine at least). Now enable the service to automatically start at boot time with the following command:

chkconfig irda on
To start the service immediately give the following additional command:
service irda start

To access an external device through IrDA you use the /dev/ircomm0 device, as it was a normal serial device. For example, I use my Nokia mobile phone as a modem by setting the modem device to /dev/ircomm0.

Firewire (a.k.a. IEEE-1394)

Many type of devices can be connected to the IEEE-1394 port, such as DV cameras, external disks, etc. For more information on IEEE-1394 in general visit the Linux 1394 web site http://www.linux1394.org/.

Probably one of the most common types of IEEE-1394 devices is miniDV cameras, which I recently got the opportunity to try out. I used kino to capture the video from the camescope, edit it, etc., and I must say it works great. To get things working comfortably I had, however, to understand and setup some things.

  • There are several IEEE-1394 drivers that let you capture DV movies. The raw1394 driver provides raw access to the 1394 link and is the most used by applications. The video1394 driver was an attempt for high-performance digital video applications but is not currently used much and is not suitable for DV applications. Finally, the dv1394 driver is a more recent driver specific to DV applications that is present in recent kernels only (2.4.20+ I think). Note that the dv1394 and video1394 drivers require an OHCI based IEEE-1394 interface, which should be the case on all laptops at least.
  • Red Hat 9 does not have device files for the dv1394 driver. You can create them as follows:
    mknod -m 600 /dev/dv1394-NTSC c 171 32
    mknod -m 600 /dev/dv1394-PAL c 171 34
    Note that the device file is specific to the video system, NTSC or PAL.
  • Red Hat 9 comes with an incorrect device file for the video1394 driver. You can correct it as follows:
    rm -f /dev/video1394
    mknod -m 600 /dev/video1394 c 171 16
  • By default the Red Hat configuration does not provide access to the IEEE-1394 devices to the user logged in at the console. You can change that by adding the following to /etc/security/console.perms:
    <ieee1394>=/dev/*1394* /dev/ieee1394/*

    <console> 0600 <ieee1394> 0600 root
  • Not all the necessary drivers autoload when a DV device is plugged. On older kernels (e.g., 2.4.18) it is because the drivers do not provide hotplug info. On more recent kernels the hotplug system will only load the first matching module, in my case dv1394, although other modules might be needed for some operations. The modules can however be loaded even if there is no device connected, so you can load them at system startup and not worry about it by adding the following to your /etc/rc.modules or /etc/rc.local files:
    modprobe raw1394
    modprobe dv1394
    modprobe video1394

Bluetooth

Not yet tested.

Hotplugging the DVD/CD-ROM module

When the laptop is started with the DVD/CD-ROM drive module plugged in it is of course automatically recognized and configured. However, if the module is plugged after booting, it is not recognized (the ACPI subsystem prints an error blurb about it but nothing happens). The drive can be, however, manually recognized.

With my cdromctl script the drive is recognized after plugging (cdromctl on). Before removing the module be sure to unconfigure the device using cdromctl off. Note that the hdparm commands used to perform this are marked as DANGEROUS in its man page, so do this at your own risk.

WARNING: hotplugging the CD-ROM module looks to be an unsupported operation under Linux, so be really careful. In particular nothing should be accessing your CD (in particular watch for CD polling daemons!). If anything goes wrong you can find yourself with crashes, lost data, unbootable system, fried hardware or god knows what. So be really careful!!!! You have been warned.

As my DVD/CD-ROM module is also a CD writer it is necessary to unload the ide-cd and ide-scsi modules prior to registering the IDE device, so that SCSI emulation is initialized for CD burning. This is now taken care automatically by my cdromctl script above. Note also that DMA is disabled when plugging after boot.

Removing the module when the laptop was booted with it in also works (after cdromctl off). As far as I have tested, the CD module can be plugged / unplugged multiple times. There is however a bug in the kernel that does not remove the /proc/ide/ide1 entry and each time you do a "cdromctl on" a new entry is created with the same name, making it inaccessible. This is fixed as from my 2.4.20-18.9.acpi.4 kernel.

Note that the cdromctl script uses the updfstab utility to automatically set the /dev/cdrom symlink and /etc/fstab entry to appropriate values.

Docking station

I don't have a docking station, but I helped configure one for a colleague with the same laptop model. Under Linux 2.4 you cannot dock or undock the laptop while its powered on, you have to shut it down first (docking and undocking apparently requires ACPI suspend functionality, which is not present in 2.4).

There is a problem with the USB devices attached to the docking station (in this case a keyboard and a mouse). When booting the computer on the docking station the external USB ports (appears as a USB Hub) is not detected. Plugging a device after booting seems to force the detection of this Hub and anything attached to it, but if the devices are already plugged at boot time they are not recognized. As a workaround we added

/sbin/lsusb > /dev/null
to the /etc/rc.local file. This apparently forces the detection of the USB Hub on the docking station and any devices attached to it.

Other than this, there are apparently no issues while running on the docking station.

Miscellaneous configuration

Made /dev/dvd a symlink to /dev/cdrom, since many DVD viewers use /dev/dvd as the default DVD device.

Installing additional software

In addition to Red Hat 9 software, you should probably install the following:

  • Acrobat Reader: get the RPMs from Guru Labs.
  • MP3 plugins: get the xmms-mp3 and mpg321 RPMs from freshrpms.net.
  • DVD and movie players: get the mplayer, xine and ogle RPMs, and their dependencies, from freshrpms.net.

By far the easiest way to install software from freshrpms.net, as well as other places, is to install the apt and synaptic tools. The apt tool is a frontend to install RPM packages that automatically takes care of resolving RPM dependencies, easing the installation of complex packages. The synaptic tool is a very intuitive and easy to use graphical user interface to apt and thus is highly recommended.

To install them first download the apt RPM from freshrpms.net and install it with the rpm command as (adjust version number as appropriate):

rpm -Uvh apt-0.5.5cnc6-fr1.i386.rpm
Now install synaptic using apt:
apt-get install synaptic
That's it. Now you can start synaptic to manage all packages available at freshrpms.net in addition to standard Red Hat packages. Other package repositories can be added as well. Useful repositories are:

Links

Last Modified: Wednesday, 06-Apr-2005 21:21:11 W. Europe Daylight Time


Diego Santa Cruz