Linux and 3Com EtherLink XL Ethercards

This page contains information on using Linux with 3Com "Boomerang" series ethercards. The master copy resides on the CESDIS WWW server.

The supported models are the PCI Fast EtherLink XL "Boomerang" series (3c900 and 3c905) and ISA 3c515 Fast EtherLink. The PCI EtherLink III "Vortex" series (3c590 3c592 3c595 and 3c597) are also supported.


Mailing list

Support for the Vortex and Boomerang drivers is now being handled through the mailing list This mailing list is appropriate for most topics including bug reports, performance reports, and suggestion for driver improvement. To subscribe, send a message with the contents "subscribe" e.g.:

echo subscribe | /bin/mail

New driver announcements are made (and occasional discussions held) on the mailing list


Linux 2.0 update for 3c90* "Boomerang" cards.

An updated version of 3c59x.c exists to support the new "Boomerang" 3c900 and 3c905 EtherLink XL cards.

For the brave, an alpha test driver that supports the new full-bus-master feature of the boomerang is available. It's named boomerang.c and works only with the v2.0 kernel versions. It directly replaces

Please send a report if you use this driver.

Larry Augustin at VA Research has added these changes to their pre-patched kernel source trees at

Linux 1.3.80 and later version

I have released an updated version of 3c59x.c which fixes the following problems

The new version also supports the shared interrupts and includes the alpha version of the automatic media selection code, which is enabled by default. Please send reports about its success or failure of these features! (As if I have to ask about failure reports ;->)

Special Micron instructions

Some motherboards have a broken PCI BIOS implementation that doesn't actually map the card to the reported I/O address. This problem affects most OSes as well as the 3Com setup program for MS-DOS. The work-around is to disable "Plug-and-Play" in the BIOS setup.

Special Dell instructions

A "SIOSIFFLAGS: Try again when starting an ethernet device means that there is an interrupt conflict. Dell machines tend to assign multiple PCI devices to the same IRQ line. Generally this works under Linux -- most PCI drivers are willing to share IRQ lines (with the inevitable increase in CPU overhead). But some drivers, specifically several SCSI drivers use the so-called "fast" interrupt structure that is incompatible with most other drivers.

Generally the solution is to use BIOS PCI setup to change the IRQ assigned to the card. But some Dell machines don't have this functionality. The solution is to physically move the card to a different slot.

Special Compaq instructions

Compaq uses an unusual PCI BIOS implementation that is mapped to high memory. All extant versions of Linux are unable to work with it. For now the only work-arounds are to boot first into MS-DOS and run a Compaq-supplied program to remap the PCI BIOS tables, or to hack the driver source code with the ioaddr and irq values.

You can do this by adding the following lines to the bottom of the vortex_scan() function, with the proper values filled in :

  vortex_found_device(dev, <*ioaddr*> , <*irq_line*>, <*product_id*>,
          dev && dev->mem_start ? dev->mem_start : options[cards_found]);
  dev = 0;
The *product_id* value is from the table near the top of the source file, and should be '0' for the 3c590 or '1' for the 3c595. I know this is pretty sleazy, but it should work.

Old Announcements

These announcements are obsolete

Linux 1.3.20 version

The 1.3.20 kernel distributed with Slackware is in common use, so here is a pre-compiled module for that kernel, as well as the source code that generated it.

It's standard in 1.3.59 and later!

The Vortex driver is now standard in the 1.3.59 and later kernels. If you have a more recent kernel, use the distributed version in preference to the drivers here unless you have a specific problem (which you should report). This page will now be used

There is a newly updated Vortex driver for 1.3.4* that supportavailable that adds the following features:

Note: the compile-command at the end of the source file now puts the object module in "vortex.o" rather than "3c59x.o".

The newly updated Vortex driver available that adds the following features:

The run-time portion of the driver has been very reliable and remains the same.

Old announcement:

The driver for 3Com 100Mbs "Vortex" PCI ethercards is now available. It works with both the 10Mbs 3c590 and 10/100Mbs 3c595 boards. This is the new version of the driver with code clean-ups and Cameron Spitzer's fixes.

Sorry, this driver isn't yet integrated with the kernel source tree. It will be with some later 1.3.x development kernels. In the meantime, here is the driver for the 1.3.* series kernels.

Installation instructions for 1.2.13

Alternate patch files

Alternate patch files will be made available for other popular kernel versions. Send me email if you have a request.

Installation instructions for the Modules version

Linux has a facility for linking device drivers into the running kernel. This is called Modules support. While probing for ISA devices at run time is a bad idea, some device drivers for PCI cards may be safely installed in this way. (And I'll even concede that it might be a Good Idea ;-)

Here's how to make and load the Modules version:

Possible problems and solutions

If you get an "linux/version.h no such file or directory" you either have not installed the kernel source code, or you haven't run

	cd /usr/src/linux; make include/linux/version.h
yet. Some distributions allow you to install just the essential header files of the kernel source code, including a pre-built "version.h", so this isn't always necessary.

Usage instructions

This file is in the kernel documentation directory after 1.3.72:

This document describes the usage and errata of the 3Com "Vortex" device
driver for Linux.

This driver supports the following hardware:
	3c590, 3c592, 3c595, 3c597

When loaded as a module the following variables may be set:
 name	 type	description
 debug	 int	The debug message level, 0 (no messages) to 6 (wordy).
 options int[]	The media type override and card operation settings
		(See list below.)

An example of loading the vortex module is
	insmod 3c59x.o debug=1 options=0,,12
This sets the debug message level to minimal messages, sets the first card to
the 10baseT transceiver, the second to the EEPROM-set transceiver, and the
third card to operate in full-duplex mode using its 100baseTx transceiver.
(Note: card ordering is set by the PCI BIOS.)

Possible media type settings
	0	10baseT
	1	10Mbps AUI
	2	undefined (special case: 10baseT from the LILO prompt)
	3	10base2 (BNC)
	4	100base-TX
	5	100base-FX
	6	MII (not yet available, and thus untested)
	8	Full-duplex bit
		8 10baseT full-duplex
		12 100baseTx full-duplex 
	16	Bus-master enable bit (experimental use only!)

Details of the device driver implementation are at the top of the source file.

Details of the 3c590 tests.

The 3c590 cards were tested on an ASUS SP3G motherboard with a i486DX2-66 processor. This motherboard uses Intel Saturn chipset. The tests were conducted with the card connected to an Addtron 8 port unmanaged hub, linked by a bridge to the busy Goddard backbone network.

Details of the 3c595 tests.

The 3c595 cards were tested on two machines. The first was the machine above with the ASUS SP3G motherboard. The second was a 486 PCI/VLB motherboard using the SiS chipset. The tests were conducted with the cards connected by two 1.4 meter Category 5 cables connected by a "RJ45" female-to-female coupler that crossed the Rx and Tx pairs. No 100baseTx hub was available for multiple-node tests.

Related resources

This driver was written to support the Beowulf cluster project at CESDIS. For Beowulf-specific information, read the Beowulf project description.


Thanks to Terry Murphy, Terry_Murphy@3mail.3Com.COM, and Cameron Spitzer,, of 3Com for providing the 3c590 and 3c595 ethercards and the databook.

CESDIS is located at the NASA Goddard Space Flight Center in Greenbelt MD.

Author: Donald Becker,