Home

Linux On Laptops TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones

Debian Etch (4.0) on Compaq Armada M700

Introduction

The hardware

BIOS settings

Connecting to networks

Useful packages

laptop-net

ifplugd

apmd

acpid

isapnptools

hibernate

laptop-mode

irda-utils

Basic XFree86/Xorg configuration

Kernel configuration

Enabling powersaving features

APM support

ACPI support

CPU frequency scaling

CPU throttling

Userspace software suspend (uswsusp)

Software suspend (swsusp)

Software suspend 2 (swsusp2)

Blanking the screen in xorg

Upgrading the hardware and connecting external devices

Getting more memory

Wireless LAN (802.11b/g) cards

External mice

Introduction

I've bought two of these laptops - first one fo my granny, then another (faster) one for myself. Though the laptops were not new, they were business models with only good quality, sturdy components. They are classed as ultraportables (whatever that means), weighing about 2.3 kilograms. Luckily for me both laptops had been previously used only in an office with AC adaptors. This meant that the lithium ion batteries were in good condition. In my tests they lasted about 2.5 - 3.0 hours on relatively light load.

My laptop did not have any operating system installed, nor did I receive any "Rescue / Recovery" -CD's. I didn't mind that because I have not used Windows for quite a long time on any of my computers. There are several (3) manuals available for this laptop from HP/Compaq website. They are quite useful even for a linux user.

The hardware

As a Linux-user I prefer components that comply to standards. All components in this laptop seem to be standard hardware. I've had no need to install any proprietary drivers or anything similar. Everything has worked as expected. Only the modem seems to be a winmodem, but I have no use for it, even though drivers are available and I have tested that they work.

My laptop is a 800Mhz P3 with 256MB RAM and 10GB harddrive. My granny has a 450Mhz P3, 128MB RAM and 6GB harddrive. In other aspects they are identical. You can obtain all technical information from here or by googling "Compaq Armada M700".

Below I have listing of all PCI hardware onboard. Some hardware, such as IrDA uses ISA bus so it does not show here.

localhost:/home/samuli# lspci

0000:00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
0000:00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
0000:00:04.0 CardBus bridge: Texas Instruments PCI1450 (rev 03)
0000:00:04.1 CardBus bridge: Texas Instruments PCI1450 (rev 03)
0000:00:07.0 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
0000:00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
0000:00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
0000:00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 03)
0000:00:08.0 Multimedia audio controller: ESS Technology ES1978 Maestro 2E (rev 10)
0000:00:09.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 09)
0000:00:09.1 Serial controller: Lucent Microelectronics LT WinModem
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Rage Mobility P/M AGP 2x (rev 64)

Following modules are loaded on my 2.6.16 vanilla kernel. With these loaded pretty much everything should work. The output is roughly the same on older 2.6.8 and 2.6.13 kernels.


