Linux on the Compaq Armada E500

Well, in short: This is really a nice machine with really all features running perfectly with Linux :-) If you need any further information which I missed to list below, don't hesitate to contact me.

News


Many thanks to Vincent Deffontaines, Jake Hawkes, Matthias Eichler, Darren Moorhouse , Jonas Ryser, Jaroslaw Karwik, Matthew Tippett, Klaus Steinberger, Olaf Lösken, Matthieu Weber, Stefan Kees, Tristan Tarrant, Zoran Dzelajlija, Reginaldo Stückner, Kamil Iskra, Simeon Petkov, Kyle William Baker, Neil Bingham, Pablo, Marco Roeland, Tony McGregor, Tuurlijk!, Marijn Driel, Karlheinz Herrmann, Peter Fittschen , Ramine Nikoukhah, and Jon Olav Vik for keeping this page up to date by adding several information which you will find throughout this page.

A special big thank you goes to Ralf Gregor for making my laptop work again several times!

Some facts about the Compaq Armada E500

Hardware

My E500 came in the following configuration: For those who like more details, here are the contents of /proc/pci.

Bios

The bios is a SM, which is the new bios developed by Intel, Dell, IBM, Compaq, Ami, Award and Phoenix, so by almost everyone ;-) It can handle ACPI but also APM and although one cannot address most of its functionality under Linux, all adjustments made under Windows will affect Linux, too.
There is a small text-based bios menue which you can enter with F10 during booting up. It allows to set the bootable devices (CD, floppy, harddisk) and their order, as well as the quicklock configuration and the boot/setup passswords.
Quicklock lets you lock the laptop (keyboard and mouse) on startup, after resuming from suspend and at any time by pressing Fn+F6, even with Linux. You can also blank the screen when locking. To unlock you must enter the password blindly.
You can also enable/disable the ports and writing to the floppy.
All other bios functions can only be used with Windows, so it's a good idea to keep it. Fortunately, all settings made with Windows are kept when booting Linux.

See the section about functions keys to learn how to access some bios functionality even with Linux.

CPU

It's one of these mobile CPUs using Speedstep. That is, you can tell the CPU to switch from 500 Mhz to 250 Mhz when on batteries. That really helps saving battery. Look at the apm description in the next section to learn how to set the CPU.
Then fan is on the side and pretty small. It comes up from time to time and is really very silent.

Batteries and APM

