Linux on the Compaq Armada 1540D

Here I describe the installation, configuration and running of Linux on my laptop.  I hope this is of use to somebody.

Well, I've finally got around to updating this page. I have been happy to receive many e-mails about this page and I'm sorry I haven't responded personally to all of them. I am indicating major updates to this page by striking out old text and inserting new underneath sometimes in italics.

Index

 Installation     Ethernet/Networking     Audio     X-Windows     Conclusion

Installation

Partitioning

Before starting to install Linux I had to decide how I was going to use the machine on a day-to-day basis. I decided that I really wanted to do as much as possible in a Linux environment, but that I would need a minimal Windoze 95 set-up in order to run a couple of key applications from time to time. The machine will be used in two different offices and also at my 'home-office' so a variety of networking options are required.

Well things are slowly changing for me here. With stable KDE and StarOffice for those gruesome times when I really have to `process words' I hardly ever resort to Windoze now. My only DOS-based vices these days are a couple of flight simulators...

The machine came with no disks, but a pre-installed recent version of Windoze 95 - fortunately the old DOS style file system had been used and no compression had been turned on; an awful situation for those Windoze users out there, but ideal for would-be Linuxers!

I rebooted into DOS mode, ran up fips, and split the disk from its original two partitions (Compaq put their diagnostics on a small partition at the start of the disk) into four...

  1. Compaq diagnostics (c.20Mb)
  2. DOS/Windows 95 (c.700Mb)
  3. Linux (c.1200Mb)
  4. Linux swap (92Mb)

RedHat 4.2

I had a RedHat 4.2 CD available and decided to use it. I have been a Slackware user for years so this was a bit of an experiment - I'm not sure if I'd do it again, but that's another story.

RedHat installed very quickly off the CD-ROM -which it recognised as /dev/hdb.

Annoyingly, even though I took most of the 'development' -style configuration options, the install procedure did not install the kernel source (2.0.30). This is a shame as RedHat takes the approach of building everything possible into the kernel or modules; the result is not an optimal kernel by a long chalk.

Once I got the machine up and running I went back and installed the kernel source RPM. I rebuilt the kernel with just the drivers I need. The important bits were to include the "PS/2 Mouse", turn on all APM support, turn on TCP/IP networking (but install no card drivers), and enable the PPP module.

Slackware 3.4

I finally got fed up with RedHat (some expression about old dogs and new tricks springs to mind!) and, after backing everything up with my trusty SparQ, did a fresh install.

Maybe I'm just more used to it, but the few extra keystrokes involved during the Slackware install resulted in a substantially more compact setup. I reckon that for the same requested functionality the new installation consumes about 65% of the RedHat one.

See below for my lilo.conf file.

Memory

My machine has an extra 16Mb, giving a total of 32Mb. Initially Linux did not find the second 16Mb (you can see this easily by running top and looking at the "Mem" figure - for 32Mb it should read about 31111K av.
A simple addition to my /etc/lilo.conf file fixed this. Here is the complete file for my old RedHat setup...
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
image=/boot/zImage
        label=linux
        root=/dev/hda2
        append="mem=32M"
        read-only
image=/boot/zImage-old
        label=oldlinux
        root=/dev/hda2
        append="mem=32M"
        read-only
other=/dev/hda1
        label=DOS
        table=/dev/hda

Here is the one I now use with Slackware 3.4...
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
append="mem=32M"
boot = /dev/hda
#compact        # faster, but won't work on all systems.
delay = 50
vga = extended    # force sane state
# ramdisk = 0     # paranoia setting
# End LILO global section
# Linux bootable partition config begins
image = /vmlinuz
  root = /dev/hda2
  label = Linux
  read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends
# DOS bootable partition config begins
other = /dev/hda1
  label = DOS
  table = /dev/hda
# DOS bootable partition config ends        
# DOS bootable partition config begins
other = /dev/hda3
  label = DIAG
  table = /dev/hda
# DOS bootable partition config ends 

Note that I prefer Linux over Windoze, so it comes first in the list; and I try out bleeding-edge kernels from time to time, so a backup boot option is essential [;-)

I am currently running kernel 3.0.35 - a 'classic' release in my opinion, and it is rock solid.

Power Saving

I don't use the machine much on batteries, but I did install the hdparm package in order to spin down the disk after (20 40 seconds) inactivity. I had to kill off a few useless daemons to make this viable (sendmail and crond crond is differently configured under Slackware and there is no need to disable it), but I think this has greatly extended the battery life. I have the line: hdparm -S 4 -X 34 /dev/hda2 in my rc.local file. N.B. this command also speeds up the disk significantly - very noticeable during kernel compiles [;-)

I spent a bit of time playing with the hdparm command. After much experimentation I have arrived at this setting: hdparm -c 1 -S 4 -X 34 -K 1 /dev/hda which lives both in my rc.local file and in a script called 'speed' which I run manually after a resume from suspended mode.

Ethernet PCMCIA Card and Networking

PCMCIA

I grabbed the pcmcia-cs-2.9.11 package and built the whole thing without problems. I am now on version pcmcia-cs-3.0.3 which was just as easy to build and install.

Ethernet Card

My ethernet card is a Xircom CreditCard Ethernet 10/100-Upgradable. It is supported well by the i82365 module in the pcmcia package.

ISDN TA

At home I use a US Robotics TA via the COM port.

Addressing and Routing

Audio

Sound is working well, I have used various packages including Netscape, RealAudio and RoseGarden. Here is the sound section of my .config file...
# Sound
#
CONFIG_SOUND=m
# CONFIG_PAS is not set
CONFIG_SB=y
CONFIG_ADLIB=y
# CONFIG_GUS is not set
# CONFIG_MPU401 is not set
# CONFIG_UART6850 is not set
# CONFIG_PSS is not set
# CONFIG_GUS16 is not set
# CONFIG_GUSMAX is not set
# CONFIG_MSS is not set
# CONFIG_SSCAPE is not set
# CONFIG_TRIX is not set
# CONFIG_MAD16 is not set
# CONFIG_CS4232 is not set
# CONFIG_MAUI is not set
CONFIG_AUDIO=y
CONFIG_MIDI=y
CONFIG_YM3812=y
SBC_BASE=220
SBC_IRQ=5
SBC_DMA=1
SB_DMA2=5
SB_MPU_BASE=330
SB_MPU_IRQ=-1
DSP_BUFFSIZE=65536
# CONFIG_LOWLEVEL_SOUND is not set

X Windows

XFree86

You will need to get at least version 3.3.13.3.2 - earlier versions will not work usefully. I have rewritten the following section completely...

The video chip used in this Armada is the new C&T 68554, it is supported by the SVGA driver that comes with versions of XFree from 3.3.1 upwards - however, the initial support in 3.3.1 is not reliable, you really want a later version.

The memory is wrongly detected so you should specify 2048K. Below is my configuration file.

# See 'man XF86Config' for info on the format of this file

Section "Files"
   RgbPath    "/usr/X11R6/lib/X11/rgb"
   FontPath   "/usr/X11R6/lib/X11/fonts/misc:unscaled"
   FontPath   "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
   FontPath   "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
   FontPath   "/usr/X11R6/lib/X11/fonts/Type1"
   FontPath   "/usr/X11R6/lib/X11/fonts/Speedo"
   FontPath   "/usr/X11R6/lib/X11/fonts/misc"
   FontPath   "/usr/X11R6/lib/X11/fonts/75dpi"
   FontPath   "/usr/X11R6/lib/X11/fonts/100dpi"
EndSection

Section "ServerFlags"
EndSection

Section "Keyboard"
   Protocol        "Standard"
   XkbRules        "xfree86"
   XkbModel        "pc101"
   XkbLayout       "gb"
EndSection

Section "Pointer"
   Protocol        "PS/2"
   Device          "/dev/mouse"
   Emulate3Timeout 50
   Resolution      100
   Buttons         3
   Emulate3Buttons
EndSection
                     Section "Monitor"
   Identifier      "Primary Monitor"
   VendorName      "Unknown"
   ModelName       "Unknown"
   HorizSync       31-95
   VertRefresh     50-130
   Modeline "1024x768"    65    1024 1032 1176 1344   768  771  777  806 -hsync -vsync

# 1152x864 @ 60 Hz, 53.5 kHz hsync
   Modeline  "1152x864"   89.9  1152 1216 1472 1680   864  868  876  892 -HSync -VSync
   Modeline  "800x600"    50.00 800 856 976 1040 600 637 643 666 +hsync +vsync
# 1024x768 @ 70 Hz, 56.5 kHz hsync
Modeline "1024x768"    75    1024 1048 1184 1328   768  771  777  806 -hsync -vsync

# 1024x768 @ 76 Hz, 62.5 kHz hsync
Modeline "1024x768"    85    1024 1032 1152 1360   768  784  787  823
# 1152x864 @ 70 Hz, 62.4 kHz hsync
Modeline  "1152x864"   92    1152 1208 1368 1474   864  865  875  895

# 1024x768 @ 85 Hz, 70.24 kHz hsync
Modeline "1024x768"   98.9  1024 1056 1216 1408   768 782 788 822 -HSync -VSync
# 1152x864 @ 78 Hz, 70.8 kHz hsync
Modeline "1152x864"   110   1152 1240 1324 1552   864  864  876  908



EndSection    Section "Device"
   Identifier      "Primary Card"
   VendorName      "Unknown"
   BoardName       "Chips & Technologies CT68554"
   VideoRam        2048
Chipset "ct68554"
DacSpeed 90.000
 MemBase 0x40000000
# Device section for C & T cards.
 Option "suspend_hack"
 Option "mmio"

EndSection

Section "Screen"
   Driver          "SVGA"
   Device          "Primary Card"
   Monitor         "Primary Monitor"
   DefaultColorDepth 16
   SubSection "Display"
      Depth        8
      Modes        "1152x864" "1024x768" "800x600"
   EndSubSection
   SubSection "Display"
      Depth        15
      Modes        "800x600"
   EndSubSection
   SubSection "Display"
      Depth        16
      Modes        "1152x864" "1024x768" "800x600"
   EndSubSection
   SubSection "Display"
      Depth        24
      Modes        "800x600"
   EndSubSection
EndSection       

Note that I have introduced a neat trick above! For my nice 17" monitor I start X with no options and get the default 16-bit 1152x864 display - but when using the LCD screen I specify a 15-bit display (startx -- -bpp 15) and get the correct 800x600 resolution automatically. This saves having to have 2 XConfig files.

I have two outstanding issues regarding X though: (i) although the suspend button works fine, when I come out of X the screen goes blank, I have found that this does not happen if an external monitor is connected! - also suspending and unsuspending the system restores the test display; (ii) I tried 2.0.32 kernel and X no longer works (display is very corrupted) - very odd!

All those problems are solved in 3.2.2 onwards.

KDE

I am running Beta 2 version 1 of KDE on the laptop - it is a joy to use and quite stable enough for everyday use; check out their website.

Conclusion

I'm very happy with my 1540, the display is good, I soon got used to the keyboard, and it runs Linux just fine.

It has become my 'main' machine and gets used a lot in a variety of environments. I don't think any other hardware and software combination could do the job so well.

I would welcome any updates for this page please mail me at steve@cygnet.co.uk.