Using GNATbox with the SMC 8216


The SMC 8216, also known as the SMC Elite Ultra, is a now discontinued ISA Network Interface Card.  This card and I have a long and, um, "interesting" relationship.  The short version is, I have done a LOT with it, lost a lot of hair and made a lot of money, and while I would say it can be a most difficult card to work with in some environments, the rewards of getting it working in a GNATbox firewall system will be one of the fastest, most efficient and most stable GNATbox systems possible with ISA NICs, and as the 8216 is fairly available surplus, it is worth knowing how it can be used with GB.

Much of this document was originally published as a posting to the GB-Users mail list.

Technical Description of the 8216:

The 8216 is available in at least four forms: "Combo", including connectors for 10BASE-T, Coax and AUI; 10BASE-T only; 10BASE-T and AUI; BNC and 10BASE-T.  Other combinations likely exist, these are the combos I have seen and remembered.

The card is a configured via a DOS application, typically EZSTART.  This program really desires a Color VGA monitor -- use with MDA or monochrome VGA may be very frustrating, and a mouse and mouse driver may be advantageous, although it is certainly not needed and probably not worth the trouble to anyone who should be inside a computer.

A set of "emergency jumpers" are provided (although, not installed on all cards) to enable the card to be "forced" to another setting to eliminate conflicts long enough to get the system back to 100% operation.

The card should typically be configured one card at a time -- configure the first card with no other cards in the system, then configure the second card.  If you do it carefully, you can leave the first card in place while you configure the second card.  The EZSTART program will not permit you to attempt to configure more than one card in the machine if they have the same base I/O address.  In a pinch, the "emergency jumpers" can be used to move one card "out of the way" so that they can be both configured, but then, if you can handle that, you probably don't need this document at all.

The card uses shared memory, which makes it "different" than most NICs (although, far from unique), and as this is a fairly unusual concept now, it warrants some explanation.  "Shared memory" is an alternative way for software to communicate with the card.  Most NICs do this via I/O ports, which are also used by the 8216.  Shared memory is a chunk of RAM located between the 640k point and the 1M point in the IBM PC memory space, which physically exists on the network card, but is accessible by any program or driver running on the system.  The card can fill the shared memory space with data, the program/driver can read it.  The program/driver can place data in the shared memory space, and the card can send it out to the cable.  This system worked GREAT on "lower performance" computers, such as 80286 and earlier systems, but on 386 and faster systems, it normally bought the user very minimal performance gains, and it REALLY messed up the operation of programs like EMM386.EXE which came into common use just as the 8216 hit the market.  The problem is EMM386 wants the exact same memory area as the NICs do, and often ended up "stepping on" the NIC.  Knowing how to get around this proved to be very profitable years ago. 

This shared memory creates NO problem (other than proper configuration) for "real" OSs which don't need hacks like EMM386, and for this reason, while I would be slow to put an 8216 in a DOS or Windows workstation (just because it is profitable, doesn't mean I'd consider it the "right" thing to do), it makes a GREAT server card.


There is another card, the SMC8416 (One of VERY MANY cards called by SMC "EtherEZ") card, which came out a couple years after the 8216.  The 8416 is physically VERY similar to the 8216, to the point that you often have to LOOK at the labels on the card to identify the differences, however it differences are critical:

SMC8216 and GNATbox

There is both an error and incomplete information in the GB documentation (gb303ug.pdf 3/7/2000) for the SMC8216 card.

The error:

The SMC8216 uses the ed driver, not the de driver as listed on page 50.  This lumps it in with the NE2000, SMC8416 and similar cards.

The incomplete information:

No guidance is provided at all on the shared memory settings on the SMC8216.

Configuring the SMC8216 for GNATbox:

UPDATED INFORMATION for GNATbox 3.11 below...

Users who have used the SMC8216 under other OSs are used to just setting the card up to a non-conflicting settings and having the driver find it. GNATbox does not work this way!  Like the other cards using the ed driver under GNATbox, you have certain pre-defined settings, and you MUST use those settings or things won't work!  The proper shared RAM locations are not disclosed in the manual.  I found these settings by running GB on the card and looking at the error messages (which say something like "RAM not found at...").  Unfortunately, due to the way the available options of the SMC8216 and the options of GB's ed driver mesh, there are limited availability of compatible settings.

ed0:  io: 280  irq: 10  memory: d8000
ed1:  io: 300  irq: 5   memory: da000
ed2:  io: 320  irq: 11  memory: dc000
ed3:  io: 340  irq: 12  memory: ?????
ed4:  io: 360  irq: 15  memory: 40000??
(from GB manual, pg. 56 and experimentation)

Here are the problems with this layout:  The SMC8216's memory block is 16k in size.  You can not, therefore, use ed0 and ed1 settings, or ed1 and ed2.  You can use ed0 and ed2.

Further problems:
* ed3 is out, as the SMC8216 doesn't permit the selection of IRQ12,  which isn't a bad idea, as IRQ12 is used by PS/2 mouse ports, and might cause problems anyway on many systems.
* ed4 is out, as my testing indicated it wanted the shared memory at 0x40000, which is right in the middle of the "DOS memory", and not selectable anyway on the 8216.  To add insult to injury, I/O 360 conflicts with the standard LPT port location of 378, although many computers will let you change this.