Two important hints first: The main battery is a 9-cell LiIon. You can buy a second 9-cell battery and exchange it against the primary battery or against the floppy, so you can have two batteries in parallel. The battery in the floppy bay will be decharged first and charged last. That's very nice to completely uncharge your batteries as recommended. Just swap primary and secondary battery from time to time.
One battery will run about 2.5 hours while playing Doom II (my battery test ;-)), thus calculating and having the hard disk running all the time. However, you can define a power saving scheme for the laptop running on batteries. Right-click on the battery symbol in the task bar and chose "Adjust battery settings". In the menue you will find a card for defining the behaviour of the laptop when it runs on batteries. There you can chose between high/middle/no energy saving, and chose a user-mode. There you can define the CPU speed and the brightness of the TFT screen. With CPU speed set to 250 Mhz and screen brightness to 60%, the lifetime will increase to about 3.5 hours! So with two batteries you have 7 hours. And believe me, that the screen is still very bright when set to 60%.
When the battery becomes low (about 12%) the E500 will start to beep five times about every minute. With hibernation enabled it will save to disk automatically when the battery is at about 9% (a little to early for me :-(). Saving to disk takes about 45 seconds for my 196 MB, and restoring on next boot takes about 2.5 minutes, so it's not really worth using it...
When enabling hibernation, a file of the size of the memory will be created in the Windows partition. Linux will save to this file via the bios, too!
Saving to RAM works quite fast, about a few seconds, and maybe 10 seconds to resume.
Saving to disk/saving to RAM can be invoked with Fn+Suspend-key/only the Suspend-key, and this works regardless of the operating system.

Function keys

Happy news that someone at Compaq decided to make the Fn key work with many of the special functionalities independent of the operating system. Although the special keys F5/F7/F8/F10 are mapped to some special tools in Windows, there are ways to access the functionality even with Linux. However, as Tony McGregor figured out, it seems to depend on the bios version if you can use the keys or not. Bios with date May 23rd 2000 and earlier seem not to work. But bios from November 2000 (that's mine) and later do work.
WARNING Make a bios update only on your own risk! Any damages caused by a bios update will likely not be covered by the warranty!

Here is the table of the functions keys working with Linux and DOS (and exactly the same way with Windows, too).
Fn-Suspend button   The suspend button is the blue round button. When pressed alone, the laptop suspens to RAM, if pressed together with Fn, it saves to disk (if this is enabled under Windows).
Fn-TToggle stretching resolutions lower than 1024x768.
Fn-F4 Switch between TFT screen and external monitor. Both screens can be run in parallel without problems. The external screen can be connected at any time.
Fn-F5 Activates the sound setting mode. With the left/right cursor keys you can lower/increase the volume of the speaker. The down cursor key will play a beep so that you can check the volume. Leave the mode with Fn-F5 again. Thanks to Matthew Tippett who told me about this!
Fn-F6Activates the quicklock (see Bios section above).
Fn-F7 Man, this is cool :-) It activates the power saving mode. You can flip through the power saving schemes with the cursor keys. These are the modes that define how the laptop will behave when running on batteries. See the APM chapter right above this one. With the right key you select the modes in the order "No saving -> middle saving -> high saving -> user-defined", with the left key in the reverse order. Thus, if you have defined the user-defined mode to run the CPU with 250MHz, you can switch between 500MHz and 250MHz while running Linux (note that all modes except user-defined mode run the CPU with 500MHz). And even if you have defined a certain screen brightness for the user-defined energy-saving scheme, you can still adjust the brightness with the m300bl-tool (see the X section). Thus, you can chose the CPU speed independent from the brightness with Linux :-)
Leave the mode with the same combination.
Fn-F10Activates the brightness mode. You can now lower/increase the screen brightness with the left/right cursor keys. If you are running on batteries, the maximum brightness is restricted to what is defined in the power-saving scheme. E.g., if you are running on user-defined power-saving scheme and have defined 60% brightness, then you will not reach more than 60% with the cursor keys. However, with the m300bl tool you can always set the maximum brightness. See the X section. Thanks to Matthew Tippett who told me about this!
Leave the mode with the same combination.


Manuals

You will find a lot of facts and manuals on the Compaq web page at http://www.compaq.com. I've collected the ones for the Compaq Armada E500 here:

Installing Linux

Partitioning

As mentioned before, you should definitely keep Windows to be able to adjust the bios settings. I kept a 1.5 GB partition for Windows and used a DOS tool called fips which comes with SuSE 6.4. It's freeware, so you should be able to find it in the Internet. This tool can cut down the primary DOS/Win partition and create a second one, *if* there is no data in the space where you want to create the second partition. So use defragment to move all Windows data to the beginning of the partition (Actually, Jon Olav Vikpoints out that "there's an option in the defrag program to just consolidate free space, without actually defragging files. The consolidation is all that's needed to resize a partition, and it's much faster, especially if there are many files already on the disk." He is definitely right, thanks for the hint!). Then fips should work fine. You might also try tools like PartitionMagic etc.
Unfortunately, this option seems to have disappeared in W2k. Jaroslaw Karwik reports: "When you get laptop with preinstalled W2k you expirience some more problems: The standard defrag program only defrags files - there is no way to force it to consolidate free space.The documentation says that consolidating free space does not help much and that's why you cannot have it :-(. The solution: I used Mandrake 7.2 installation - its partitioning program (do not remeber its name) can reallocate used sectors in FAT32 partitions."

Getting started

I've experiences with SuSE 6.4 *only*, but I guess any recent distribution should work more or less the same. After booting the first SuSE CD with the CD-ROM (don't forget to make the CD-ROM the first boot device in the bios), the installation just ran through without any problems. All hardware was detected correctly. The kernel version was 2.2.14 originally, which worked fine, but I upgraded to 2.2.17 due to the bugs in 2.2.14.

X

I found many hints, that the Ati Rage chips seem not to work with XFree versions earlier than 3.3.6! So, you should upgrade to 3.3.6!!! With XFree86 3.3.6, the Ati Rage LT Pro can use the Ati Mach64 driver. The SuSE tool sax automatically detects the chip and choses the Mach64 driver. 1024x768 modes work fine, but I don't manage to set up any 800x600 mode :-( The screen just goes white and the laptop locks up completely when I try it. This seems to be a problem with the Mach64 driver. No mode except than 1024x768 works with the Mach64 driver and X. They work with the SVGA driver, and, amazingly, they work when you start them with an external monitor connected and the output set to the monitor (Fn+F4), and then switch back to the TFT *after* X has started up. This is really strange. Actually, if you then leave X, the text console is messed up.
Upgrading to XFree 4.0 solves this problem. All resolutions work fine! So it's likely a bug in the Mach64 driver of XFree 3.3.6 in combination with the display of the E500, because I have other reports of Rage LT Pro chips which work with the Mach64 drivers in lower resolutions without problem. Unfortunately, there is no 3D acceleration in XFree 4.0 for the Rage LT Pro chipset so far, so I went back to 3.3.6.

