Compaq Armada 4100

The definitive guide to the Compaq Armada 4100 Family Convenience Base Ethernet connection for Linux

Oke, that title may be a little over the top, but it is what it pretends to be. And rightfully so since I've wasted, err spend a lot of time figuring out how to get it up and running. But first how this came all about.

A little history

The company where I work occasionaly sells old office equipment to its employees for a small amount of money. Sometimes it's tables and chairs, sometimes old lab equipment. You know, tech freaks love that kind of stuff. At the top of the whishlist are old PC's and laptops, which can be put to good use on all kind of home projects. So, on one of these occasions I ended up with a Compaq Armada 4120, including a docking station.
It had Windows 95 installed on it and nothing else. But that was oke with me since I had other plans for it anyway; it was to become my Linux playground. It hardly cost me anything and was in no way needed for my daily computational needs, so I could wreck it without causing a problem. Together with a friend I started out to get things started. First we figured out how to repartition the harddisk, in order to save Win95, add a Linux partition and have some swapspace as well. Unfortunately this Armada came without the CD-ROM craddle, which would have made installing any Linux distribution a lot easier. Either a disk set had to be created or a network install attempted. Of course the latter was a bigger challange so we choose that. A spare PCMCIA Ethernet card was put in the slot, a PCMCIA setup disk created from the intended distribution (we used Redhat 6.1 Cartman at the time) and put in the disk drive. Then we fired her up. Well, as you've probably guessed we loaded Redhat, compiled a custom kernel tailored to the Armada and setup LILO to play around with various settings. Once that kernel was pretty much the way we wanted it, I started exploring the motherload of software and services that were available on the machine. Configuring all this stuff, especially the X server was very educational, so it served its purpose very well.

Of course the Internet proved a valuable source of information on this. These are the pages I used to get most of the stuff working.

Linux on the Compaq Armada 4120
Linux on the Compaq Armada 4120T
Debian Woody on a Armada 4120
Linux on Laptops
Linux on Laptops

But there remained one nagging problem, the Ethernet port on the docking station.

Docking station Ethernet port

Even though I didn't have a great need for networking the Armada in the beginning, I wanted to get it connected eventually. So the easy way was to buy a PCMCIA card, add the driver to the kernel and be done. But since I didn't want to spend any extra money on the machine and the Ethernet port was there I wanted to use the docking station. From booting into Win95 I knew it worked and I started collecting some information from it, like the driver, the resources it uses and stuff like that. Right from the start I reconed that it wasn't a normal Ethernet device, like on the PCI bus or something like that. It didn't show up when using lspci. There were some hints about sharing resources with the parallel port and things like that.
A little googling didn't reveil much info, other than the stuff I already found at several sites when searching for X server settings and so forth. All of these hinted at an Ethernet port but they all ended up being a PCMCIA card in the expansion slot. That was not the way I wanted to go.

After putting the matter to rest for a while, I recently went back to the subject to get it over with for once and for all. The Linux learning curve had been conquered by having a self created patch accepted into the Kernel source, so it was time to get a serious update done on the Armada as well. In the beginning we had been dumping all kinds of stuff on it and we also put the 2.4.2 kernel sources on the disk, with which I hadn't done much. Now was the time to get configuring and compiling it, with the right driver to get the Ethernet port up.
Occasional research I did into the subject lead me to a thread in Linux-Networking Digest #704
From: "Lee Sharp" <[EMAIL PROTECTED]>
Crossposted-To: comp.os.linux.setup
Subject: Re: Compaq Armada Ethernet
Date: Thu, 1 Apr 1999 13:32:17 -0600

G. Stuart Mendenhall wrote in message <7e0f61$7li$[EMAIL PROTECTED]>...