localhost:/home/samuli# lsmod
Module                  Size  Used by
irda                  185916  0 
crc_ccitt               1696  1 irda
button                  4688  0 
uhci_hcd               28432  0 
rt2400                 82656  0 
psmouse                37192  0 
fuse                   32748  0 
nls_iso8859_1           3712  0 
nls_cp437               5376  0 
vfat                   10304  0 
fat                    46524  1 vfat
sd_mod                 12848  0 
usb_storage            31364  0 
scsi_mod               82988  2 sd_mod,usb_storage
af_packet              16296  0 
parport_pc             31760  1 
lp                      9184  0 
parport                33640  2 parport_pc,lp
thermal                10312  0 
fan                     3076  0 
processor              17152  1 thermal
ac                      3204  0 
battery                 7332  0 
eepro100               26672  0 
ipt_LOG                 6112  2 
xt_tcpudp               3104  4 
xt_state                1568  19 
iptable_filter          2176  1 
ip_tables              10200  1 iptable_filter
x_tables                9796  4 ipt_LOG,xt_tcpudp,xt_state,ip_tables
ip_conntrack_tftp       3124  0 
ip_conntrack_irc        5016  0 
ip_conntrack_ftp        5820  0 
ip_conntrack           41976  4 xt_state,ip_conntrack_tftp,ip_conntrack_irc,ip_conntrack_ftp
speedstep_lib           3684  0 
cpufreq_conservative     5572  0 
cpufreq_powersave       1376  0 
cpufreq_userspace       2996  0 
rtc                     9748  0 
serport                 3168  0 
sermouse                4736  0 
pcmcia                 31452  0 
crc32                   3904  1 pcmcia
evdev                   7712  0 
snd_es1968             22628  1 
snd_ac97_codec         93760  1 snd_es1968
snd_ac97_bus            1728  1 snd_ac97_codec
snd_pcm_oss            47200  0 
snd_mixer_oss          15936  2 snd_pcm_oss
snd_pcm                75816  3 snd_es1968,snd_ac97_codec,snd_pcm_oss
snd_timer              18948  1 snd_pcm
snd_page_alloc          8360  2 snd_es1968,snd_pcm
snd_mpu401_uart         5664  1 snd_es1968
snd_rawmidi            19552  1 snd_mpu401_uart
snd_seq_device          6924  1 snd_rawmidi
snd                    44096  9 snd_es1968,snd_ac97_codec,
snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,
snd_mpu401_uart,snd_rawmidi,snd_seq_device
i2c_piix4               7440  0 
usbcore               111552  3 uhci_hcd,usb_storage
soundcore               6912  2 snd
i2c_core               16688  1 i2c_piix4
yenta_socket           23628  2 
rsrc_nonstatic         11392  1 yenta_socket
pcmcia_core            34224  3 pcmcia,yenta_socket,rsrc_nonstatic
intel_agp              21020  1 
agpgart                26160  1 intel_agp
e100                   31300  0 
mii                     4832  2 eepro100,e100
unix                   22480  145

Bios settings

This laptop's BIOS is rather limited. You can only customize very basic things. If your M700 has "Intel Speedstep" support, you might want to set it to automatic in BIOS. Check "Cpu Frequency Scaling" below for more information. I have set "Processor number" to "disable", even though I have no idea what it does :). It seems that there is no way to control powersave timeouts from the BIOS. As powersave modes can be initiated manually, this is not in my opinion a big problem.

Connecting to networks

This laptop has lots of ways to connect it to a network:

As this laptop model has two Cardbus slots, connecting to the outside world should newer become a serious problem. I've tried using three network interfaces (the built-in and two cardbus cards) simultaneously and they all worked ok.

By far the easiest way to connect this laptop to the Internet is by using the built-in ethernet controller. It should work on any distro without any problems. If your only connection to the internet is via modem, then you might have to do some voodoo to get netinstall working. I will not go into details of Debian netinstall, as it is documented better elsewhere. Check out http://www.debian.org for more information.

If you decide to obtain an external cardbus WLAN card, take a look at my Debian Etch as a WPA2 accesspoint HOWTO. It contains a chapter about configuring wireless client the Debian way - which is quite good way, I might add :).

Useful packages

laptop-net

If you access the Internet from several different locations then I suggest that you install "laptop-net". It will automatically bring network interfaces up and down when you plug the cable in or out. It will also re-request information from DHCP server, unlike "ifplugd" below. This means that you can connect to the Internet from almost any place without a hassle, just by plugging in the network cable.

ifplugd

Ifplugd monitors ethernet link status and brings up interfaces on demand. It does pretty much the same as "laptop-net" above, but the last time I checked it did not automatically re-request information IP address information from the DHCP server. For this reason it is not really that useful when connecting to the net from several different places.

In case you decide to use "ifplugd" install "etherconf" first: "ifplugd" does not have any way to configure the interfaces in the first place. Word of warning, though... if your ISP identifies clients by their network adapter's MAC-address, "ifplugd" can't fake it. This behavior can be irritating if you want to connect the laptop temporarily to such a location. You will have to kill the ifplugd daemon manually and then restart the network interface.

apmd

To monitor battery status you might want to install "apmd". You should also install some frontend for it, for example "xbatt", "xbattbar" or "wmbattery". If you don't use APM but ACPI then you should install "acpid" instead.

The laptop does seem to go to suspend when the battery is almost out. Whether the laptop can be restored from this automatic suspend is another thing entirely. Automatic suspend does not seem to work if the battery is not calibrated. One of the three manuals available from HP/Compaq explains how calibration is performed. Compaq claims that suspending to RAM will keep a new, fully charged battery alive for two weeks. If the claims are true, it is a notable improvement over my Armada 100s which can only stay alive for maybe a day at most.

