Je suis Charlie

Autres trucs


Seulement les RFC

Seulement les fiches de lecture

Mon livre « Cyberstructure »


My laptop Compaq Armada 1570

First publication of this article on 16 May 1999

I own a laptop, a Compaq Armada 1570, which runs Linux, and since it seems be a trend, I've set up this page to document how I've installed and configured it.

My main aim, when choosing to buy a laptop, was to have a machine during the training sessions I do, in various French-speaking countries in the Third-World.

These sessions are organized by various bodies, such as the IRD (ex-ORSTOM), the Internet Society or the AUPELF.

Their purpose is to teach, by practice, the setup and management of TCP/IP networks in these countries. The sessions are held in various places, hardware is often lacking, and it can be difficult for the teacher to have a machine... and to set ip up in the short delays. Hence, the laptop, configured in Paris and operated elsewhere.

Since I planned to bring the laptop in various places, not always safe, I wanted a second-hand machine, so it is not too expensive. Also, I did not want to arrive in poor countries with the latest multimedia gadget: we plan to demonstrate, in these teaching sessions, that you can setup a network server with a relatively small machine.

As a second-hand machine, it came with no documentation at all. So, I still do not understand some features.

But a good consequence is that everything is supported by Linux, which is not always the case with recent machines.

The choice of Linux was because of the above (the need to run on a middle-class config) and because I needed all the network tools, as well as some authoring tools like Emacs and LaTeX. So, this small machine is stuffed with all the network daemons (Apache, BIND, Squid, etc).

The Compaq Armada 1570 is no longer produced by Compaq so the only thing you can find about it is a PDF document.

The CPU is a 200 Mhz Pentium. The hard disk a 2 Gb IDE. The "mouse", a trackpad, has only two buttons, which is a pain for X11.

It seems to be Y2K-compliant :-)

My model has no CD-ROM drive. I do not own a modem card, at the present time. I added 16 megabytes of RAM (not a PCMCIA memory card, an internal memory chip) so I have now 32 Mb. I have an Ethernet card, an Accton (before that, I had D-link DE-660 which worked fine, too).

The output of dmesg is included here for more information:

Linux version 2.2.7 (root@laperouse) (gcc version egcs-2.91.60 Debian 2.1 (egcs-1.1.1 release)) #1 Fri May 7 19:51:49 CEST 1999
Detected 200462298 Hz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 399.77 BogoMIPS
Memory: 31116k/32768k available (672k kernel code, 408k reserved, 528k data, 44k init)
CPU: Intel Mobile Pentium MMX stepping 01
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
Intel Pentium with F0 0F bug - workaround enabled.
POSIX conformance testing by UNIFIX
PCI: PCI BIOS revision 2.10 entry at 0xf73a9
PCI: Using configuration type 1
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
Starting kswapd v 1.5 
Detected PS/2 Mouse Port.
pty: 256 Unix98 ptys configured
apm: BIOS version 1.2 Flags 0xf003 (Driver version 1.9)
OPTI621X: IDE controller on PCI bus 00 dev a0
OPTI621X: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0x1000-0x1007, BIOS settings: hda:pio, hdb:pio
hda: IBM-DYKA-22160, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: IBM-DYKA-22160, 2067MB w/90kB Cache, CHS=525/128/63
Partition check:
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 hda9 >
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 44k freed
Adding Swap: 100796k swap-space (priority -1)
Serial driver version 4.27 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS02 at 0x03e8 (irq = 4) is a 16550A
NET4: Unix domain sockets 1.0 for Linux NET4.0.
Linux PCMCIA Card Services 3.0.9
  kernel build: 2.2.7 unknown
  options:  [pci] [cardbus] [apm]
Intel PCIC probe: 
  TI 1131 PCI-to-CardBus at bus 0 slot 17, mem 0x7fffe000, 2 sockets
    host opts [0]: [ring] [pci + serial irq] [no pci irq] [lat 66/176] [bus 1/1]
    host opts [1]: [ring] [pci + serial irq] [no pci irq] [lat 66/176] [bus 2/2]
    ISA irqs (scanned) = 3,4,5,7,9,10 status change on irq 10
