Debian Linux 3.0r1 on the Dell Inspiron 8600 (I8600)

The following information will be updated as time permits and as I get more parts of the system to work properly.  As of this writing, the computer is usable.  Some items I haven't used, some I have no way to test for lack of hardware and some are minor irritations that will eventually get fixed.  I have configured and compiled a custom kernel but, so far, there has been no need to patch an existing kernel.

Many thanks are due to all those who have shared their laptop installation experiences on the web, particularly G. Wilford, whose machine (an I8500) was the closest match and whose page I used as a template for this one.

Summary

Hardware Subsystem
Status
Updated
Info
Disk - IDE/(U)DMA
Working
11/11/03
Works once the kernel is compiled with CONFIG_BLK_DEV_PIIX=y
Audio
Working
11/22/03
i810_audio module has some problems, ALSA works better
Keyboard - special keys
Working
11/11/03
Volume, mute, CD buttons work. No Pause. Fn+other keys untested
Power Management
Not Working
02/08/04
Disabled on boot due to broken Dell BIOS, see below for cron bug fix
Suspend/Resume
Not Working
11/11/03
Swsusp requires kernel patching
Xserver
Working
02/03/04
Explicit modeline needed for 1920 X 1200
Firewire
Working
11/11/03
Driver loads ok, untested as I have no devices to attach
Ethernet
Working
03/19/04
Driver included in 2.4.24 and 2.4.25, I'm still running version 2.0.0
Modem
Working
11/22/03
Modification to driver source needed, interferes with sound
USB
Working
11/11/03
Works with modular bay floppy, flash key
Infrared
Working
02/11/04
Works.  Tested with PDA
Mini-PCI/Wireless
Working
01/17/04
Ndiswrapper + Windows driver for Intel Pro/Wireless 2100 card
PCMCIA
Working
11/11/03
Modifications to configuration files needed, irq conflicts
Modular bay floppy drive
Working
11/11/03
Recognized as /dev/sda.  No hot-plugging.
BIOS
 Some problems
02/03/04
Broken V01, V02 & V03.  cat /proc/acpi/dsdt returns binary garbage
CD/DVD+RW drive
 Some problems
02/18/04
Driver issues/lock-ups with audio CDs.  DVD problems.




Software
Status
Updated
Info
File Synchronization
Working
11/11/03
Unison
Security
Partly Working
11/11/03
Iptables firewall
Mail
Partly Working
02/07/04

CD/DVD related
To  Be Written


Usenet News
Partly Working
02/07/04
Finding the problem required supernatural insight...
Network Configuration
Works Manually
11/11/03
Laptop-Net does not work reliably.
Sound-related
To Be Written


Modem-related
To Be Written


System Administration
To Be Written


Printing
Working
11/14/03
CUPS/gimp-print Epson Stylus C84 (C80 driver)
Upgrade to Debian 3.0r2
Working
12/12/03
X config file wiped out!
Web Privacy/Ad-Buster
Working
12/12/03
Privoxy.  No web browser should be without.
Bookmark Management
Working
02/07/04
Bookmarker, manual tweaking needed.
Kernel upgrade
Working 01/16/04 Manual re-installation of various modules/programs.
Browser Improvement
Working
03/20/04
Mozilla and Konqueror are very basic out of the box
Windows Elimination
Done
05/15/04
No more Micro$oft pollution on the hard drive!


Pre-Requisites

Given that a lot of the hardware does not have drivers in the Debian stable distribution and that the two networking options I tried (the built-in broadcom device and a 3c589 pcmcia ethernet card) didn't work right away, it is extremely useful to have another net-connected computer where you can download drivers and get info.  The modular floppy drive was essential to bring in the broadcom driver, as was the full set of CD-ROMS containing the Debian distribution (Bootable, of course, as with my setup you can have either the floppy drive or the CD/DVD drive.

The hardware

The I8600 is a brand new model as of this writing.  No accounts of Linux installations were found on the web.  However,  it is quite similar to the I8500 and has many common devices with other Dell Inspiron models.  Much help was obtained from those installation reports.  As with most Inspiron models, Dell allows quite a bit of customization.  Mine was ordered with the following features:
These are the main on-board components:
The 90W optional power supply is important as the standard one (65W) will not charge the battery when the computer is in use.  The power consumption is close to 90W in that case.

It turns out that the floppy drive is really a USB drive and is seen by the Linux kernel as /dev/sda.  The CD/DVD drive, although plugged into the same bay, is seen as /dev/hdc.  The USB Flash key is seen as /dev/sda and, once a file system is made on it, can be used just like a regular disk.

Preparing for installation

This laptop came with Windows XP, home edition and the minimum amount of windows software since I intended to use Linux.  I had to make space for Linux, so the Windows partition had to be reduced.

I had a Red Hat 7.1 distribution handy, and this is what was reported when I booted the first CD.

Model: Hitachi DK23EA-60

Geometry: 7296/255/63

                Start   End     Size(MB)        Type
/dev/hda1       1       5       39              vfat
/dev/hda2       6       7295    57184           NTFS/HPFS
Free            7296    7296    8               Free space


The free space at the end is critical, as that is where data gets put when hibernating.