Short version in english:

If you want two SMC8216 cards, set them to:
If you want three or more SMC8216 cards, well, don't.  You can't.  You could, however, use two SMC8216 cards and one (or more) other card(s) of another type.

Note that it should be pretty easy for GTA to change the memory definitions of the ed driver so that things work better with the SMC8216 card, so (with luck) all the above may change for a future release of GB.  I'd also suggest a change of the ed3 and ed4 definitions, while I'm at it...most ed series cards offer better locations, and the ones that don't (like the REAL NE2000) won't support IRQs 12 and 15 anyway)

Another problem:  I could not find the SMC8216 setup program on SMC's web site!  Lots of drivers, no way to set the card.  Doh!  Fortunately, I have kept copies of this from years past, however I don't have easy access to unlimited bandwidth, and it is very unclear whether I would have the right to redistribute this file.

GB 3.11 updated information:
Aren't those GB people wonderful?  While they are not eager to support old ISA cards (or even new ISA cards) under GB (and I fully appreciate this), as changing the settings listed above is a fairly easy job, they did just that!

Starting with GB v3.11, the definition of ed1 has been changed, making it useful for the SMC8216.  It is now possible to have ed1 as well as ed0 and ed2 at the following settings:
   ed0:  io: 280  irq: 10  memory: d8000
   ed1:  io: 300  irq: 5   memory: cc000
   ed2:  io: 320  irq: 11  memory: dc000
So now you can have a PSN with the 8216!

You should probably be warned, as of my writing this, there is probably only ONE person who has been testing this (me), on only two different computers.  So, if you want a "guaranteed" rock-solid system and only need two ports, you might want to stick to ed0 and ed2, but ed1 is out there if you want/need it.  I have had no problems with its use.

Tips on the EZSTART program:

I'm going to assume you have followed my advice and are trying to configure only one card at a time.  At the DOS prompt, run EZSTART.EXE.  This program is mouse aware, if you have a mouse and mouse driver loaded before you start it, you can use it.  It isn't worth the effort, however.
   Choose Custom (i.e., not automatic setup)
   Chose Setup
      Make sure the "Soft" radio button is chosen
      Set the I/O, IRQ, RAM and Interface options appropriately.
      Save your changes
   Hook up a network cable, and choose Basic Test.  Pretty decent test, makes sure card can see hub, verifies no resource conflicts.
   Shut everything down, repeat on next card.
EZSTART will list memory addresses by segment (as a DOS app might be concerned with, rather than by absolute addresses (as a 32 bit app would be concerned with).  In English, this means dc000 "=" dc00.  EZSTART will show dc00, GB will show dc000, that's fine.  Same thing.  Too bad this doesn't work in payroll departments ("Honest, Boss, Nick says $40,000 is the same as $400,000, so how about giving me $400,000 a year?")!

Notes on SMC8416:

Like the 8216, this card uses the ed driver, however it has a few issues to be aware of.
The same EZSTART program configures the 8416, but you will find different options.
       Plug and Play.  Make sure this is turned off.
       Make sure the shared memory is turned off (I/O mapped, not memory mapped).
You can use any of the following settings: ed0, ed1, ed2, and maybe ed4 (ed3 is not usable, as the 8416, like the 8216, does not permit IRQ12.  ed4 is questionable because its I/O address of 360h conflicts with the most popular LPT1 setting of 378h, and GBPro requires the printer port be there (for the dongle).  If you wish to use 360h on GB-Pro, move your LPT1 port to another setting (278h or 3BCh).

Comments on the SMC8216 and SMC8416 cards:

I've installed a lot of them.  The upper memory on the 8216 makes it unsuitable (in my opinion, at least a REAL PAIN) for DOS and Windows 9x OSs.  GB's support of them is solid, but a pain due to the fact that only two of the cards can be used, and only at those locations.  Years ago, I did some informal benchmarking of a number of ISA NICs with Novell, and found the SMC8216 to be the second fastest (behind the 3c509, probably the original version).  The SMC8416 came in close behind the 8216, definitely behind (Contrary to some advertising of SMC's at the time), but close.  I have since done some very, VERY informal testing of the 8216 vs. the 3c509 card in GNATbox.  It appears the 8216 is significantly (i.e., you can tell, without a stopwatch) faster working in a GB system.  (note: Many users have experienced significant problems with the 3c509 card with GB.  I would thus recommend against the 3c509 unless you wish to see if you are one of the lucky ones -- some people have reported no problems with the 3c509 at all, although I have reason to believe your odds are NOT good).  Yes, it is reasonable to have different cards perform differently under different OSs.

On PNP BIOS machines, you should probably also make sure you have set the machine's BIOS to reserve the IRQs used by any ISA cards, so you don't end up with conflicts with any PNP resource (like PCI NICs).  Pull out ANY cards not required by GNATbox.

If the above makes sense to you, you will probably have no trouble with either the SMC8216 or the SMC8416.  If it was totally incomprehensible, you might want edit out my random ramblings and try again, or stick to PCI cards.

Holland Consulting home page
Contact Holland Consulting

since June 24, 2000

(C)opyright  2000, Nick Holland, Holland Consulting

Published: 7/1/2000
Revised: 11/24/2000