cs: IO port probe 0x1000-0x17ff: excluding 0x1008-0x100f
cs: IO port probe 0x0100-0x04ff: excluding 0x100-0x107 0x220-0x22f 0x250-0x257 0x330-0x337 0x378-0x37f 0x388-0x38f 0x408-0x40f 0x480-0x48f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean.

And /proc/pci contains:

PCI devices found:
  Bus  0, device   0, function  0:
    Host bridge: OPTi 82C701 FireStar Plus (rev 50).
      Medium devsel.  Fast back-to-back capable.  Master Capable.  No bursts.  
  Bus  0, device   1, function  0:
    ISA bridge: OPTi 82C700 (rev 49).
      Medium devsel.  Fast back-to-back capable.  Master Capable.  No bursts.  
  Bus  0, device  17, function  0:
    CardBus bridge: Texas Instruments PCI1131 (rev 1).
      Medium devsel.  Master Capable.  Latency=66.  Min Gnt=192.Max Lat=7.
      Non-prefetchable 32 bit memory at 0x7fffe000 [0x7fffe000].
  Bus  0, device  17, function  1:
    CardBus bridge: Texas Instruments PCI1131 (rev 1).
      Medium devsel.  Master Capable.  Latency=66.  Min Gnt=192.Max Lat=7.
      Non-prefetchable 32 bit memory at 0x7ffff000 [0x7ffff000].
  Bus  0, device  18, function  0:
    VGA compatible controller: Chips & Technologies Unknown device (rev 162).
      Vendor id=102c. Device id=f4.
      Medium devsel.  Fast back-to-back capable.  
      Non-prefetchable 32 bit memory at 0x40000000 [0x40000000].
  Bus  0, device  20, function  0:
    IDE interface: OPTi 82C825 Firebridge 2 (rev 48).
      Medium devsel.  Fast back-to-back capable.  Master Capable.  No bursts.  
      I/O at 0x1000 [0x1001].

The Compaq Armada has a set of function keys which are written in green on the keys and invoked with the Fn key. They are treated directly by the hardware and so works on Linux as well as on the other systems. For instance Fn-F9 gives you access to the monitor brightness tuning.

The big purple button is there to suspend the machine when you want to save the power.

There are also four dedicated keys at the upper left of the keyboard, which are labeled with a diamond and a digit. See Daniel Franklin page on how to set them up.

I've choosen Linux for the reasons mentioned before. It could have been FreeBSD, but I'm more used to Linux. And I wanted Debian since it is by far the easiest to manage (specially on the long term, when you install new stuff or upgrade) and because it emphasizes freedom and cooperation (all the other Linux distributions are commercial).