I could not figure out the ranges for the TFT screen, so I've chosen a generic "LCD XGA 1024X768@60HZ" monitor in sax. Later I changed the ranges to 31.5-65 kHz and 50-100 Hz which seems to work fine.

There is a mesa glx rpm that comes with SuSE and provides glx support for the Ati. This works pretty fine, for instance the mesa modes of xlock or gltron run really smooth. Quake3 *sigh* and even GL-Quakeworld work, although the Mesa 3.2 has a bug with QW.
Here's my XF86Config file, which also loads the glx module, and the glx.conf with the parameters for setting up the glx module. Be careful when playing around whith ranges etc. I'm not responsible for any damage your screen may take when you use my config!

Olaf Lösken has a model with maximal resolution of 1400x1050 pixels. He uses the following modlines for high resolutions:
    Modeline      "1400x1050" 108.96 1400 1416 1704 1944 1050 1050 1059 1097
    Modeline      "1280x1024" 110.76 1280 1296 1552 1736 1024 1024 1034 1070
    Modeline      "1280x1024" 127.80 1280 1296 1552 1736 1024 1024 1035 1070
    Modeline      "1152x864" 90.48 1152 1168 1384 1568 864 864 873 902
    
Matthieu Weber reports that the video-out port works, but only if you connect the TV before you start the laptop (or you reboot it after you plugged in the TV :-)).

svgalib
I got svgalib 1.3 working just out of the box. Although the mach drivers didn't work, vesa worked fine. However, it seems that some other users had problems, so Stefan Kees pointed me to this page where he found hints for setting up the svgalib on his E500. He had to recompile the svgalib 1.4.3 and add MAX_REGS>6460 in driver.h. So, if svgalib doesn't work for you, you might try this out.

Setting the brightness
Georg Acher has written a tool "m300bl" to set the screen brightness on the Armada M300. Fortunately, it works with the E500, too. You can download the sourcecode from Georg's homepage http://www.acher.org or from here. Many thanks to Matthew Tippett who pointed me to this tool. Calling the tool with parameter "8" will set the full brightness, even if you are running in energy saving mode with recuded screen brightness. Thus, assume that you have defined the user-defined energy saving mode to run the CPU with 250MHz and 60% brightness, but then need more brightness to see more, you can just call "mbl300 8" and will have 250MHz CPU but 100% brightness. Please also check the section about the function keys to learn how to set the brightness with the Fn key.

Framebuffer console support
Matthias Eichler has figured out how to use the framebuffer support for the console. Seems to work only with kernel 2.4.7or newer. Here is what you should compile into your kernel (it seems modules are not working well):
   CONSOLE DRIVERS
   ---------------
   VGA text console ON
   Video mode selection support ON

      FRAME-BUFER SUPPORT
      -------------------
      Support for frame buffer devices ON
      VESA VGA graphics console ON
      VGA 16-color graphics console ON
      Advances low level driver options ON
      2 bpp packed pixels support ON
      4 bpp packed pixels support ON
      8 bpp packed pixels support ON
      16 bpp packed pixels support ON
      24 bpp packed pixels support ON
      32 bpp packed pixels support ON
      VGA 16-color planar support ON
      VGA characters / attributes support ON
      Select compiled-in fonts ON
      VGA 8x8 font ON
      VGA 8x16 font ON
Then you can define a video mode in lilo.conf by defining e.g. vga = 771 where 771 (=303h) will give you a 101x37 character console. 773 (=305h) will give you the maximal resolution of 128x48 characters. You can also define vga=ask, then lilo will ask you for the mode before booting. You have to enter the hex values in this case.

PCMCIA