acpid

If you want to use ACPI like me, then you should install "acpid". I have not tried anything fancy with it, but at least battery meters and other basic statistics work. ACPI throttling is also supported and works. I'm unsure of whether "acpid" is required for throttling to function.

isapnptools

This package is useful if you want to use a serial mouse, for example. I use serial mice on my laptop because they work just fine and are hotpluggable, unlike ps2 mice. If "isapnptools" is installed, serial mice should work automatically. As my laptop has a trackpoint (instead of a touchpad), using ps2-mouse is almost as simple as using a serial mouse. The mouse just has to plugged in before boot and it will replace the trackpoint.

hibernate

If you use a recent kernel, such as 2.6.13, you can use software suspend (swsusp). You don't need the "hibernate" package, but it makes life with suspend-to-disk easier. Hibernate supports swsusp, swsusp2 and acpi suspend. See below for more information.

laptop-mode

Laptop-mode can be used for enabling many powersave features. It can control harddrive spindown timeouts, cpu frequency scaling, cpu throttling, display timeouts etc. It is much more convenient to use "laptop-mode" than configure all of these separately. Main config file /etc/laptop-mode/laptop-mode.conf

irda-utils

This laptop has an infrared port, which supports at least the IrTTY (serial) protocol. If you want to make use of the port, you have to install "irda-utils". In addition, I found out that you will have to install "setserial" and modify serial port parameters to make IrDA work. I have added the lines below to my custom startup file:

echo "Setting /dev/ttyS2 to irq 3 to enable IrDA"
setserial /dev/ttyS2 irq 3

In addition, check that /etc/default/irda-utils suits your needs. Mine looks as follows:

# Set your startup settings for irattach, the IrDA-daemon, here.

# Set this to 'false' if you do not need to start irattach. Otherwise set it
# to 'true'.
ENABLE="false"

# Set discovery mode which usually is a good idea for finding other devices.
# If set 'true' or 'false' irattach and sysctl are used to enable and disable
# discovery mode. By default discover mode is disabled.
DISCOVERY="true"

# Set IRDA device to access (e.g. /dev/ttyS1 or irda0).
# In case of irda0, the proper module for FIR-mode has to be set in
# /etc/modutils/irda-utils (2.4) or /etc/modprobe.d/irda-utils (2.6)
DEVICE="/dev/ttyS2"

# Set dongle type, e.g. none, tekram, esi, actisys, actisys+, ep7211, girbil,
# litelink, airport, old_belkin, mcp2120, act200l, ma600). You do not need
# a dongle for FIR mode.
DONGLE="none"

# Set the serial device to quiet with setserial. This is only useful on some
# machines in FIR-mode, so most people should leave it blank. See
# README.Debian for more information.
SETSERIAL=""

I have managed to "discover" my other IrDA enabled laptop (Compaq Armada 100s) with the automatic discovery. I have not tried to create a serial link between my two laptops, but it should be trivial as both IrDA ports see each other. I tried to use my infrared port for remote control, but had no luck. It seems that laptop IrDA is poorly suited for short long-range bursts of information sent by typical remote controls.

Basic XFree86/Xorg configuration

This laptop has a Ati Mobility Rage P/M graphics card. It will work with the "ati" driver. I have no idea of the horizontal and vertical frequencies, but mine seem to work, even though some errors regarding them are generated to /var/log/XFree86.0.log. I suggest to specify "VideoRam 8192" in your graphics card specification; I don't know if it makes any difference on this laptop, but it's a safe thing to do. The XFree86 in my Armada 100S froze strangely if the amount of videoram was not defined. Even though the graphics card is different, both are Compaqs and use shared video memory. I'd rather be safe than sorry.

The ATI Mobility Rage P/M supports OpenGL, and there were no problems in making it work. Enabling direct rendering is not that easy, as the necessary modules are not included in stock kernels. You can, however, download and compile the necessary drivers manually. They have been left out of the main kernel tree due to security reasons. For more information, check out these links:

http://dri.freedesktop.org/wiki
http://webcvs.freedesktop.org/dri/drm

Even with direct rendering enabled the performance of the Ati Mobility Rage P/M is disappointing. For example the Linux port of Alien vs. Predator Gold was almost unplayable (fps 10-20). With an almost identical desktop system with Geforce 2 MX I could get framerates 2-3 times higher on the same maps. For some reason GLQuake did not seem to be able to use direct rendering at all.

Basic configuration of XFree86 or Xorg should be easy. Just select the "ati" driver and set "SuspendTime" and "Offtime" to 0. See screen blanking section below for more information. You can use my old XF86Config-4.m700 and newer xorg.conf.m700 for reference.

Kernel configuration

Compiling a custom kernel for this laptop is as easy or as difficult as on any laptop or desktop. It should be possible to use a 2.4 kernel without problems. I prefer 2.6 kernels as they seem to be more usable on typical laptop or desktop systems. You can download my 2.6.8 Debian patched kernel config from here.

A more up-to-date kernel configuration based on kernel.org 2.6.13 is here.. This one includes support for wireless extensions, nfs, and software suspend (swsusp), unlike the one above. NOTE: if you use this kernel version (or any newer versions) you will have to remove mount options "sync" and "dirsync" from your usb thumbdrive's entry in /etc/fstab. Otherwise you will get extremely slow write speeds. Your thumbdrive's flash memory will also wear out quickly. This problem did not exist when I was using Debian patched 2.6.8 kernels.

If you also want to use swsusp2 and/or IrDA, then use this config for kernel version 2.6.16.

Enabling powersaving features

APM support

It seems that suspending to RAM works, at least partly. I've executed several suspends and resumes via APM and M700 has come out clean from most. It seems that having an usb thumbdrive inserted during suspend can lock the system. Unless you want nothing more than a battery meter, you should seriously consider using ACPI instead.

ACPI support

This laptop support basic ACPI functionality. With "acpid" installed battery meters and such work. I have not tried to use ACPI sleep states. The processor supports several throttling states (see below) and Software suspend 1 & 2 work (see below), so I've had no real reason to test ACPI sleep states.

NOTE: kernel might disable ACPI because the BIOS in this laptop model is too old. You can override this behaviour either in kernel configuration (section "ACPI support") or pass "acpi=force" to kernel during boot.

CPU frequency scaling

CPU frequency scaling means modifying the CPU frequency (speed), usually depending on system load. Low load means slow frequency: less heat - less power consumption - less need for the fan - more battery life.

It seems that at least faster versions of the mobile P3 processor support Intel Speedstep technology. My laptop see to have two possible clockrates: 800Mhz and 650Mhz. In BIOS it is possible to set "Speedstep support" to "Automatic" or "Disable". Having Speedstep disabled means that my laptop will run continuously at 650Mhz. If Speedstep is set to "Automatic", clockrate will be set to 650Mhz or 800Mhz, depending on whether laptop is _at boot time_ using battery power or not. It seems that if the laptop is hibernated (via swsusp or swsusp2) the clock rate will not change during the initial boot sequence.

I've successfully enabled cpu frequency scaling (using powernowd) in my other laptop (with k6-3 550Mhz processor), but not on this one. Even on this laptop I have actually managed to make "powernowd" work, kind of. The problem is that I have not been able to duplicate the procedure. I also tried "cpudynd", but it just caused the processor to switch between 650Mhz and 800Mhz continuously with no logic. I tried out the little tools "cpufreq-info" and "cpufreq-set" also. Sometimes I was able to switch the cpu frequency, but sometimes not.

The main problem with CPU frequency scaling on this laptop is in loading of the kernel modules. For some reason loading of cpufreq modules is next to impossible. Sometimes loading of the speedstep_smi -module succeeds after unloading/loading some other modules, but usually it does not. In latter case it just complains about "No such device". I have not yet found any logic in the process. As BIOS can change the clockrate at boot time (see above), I've chosen not to try controlling the clockrate from linux - it seems to be a pain in the ass. In addition CPU throttling (see below) works and does the same trick.

If you want to try dynamic cpu frequency scaling from linux, following modules are required (cpufreq_performance is the default governor):

