Linux on the Compaq Armada M700

    Installation notes for putting Redhat Linux 6.1 onto the Compaq Armada M700


    • General
    • X Window System
    • Power Management
    • Sound Support
    • Network Devices
    • Built-In Modem
    • Loose Ends
    • Back...
    M700 image


      General

      The Compaq Armada M700 is a nice machine that is probably most suitable for the user who likes to have a powerful machine as a desktop replacement, rather than an ultraportable, lightweight go-everywhere type computer.

      It comes in different versions. Mine features a 14.1", 1024x768 resolution TFT display, DVD Rom drive, Pentium-II 400 MHz processor, and 192 MB Ram. It also has a three-button mouse, which is great if you want to run X on it.

      Installation from the Redhat 7.x or 8.0 CD Rom is fairly painless. It can boot directly off of the CD. I suggest using the text mode install program as the graphics are not initialized properly and show some weird patterns on the screen. You can get by with it, though, if you want.

      Most of this page applies to installing Redhat 6.x also, except as noted.

      You did make a backup of your stuff on the machine, didn't you?!

      If you want to use the computer in a network and have a version without built-in ethernet adapter, I suggest inserting the network card before beginning installation and booting off the PCMCIA image floppy (created with the rawrite program in the distribution CD's dosutils directory). The image is on the CD in the directory images, called pcmcia.img.

      X Window System

      Redhat 6.x: The "hardest" part is getting X to work, but it's not really that hard. Decline the install program's offer to help you in setting up X and go directly for the post-installation reboot. Log in as root, cd to /etc, and edit the file lilo.conf. In the section labeled "linux", add a line vga=792. Save the file, then call /sbin/lilo to write a new boot sector. Upon reboot, your machine will come up with a nice 120x48 console more fitting to the large display and will have the frame buffer initialized properly. This is a prerequisite for the next step, so do so now.

      After logging in as root again, install the Mach64 or, if you want, the FBDEV X server (package names XFree86-Mach64-* and XFree86-FBDev-* respectively). Make a link from /usr/X11R6/bin/X to the server you just installed. Then, call Xconfigurator --kickstart --server FBDev --hsync "31.5,45-50" --vsync "50-70" (if you use the FBDev server). This will give you a baseline X configuration which already contains the 1024x768x32 bit resolution the display is capable of.

      This XF86Config contains settings for the above mentioned mode plus a 1280x1024x86Hz modeline for use on an external monitor. I use XVidmode to switch video modes. Make sure you only use this mode after you have switched the laptop to use the external display, using Fn+F4! Do not switch back to the laptop display before reverting to the 1024x768x60Hz mode!

      Be very careful when switching to the laptop display. It can be damaged if used with a refresh rate of over 60 Hz!!!

      Sidenote: If you are looking at installing Redhat 6.2 on the M700, note that the Mach64 X server that comes with 6.2 seems to have a problem with the Rage Mobility chipset, making the screen flicker badly. Replacing the XFree86-Mach64 package with the latest update for Redhat 6.1, named XFree86-Mach64-3.3.5-3, will solve the problem. Thanks to Paul Foster for bringing this to my attention.

      Redhat >7.x: Starting with release 7.x, Redhat uses the XFree86 4.x X Window System. Their install program will correctly identify the graphics card, and automatically handle both the internal and external monitor connections. Here's the XF86Config-4 file I use. Note that this file has been modified for video playback, as below.

      Video playback (Redhat 7.x/8.x only)

      Fullscreen video playback of DVDs and AVI/MPEG files requires only a few additional steps:

      • download and install the ati.2 Xvideo extension from http://gatos.sourceforge.net/ (supports Rage Mobility Pro)
      • download, compile, and install atitvout from http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout/
      • download and install the required RPMs for the video player of your choice from http://freshrpms.net/. There are a lot of package dependencies to be resolved. Take your time and don't force anything.
      • restart the X server to load the Xv extension and ati.2 driver modules
      • connect TV-out to TV with cinch cable
      • run atitvout auto to switch on the TV-out port. Note that you need to rerun that command every time you switch video modes, and depending on your TV it might be necessary to disconnect and reconnect the cable to regain sync
      • run hdparm -d1 -X34 to enable Multiword-DMA for the DVD drive
      • run vlc or mplayer -dvd 1 to playback DVD

      Power Management

      Power management works out of the box, which is cool. Try apm to get a battery status display. The Gnome battery meter applet is a nice way to keep track of your battery's charge while in X. apm -s will suspend the system to Ram. This is the same as pressing the blue suspend button. Depending on your machine's configuration, suspend mode will consume about 17% of battery capacity per day (apm will calculate these values for you after being woken up from suspend mode).

      Sound Support

      A driver for the Maestro sound chip comes standard in all recent kernels. Note that your kernel must support sound. I suggest compiling the OSS sound support into the kernel, rather than as a module. If you absolutely do want it as a module, include these lines into your /etc/conf.modules:

        alias sound maestro
        pre-install maestro /sbin/modprobe soundcore

      They will make modprobe/insmod load the maestro module when the generic sound module is requested, and depmod -a will know to preload soundcore before maestro.

      Network Devices

      Built-in

      The M700 is available with an onboard ethernet interface. In fact, it's a small module that could be retrofitted to non-ethernet equipped M700's, but I don't know if it's available separately. Anyway, it's an Intel Etherexpress Pro 100/B, 10/100 MBit/s autosensing chip, and it works with the standard Intel driver.

      PCMCIA

      I compiled a new kernel with PCMCIA support, but the standard Redhat distribution kernel is also okay. I have tried 3Com 3CXE589ET and 3C589[BC] 10BaseT ethernet, and Xircom CEM 28.8 and 33.6 combination modem and 10BaseT ethernet cards, and they work very well. On the combo cards, both the ethernet and serial ports are usable.

      Lucent Wavelan

      Probably one of the niftiest network adapters around, the Wavelan PCMCIA card lets you move about attached to the network without cables. I have the silver WEP card (11 Mbit/s) which works fine. Just compile the kernel with Radio Network Support, and compile the current pcmcia-utils package after installing the kernel. This will give you the wavelan_cs.o kernel module in /lib/modules/<kernel version>/pcmcia. For more information, check out the Linux Wireless LAN Howto.

      Networked/Non-networked Startup

      I have modified the standard Redhat PCMCIA startup file (/etc/pcmcia/network) like this:
      'start')
      	/etc/sysconfig/network-scripts/ifup ifcfg-${device}
      	sleep 2
      	/etc/rc.d/init.d/ypbind start
      	sleep 2
      	/etc/rc.d/init.d/netfs start
      	/etc/rc.d/init.d/autofs start
          ;;
      'stop')
      	/etc/rc.d/init.d/autofs stop
      	/etc/rc.d/init.d/netfs stop
      	/etc/rc.d/init.d/ypbind stop
      	sleep 1
      	/etc/sysconfig/network-scripts/ifdown ifcfg-${device}
          ;;
      
      In addition, the links to ypbind, netfs, and autofs have been removed from the /etc/rc.d/rc[23].d directories, so they get called only when a network card is inserted (or present at boot). If no network device is present, the network does not get started.

      Note that you should call /etc/pcmcia/network stop eth0 by hand before removing the card.

      Local/Network Accounts

      The easiest solution to this problem seems to be to create local accounts with the same name and the same numerical user ID you have on the network. So if you're joe, ID 2341, on the network, create an account called joe using your favorite tool, and make sure it also has the ID 2341 (either by specifying at creation time or changing it in /etc/passwd later on. Note that you will always need to specify the local account's password, even if you have a network connection.

      Home Directory Synchronisation

      We use automounted home directories under /home/userid. To enable login as the local user when not on the network, you need to create a local home directory at /home/userid also, which will not be accessible once the automounter fetches your network directory and mounts it at the same point. This can be used to advantage:

      • Create a directory /export/home/userid
      • chown it to userid
      • create a link ln -s /export/home/userid /home/userid

      This way, /home/userid points to /export/home/userid when off the net, and your network home directory is there when you're on. You can still access your locally stored files when going to /export/home/userid, and this can be used to mirror your home directory.

      I have created two shell scripts which do this. Assuming your machine's name is penguin and your userid is joe:

      #!/bin/sh
      # from home to laptop
      cd /home/joe
      echo This will be done:
      rdist -vRyc . penguin:/export/home/joe | \
      	grep -v 'remote copy is newer'
      echo Press RETURN to start
      echo or CTRL-C to abort now
      read bla
      rdist -Ryc . penguin:/export/home/joe
      
      #!/bin/sh
      # from laptop to home
      cd /export/home/joe
      echo This will be done:
      rdist -vRyc . penguin:/home/joe | \
      	grep -v 'remote copy is newer'
      echo Press RETURN to start
      echo or CTRL-C to abort now
      read bla
      rdist -Ryc . penguin:/home/joe
      
      The scripts make use of rdist which is a useful tool to keep file systems in sync over machine (and network) boundaries. They first show you what gets done (-v flag) and then replicate all files and directories.

      Built-In Modem

      You wouldn't have thought this'd happen some day, but wonders do occur: the Lucent winmodem that comes standard in most M700 models actually works under Linux. Check your /proc/pci and look for a line like:

      Bus  0, device   9, function  0:
        Communication controller: Lucent (ex-AT&T) Microelectronics Unknown device (rev 1).
          Vendor id=11c1. Device id=449.
          Medium devsel.  Fast back-to-back capable.  IRQ 11.  Master Capable.  No bursts.
      							Min Gnt=252.Max Lat=14.
          Non-prefetchable 32 bit memory at 0x41100000 [0x41100000].
          I/O at 0x2430 [0x2431].
          I/O at 0x2800 [0x2801].
      

      If you've got it, chances are the modem will work. Download this driver and follow the instructions in the included README file. The driver was actually written for Toshiba laptops but works just fine in the Compaq. Note that you will get a warning if you are running any kernel other than 2.2.12. Just use insmod -f instead of modprobe. The module should still work.

      Universal Serial Bus

      The Armada M700 has an Intel UHCI USB controller. The easiest way to get this to work until the 2.4 kernel release is to get a recent 2.2 kernel and apply the backport patch available from Linux USB. It finds the controller fine and detects devices being attached and detached to the bus. If you have a digital camera or some other device which is supported (check out the list at the same web site), you might find this useful.

      Loose Ends

      The main thing that needs work right now is Infrared support. I have not gotten it to work reliably yet, which seems to be a problem with the general IrDA support under Linux, rather than a specific problem with the M700.


    Comments, Flames, Correspondance: <wfb@mtnsub.org> - $Id: m700.html,v 1.4 2003/03/24 13:27:20 eedmgu Exp $