The cardbus was detected automatically. The intel chipset works with the i82365 setting. The pcmcia version shipped with SuSE is 3.1.11. My noname NE2000 compatible network card is detected automatically and works fine. No lockups etc.
Important note to Debian users: Vincent Deffontaines reports the following:
"When you install debian 2.2 from standard potato CD, it is necessary to update packages pcmcia-cs for all users, and also pcmcia-sources for the ones who want to compile a new kernel."
So, if you don't get PCMCIA running with this laptop, check your Debian version. It's not due to the PCMCIA chip!

Sound

Please also check the section about the function keys to learn how to set the volume with the Fn key.

There are alsa as well as kernel drivers for the ESS Maestro 2. The kernel driver is loaded with "modprobe maestro". Alsa (0.58) provides access to /dev/audio, whereas the kernel drivers only give you pcm. Both allow mixer access, but amixer, the alsa mixer, cannot adjust the speaker, i.e., the volume of the system beeps generated by linux but also by the bios (e.g. when warning of a low battery). One can use e.g. aumix, which can also set the volume via command line parameters. It's a good idea to put an aumix call into the boot.local, so that the volume is set on startup, because the speaker is quite loud after booting! I've set a line
      /usr/bin/aumix -v 50 -w 60 -p 40
    
into my boot.local.

Only the kernel driver works after resuming from a suspend, so I use that. The alsa driver seems to have a bug playing MP3 files because it moves 70% of all sound to the left channel after some seconds.

To avoid beeping around, I put a "setterm -blength 0" into my .cshrc and a "xset b off" in the .xinitrc to disable the linux generated bells.

Tristan Tarrant was the first one to inform me that the external volume keys finally work with the maestro kernel driver from kernel 2.4.7 (or newer). All 2.2.x kernel users can take a look into the keyboard section below for hints how to comfortably use other keys for that purpose and check the section about the function keys.

I did not try the built-in microphone yet, but Jonas Ryser reports that he tried it and it worked without any need for special configuration. So try it :-)
*Update* I tried it, too. Works :-)

Zoran Dzelajlija has written a patch for the maestro sound driver from kernel 2.4.7 to enable phone-in mixer (to listen to modem handshake). You can get it here: http://www.zabbo.net/pipermail/maestro-users/2001-July/000380.html

Matthieu Weber reports, that the sound card cannot be initialized when you run Windows 2000 and then reboot to start Linux. Thus, you have to turn off the laptop completely after running Win2k before starting Linux.

Although ESS told me that they don't support DOS, I found a Maestro Sound Driver for DOS. Ok, this is a Linux page, but maybe someone likes it :-) Here it is.

APM

Kernel 2.4 warning: There seems to be a problem with apm in combination with the ext3 filesystem in kernel 2.4.x. Kamil Iskra reports that his E500 has problems with suspend and wakeup sometimes when the ext3 option is compiled into the kernel. It seems to happen only to some people, so it's not a general problem with apm and ext3, but maybe in combination with certain bios. However, it seems to help when you use the noatime option for ext3 file systems. Kamil writes that this makes the suspend "quite reliable". So, should you have problems with apm, check that option.

Everything stated below holds for apmd 3.0 and kernel 2.2.16/2.2.19. Please also check the section about the function keys for energy saving schemes.

Amazingly, suspend-to-disk and suspend-to-ram work (for suspend-to-disk, hibernation must be enabled in Windows) with or without apmd running. As stated above, suspend-to-disk is really slow, so I disabled it completely.

Some people reported problems of Linux locking up some time. This can be caused by automatic APM switching. To avoid this, disable *all* automatic APM stuff in Windows, i.e., this "When on batteries, power down hard disk after 3 minutes, blank screen after 10 minutes" etc. All this must be turned off! You can do so by chosing the "always on" energy scheme with the Compaq apm tools. After people did this, they had no more problems with lockups!!!

Suspension from X does not work, so you must set APMD_LEAVE_X_BEFORE_SUSPEND in the apmd.rc.config (/etc/rc.config.d/apmd.rc.config with SuSE). In the same file you can let the pcmcia cards be ejected (virtually ;-)) before suspending, and adjust the hard disk timeout parameters. Those seem not to work since the update and flush daemons have been moved into the kernel...
Kyle William Baker reports that on his Red Hat 7.1 system suspension from X works if xscreensaver is running. Thus, he just set LOCK_X="yes" in /etc/sysconfig/apmd (would be /etc/rc.config.d/apmd.rc.config on SuSE) and now suspension from X works fine.