speedstep_lib
speedstep_smi
cpufreq_userspace
cpufreq_powersave
freq_table

CPU Throttling

CPU throttling means forcing the processor to idle for specified amount of time. The higher the throttling state, more time the processor spends idling. This has two effects: less power consumption and less heat. There is one thing that should be noted, however; throttling does not automatically save power. In typical desktop usage, when processor load is quite low, it will improve battery life considerable. On my dual core Macbook, throttling to 50% when on battery increases battery lifetime from maybe 2,7 hours to 3,4 hours, so it's a considerable improvement. I have not done any testing with M700, but the improvement is probably a bit less than that due to the single core processor. On the other hand, if you're compiling or doing something else that keeps the processor busy, throttling will probably end up using more power, because things will take longer to get done, and all the other parts (harddrive, display etc.) keep consuming their part of the battery.

At least my 800Mhz Pentium III supports CPU throttling. I'm not sure about the lower-end models. For some reason loading the "acpi-cpufreq" module does not seem to work. Currently I use "laptop-mode" to control the throttling states. My processor has the following states:

localhost:/proc/acpi/processor/C0BE# cat throttling
state count:             8
active state:            T4
states:
    T0:                  00%
    T1:                  12%
    T2:                  25%
    T3:                  37%
   *T4:                  50%
    T5:                  62%
    T6:                  75%
    T7:                  87%
localhost:/proc/acpi/processor/C0BE#

If you decide to use laptop-mode to control the states, simply set CONTROL_CPU_THROTTLING to 1 in /etc/laptop-mode/laptop-mode.conf and adjust other settings as you see fit. Note that the maximum throttling is really slow: the CPU will run at 13% speed (see T7 above). I have set laptop-mode to slow down the processor by 50% (medium throttling) when under battery power and to keep it at 100% otherwise:

BATT_CPU_THROTTLING=medium
LM_AC_CPU_THROTTLING=minimum
NOLM_AC_CPU_THROTTLING=minimum

NOTE: You can also use CPU throttling to keep the processor temperature down. I had to do this when - for some reason - my M700's processor fan refused to spin up. I noticed this when trying to compile a kernel and the CPU temperature rose to nearly 100 degrees. Obviously too high to be safe. I tried changing the whole processor cooling block, including the fan, but that did not help either. I had to take the whole laptop apart in the process, of course. It took (including the reassembly) maybe one whole day even with rather good instructions from the Web. Summa summarum, I would not recommend taking the M700 apart just for fun. Anyways, even the fan on the new processor block worked as badly as it's predecessor: on some boots the fan starts just fine, on some it just does not.

So because I could not trust the fan to cool the processor down, I wrote a script that monitors the processor temperature and if it rises too much, it will throttle one step at a time until the temperature does not rise anymore. This means that if the fan is not running, kernel compiles and such take a long time, but at least the CPU is safe. The M700 works surprisingly well even without the fan. In typical Gnome desktop usage the temperature rarely - if ever - rises to a level that requires throttling down. Only compiling and such triggers the temperature monitor.

You can get the script, thermal_throttling.sh, from here. In order to use it, copy it to /usr/local/bin (for example), make sure it's executable and add it to a startup script such as rc.local, like this:

# /etc/rc.local
/usr/local/bin/thermal_throttling.sh

Also make sure that the environment variables in the beginning of the script point to the correct places - by default they probably won't. When you're done, do a reboot and see if it works. You can use yacpi to monitor the processor temperature, and ps aux|grep thermal to see if the script is running. Note that the script depends heavily on the output the temperature sensor in /proc. If the output changes, the script won't get any readings at all, and will fail. It should inform you about this if you run the script interactively from the terminal.

It should perhaps be noted that this script very generic and is not tied to M700 in any way. You can use it on any Linux computer which gives temperature readings through /proc.

Userspace software suspend (uswsusp)

Once upon a time I was happily using swsusp2. Then my girlfriend left for another country and took M700 with her. As the Internet connection in her new apartment used some oddball Cisco VPN thingy, I had to resort to stock Debian kernel, as I would not be able to troubleshoot any kernel problems without an Internet connection. So there went my custom kernel built with love and care, and came the stock Debian kernel. This also meant that I had to kiss Software Suspend 2 goodbye. Not that my girlfriend actually cared :). As a perfectionist I had to include some sort of suspend possibility, so I tried Userspace software suspend, or uswsusp.