Apart from that, the software is typical of an Unix box. I use mostly:

  • Emacs as an editor (it's great to type SGML with the psgml mode and I love M-x doctor)
  • LaTeX and/or SGMLtools to produce documentations, exercice sheets, etc.
  • WML to produce Web pages and Lynx to test them
  • sendmail and Taylor-UUCP to manage email, mutt to read it.
  • etc

The whole stuff, including monsters like Emacs, X11 and LaTeX, takes 430 megabytes of hard disk.

To manage my various setups (at home, at work, travelling, etc), I use cardctl scheme and init. Here is (a part of) my inittab:

# The default runlevel.
# 4 : full blown configuration, for docking at the office or in any
#     other place where the power is abundant.
# 3 : X11 but no network daemons and no anacron. For work when
#     not connected to a power supply
# 2 : Minimum configuration: no X11 and no network daemons

(I document it in the LILO boot message, too.) And I use the symbolic links in /etc/rcN.d to decide that Squid should run in such level but not the others. For instance, I configure BIND like this:

laperouse:/>   ls -l /etc/rc[0-9].d/*bind*
lrwxrwxrwx   1 root     root           14 May  1 20:15 /etc/rc0.d/K19bind -> ../init.d/bind
lrwxrwxrwx   1 root     root           14 May  1 20:15 /etc/rc1.d/K19bind -> ../init.d/bind
lrwxrwxrwx   1 root     root           14 May  1 20:15 /etc/rc2.d/K19bind -> ../init.d/bind
lrwxrwxrwx   1 root     root           14 May  1 20:15 /etc/rc3.d/K19bind -> ../init.d/bind
lrwxrwxrwx   1 root     root           14 May  1 20:15 /etc/rc4.d/S19bind -> ../init.d/bind
lrwxrwxrwx   1 root     root           14 May  1 20:15 /etc/rc5.d/S19bind -> ../init.d/bind
lrwxrwxrwx   1 root     root           14 May  1 20:15 /etc/rc6.d/K19bind -> ../init.d/bind

So, BIND starts only at level 4 and stops when I go to level 2 or 3 (for instance with a telinit 3).

I installed the Debian distribution easily, with two floppy disks as initial media (one for booting and one for the drivers, which was necessary because I wanted to use NFS next) and a local mirror on the network as the next medium. To reach the local mirror, I used NFS over my Ethernet PCMCIA card. No problem for the Debian system. Of course, it is better to read the installation guide, which has a section on PCMCIA devices (no special tricks were necessary, the controller is a i82365).

Once the base system installed, with NFS, I quit dselect immediately and everything was installed by apt-get. That way, I'm sure I will only get the minimum I wanted and I still benefit from the dependencies management.

For disk partitioning, I wanted to keep the MS-Windows stuff which came with the computer and Compaq reserves a partition, which has the number 3 but is the first one, for various test tools. So, it leaved one primary partition for Linux swap and another one to be split into extended partitions for the various Linux stuff.

fdisk -l reports:

Disk /dev/hda: 128 heads, 63 sectors, 525 cylinders
Units = cylinders of 8064 * 512 bytes

   Device Boot   Start      End   Blocks   Id  System
/dev/hda1   *        2      107   427392    c  Win95 FAT32 (LBA)
/dev/hda2          108      132   100800   82  Linux swap
/dev/hda3            1        1     4000+  12  Unknown
/dev/hda4          133      524  1580544    5  Extended
/dev/hda5          133      140    32224+  83  Linux native
/dev/hda6          141      151    44320+  83  Linux native
/dev/hda7          152      175    96736+  83  Linux native
/dev/hda8          176      302   512032+  83  Linux native
/dev/hda9          303      524   895072+  83  Linux native

And, after filling the disk with the things I need, df showed:

Filesystem         1024-blocks  Used Available Capacity Mounted on
/dev/hda5              31199   28240     1348     95%   /
/dev/hda6              42909      16    40677      0%   /tmp
/dev/hda7              93663   30158    58669     34%   /var
/dev/hda8             495714  407389    62724     87%   /usr
/dev/hda9             866251  559742   261756     68%   /home
/dev/hda1             423252  408784    14468     97%   /C

At the time of this writing, I use kernel 2.2.7 with this .config file. Since I love compiling, I compiled PCMCIA Card Services as well but it wasn't necessary, the Debian package works fine (I currently use version 3.1.8). I tried kernel 2.2.17 but APM is too horribly broken with it (suspending hangs the machine much too often).

APM seems to work fine with this kernel and the Debian package of the apmd daemon. I can:

  • Power off when shutting down,
  • Suspend the machine with the purple button (the clock is properly set when resuming),
  • Automatically suspend when the battery is low.

During a typical Web editing session, running Emacs, WML and Lynx, I can run almost two hours with the current battery.

I use apm -v or xapm to see the state of the battery. But it is also possible to use the Compaq function key Fn-F8.

When running at init level 4, programs like Squid seems to prevent suspension when they start. After a few minutes, it works fine.

It seems the machine still uses power when suspended: if I let it in suspension without on-line power, it shuts down completely, triggering a fsck at the next resume. This seems to be, besides the blinking LED :-), because you need power to save the RAM memory (it is apparently not backed up to disk).

To save more power, I mount all the disks with the 'noatime' option. I lose the information about file access time but I limit the number of disk writes. Here is an example in /etc/fstab:

/dev/hda7 /var ext2 defaults,noatime 0 2

I also use the mobile-update program, to sync in a more intelligent way. It seems to work fine (I didn't make very serious measurements.)

The PCMCIA subsystem made no difficulty, because I needed nothing special. Here is the pcmcia.conf:

# This file was automatically generated during the Debian installation
# Should be either i82365 or tcic
# Put socket driver timing parameters here
# Put pcmcia_core options here
# Put cardmgr options here

The machine, like many laptops, can be attached to several networks. I use the cardctl scheme system to change from one setup to the other.

Debian startup files clear /var/run at startup, so the scheme is not saved between reboot. The fact that scheme information is not saved is a bug, fixed in Debian 2.2 ('potato') which was reported as Debian bug #37685. You can live with it or edit /etc/init.d/ (go ahead, it is flagged as a configuration file, you will not loose your changes at the next upgrade) to exclude pcmcia-scheme.

Here is my network.opts. The default is no connection:


case "$ADDRESS" in

	# Use BOOTP [y/n]

	# Use BOOTP [y/n]

# Default or unrecognized schemes
	# Use BOOTP [y/n]

My Ethernet card is a PCMCIA one. I like the fact that the attached transceiver has two connectors: one 10baseT and one BNC, so I can increase my chances to find a suitable attachment point. The kernel sees it that way:

eth0: NE2000 Compatible: port 0x300, irq 3, hw_addr 00:80:C8:8B:F4:41

And /var/run/stab contains:

Socket 1: D-Link DE-660 Ethernet
1       network pcnet_cs        0       eth0

Thanks to PCMCIA, there is nothing special to configure: the right module is loaded automagically.

Since the machine is not permanently connected, I use UUCP, so I can easily send mail even when not connected. Once linked to the Internet, I uucico -s mypartner.

My sys file:

system mypartner
time any
call-login *
call-password *
chat "" \d\d\r\c ogin: \d\L word: \P
port TCP
protocol i

And my

define(`confSERVICE_SWITCH_FILE', /etc/mail/service.switch)dnl
dnl FEATURE(nodns)dnl
FEATURE(mailertable, `hash /etc/mail/mailertable')dnl
define(`UUCP_MAX_SIZE', 2000000)dnl

The mailertable being:

.    uucp-dom:mypartner

The box uses a Chips & Technologies 68554 graphic adapter. I use it with the Xfree86 SVGA server (release 3.3.2 is enough). You can see my XF86Config. At the present time, I drive the screen at 800x600 pixels, 8 bits per pixel.

My keyboard is a French AZERTY, but I use the keyboard maps of the French-HOWTO, not the original one shipped with Debian.

(This is not really a X matter but I repeat a small trick: in text mode, Fn+T seems the only way to make the Compaq Armada use its whole screen.)

At startup, the X server says:

XFree86 Version / X Window System
(protocol Version 11, revision 0, vendor release 6300)
Release Date: July 15 1998
	If the server is older than 6-12 months, or if your card is newer
	than the above date, look for a newer version before reporting
	problems.  (see http://www.XFree86.Org/FAQ)
Operating System: Linux 2.0.36 i686 [ELF] 
Configured drivers:
  SVGA: server for SVGA graphics adaptors (Patchlevel 0):
      s3_svga, ct65520, ct65525, ct65530, ct65535, ct65540, ct65545,
      ct65546, ct65548, ct65550, ct65554, ct65555, ct68554, ct64200,
      ct64300, generic
(using VT number 7)

XF86Config: /etc/X11/XF86Config
(**) stands for supplied, (--) stands for probed/default values
(**) XKB: keycodes: "xfree86"
(**) XKB: symbols: "french(pc102)"
(**) XKB: geometry: "pc(pc102)"
(**) XKB: model: "pc102"
(**) XKB: layout: "french"
(**) Mouse: type: PS/2, device: /dev/mouse, buttons: 3
(**) Mouse: 3 button emulation (timeout: 50ms)
(**) SVGA: Graphics device ID: "Interne"
(**) SVGA: Monitor ID: "Integre"
(**) FontPath set to "/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/75dpi/:unscaled,/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/Speedo/,/usr/X11R6/lib/X11/fonts/75dpi/"
(--) SVGA: PCI: C&T 68554 rev 162, Memory @ 0x40000000
(--) SVGA: Chipset: ct68554 
(--) SVGA: CHIPS: no monitor detected.
(--) SVGA: CHIPS: 1024 kB VRAM
(--) SVGA: CHIPS: DD-STN probed.
(--) SVGA: CHIPS: Display Size: x=800; y=600
(--) SVGA: CHIPS: Frame Buffer used.
(--) SVGA: CHIPS: Using embedded Frame Buffer.
(--) SVGA: CHIPS: Frame Accelerator Enabled.
(--) SVGA: CHIPS: base address is set at 0x40000000.
(--) SVGA: CHIPS: Linear addressing is enabled at 0x40000000.
(--) SVGA: CHIPS: Internal DAC disabled.
(--) SVGA: CHIPS: using programmable clocks.
(--) SVGA: CHIPS: probed memory clock of 50113 KHz
(--) SVGA: chipset:  ct68554
(--) SVGA: videoram: 1024k
(**) SVGA: Using 8 bpp, Depth 8, Color weight: 666
(--) SVGA: Maximum allowed dot-clock: 70.158 MHz
(--) SVGA: There is no mode definition named "1024x768"
(--) SVGA: Removing mode "1024x768" from list of valid modes.
(**) SVGA: Mode "800x600": mode clock =  40.000
(**) SVGA: Mode "640x480": mode clock =  31.500
(--) SVGA: Virtual resolution set to 800x600
(--) SVGA: SpeedUp code selection modified because virtualX != 1024
(--) SVGA: CHIPS: 453376 bytes off-screen memory available
(--) SVGA: CHIPS: H/W cursor selected
(--) SVGA: CHIPS: SpeedUps selected (Flags=0xF)
(--) SVGA: CHIPS: Memory mapped I/O selected
(--) SVGA: Using XAA (XFree86 Acceleration Architecture)
(--) SVGA: XAA: Solid filled rectangles
(--) SVGA: XAA: Screen-to-screen copy
(--) SVGA: XAA: 8x8 pattern fill
(--) SVGA: XAA: 8x8 color expand pattern fill
(--) SVGA: XAA: CPU to screen color expansion (bitmap, TE/NonTE imagetext, TE/NonTE polytext)
(--) SVGA: XAA: Using 6 128x128 areas for pixmap caching
(--) SVGA: XAA: Caching tiles and stipples
(--) SVGA: XAA: Horizontal and vertical lines and segments

The sound chip seems to be 100 % compatible with the SoundBlaster, without the restrictions emphasized in Documentation/sound/README.OSS (in the Linux kernel sources) under the title "THE BIGGEST MISTAKES YOU CAN MAKE".

So, I use the kernel compilation options:

  • <M> Sound card support
  • <M> OSS sound modules
  • <M> 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support

And I load the sb driver with the kernel module loader, kmod. The options are (I found them by looking at their values from MS-Windows 98, which is faster than trial-and-error):

alias char-major-14 sb
options sb io=0x220 irq=5 dma=1

If you use at least Debian 2.1 ("slink") you should no longer edit /etc/conf.modules directly. Instead, put the above options in a file in /etc/modutils such as sound and run update-modules.

When loading the driver, the kernel messages are:

Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
SB 3.01 detected OK (220)

And the program say can play '.au' or '.wav' files without trouble.

The two grey buttons on the right side of the machine works fine to control the volume.

The Linux laptop page is a very good starting point and includes a wonderful list of Web services (like the one you are just reading) presenting a setup of a specific laptop. Because each laptop model is really special, this is extremely useful.

Front view, open. Closest from you, the touchpad with its two buttons. At the top of the keyboard, the Suspend button (purple) compaq-armada-1570-front.jpg

Rear view, closed. From left to right, the serial port, the parallel port (untested, but I had reports it works fine on Linux), an external video port (it works fine for a presentation, although I have to suspend/resume when switching from internal from or to external video, and I cannot use both videos at the same time), the power plug, with an unknown connector above, the fan output, the infrared port (untested), and a keyboard plug (untested but I had reports it works fine) compaq-armada-1570-back.jpg

The PCMCIA slots and the floppy drive are on the left side of the machine.

In 2009, the machine still works and is used for tests.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)