Since the alsa modules don't work after resuming, one can apmd let them unload before suspending, but this may take some time because first all applications using sound must be found and killed so that the alsa modules can be unloaded. The kernel drivers work fine after resuming without restarting, so I use them instead of alsa. If you want to use alsa, try APMD_STOP_SOUND_BEFORE_SUSPEND="alsa" in the apmd.rc.config.

Unfortunately, /proc/apm does not give any information about the estimated battery lifetime. apmd calculates some values itself, but tools like xapm will just show 0:00 remaining time. Also /proc/apm does not distinguish between one and two batteries. With two batteries, it will just calculate the average load (Matthias Eichler reports that his KDE 2.0.1 sees two seperate batteries, but as this is not up to the KDE, I guess that he has also a newer APM daemon running in his system. So you might want to check out the latest APM versions.) With the CPU set to 250 MHz and screen brightness to 60%, one percent load of one battery is more or less 2 minutes lifetime. So with one battery, one can work 200 minutes (actually, even a little more) = 3 hours 20 minutes. With 2 batteries, we are at 6 hours 40 minutes, but in reality it's more likely to be even 7 hours. So, I've hacked the xapm to show the remaining time, but you need different versions if you work with one or with two batteries because there is no chance to distinguish that automatically :-( Here you can find xapm1 (source) for one battery and xapm2 (source) for working with two batteries.

When the battery falls below about 12%, the bios will start beeping 5 times about every minute. At 9%, it will automatically save-to-disk if hibernation is enabled under Windows. There seems to be no way to make it suspend-to-disk at a lower state. Note that with 2 batteries, 9% means almost 40 minutes remaining lifetime, so I've disabled hibernation completely. Even with only one battery, 2% lifetime is enough to shut down Linux.

Note that LAN activity can wake the laptop if it was suspended but still connected (of course only if you have the built-in network card :-))

In addition to setting the CPU to 250 MHz and brightness to 60%, it should save some power to disable USB and IRDA in the bios, but I'm not really sure. What does help is to remove all pcmcia cards or at least virtually eject them (with cardctl eject). I've set up a second boot configuration that boots my kernel with runlevel 1, which can be done by an entry like this in lilo.conf:
      image = /boot/2.2.16/vmlinuz
      root = /dev/hda3
      label = linux
      append = "1"
    
The append parameter will start in runlevel 1, where many services are not started (like scanlogd etc). I removed the pcmcia-links from /sbin/init.d/rc1.d/ so that pcmcia is not started either. Thus, booting (and shuting down) works much faster and you have less unneccessary daemons running in the background. Look at the Battery-Powered-Mini-HOWTO for more tips and tricks.

Interrupts (Sharing)

Just in case someone might be wondering, interrupt sharing seems to work. Actually, the pcmcia cardbus, USB, the soundcard and the modem all run on interrupt 11. As I've only sound and pcmcia running and never played mp3 while heavily using the network card, I can't tell if it really works if two devices working at the same time...

Harddisk

Using hdparm will considerably optimize the transfer rate of the harddisk. Jake Hawkes recommended to try
hdparm -m 16 -c 1 -d 1 /dev/hda
which sets the harddisk to 16 sectors per interupt (the drives reported optimum), dma and 32 bit IO mode. Using these settings, my harddisk copies about 12 MB/s.

Peter Fittschen told me, that there is an OEM harddisk bracket with Compaq interface, so that you can plugin any laptop harddisk into the E500. Take a look at http://toscha_vertrieb.bei.t-online.de/5_2.htm for german users, and at for US.

CD-RW

Karlheinz Herrmann reports the following: "Compaq shipped for my 'Armada E500' Laptop a CD-RW (Product No 136186-B25) which turned out to be a recognized as a TEAC CD-W28E. This device was found to be functional under debian/GNU Linux woody 2.4.18 kernel."

Keyboard

Resuming in console
If you suspend and resume the laptop on the console, the keyboard might be messed up, that is, the keyboard thinks the control key is pressed all the time. Thus, you will get ^A instead of "a" etc. The solution is easy: Press the Alt-key once, and the keyboard works fine again. You can also try Fn+Scroll, if Alt does not work. Thanks to Pablo and Marco Roeland for these hints.
Internet keys
Newer models have these 4 internet keys. Tuurlijk! managed to use them. You need to define
keycode 163 = Help 
keycode 159 = XF86HomePage 
keycode 154 = XF86Search 
keycode 158 = XF86Mail
in your e.g. $HOME/.Xmodmap file and then merge it with xmodmap $HOME/.Xmodmap. Then you can attach functions to these key, depending on your window manager. For instance, for fluxbox put sth. like this in your $HOME/.fluxbox/keys:
None XF86Mail :ExecCommand evolution
None Help :ExecCommand gnome-help-browser
None XF86Search :ExecCommand galeon -n http://www.google.nl
None XF86HomePage :ExecCommand galeon -n http://freshmeat.net
For ctwmrc, you would use sth. like
"XF86Mail" = :all : f.exec "whatever mail tool you want to call & "
in your $HOME/.ctwmrc. This is reported to work with XFree 4.x, I have no clue about 3.3.6. I can't test this myself as I have one of the nice old models without these ugly keys ;-)