The uswsusp consists of three programs, s2ram, s2disk and s2both. The configuration was a breeze, and at least s2ram worked well without hitches. The only problem I can recall encountering was that the M700 was not recognized in uswsusp terms, so I had to force the suspend. Otherwise the default values worked well. At least with stock Debian kernel suspend to RAM consumes quite a lot of power. I don't remember exact numbers, but the battery will run out in a couple of days. Less than a week in any case. It is really snappy, however, and very useful if you constantly change places and have to switch your M700 on and off each time.

You can - for the most part - use the same configuration as for Software Suspend 2. All scripts for the different suspend frameworks are included in the same hibernate package. So you only need to configure common attributes once in /etc/hibernate/common.conf and framework-specific attributes to each appropriate file in the same directory.

Software suspend (swsusp)

One of these laptops had a hidden OS/2 partition (type 0x84). It was probably meant for Windows suspend-to-disk function. For a Linux installation this partition has no value, so it can be safely removed.

Software suspend (suspend-to-disk) seems to work ok on this laptop. Only quirk I've yet found is that if you run X, you may have to switch to a virtual console (with Ctrl-Alt-F1) before suspending or you will see only a black screen at Xserver's VT after resume. Suspending from a Gnome session seems to be especially bad idea. Suspending from Gdm login screen or Windowmaker seems to work almost flawlessly. Even if the display stays black after restore the Xserver does not crash: it responds normally to keyboard and mouse. Killing Xserver with Ctrl-Alt-Backspace or restarting the login manager fixes the problem. Check out /etc/hibernate/hibernate.conf if you run into same kind of problems: changing the "XStatus x|gnome|kde" entry might fix the problem.

"Sysfs_power_state" -approach to suspend-to-disk seems to work, so unless you run into trouble, you have no need to patch your kernel to use swsusp2. It is possible that even the ACPI suspend works - feel free to experiment. With my 800Mhz model suspend-to-disk takes about 25 seconds. Resuming takes about 1 minute, of which 25 seconds is wasted by the Compaq splashscreen and "Intel boot agent". So after GRUB launches the kernel it takes only 35 seconds before is restored to the pre-suspend state.

Here are relevant config files for "acpid" and "hibernate":

/etc/acpi/events/lid
/etc/acpi/lid.sh
/etc/hibernate/hibernate.conf

Note that you must add "resume=/dev/your_swap_partition" to kernel commandline in /etc/grub/menu.lst or /etc/lilo.conf unless you defined a default resume partition in kernel configuration. Swsusp seems to write the memory image to the first swap partition in /etc/fstab. You should keep this in mind if you have several swap partitions.

Software suspend 2 (swsusp2)

After having some problems restoring when using basic "Software suspend" I decided to give "Software suspend 2" a try. Xserver did not always get initialized correctly, and sometimes the whole system hung for some reason. Software suspend 2 seems to be much more reliable on this specific laptop model. A couple of times the display has not recovered correctly, but 98% of the time it works just fine. When you end up with a blank screen, just do another suspend+resume and you'll be back in business. No need to switch the power off by force or anything.

Swsusp2 is also somewhat faster than swsusp. Hibernation takes less than 20 seconds and restoring takes about 50 seconds when about 200MB of the laptop's memory is used. For some reason my laptop now (with swsusp2) powers up automatically when the lid is opened. I suppose this has something to do with how swsusp2 interacts with ACPI. With swsusp opening the lid did not automatically turn the power on.

Swsusp2 does require patching and recompiling the kernel, so I suggest you try it only if you run into trouble with the basic swsusp. You can use my swsusp2 -enabled hibernate.conf for reference. For more information and installation instructions see http://www.suspend2.net.

Blanking the screen in xorg

I ran into various problems when using Xscreensaver to blank the screen. Therefore I decided to set display's blanking timeout values directly in xorg.conf. It is possible to control timeouts via "laptop-mode" also, which might be easier. I suppose that if a user uses Xscreensaver and sets his or hers own timeout values they will override the values in xorg.conf. I've found out that the display driver for this laptop supports only the "Standby" mode. The display does not resume correctly from "Suspend" or "Off" modes, and only cure I've found is restarting the Xserver.