I didn't want to pay for partition magic so I searched for a tool that might allow me reduce the NTFS partition without messing up its contents.  I also had a Mandrake 8 distribution, which has a nice partitioning tool which supposedly allows you to reduce the size of partitions.  I tried it and it destroyed the partition table and who knows what else.  It obviously malfunctioned, giving non-sensical numbers.  Having written all the relevant numbers, I restored the partition table with fdisk.  The first partition, used by Dell diagnostics was apparently not affected.  The NTFS partition was again visible, but, once reduced to 6GB, XP no longer booted.  The restore option of the XP CD boot was useless: it only gives you a DOS prompt and "DIR" came back with an error.  The NTFS partition was really hosed.

Even though the Mandrake 8 partitioning tool claims to be able to reduce partitions, IT DOES NOT WORK!  Maybe more recent versions do.  Use at your own risk and be aware that you'll likely have to reinstall Windows.  Of course you could just wipe it out and try to get a refund.  I thought it might come in handy for hardware detection and running Windows software if I ever have to do that.

Maybe partition magic would have worked.  I ended up reinstalling Windows XP and all the associated drivers and software.  The XP installation used the new 6GB NTFS partition and I now had the following disk layout:

Fdisk:

Device  Boot    Start   End     Blocks          Id      System

hda1            1       5       40131           de      Dell Utility
hda2    *       6       770     6144862+        7       HPFS/NTFS
hda3            771     7295    52412062+       5       Extended
hda5            771     4065    26467056        83      Linux
hda6            4066    4320    2048256         82      Linux swap
hda7            4321    7295    23896656        83      Linux

The Red Hat 7.1 disk setup tool:

Device          Start   End     Size (MB)       Type

/dev/hda1       1       5       39              vfat
/dev/hda2       6       770     6001            NTFS/HPFS
/dev/hda3       771     7295    51184           Extended
  /dev/hda5     771     4065    25847           Linux native
  /dev/hda6     4066    4320    2000            swap
  /dev/hda7     4321    7291    23337           Linux native
Free            7296    7296    8               Free space


There are many equally valid partitioning schemes.  As this was the first time installing a full Debian distribution on a laptop, I didn't want to run out of room in one partition or another later on and so kept things simple with just a big / and a big /home.  After re-installing Windows XP and all the Windows software that came with the machine in the newly shrunk 6GB NTFS partition, only 2GB are currently free.

Installing Debian 3.0r1

Installing Debian 3.0 by choosing defaults seems to work.  It gets you through the installation with a few minor conflicts.  However, you won't be able to reboot your system.  The key is apic.  Buried in the "Starting Out" section of this report about installing Debian 3.0 on an I8200 is the following:

NOTES FOR DEBIAN 3.0 (woody) - After you boot the CD, you should begin the Debian install by typing in "bf24 noapic video=vga16:off" in the "boot: " prompt. If you don't, your computer will be crash prone with APIC on, and the video will have annoying yellow vertical lines. Using bf24 allows you to use ext3 and/or ReiserFS also. To boot the OS until you compile your own kernel, you should specify those same flags to lilo on boot.

I didn't see any yellow vertical lines, but the computer did crash every time.

After installing with the above in mind, I had a Linux system that could not connect with anything.  No pcmcia, no ethernet, no modem, no X, no sound. USB seems to work: inserting the flash key results in a "USB new device connect" message, but it also says that the device is not "claimed by any active driver".

The bootstrap process

After the minimal set of packages was installed and lilo could boot the bf24 kernel from the HD (with the above boot prompt options of course), the first thing to do was to add that line to /etc/lilo.conf.  Then I selected all the options in Tasksel.  It was necessary to remove mtr_tiny and leafnode as they conflict with other packages.  One package that does not get installed automatically and that is necessary for the next step is "kernel-headers-2.4.18-bf2.4".  This is necessary to compile the broadcom ethernet driver, so that other big files, such as the new kernel can be downloaded.

The kernel does not deal properly with removal and insertion events in the modular bay, so it is necessary to reboot each time.

To use the floppy drive, which is actually a USB floppy drive: "modprove -v usb-storage".  With the floppy drive accessible, copy the broadcom driver version 1.0.2, which is available here .  The makefile needs to be modified  to point to the location of the kernel include files, which is /usr/src/kernel-headers-2.4.18-bf2.4.  Then: "modprobe -v bcm4400" after installing the driver.  Add usb-storage and bcm4400 to /etc/modules.

With the network now working, it is now possible to get the new kernel.  The latest stable kernel at this point is 2.4.22.  There is really no other choice than to start with a source package.  Any binary package for this version of the kernel comes from the testing distribution and brings with it more than 200 dependencies.  I wanted to keep as much as possible within the Debian package system so I ended up getting
kernel-source-2.4.22_2.4.22-2_all.deb

The new kernel

The following procedure will install the new kernel:

dpkg --install kernel-source-2.4.22_2.4.22-2_all.deb

This seems to have put it into the database and put the file

kernel-source-2.4.22.tar.bz2 in /usr/src.  Then do (from /usr/src)

tar -xvjf kernel-source-2.4.22.tar.bz2
cd kernel-source-2.4.22
make-kpkg kernel-image
dpkg --install kernel-image-2.4.22_10.00.Custom_i386.deb


The above deb file was generated by the make-kpkg step.  As part of the make-kpkg step, a make config is done.  On this first run, I included just about everything that I had the slightest suspicion was needed.  I have since rebuilt the kernel multiple times with fewer (unneeded) options, more modules and some things I forgot.  The current config file can be found here.  It is much more convenient to build subsequent kernels out of the package system, especially since the differences are small between builds and they are done to fine tune or fix small problems.  This is the procedure I used:
  1. make menuconfig
  2. make dep
  3. make bzImage
  4. make modules
  5. make modules_install
  6. cp arch/i386/boot/bzImage /boot/vmzlinuz-2.4.22
  7. cp .config /boot/config-2.4.22
  8. cp  System.map /boot/System.map-2.4.22