Key programming
I have a US keyboard but need German umlauts. Also, the PgUp/PgDn key block is quite far away... So let's do some programming ;-) I've selected the pc104 keyboard, us layout, and here is the .Xmodmap that I load additionally:
    ! Make the left win key the mode_switch key. By that, the third and fourth
    ! column in a key definition define the keys generated by win+key.
    clear Mod4
    keycode 0x73 = Mode_switch
    add Mod4 = Mode_switch

    ! I'm german, but prefer an us keyboard. But I still need umlauts,
    ! so I add them to be generated with the win-key.
    keycode 0x20 = o O odiaeresis Odiaeresis
    keycode 0x1e = u U udiaeresis Udiaeresis
    keycode 0x26 = a A adiaeresis Adiaeresis
    keycode 0x27 = s S ssharp

    
    ! PgUp and PgDn are too far away, so I put them on the win-menu
    ! and the right control key.
    clear Control
    add Control = Control_L
    keycode 0x6D = Next
    keycode 0x75 = Prior

    ! make the right alt key the super_r key with modifier 3.
    ! Actually, it could be any key, I just wanted the modifier 3 here
    ! to use it in ctwm.
    remove Mod1 = Super_R
    clear Mod3
    keycode 0x71 = Super_R
    add Mod3     = Super_R

    !-- end
    
Now comes the nice thing with the ctmw. It's a quite old window manager, but it's so nicely configurable, that it beats every KDE ;-). (If you like, have a look how nice ctwm can look.) Anyway, you can do nice key programming in ctwm. To use the right alt key as modifier together with the six keys block (Insert, Delete etc.) for volume adjusting, I added the following lines to my .ctwmrc:
  # Define Sound-Functions via the right alt-key (Super-R with Mod3)
  "Prior"  = m3:all          : f.exec "aumix -p+5"
  "Next"   = m3:all          : f.exec "aumix -p-5"
  "Home"   = m3:all          : f.exec "aumix -w+5"
  "End"    = m3:all          : f.exec "aumix -w-5"
  "Insert" = m3:all          : f.exec "aumix -v+5"
  "Delete" = m3:all          : f.exec "aumix -v-5"
    
Thus, right alt + Insert/Delete will increase/decrease the general volume, Home/End deal with PCM and PgUp/PgDn adjust the speaker volume. I used the right alt-key with modifier 3 because ctwm refuses to recognize the win-key (mode_switch with modifier 4)...?!

The same way, one can set F7/F8, which have the battery symbols on it, to load either xapm1 or xapm2:
  # let right Alt and f7/f8 change between xapm1 and xapm2
  "F7"     = m3:all          : f.exec "(killall xapm2;xapm1 -g 45x13-110+0&)"
  "F8"     = m3:all          : f.exec "(killall xapm1;xapm2 -g 45x13-110+0&)"
    
And with right alt + F9/F10 we set the brightness to 60%/100%:
  # right Alt and F9/F10 set brightness to 60%/full
  "F9"     = m3:all          : f.exec "/usr/local/bin/m300bl 4"
  "F10"    = m3:all          : f.exec "/usr/local/bin/m300bl 8"
    
