Linux Driver for the D-Link DE-320CT Ethernet Adapter

Content © Alfred Arnold, 2002 (original HERE). Edited by Major Tom.


Yet some more Micro Channel Ethernet Linux stuff - this time it is not a complete driver but an addition to an existing driver to increase its usability.

D-Link also sold a Micro Channel Ethernet Adapter, the DE-320CT. From its basic layout, it is an NE2000 (NE/2 to be precise) compatible adapter, which has good and bad sides, but it is a short board and has a 10BaseT connector, a feature most older Micro Channel adapters lack.

Unfortunately, it is not precisely the same as an NE/2: It has a different POSID, the layout of the POS registers is different, and - what makes things most difficult - the MAC address PROM is different. The MAC address is the unique 48-bit address that identifies any piece of Ethernet or TR equipment. Standard NE2000 cards have an 8-bit wide PROM that can simply be read with a programmed I/O instruction. The DE-320 however uses a serial EEPROM (a 93C46 to be exact), and the serial protocol has to be implemented in software. A very tedious procedure, but fortunately this only has to be done once during initialization.

Note: The procedure of accessing the serial EEPROM was found by analyzing the packet driver. I had no information or documentation from D-Link, so my code may be incomplete!

You may download the sources here. I am providing the following files:

  • dlink.c - A tiny Linux program to dump the EEPROM's contents. The program assumes a base I/O address of 0x300, the default address for a DE-320.
  • ne2.c - A modified NE/2 Linux driver that also detects the DE-320, for 2.2 series kernels.
  • ne2-2.4.c - The same for 2.4 series kernels. Rename to 'ne2.c' for usage!

To use the Linux driver, simply copy the ne2.c file over the existing one in driver/net, enable NE/2 support and recompile your kernel resp. modules.

The modifications I added to the original NE/2 driver are as follows:

  • add the DE-320 and its POSID to the list of recognized boards
  • add the DE-320 method of deducing I/O address and interrupt from the POS register values
  • Add a routine to read the MAC address from the EEPROM

Like always, comments are (constructive) criticism are always welcome!

Note #2: This page was written after drinking a bottle of beer, so it probably contains a horrendous amount of typing errors. Sorry...
Note #3: (2002-07-11) I have added an additional fix that.

  • displays a correct slot number - it was off by one
  • corrects the amount of I/O space assigned to the D-Link card - it only occupies 32 instead of 48 addresses, and the driver refused to initialize all boards if you had more than one

Content created and/or collected by:
Louis Ohland, Peter Wendt, David Beem, William Walsh, Tatsuo Sunagawa, Jim Shorney, Tim Clarke, Kevin Bowling, Tomáš Slavotínek, and many others.

Ardent Tool of Capitalism - MAD Edition! is maintained by Tomáš Slavotínek.
Last update: 30 Jul 2023 - Changelog | Legal Info & Contact