Of course, the broadcom ethernet driver now needs to be compiled for the new kernel (with the Makefile adjusted for the new location of the include files) and installed.  /etc/lilo.conf was also modified manually so that the necessary boot options apply to the proper kernel.  Here is the current /etc/lilo.conf.  As expected, lilo is perfectly capable of booting the diagnostics partition or XP.

IDE interface: Intel Corp. : Unknown device 24ca  (rev 01)

After a lot of head scratching, it turns out that this can be made to work at DMA speed.  The critical item is that the kernel has to be built with CONFIG_BLK_DEV_PIIX=y.  Nothing else needs to be done explicitely, DMA mode is used by default.  In this case, hdparm -t /dev/hda returns:

/dev/hda:
 Timing buffered disk reads:  64 MB in  2.27 seconds = 28.19 MB/sec


Previously,  this was the case:

/dev/hda:
Timing buffered disk reads: 64 MB in 21.76 seconds =  2.94 MB/sec

And trying to turn on dma (hdparm -d1 /dev/hda) explicitely resulted in the following:

/dev/hda:
 setting using_dma to 1 (on)
 HDIO_SET_DMA failed: Operation not permitted
 using_dma    =  0 (off)

Audio - Sigmatel 9750

Modprobe i810_audio loads the sound driver successfully.  This is the option that requires the least effort but it has problems:
Because of all this, I ended up installling ALSA.  The current stable version is 0.9.8 so I downloaded the following files:
  1. alsa-driver-0.9.8.tar.bz2
  2. alsa-lib-0.9.8.tar.bz2
  3. alsa-utils-0.9.8.tar.bz2
  4. alsa-oss-0.9.8.tar.bz2
  5. alsa-tools-0.9.8.tar.bz2
So far the first three have been installed.  That is all that is needed to get sound.  After unpacking the packages:

cd alsa-driver-0.9.8
./configure --with-cards=intel8x0
make
make install
cd ../alsa-lib-0.9.8
./configure
make
make install
cd ../alsa-utils-0.9.8
./configure
make
make install


Then, files /etc/modutils/alsa and /etc/modutils/alsa-path have to be created before running update-modules.  The latter file was created by the alsa driver installation but had to be modified to reflect the real path where the driver was actually put.  Finally,  intel8x0 has to be added to /etc/modules.

Sound is now reliable and it is possible to play a game (and hear it) while listening to a CD.  One issue that remains is some interference from the pctel modem.  This page appears to describe the cause of the problem, which manifests itself when ppp is started: sound stops. More to come after further investigation into patching possibilities of either the pctel driver or the sound driver.

Keyboard - special keys

Volume and CD/audio player control buttons

The volume, mute and CD control buttons do not work with the standard kernels/X.  They do produce scan codes,  as  can be seen with xev. Those scan codes have to be harnessed to do something useful.  After some research and realizing that cdtool was already installed and hotkeys was available in the Debian distribution, it seemed the most straightforward way to enable these keys was a combination of the two.  Based on xev output, the followingn i8k.def was created and put into /usr/share/hotkeys/, /etc/hotkeys.conf was then modified for cdtool.  Strangely, hotkeys works but khotkeys, also part of the hotkeys package does not.  Mysteriously, the mute key works perfectly. Pause, the second function of the Play key does not work as cdtool seems to have no capability to toggle modes.  It should work with xmms, which I'll play with later.

Worthy of note is the fact that the headphone jack is not affected by the master volume adjustment, thus the "aumix -c" command to adjust thd CD channel.  Aumix is part of the aumix_gtk package that has to be installed separately.

Fn-function keys

Since many of the blue combination keys (Fn + other keys) have to do with modes that are known not to work at the moment or with devices/features I don't have, I have not even looked at this issue.  More to come later.  The Fn-Up Arrow and Fn-Down Arrow, to increase and decrease the screen brightness, work perfectly.

Power/voltage/frequency/temperature Management

ACPI

The original Debian kernel (2.4.18-bf2.4) was totally broken as far as ACPI goes.  The OFF swith didn't actually turn off the machine unless you kept pressing it for 5 seconds.  The custom-built 2.4.22 kernel works better, but the first nasty surprise comes right at boot time:

Dell Inspiron with broken BIOS detected. Refusing to enable the local APIC.
ACPI: RSDP (v000 DELL                                      ) @ 0x000fdf00
ACPI: RSDT (v001 DELL    CPi R   0x27d3091e ASL  0x00000061) @ 0x1fff0000
ACPI: FADT (v001 DELL    CPi R   0x27d3091e ASL  0x00000061) @ 0x1fff0400
ACPI: DSDT (v001 INT430 SYSFexxx 0x00001001 MSFT 0x0100000e) @ 0x00000000
ACPI: MADT not present


During kernel configuration, I selected all the ACPI-related options possible, and there is a wealth of information in /proc/acpi.  However, cat /proc/acpi/dsdt returns binary garbage, as does cat /proc/acpi/fadt.  Everything else seems to have reasonable values.  The question is how to make use of all this.  There is even /proc/acpi/button/lid/LID/state that actually reflects (open or closed) whether the lid button is depressed on not.  Unfortunately (or maybe fortunately given the broken state of affairs in the BIOS) nothing seems to happen.