For the console, I set the right alt-key and the win-key to AltGr and added the same functionality by extending /usr/lib/kbd/keymaps/i386/qwerty/us.map.gz with the following lines at the end:
  keymaps 0-6,8-9,12  #must contain 2-3 because that is AltGr/AltGr+Shift
 
  # changed keycodes:
  keycode  58 = Control   # - caps_lock is becoming control
  keycode  97 = Next      # - right control is becoming pgdn (prior)
  keycode 127 = Prior     # - Win-Menu is becoming pgup
  keycode 125 =  AltGr  # - make Win key Mode_Switch
  keycode 100 = AltGr   # - right alt key becomes AltGr, too

  # now define umlauts
  keycode 30 = a A adiaeresis Adiaeresis
  keycode 24 = o O odiaeresis Odiaeresis
  keycode 22 = u U udiaeresis Udiaeresis
  keycode 31 = s S ssharp

  # define Insert/Del/Home/End/PgUp/PgDn block for volume adjusting
  AltGr keycode 110       = F110                  # Insert
  string F110             = "aumix -v +5\n"
  AltGr keycode 111       = F111                  # Delete
  string F111             = "aumix -v -5\n"
  AltGr keycode 102       = F102                  # Home
  string F102             = "aumix -w +5\n"
  AltGr keycode 107       = F107                  # End
  string F107             = "aumix -w -5\n"
  AltGr keycode 104       = F104                  # PgUp
  string F104             = "aumix -p +5\n"
  AltGr keycode 109       = F109                  # PgDn
  string F109             = "aumix -p -5\n"
    


Modem

The internal modem is a 56K Lucent Winmodem. The chip is detected (look for it in /proc/pci). Drivers can be found at http://www.heby.de/ltmodem. The installation is very easy and works for kernel 2.2 as well as 2.4. The modules will be compiled for your current kernel during the installation, so you need to reinstall (i.e., recompile) the modules when you update the kernel. I've made a little (source) rpm which I can send you if you are interested.
Load the modem modules with "modprobe lt_serial". For 2.2 and PPP, you need to modprobe the slhc and ppp modules (if you don't have it compiled into the kernel). For 2.4., you need also PPP support for asynchronous serial ports compiled into the kernel. If you have it as module, just use "modprobe ppp_async" to enable PPP support.
Then you can use e.g. wvdialconf to autodetect and setup the modem and PPP connections. That works without any problems.
If you use the kernel sound module, the modem does not make any sound. Jake Hawkes had success in using the ALSA drivers, but I could not reproduce his success so far. There is a sound patch for kernel 2.4, take a look at the sound section.

Telephony
Pablo sent me some information about using the E500 as phone :-) I quote:
"It's a couple of programs by Pavel Machek at http://close.u-net.com (package is ltmodem-0.9.9.tar.gz), called "ltmodem" (yes, the same name than the modem driver, but it's a program) and "phone" that, supposedly, turn the computer into a telephone by somehow connecting the microphone output to the modem input. But that's what is driving me mad all these days! If I run any of the programs (actually, phone is kind of front end to ltmodem) without the sound module loaded, all behaves well (save that I neither hear nor am heard ;-), but if I try to run them with the maestro.o loaded, the system hangs. Well, just now, when I was writing this, has arrived a mail by Pavel saying that, in order for the computer not to hang, the irq _must_ not be shared. And, you know, in our systems irq 11 is shared by several devices."
So he tried to change the interrupt:
"I made some experiments brute force and guess what I got... If I do
root# setpci -s 00:09.0 interrupt_line=0a        (that's 10)
root# modprobe lt_modem Forced=10,0x3800,0x3834  (irq and resources)
then dial with, e.g., wvdial, I get dialtone, and the modem dialing and negotiate the handshake. :-)) Then the computer hangs. :-(("
However, he also has a pcmcia modem, and when he uses this one, he gets sound without sound modules loaded. Then unplugging the pcmcia modem and stopping the pcmcia service, and loading the ltmodem modules, gives sound from the ltmodem without any alsa or maestro sound modules loaded. Strange effect! If someone has more information on this, let me know!

Fax

The Lucent modem has fax class 1 capabilities, 14400bps. Class 1 faxes let the CPU/OS do a lot of work while class 2 do most of the work on their own. Unfortunately, class 1 faxes are not very well supported by Linux. However, there are at least two software packages, one free and one commercial.

Network

The network interface (if you have one built-in) is an Intel chip which will run flawlessly with the eepro100 module.
Note that LAN acticity can wake up the laptop if it was suspended but still connected.

Docking station

Vincent Deffontaines reports, that the keyboard works with the docking station. Latest update reports mouse is work, too, but problems with finding a driver for the network adapter, which is not yet solved. He will add more information as soon as he finds the time to try the other features.

Matthias Eichler also has a docking station, the one with two extra PCI slots. He reports, that the network card is detected as eth1 but only works with a fixed config but not with DHCP. Even the built-in network adapter in his Armada will not work with DHCP anymore while the notebook is in the docking station. This issue is now solved with SuSE 8.0
Keyboard, Mouse and monitor work without problems. If you remove the notebook from the docking station while it is suspended, it will wakeup and feel very confused because a network adapter is normally not hot-swapable :-)

Neil Bingham had to include Option "crt_screen" defined for the ATI device to use an external monitor with the docking station after he had upgraded from Red Hat 6.2 to 7.1.

USB

I did not try USB myself, but Darren Moorhouse reports the following: "I have tried an iMac usb mouse with it (just for the fun of it). Linux liked it just fine. Didn't take much beyond plugging it in and telling the system what kind of mouse it was."

Jaroslaw Karwik figured out this: "Kernel 2.2.17 gives USB support for mouse (checked with Logitech USB/PS2 mouse). According to documentation also USB keyboards are supported. To get my favourite Iomega 250 ZIP drive I had to use kernel 2.4.0 (works without problems)."

Klaus Steinberger reports that he managed to add an Epson Perfection 640 Scanner with the 2.2.18 kernel (a one-line patch in drivers/usb/scanner.h is neccessary) and got gimp/xsane working with it. Also detecting a RICOH camera worked fine.

Marco Roeland tried a USB webcam called "Trust Spyc@m" and reports that it works well. And he told me, it is very cheap also!

IRDA

Also not tried. But at least some comment from Jake Hawkes: "I contacted compaq, and they tell me that the IR chip is SMSC's IrCC 2.0 compliant controller, but I am yet to get this working."
Reginaldo Stückner has added those information about the chip:
Device ID:        SMCF010
Device Name:      SMC IrCC Fast Infrared Port
Device Type Code: 070002

IRQ = 3, DMA = 5, I/O Port = 03E8, I/O Port = 0100
    
and found more information at http://mobilix.org/Infrared-HOWTO/infrared-howto-c-hardware-supported.html

Simeon Petkov sent me the following description how to get IRDA working with SuSE:
So the only thing you need to get it working with
SuSE (i.e. 7.0 with a 2.2.16 kernel) is change rc.config
by making the IRDA_PORT - line looking like this:

IRDA_PORT="/dev/ttyS2"

then in the shell:

> rcirda stop
> rcserial stop
> setserial /dev/ttyS2 irq 3
> rcserial start
> rcirda start

irdadump should now bring the discovery packages every
3 sec. - no segmentation fault any more ;]

