Debian GNU/Linux on the Dell Latitude C400
This document started off early in 2002 when I installed Redhat 7.2 on the C400. I've been through several Redhat versions since 3.0.3 but, after enduring a hard disk crash, I decided for a number of reasons that Debian was the way to go.
Disclaimer: This document comes with no guarantees. The steps I followed worked for me but may not necessarily work for you or your hardware.
Configuration
- Debian 3.0r1 Woody
- recompiled 2.4.18 kernel
- no Windows installation (see later)
- PIII-M 866MHz CPU
- 1x 256Mb RAM
- A09 BIOS
- Crystal 4205 audio
- 3c905C-TX FastEthernet adapter (built-in)
- A09 BIOS
- 10Gb Toshiba MK1517GAP
- TrueMobile 1150 wireless (optional)
Installation
Partitioning the disk
The replacement drive was empty. The first step was to create a 768Mb save-to-disk (s2d) partition using mks2d.exe on the disk from Dell. The reason for choosing this size is that I intend adding another 512Mb RAM at some point in the future. Dell recommends that you set it up as 768Mb * 1.01 + 4Mb on the first partition so it's at a little over 800Mb now.
/dev/hda2 is set up as 50Mb boot partition (probably overkill here) and the remainder the root partition. No swap partition required at this stage as I've found swapfiles to be quite adequate in the past.
Installing Debian
This was pretty easy following the menus. Booting using the bf24 option allows you to install the ext3 filesystem.
Post-install
Configuration
This has always been a bit of a Redhat weakness in my opinion. Just as linuxconf was getting really useful they seem to have lumped it all in an gone for the more user friendly guified model of the redhat-config suite. Not that GUIs are a bad thing, mind you. It's just that they can become quite annoying when the underlying infrastructure is obfuscated.
This is where I came to appreciate Debian's relative simplicity. Instead of spreading the network interface configuration over multiple files in several directories, there is just one - /etc/network/interfaces
The dselect package took a little getting used to but it does the job of post-setup package installs quite well in conjunction with other tools like apt-get and friends.
Recompiling the kernel
Thanks to the joys of make menuconfig and make xconfig this is no longer such a bore. Here is a copy of my .config for the 2.4.18 kernel
i8kutils
The i8kutils package is a collection of tools which can control various Dell specific functionality such as the fan(s) and custom keyboard buttons when used in conjunction with the i8k kernel module. The module is installed at startup by adding it to the list in /etc/modules. They were initially created for the Inspiron 8000 series but will work with most other Dell laptops (a list is provided in the package.)XFree86
The default version installed for Debian 3.0 stable is XFree86 4.1 so upgrading to 4.2 from Debian testing is required along with the latest i830 drivers from Intel. Instructions are on that page.
Intel i830 support is now included as of XFree86 4.3.
There is an good history of the problems associated with the Intel i830 chipset support and excellent instructions and links on Manuel Chakravarty's C400 page. Another patch I have used with Redhat 7.2 is on Jon Gans' Gateway page
Wireless network
The TrueMobile 1150 wireless mini-PCI card is factory installed and looks to the system like a card in a second PCMCIA slot. The card is based on the Hermes chipset and the orinoco_cs driver should be used.
With Redhat 7.2 there was much mucking around with both the kernel-pcmcia and pcmcia-cs versions but I eventually settled on the latter. After one too many suspend/resume cycles, the kernel-pcmcia would stop recognising the card and it would default to "Anonymous Memory". This could only be cured by rebooting. I'm not sure if this remains the case with Debian as I've now stayed with pcmcia-cs.
The version of orinoco_cs supplied with pcmcia-cs-3.1.33 is 0.09b which is a little out of date. I now use the orinoco-0.13e drivers. All this involved was copying over the equivalent files in the /usr/src/pcmcia-cs-3.1.33/wireless directory and recompiling/reinstalling.
Now despite using the same versions of the kernel, driver and wireless tools on both Redhat and Debian installs there seem to be significant performance improvements in network speed. Gnome based tools such as gnucash and jpilot were so slow when used via a remote X server that they were unusable. Removing ssh tunnelling and WEP encryption had a neglible effect. You could conclude that this had something to do with differing versions of gtk but ttcp now shows the raw network speed to be almost 3 times what it was previously. Go figure
Wireless Access Point
The base station is a venerable 256MB Pentium 233, which doubles as an X server and Internet gateway. The wireless PCMCIA card is a Netgear MA401 in a Netgear MA301 PCI adaptor (PLX based.) Initially I used the card in Ad-hoc mode with the wlan-ng drivers but it seems that Prism 2 based cards have problems when run in Ad-hoc mode. Network speed was blindingly slow and the orinoco drivers generated an unsual number of "Tx excessive retries" messages. It was the findings on Jim Carter's wireless page that led me to try the hostap drivers and I'm now on version host-0.0.4. These take advantage of the Prism 2 firmware to place it in managed mode. To the laptop it looks just like an Access Point.
Ongoing
IrDA
Works out of the box using Debian and connects to a Palm III without complaint. Synchronize and restore from jpilot work well. In the BIOS setup, the IR port is set to COM2 and the IR mode to SIR (slow) which enables connections up to 115200 baud. In /etc/irda.conf, IRDADEV=/dev/ttyS1.
I used the GPRS-HOWTO along with Mikko Rapeli's instructions to set up GPRS for the Nokia 6100. It's never going to beat a WiFi link but is a neat solution for mobile e-mail.
Of interest is that the 6100's modem (AT terminal) interface was not usable via IrDA until I first set it up using the Windows drivers.
Gnokii 0.5.1 connects to a Nokia 7110 via IrDA faultlessly but I've had no joy yet with the Nokia 6100.
Sound
This was working with the ESD drivers under Redhat 7.2. All that is required under Debian is to add these lines into /etc/modules.
ac97_codec i810_audio options i810_audio clocking=48000
The next step is to get the KDE aRts sound server to work with it.
PCTel Modem
Still ongoing as I've no real requirement for it at the moment. Try the latest PCTel drivers and their instructions.
Outstanding Issues
- Cannot charge battery while lid is shut and machine suspended. This no longer seems to be the case after the A09 BIOS upgrade.
- Time keeping is a problem. Since upgrading from A01 to A04 there are problems with battery monitors affecting the system clock. Even ntp is unable to adjust the clock effectively enough to keep time. The trick is to run adjtimex -tick 10099. The system is now able to maintain accurate time using an intermittently available ntp source. A number of similar solutions have been documented on the linux-dell-laptops mailing list including some for non-ntp connected systems.
- The infamous all-fans-on mode is also well documented on the mailing list. Also noticed after the upgrade to A04 and persisting in A09. Like the time keeping, this afflicts a number of different laptop models. Occasionally, after a resume from suspend, the indicated CPU temperature will shoot up to 85 and the single fan will spin at full speed. All that is required is to simply reset the on-chip temperature sensor using "Fn-Z".
- On board ethernet disappears following restore from disk.????