So, the two big issues are:

Cron Startup bug

Log files were not being rotated, so I started backtracking to find out why.  It turns out that Anacron wasn't being started because of a bug in /usr/bin/on_ac_power.  This script checks if the AC power is on, and if it is not, does not start anacron.  It turns out that the ACPI file it checks is not the correct one, and so anacron never starts, even when on AC power.  The following snippet of code is what's in the standard distribution (3.0r2):

acpi_available && [ -r /proc/acpi/ac_adapter/0/status ] && {
        grep on-line /proc/acpi/ac_adapter/0/status >/dev/null 2>&1 && exit 0
        grep off-line /proc/acpi/ac_adapter/0/status >/dev/null 2>&1 && exit 1

It should be replaced with the following

acpi_available && [ -r /proc/acpi/ac_adapter/AC/state ] && {
        grep on-line /proc/acpi/ac_adapter/AC/state >/dev/null 2>&1 && exit 0
        grep off-line /proc/acpi/ac_adapter/AC/state >/dev/null 2>&1 && exit 1


as that is the real location of the ACPI file (at least for kernel 2.4.24).

DSDT - Differentiated System Description Tables

If you feel like hacking, you can look here for some scary binary patching (on an I8500).  WIth kernel 2.4.22 most of the ACPI system data seems to be available.  I just haven't figured out how to use it.  By the time I get around to this, there might be a fixed Dell BIOS, or a new kernel with work-arounds.

Suspend+Resume

Kernel 2.4.22 has no built-in support for swsusp.  As this involves patching the kernel and there are additional issues with the nvidia driver I'm going to wait on this issue.  If you want to look at the bleeding edge (patches), Shawn McCarthy's work can be found (via a cable modem) here.

CPU frequency and voltage scaling

This is another bleeding edge item.  It requires kernel patching.  There is a patch/driver specifically for Pentium M here.  Unfortunately it is for 2.5 kernels.  This will have to be addressed later.  If anyone knows how to enable this for the 2.4.22 kernel without patching, I'd certainly like to know.

i8k - Inspiron 8k SMM BIOS driver

Information can be found here.The i8k driver is included in the Debian kernels but has to be force loaded on the I8600 (modprobe i8k force=1).  In order to achieve this permanently the Debian way, I created a file called "i8k" in /etc/modutils that contained the following:

options i8k force=1

And then ran update-modules.  The module seems to work, but the i8k utilities package (v1.12 is the one that comes with Debian stable) that is supposed to be able to handle the volume buttons doesn't seem to work.  In fact the i8kbuttons program when run without options claims to be setmixer  (?).  More on the multimedia keys in this section.

X @ 1920x1200 - AGP4x: Nvidia Geforce4 4200 Go

The version of XFree86 that comes with Debian 3.0r1 is 4.1.0.  The nv driver included in the distribution didn't work.  The binary driver available from nvidia (the version installed is 1.0-4496) works fine as far as I have experienced.  I understand there are some issues with suspend/resume, but that is not working yet over here.

Installation of the Nvidia driver is very easy, but X only came up at 1024 X 780 resolution.  After adjusting the HorizSync and VertRefresh parameters to values found on other config files on the net, I did get 1600 X 1200.  I am not quite sure that these parameters are the correct ones.  They work, but maybe they could be higher.  In that case it might be possible to have the 1920 X 1200 mode work at a higher refresh rate.  Another minor annoyance is that, even though the display size is explicitely stated, xdpyinfo still claims that the size of the display is 488 X 305 millimiters.  The actual measured size of the visible/usable area is 330 X 210 mm, the manual claims that the panel is 222.5 X 344.5 mm.

        DisplaySize     330     210
        HorizSync       28-110
        VertRefresh     43-90


The only modeline that I found to work at 1920 X 1200 is the one below.

# 52.3 Hz refresh, 65.3 KHz, 162.0 MHz
        Modeline "1920x1200" 162 1920 1984 2176 2480 1200 1201 1204 1250 +hsync +vsync

Nothing at a higher refresh rate worked, after much experimentation with the modeline generator on the web, and I tried just about every possibility between 90 and 55.

Update: Thanks to Jan Lindh for this one:

Modeline "1920x1200" 282.74 1920 2072 2280 2640 1200 1201 1204 1260
 
Here's the complete XFree86Config file.

A related kernel configuration variable that was needed is CONFIG_AGP_INTEL=y (I already had CONFIG_AGP=y).  With Intel AGP support enabled you get the following in dmesg:

Linux agpgart interface v0.99 (c) Jeff Hartmann
agpgart: Maximum main memory to use for agp memory: 439M
agpgart: Detected Intel(R) 855PM chipset
agpgart: AGP aperture is 128M @ 0xe8000000


Without it, I used to get this:

Linux agpgart interface v0.99 (c) Jeff Hartmann
agpgart: Maximum main memory to use for agp memory: 439M
agpgart: unsupported bridge
agpgart: no supported devices found.

Testing: glxgears gives a frame rate of about 2875 FPS at the window size it displays by default.  At full screen (1920 X 1200) the frame rate is 127.

#cat /proc/driver/nvidia/agp/status
Status:          Enabled
Driver:          AGPGART
AGP Rate:        4x
Fast Writes:     Disabled
SBA:             Disabled


I would certainly like to know why Fast Writes and SBA are disabled and how to enable them.  All the nvidia README file says is that:

SBA and Fast Writes indicate whether either one of the features is currently in use. Please note that several factors decide if  support for either will be enabled. First of all, both the AGP card and the host bridge must support the feature. Even if both do support it, the driver may decide not to use it in favor of system stability. This is particularly true of AGP Fast Writes.

#cat /proc/driver/nvidia/agp/card
Fast Writes:     Supported
SBA:             Supported
AGP Rates:       4x 2x 1x
Registers:       0x1f000217:0x1f000104


So the reason must be one of those unspecified "several factors"...  Ok, so I can't leave well enough alone.  A little web search found the answer here.  I just created a file called "nvidia" in /etc/modutils that contains the following:

options nvidia NVreg_EnableAGPSBA=1 NVreg_EnableAGPFW=1

and ran update-modules.  After a reboot I have the following:

#cat /proc/driver/nvidia/agp/status
Status:          Enabled
Driver:          AGPGART
AGP Rate:        4x
Fast Writes:     Enabled
SBA:             Enabled


No difference in the frame rates of glxgears, though.

Firewire - TI PCI4510

ohci1394: $Rev: 1010 $ Ben Collins <bcollins@debian.org>
PCI: Found IRQ 11 for device 02:01.1
PCI: Sharing IRQ 11 with 00:1d.1
PCI: Sharing IRQ 11 with 02:01.0
ohci1394_0: OHCI-1394 1.1 (PCI): IRQ=[11] MMIO=[faffd800-faffdfff] Max Packet=[2048]
ieee1394: Host added: ID:BUS[0-00:1023] GUID[364fc0002abbb861]
As the above shows, the driver loads just fine.  I have no firewire device to test it with.

Ethernet - Broadcom 4401

No support in the Debian kernels (2.4.18-bf2.4 or 2.4.22). Broadcom-supplied drivers available are available here , however, as of this update (March 19, 2004) the only driver available there is 3.0.7, which didn't compile when I tried it. The bcm4400 v1.0.2  driver compiles against both kernels after the makefile is modified to reflect the location of the header files, loads and works fine. Tested at 10Mbit half-duplex, as that is how it comes up.  The laptop is connected to a Linksys hub and at the other end of the hub is my old 10Base2 network.

Kernels 2.4.24 and 2.4.25 apparently come with the b44 driver built-in, however, having read that it didn't work for certain people I am still using a separately obtained one (2.0.0) with kernel 2.4.24.  Here are versions 1.0.2 and 2.0.0.

Modem - PCTEL 2304WT

Info/driver available here. FAQ available here.

The modem entry generated by lspci -vv:

00:1f.6 Modem: Intel Corp.: Unknown device 24c6 (rev 01) (prog-if 00 [Generic])
        Subsystem: PCTel Inc: Unknown device 4c21
        Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin B routed to IRQ 11
        Region 0: I/O ports at b400 [size=256]
        Region 1: I/O ports at b080 [size=128]
        Capabilities: [50] Power Management version 2
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-


The hint that made this work came from this entry in the pctel database.  I had to replace the PCI device ID (PCI_DEVICE_ID_I810_MR_LAPTOP) in ptserial-2.4.7.c with the following:

#define PCI_DEVICE_ID_i810_MR_LAPTOP    0x24c6

After this change (and a recompile, of course), the module loaded just fine.

This was all that was needed:

./configure --with-hal=i8xx
make
make install


Testing with minicom (which has to be installed separately) reveals that the modem responds to ati1-ati5 commands. ati5 returns V.90; under Windows, the modem is reported as V.92.  Adding pctel and ptserial to /etc/modules completed the setup of this item.
Finally, for completeness, /etc/modutils/ptserial was created with the following contents: "options ptserial country_code=1" (country code 1 is the US.)

The following issues remain:
  1. No dialtone or modem sounds can be heard during dialup
  2. The following messages appear before dialing out successfully: AC'97 (modem) Warning: Primary or Secondary codec not ready - timeout
  3. I haven't completely integrated ppp with laptop-net (dialup scheme), hotplug and an iptables firewall.
  4. Interference with the sound driver: when a connection is started, sound stops.  This is being investigated futther.

USB UHCI Controller

3 USB hubs are detected with copious dmesg output.  Everyhing seems to work fine.  Inserting a flash RAM stick in one of the external USB ports gets it recognized.  The modular bay floppy drive (really a USB drive) is recognized.  The module usb-storage needs to be loaded/added to /etc/modules in order to use storage devices, such as the floppy and a flash disk that, once a file system is created on it, can be mounted like any removable disk.  I don't have external USB devices that require high bandwidth so USB testing has been minimal.

Infrared

All drivers load ok and the system seems ready for user-level programs to be configured properly and used.  Kpilot and Kpilotdaemon having been installed previously, it was necessary to link /dev/pilot to /dev/ircomm0 and configure the baud rate in both Kpilot and the PDA, as well as the HotSync options.  In the BIOS, the IR device needs to be set to COM2.

Mini-PCI (Intel Pro/Wireless 2100)

According to Intel's web site, a Linux driver is in development for this card, but no release dates are given.  Luckily, some people have developed an Open Source project that allows using the Windows drivers under Linux. Ndiswrapper can be found here.   This project is being actively developed and I have been downloading the CVS sources until something worked.  It is important to read the documentation at the ndiswrapper web site carefully.  Any number of subtle configuration issues can hang up the system when loading the driver. Specifically for the 8600, these things are important: (these are the things that tripped me...)


Running the install.sh script that comes with the ndiswrapper package works.  I put the windows drivers in /lib/windrivers first and then ran the script.  To load the driver, the following must be done:

modprobe ndiswrapper
/usr/sbin/loadndisdriver 8086 1043 /lib/windrivers/w70n51.sys /lib/windrivers/w70n51.inf
iwconfig wlan0 mode Managed
iwconfig wlan0 essid <the essid of your access point>
ifconfig wlan0 up


Then,
 
dhclient wlan0

handles all the remaining configuration needed.  I have not automated this yet since the wireless network interface is to be integrated with laptop-net, the iptables firewall and Fn-F2.  It would be really nice if pressing Fn-F2 (key combination to turn on the wireless card) could load the driver, configure it and the net connection (with dhcp), set up the iptables firewall and do whatever else laptop-net should do for that interface.  Since laptop-net is not working yet, it will have to wait.  I would also like to have some indication in the control panel that the wireless interface is active, maybe the little antenna symbol that's on the F2 key.  Any ideas out there?  Existing code?

There is also a commercial driver by Linuxant available now (not open source).

As of March 10, a beta open-source driver is available here.

PCMCIA

Pcmcia didn't work at all.  Under the original kernel (2.4.18-bf2.4), inserting a card froze the machine.  The first fix was to go to /etc/pcmcia/config.opts and replace

include port 0x100-0x4ff, port 0x800-0x8ff, port 0xc00=0xcff  (original)


with

include port 0xfe00-0xfeff, port 0xfd00-0xfdff  (new)

Also uncomment the line

 exclude irq 3

since it's being used for the IR port.  After that, inserting the 3c589 network card didn't freeze the machine anymore and the card was recognized.

With kernel 2.4.22 there were additional issues.  In /etc/default/pcmcia, PCIC="i82365" needed to be replaced with PCIC="yenta_socket" as  there are some debian-specific lines in /etc/init.d/pcmcia that require this.  With this change, the ds.o module loaded ok, but when inserting the 3c589_cs.o module (for the 3c589 ethernet card), the message was "RequestIRQ: Resource in use".  I had to exclude irq 9 in /etc/pcmcia/config.opts and add the boot option "pci=noacpi".  This is not really a fix, more a work-around, so if anyone has the real solution to this problem, I'd like to hear from you.

CD/DVD+RW Drive

Many CD/DVD applications deal with the drive as a SCSI device, so it is necessary to load the ide-scsi module (modprobe ide-scsi or add it to /etc/modules) and the kernel needs to be told at boot time that "hdc=ide-scsi".  Furthermore,  links in /dev need to be re-arranged:

cd /dev
rm cdrom
ln -s scd0 cdrom
ln -s scd0 dvd


The Philips CD/DVD writer has some issues as far as firmware, according to the Dell forums.  Even though the firmware version seems to be 1.03, reading audio CDs with cdda2wav generates messages about not being able to read the CD properly.

Type: ROM, Vendor 'PHILIPS ' Model 'DVD+RW SDVD6004 ' Revision '1.03' MMC+CDDA
...
index scan: 1...cdda2wav: Input/output error. play sectors: scsi sendcmd: no error
CDB:  47 00 00 03 26 0E 03 26 0F 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: 70 00 03 00 00 00 00 0C 00 00 00 00 15 00 00 00
Sense Key: 0x3 Medium Error, Segment 0
Sense Code: 0x15 Qual 0x00 (random positioning error) Fru 0x0
Sense flags: Blk 0 (not valid)
cmd finished after 6.004s timeout 300s
Driver and/or firmware bug detected! Drive cannot play the very last sector!

Update: it looks like the issue with the CD/DVD drive is a driver problem.  One particular audio CD, very long, is able to lock up any access to the drive, repeatably.  Near the end of the last track the drive (or data buffer) repeats endlessly and the drive freezes.  It is not possible to stop the CD, eject or even turn off the sound.  The only solution is to reboot, and the sound keeps playing until the very last second before the start of the BIOS loading.  Some relevant log file messages:

kernel: scsi : aborting command due to timeout : pid 281, scsi0, channel 0, id 0, lun 0 Test Unit Ready 00 00 00 00 00
kernel: hdc: irq timeout: status=0xd0 { Busy }
kernel: hdc: DMA disabled
kernel: scsi : aborting command due to timeout : pid 281, scsi0, channel 0, id 0, lun 0 Test Unit Ready 00 00 00 00 00
kernel: SCSI host 0 abort (pid 281) timed out - resetting
kernel: SCSI bus is being reset for host 0 channel 0.
kernel: SCSI host 0 channel 0 reset (pid 281) timed out - trying harder
kernel: SCSI bus is being reset for host 0 channel 0.
kernel: hdc: ATAPI reset timed-out, status=0xd0
kernel: ide1: reset timed-out, status=0xd0
kernel: hdc: status timeout: status=0xd0 { Busy }
kernel: hdc: drive not ready for command
kernel: hdc: ATAPI reset timed-out, status=0xd0
kernel: ide1: reset timed-out, status=0xd0


It looks like this can't be blamed on the hardware/firmware.  Under Windows (media player) this particular CD plays fine until the very end.  I would be interested in hearing from others that have this drive (or even others) trying to play very long audio CDs (this particular one is 75 minutes and 38 seconds long).

DVDs: I finally got a couple to try.  It was difficult to get either program to work.  Ogle (installed with dselect) and Mplayer (downloaded from its own web site and installed in /usr/local) had a very hard time reading the discs, seemingly with random errors and garbage being displayed.  After many tries, without doing anything different, mplayer started to work.  Ogle still doesn't.  At one point one movie was working but the other wouldn't start.  After starting the one that worked, some internal state (of the drive?) must have changed and the other could be played.  Not a very scientific analysis, but that's how it went.  After that, mplayer can play both movies reliably.

The mplayer window was quite small on the WUXGA display, but very sharp.  When playing at full screen size, the scaling creates some artifacts in fast moving objects (even with the latest nvidia driver, 5336 as of this writing).  If anyone has fine-tuning tips I certainly would like to know about them.

Software

This part is mostly a collection of ideas about what I want the laptop to be useful for.  Part of this section's goal is to take advantage of the quite nice set of peripherals that the 8600 offers.  Part is non-standard configuration of the usual components: mail, news, security, multi-media, etc...  Much of this is not implemented yet.  The relevant sections will be updated as I make progress.

File Synchronization

The best and most complete overview of file synchronization software I could find is here.  Based on this article and my needs, I chose Unison.  Once configured, it's very easy to use and keeps the desktop and laptop synchronized.  When I get around to configure the mail system, I might also use mailsync.

Security

This laptop is connected to the internet in essentially 3 ways: in a trusted network (that I control) that is behind a firewall that has been tested for years, directly to an ISP through the built-in modem or a cell phone connection via ttyS0, or to untrusted networks (via the built-in ethernet connector or the wireless interface when the driver becomes available).  In the latter 2 cases a very restrictive firewall is mandatory.  Rather than  using a proxy-type firewall that would require each application to be configured for its use, iptables with the following rules is the first configuration:

#!/bin/sh
# set up a very restrictive iptables firewall
exec iptables-restore <<EOF
*filter
-P INPUT   DROP
-P OUTPUT  ACCEPT
-P FORWARD DROP
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED -f
COMMIT
EOF


When moving to a safe environment (case 1) the following rules take down the firewall.

#!/bin/sh
# remove the restrictive iptables firewall installed on startup of dialup
# connection
exec iptables-restore <<EOF
*filter
-P INPUT   ACCEPT
-P OUTPUT  ACCEPT
-P FORWARD ACCEPT
COMMIT
EOF


These scripts are to be executed automatically by laptop-net for the appropriate environment.  Unfortunately, laptop-net is not working reliably yet, so these scripts have to be run manually.

Mail

While researching ways to handle email on a laptop, I found this page that describes exactly the way I'm going to proceed.  However, things are never that simple.  I've been coming up with more and more requirements:
The Unix/Linux philosophy being that many small programs that each do one thing well cooperate to do bigger things implies that much configuration needs to be done to get a complex mail setup to work.

As it is right now, and the setup is not yet complete, I had to configure
Furthermore, the following utilities make life easier when dealing with a complex mail setup:
 More to come, including configuration files when the system is complete.

Usenet News

Debian 3.0 comes with Inn 2.3.2, so after installing the package and copying the configuration files from the desktop machine that has been receiving news for years (with appropriate local changes of course), it should have worked, right?  Not at all! Innd wouldn't start.  The only error message (in syslog) had to do with the history files.  So, let's run makehistory...  Well, makehistory created an empty history file that was not good enough for innd.  Lots of web research later, I found a hint: after all the configuration, it is apparently necessary to RE-INSTALL inn!!!  I had to re-read that, but yes, the author claimed that the original installation process doesn't know how to do it properly as the configuration files in /etc/news don't yet have the local configuration data.  But the second time around it works.  I had a moment of inspiration and decided to try

dpkg-reconfigure inn2

and lo and behold! It worked!  Innd now starts properly, and the history files are not empty.  Next: trn and suck.

Network Configuration

Laptop-net is the most automatic and flexible package that I've been able to find.  Unfortunately, at the moment, it is not working reliably. I have to dig deeper into these problems.  I certainly would like to hear from anyone that has laptop-net working well with ppp and/or on a Debian/Dell laptop.  Configuration files will be forthcoming once all this has been straightened out.

Printing

I had no intention of connecting a printer at first, so I installed the default packages: lpr and magicfilter.  Needless to say, when I got an Epson Stylus C84 it didn't work.  Based on the recommendations found here, I went looking for a C82, but the current model is the C84.  I quickly found out that the preferred driver for Epson ink jet printers is gimp-print, and that support for the C84 only exists in the 4.3.x experimental drivers.  So first I installed everything that seemed connected to cups and gimp-print from the the 3.0r1 CDs.  Essentially these packages and their dependencies:  cupsys, kdelibs3-cups, libcupsys2, cupsomatic-ppd, libqtcups2, cupsys-client, gtklp, qtcups, cupsys-pstoraster, libcupsys2-dev, libqtcups-dev, cupsys-driver-gimpprint, cups-lpd and a2ps.  After more reading and some trial and error I discovered that the gimp-print driver for the C80 works.  The driver for the C83 (the last printer in this standard distribution) does not.

At the moment, the C80 driver is installed.  Printing works for text and graphics.  At some point in the future I might move the real C84 driver files to the proper places so they can be used and configure CUPS to use them.  For now, there are other more important projects.

Upgrade to 3.0r2

This upgrade, of more than 350 packages was done via apt-get over the net.  Everything went well with the exception that the X configuration file got wiped out (/etc/X11/XF86Config-4).  This is important as a specific mode line for the high resolution (1920x1200) had to be entered manually.  Backup this file before doing the upgrade!

Bookmark Management

Thousands of old bookmarks on multiple browsers and multiple computers demanded more than the flat files (html, xml or otherwise) supported by the different browsers.  After some research and finding that a php program called "Bookmarker" is already in the distribution, I decided to install it.  It turned out that the packaged version is 2.7 and has some problems.  The fact that it was the standard package was not important in the end since the real installation (in /var/www) had to be done manually.  After trials and tribulations with 2.7, I ended up getting the latest (2.8) from here. Before getting into the details of setting up bookmarker, it is important to note the requirements:
I already had PHP4 and PostgreSQL installed, as well as the web server.  Installing PHP3 conflicts with PHP4 so I ended up changing all the references to php3 in the bookmarker source to php (so that the server would know what to do). In addition to minor server configuration and the bookmarker configuration specified in the INSTALL file, that was all that was needed.  Still, all the configuration is manual: editing of the PHP code, individual steps to set up the database, etc...

Once all that is done, though, the result is worth it: instead of inserting new bookmarks in the browser's list, one click pops up a small window where you optionally enter additonal info, keywords, a category and sub-category, click done and the new bookmark is added to the database.  Tree and list views are available, as well as quite powerful search features.  And the bookmark database can be accessed from any net-connected computer.

What remains to be done, a little bit at a time, is to categorize all those bookmarks which had been just "added at the end" throughout the years.

Web Privacy / Ad Elimination

No browser should be without this proxy.  It stands between your browser and the ad-infested and privacy invading internet out there.  This great piece of software can be found at www.privoxy.org.  I started using it as a locally compiled program installed in /usr/local, but there is now a Debian package available (privoxy_3.0.2-0.1_i386.deb).

Kernel Upgrade

Since installing a customized kernel (installation is described here), new versions of the 2.4 kernel have been released.  Besides the security fixes, there was no real reason to upgrade except that the ndisdriver required at least version 2.4.23 to compile.  Some modules had been installed separately and thus manual compiling and configuration needed to be done for the following:
I took the opportunity to upgrade the last 3 items as all had newer versions available.  The config file is here.

Manual Broadcom ethernet driver upgrade

The link for the linux driver at www.broadcom.com is broken, so I got the equivalent source package from www.debian.org. Unfortunately, this source package depends on module-helper, which must be from another distribution as I don't have it.  After unpacking the source files (dpkg --extract .) It turns out that this version (3.0.7) doesn't compile.  Rather than debug this, I installed the old 2.0.0 driver for now.

Manual pctel modem driver upgrade

The same routine described above is necessary.  After the source code modification and the configure/make/make install, the modules load ok.  The upgraded pctel driver and ALSA still don't fix the interference problem between the sound device and the modem device.

Manual ALSA upgrade

Done exactly the same as described above with the new (1.0.1) files.  Sound worked after re-starting alsa.

Browser Improvement

Both Konqueror and Mozilla come with very basic functionality after installation.  In order to handle multi-media files, plugins have to be installed manually, as they don't come packaged the debian way.  I use Mozilla now as Konqueror had a tendency to lock up and crash on me.  So far, I have installed the Shockwave Flash plugin (6.0 r81), downloaded from macromedia and plugger 5.0, which handles an amazing number of multi-media formats.  However, the first test, with a midi file, failed.  A web search found this.  Yes, as I said previously, I'm running behind a proxy.  More to come...

Windows Elimination

Upon original installation, I had left /dev/hda2 (6 GB) for windows, in case I needed to test some hardware or find out about some hardware feature accessible only from windows.  I needed to use windows exactly once, to determine that a problem with the CD/DVD drive was actually a linux driver problem (see section about the CD/DVD drive above).  Since I have installed inn and get a semi-large news feed into the machine, I wanted to get /var/ into a separate partition.  I re-installed windows into the first partition of a second disk (in a second caddy) that I can slip in quickly if needed.

As no re-partitioning was needed, the process was quite simple (as root):

init 1                                    ; get into single user mode, stops all daemons
mkfs -text3 /dev/hda2                     ; make a file system on the ex-windows partition
mount -text3 /dev/hda2 /mnt               ; mount the new partition temporarily
cd /var                                   ; go to the original /var
find . -xdev -print | cpio -pdamv /mnt    ; move everything to the new partition
umount /mnt                               ; unmount the new partition
mv /var /var-old                          ; save the old /var
mkdir /var                                ; make the new /var/directory
chmod 755 /var                            ; make sure the permissions are right
mount -text3 /dev/hda2 /var               ; mount the new /var file system
init 2                                    ; return to multi-user mode


Even though these operations occur in single user mode, it is best to do everything between "umount /mnt" and "mount -text3 /dev/hda2 /var" quickly as the system does not have at that time a /var/ directory.  I put these commands into a script.  Only the find | cpio command takes a long time, but in single user mode nothing changed, as a "diff -R /var /var-old" proved.

Additionally, this needs to ba added to /etc/fstab:

/dev/hda2       /var            ext3    defaults                0       2


May 2004 - The Eclectic One that prefers to remain anonymous  <eclectic @ freeshell.org>