| Has anybody gotten the Ethernet in a Compaq Armada 4100 series
|docking base with built in Ethernet to work correctly?  I can't find out
|the chipset or anything.  The windows 95 driver was written by compaq; I
|can only find out the io , which is 0x378, the same as the parralel port
|(which causes problems in Win95 once in a while)...  I have tried all of
|the drivers included in Debian 2.1 (slink) which I have installed (only
|the base system, as I can't connect... ) using modconf.

   It is the much discussed Tlan chip.  It has to be "insmod tlan duplex=2"
after install, and then "netconf"ed...

It lead me to believe that there is a TI ThunderLAN chip in there. So I started with that driver. I first tried it with the 2.2 kernel I have been using until now, which is modular, so I could load the driver on runtime. 'insmod tlan duplex=2' would load the driver and get things going. Well it didn't. After trying several other drivers to no avail I focused my attention to the 2.4.2 kernel sources. Maybe it contained a better driver which may work on this setup after all. After building a few monolithic kernels I still didn't get the result I was hoping for.

Time to call in the experts. From the driver sources in the kernel I found a mailing list on sourceforge which is dedicated to the TLAN chipset support on Linux, moderated by the driver maintainer Sam Chessman. I had hoped that someone on the list had seen the problem before and could point me to a rapid solution, but no one did. Instead Sam provided very good step by step guidance through the process of determining the cause of the problem.
One thing that stood out was the fact that the Ethernet chip wasn't to be found on the PCI bus. So how was it hooked up to the system? What I had noted in the Win95 driver was that there is a parallel port setting in there. Curious. Then someone mentioned pocket adapters. They were popular for a few years after which PCMCIA and USB adapters took the market by storm. They were dongle style parallel port adapters which create a Ethernet port. D-link and Xircom were the prominent brands. Together with this conversation this lead me to believe that maybe there is no TLAN chip in there after all. After all, it was only an unconfirmed statement. Now with more questions than answers there remained only one thing to do. To open up the docking station...

docking station enclosure and baseplate connectors

The inner workings

Disassembly of the docking station is fairly easy. The base plate and interface module are easily seperated, thanks to the build in leaver, leaving a plastic enclosed interface module to be opened up. Undoing six screws open up the plastic enclosure exposing the metal box containing the electronics. Again a row of screws is holding everything together, so once these were removed the printed circuit board came out easily.

case and enclosure board and case

Since the connectors are in a nice row, all the circuitry can easily be identified in relation to the connectors. Mostly buffer circuits are present, since all peripherals are present in the laptop already. Only the Ethernet hardware stands out. This is a detail of it, with notes of the relevant connectors and components.

board detail

So, there it is. No TLAN chip, but a plain old National Semiconductor 83902 (Check here for the relevant application notes) The only other complex chip in that area is the Silicom chip. That must be the interface between the parallel port and the Ethernet controller. So that's the next target of the investigation.

port controller


Which one is it? Looking for the manufacturer of the chip reveals two Silicom's: Silicom Corporation looks more like a services company. Silicom Limited looks more like a technology company, so I focussed on them.

Looking for information about Silicom pocket adapters gave only a single hit on a NETBSD mailing list. Not much to go on, so back to the sources. Maybe the D-link driver sources provide some clue how these chips manage to interface the parallel port to the Ethernet controller. Judging from the config file created when configuring the 2.4.2 kernel with a D-link pocket adapter the 8390 object is also added to the make. This assured me that the D-link pocket adapters used the same architecture: a interface chip to get from the parallel port and a (well known) Ethernet controller for the network part.
One remark in the D-link sources gave me an idea about a new Internet search. The statement was that the driver was partly based on a assembly file released on an old driver disk. Maybe Silicom did the same? So I went looking for the combination of Silicom and assembly. This proved to be a lucky guess, because it resulted in two valuable leads.

One of the leads was to this part of a kernel patch:

diff -u --recursive --new-file v1.1.68/linux/arch/i386/ linux/arch/i386/
--- v1.1.68/linux/arch/i386/	Mon Nov 28 14:21:43 1994
+++ linux/arch/i386/	Wed Nov 30 21:53:47 1994
 bool 'Pocket and portable adaptors' CONFIG_NET_POCKET n
 if [ "$CONFIG_NET_POCKET" = "y" ]; then
+	bool 'AT-LAN-TEC/RealTek pocket adaptor support' CONFIG_ATP n
 	bool 'D-Link DE600 pocket adaptor support' CONFIG_DE600 n
 	bool 'D-Link DE620 pocket adaptor support' CONFIG_DE620 n
-	bool 'AT-LAN-TEC/RealTek pocket adaptor support' CONFIG_ATP n
-	bool 'Zenith Z-Note support' CONFIG_ZNET n
+#	bool 'Silicom pocket adaptor support' CONFIG_SILICOM_PEA n
+#	bool 'WaveLAN PCMCIA support' CONFIG_WaveLAN n
+#	bool '3 Com 3c589 PCMCIA support' CONFIG_3C589 n
Note that a selection option for 'Silicom pocket adapter support' is created, in a comment. What does this mean? Is it experimental? Is the driver going to be added later? The next patchfile in which this option appears is for 1.3.36 on the file linux/drivers/net/ It clearly moves the option into the networking configuration options, but still as an commented out option. No real progress since 1.1.69. Finally the patchfile for 1.3.48 removes the option, still as a comment.
Since no real changelogs for these old (1.x.x) kernels are available, all that is left is to suck a collection of these old kernels from the mirrors and start looking. Unfortunately to no avail. There is no driver to be found.

Still the other lead was to be persued. I had stumbled upon the resume of Omer Zak. Among the list of previous employment was, low and behold:

1992-1993: Silicom Ltd., Ra'anana: Software and electronics engineer: Logic Design of a pocket adapter for connecting laptops to Ethernet. Development of drivers which allow the aforementioned pocket adapter to be used in commonly-used LANs.
Just the man I was looking for. The engineer who was right there, at the spot it all came from. What a coincedence. So I dropped him a line, explaining my quest. He is a very friendly character, kindly explaining some details of his employment and what he worked on. It was not this product, but an earlier product, the SET+, he was involved with. Well, that may have been the basis on which my docking station was build, so it was worth a try. While looking for the drivers I noticed that the SET+ is offered in just about any German online techshop. Don't know why these are so popular there. Anyway, searching through the driver collection revealed nothing like a Linux driver or source code to any of the included drivers. This wasn't helping so far.

Two options remain. The first is to contact Silicom directly and see if they are willing to provide information, or maybe the 1.x.x source code. It could prove interesting for their sales as well, looking at the German webshops. Otherwise we may need to take some technical measures.

To be continued...

Written by my own two hands and an ASCII editor. Problems? write me Last updated December 8, 2004 Back home

This page is viewable with Anybrowser