If you now f.e. want to use the irda port to surf over
your mobile you just need a link of the modem pointig
to /dev/ircomm0
    
Jaroslaw Karwik pointed me to some newsgroup discussion where I found the following description by Alan Carter, taken from http://www.pasta.cs.uit.no/pipermail/linux-irda/2000-November/001899.html. I've no idea if this works the same way for SuSE, but anyway ,should give you some hints what to do.
"Hi
I am using redhat linux 6.2 with a nokia 7110, to get irda working I had to upgrade my kernal to ver 2.2.16. I have included a list of instructions I have used to get IRDA working.

Configuring Nokia 7110 for ircomm

  • Check to see if you have irda utils (check in /etc/irda)
  • Compile the kernel. You need (m) IrDA Subsystem (m) for IrCOMM, (X) IrDA protocol options, (X) Fast RRs, (m) IrTTY), (M) IrPORT). This is for kernel versions 2.2.15/2.2.16
  • Edit the script file /etc/irda/drivers, uncomment the irattach /dev/ttyS2 (this will depend on which serial port your irda port is (check with 'dmesg'). Comment out any other irattach drivers).
  • enter the following into /etc/config.modules:
    alias tty-ldisc-11 irtty     
    alias char-major-161 ircomm-tty 
    	  
  • Make the following devices:
    mknod /dev/ircomm0 c 161 0    
    mknod /dev/ircomm1 c 161 1
    mknod /dev/irlpt0 c 161 16
    mknod /dev/irlpt1 c 161 17
    
  • Next make a link between /dev/ircomm0 and /dev/modem (if you wish to use the phone as a standard modem).
  • I also had problems with pcmcia using the irq3 (check file /etc/pcmcia/config.opts).
  • restart your computer.
  • start irmanager (irmanager -d 1), check for errors in your /var/messages file.
  • start irdadump. switch on you phones irda port and check to see if you have contact. You will see the phone annouce itself.
  • All you then have to do is to use you favourite dialup program. I have used kppp and wvdial with success..

Alan"




Did I forget something important? Do you need more information? Please tell me!

Frank Steiner