To set display timeouts open your /etc/X11/xorg.conf or /etc/X11/XF86Config-4 and add the timeout values to the "ServerLayout" section. Below is the relevant section from my xorg.conf:

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Trackpoint"
        InputDevice     "Serial mouse"
        # Timeout in minutes
        Option          "StandbyTime"   "5"
        Option          "SuspendTime"   "0"
        Option          "OffTime"       "0"
EndSection

Note: remember to set "SuspendTime" and "Offtime" to 0 (disabled). Otherwise default values (30 and 40 minutes) are used and a long period of inactivity will freeze your display.

Reducing the speed of the CD-rom drive

I suggest you to reduce the speed of the CD-rom drive. It saves power but more importantly reduces resonance and thus noise. You can run this in some startup script:

hdparm -E 8 /dev/your_cdrom_device

This limits cdrom speed to 8x, which will result in very quiet operation. Most of the time you won't notice the difference between 8x and full speed. If you need the cdrom drive mostly for file transfer then set the limit higher (maybe 16x or 24x).

Upgrading the hardware and connecting external devices

Getting more memory

This computer has usually 64MB of memory installed. Of this 8MB is given to the Ati Mobility Rage P/M graphics adapter.

Obviously 64MB is way too low for many programs today. It will be barely enough for Windowmaker and light programs, such as Mozilla Firefox or Abiword, and you won't be able to use several programs at once at a decent speed. With 128MB you can even run Gnome2 fairly well, as long as you stay away from OpenOffice and other resource hogs. 256MB is enough for heavy programs and desktop enviroments. Nevertheless I prefer to spare my CPU and memory for real tasks rather than eyecandy and use WindowMaker as my windowmanager.

I have not bought or installed any memory on these laptops: installations were done for me by the seller. Check the pdf manuals (available from HP/Compaq) to see which memory to buy. If I remember correctly, this laptop uses standard SO-DIMMs clocked at 100Mhz. Used ones can be purchased quite cheaply (I once bought a 64MB chip for 16 euros, or rougly $18). New ones cost 3-4 times as much, so they should be avoided at all costs.

Wireless LAN (802.11b/g) cards

This system has a standard cardbus bridge. If "hotplug" is installed, cardbus cards should be detected automatically when inserted. Just remember to check that the card you are buying complies to standards and uses a chipset that is well supported by Linux.

I have a SMC2635W 802.11b wlan card, which has native Linux drivers. These drivers can be downloaded from rt2x00 website at sourceforge, and they have worked well for quite a while now. The graphical configuration utility, RaConfig, looks good, but is rather unreliable. It has forced me to do a reboot a couple of times, and if it hangs for any reason, it's impossible to kill it. Sometimes it has even caused the laptop to lock completely. For me this is unacceptable. Luckily RaConfig is simply a frontend for "iwconfig", so you don't have to use it if you run into trouble. In Debian "iwconfig" is in package "wireless-tools".

Note: currently the Linux rt2x00 drivers support only WEP encryption, even though the SMC2635W does support WPA. As WEP encryption is badly broken, you should only use SSH or other encrypted connections to move confidential data inside your LAN. If you need better authentication methods or want to use your laptop as an wlan access point (AP), you should consider getting yourself a card with an Atheros chipset. See http://madwifi.org for more information. Also take a look at my Debian Etch as a WPA2 accesspoint HOWTO, which includes a chapter about configuring wireless clients in Debian.

External mice

This laptop has one ps2 port that is used for a mouse or a keyboard. Both have to be inserted before the power is turned on; otherwise they are not detected. If you want a hotpluggable mouse, I suggest a USB or serial mouse. I have not used an external keyboard.

When a ps2 mouse is inserted, it is detected automatically at boot time. Serial mice are detected only if "isapnptools" is installed. If your laptop has a touchpad, unlike mine, I suggest that you use check my Compaq Armada 100s page for more details and troubleshooting.

Author:
Samuli Seppanen, University of Turku, Finland
http://users.utu.fi/sjsepp


Registered Linux user #392780 TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones Linux On Laptops