In most cases, if the configuration is done by software, and stored in an EEPROM, you will usually have to boot DOS, and use the supplied DOS program to set the cards IRQ, I/O, mem_addr and whatnot. Besides, hopefully it is something you will only be setting once. If you don't have the DOS software for your card, try looking on the WWW site of your card manufacturer. If you don't know the site name, take a guess at it, i.e. `www.my_vendor.com' where `my_vendor' is the name of your card manufacturer. This works for SMC, 3Com, and many many other manufacturers.
There are some cards for which Linux versions of
the config utils exist, and they are listed here.
Donald has written a few small card diagnostic
programs that run under Linux. Most of these are a result
of debugging tools that he has created while writing the
various drivers. Don't expect
fancy menu-driven interfaces. You will have to read the
source code to use most of these. Even if your particular
card doesn't have a corresponding diagnostic, you can
still get some information just by typing
cat /proc/net/dev
-- assuming that your card
was at least detected at boot.
In either case, you will have to run most of these programs
as root (to allow I/O to the ports) and you probably want
to shut down the ethercard before doing so by typing
ifconfig eth0 down
(Note: replace eth0
with
atp0
or whatever when appropriate.)
For people with wd80x3 cards, there is the program wdsetup
which can be found in wdsetup-0.6a.tar.gz
on Linux ftp sites.
I am not sure if it is being actively maintained or not, as it has
not been updated for quite a while. If it works fine for you
then great, if not, use the DOS version that you should have got
with your card. If you don't have the DOS version, you will be
glad to know that the SMC setup/driver disks are available
at SMC's ftp site.
Of course, you have to have an EEPROM card to use this utility.
Old, old wd8003 cards, and some wd8013 clones use jumpers
to set up the card instead.
The Digital EtherWorks 3 card can be configured in a similar
fashion to the DOS program NICSETUP.EXE
. David C. Davies
wrote this and other tools for the EtherWorks 3 in conjunction
with the driver. Look on sunsite.unc.edu
in the directory
/pub/linux/system/Network/management
for the file
that is named ewrk3tools-X.XX.tar.gz
.
Some Nat Semi DP83905 implementations (such as the AT/LANTIC
and the NE2000+) are software configurable. (Note that these
cards can also emulate a wd8013 card!) You can get the file
/pub/linux/setup/atlantic.c
from Donald's ftp
server, cesdis.gsfc.nasa.gov
to configure this card.
In addition, the configuration programs for the Kingston
DP83905 cards seem to work with all cards, as they don't
check for a vendor specific address before allowing you to
use them. Follow the following URL:
Kingston Software
and get 20XX12.EXE
and INFOSET.EXE
.
Be careful when configuring NE2000+ cards, as you can give them bad setting values which can cause problems. A typical example is accidentally enabling the boot ROM in the EEPROM (even if no ROM is installed) to a setting that conflicts with the VGA card. The result is a computer that just beeps at you (AMI beep eight times for VGA failure) when you turn it on and nothing appears on the screen.
You can typically
recover from this by doing the following: Remove the card
from the machine, and then boot and enter the CMOS setup.
Change the `Display Adapter' to `Not Installed' and change
the default boot drive to `A:' (your floppy drive).
Also change the `Wait for F1 if any Error' to `Disabled'.
This way, the computer should boot without user intervention.
Now create a bootable DOS floppy (`format a: /s /u') and copy
the program default.exe
from the 20XX12.EXE
archive
above onto that floppy. Then
type echo default > a:autoexec.bat
so that the program to set the card back to sane defaults will
be run automatically when you boot from this floppy.
Shut the machine off, re-install the ne2000+ card, insert your
new boot floppy, and power it back up. It will still probably beep
at you, but eventually you should see the floppy light come on
as it boots from the floppy. Wait a minute or two for the floppy
to stop, indicating that it has finished running the default.exe
program, and then power down your computer. When you then turn it
on again, you should hopefully have a working display again,
allowing you to change your CMOS settings back, and to change
the card's EEPROM settings back to the values you want.
Note that if you don't have DOS handy, you can do the whole
method above with a linux boot disk that automatically runs
Donald's atlantic
program (with the right command line
switches) instead of a DOS boot disk that automatically runs
the default.exe
program.
The 3Com Etherlink III family of cards (i.e. 3c5x9) can
be configured by using another config utility from Donald.
You can get the file /pub/linux/setup/3c5x9setup.c
from Donald's ftp server, cesdis.gsfc.nasa.gov
to
configure these cards. (Note that the DOS 3c5x9B config
utility may have more options pertaining to the new ``B''
series of the Etherlink III family.)
Any of the diagnostic programs that Donald has written can be obtained from this URL.
Allied Telesis AT1700 -- look for the file
/pub/linux/diag/at1700.c
on cesdis.gsfc.nasa.gov
.
Cabletron E21XX -- look for the file
/pub/linux/diag/e21.c
on cesdis.gsfc.nasa.gov
.
HP PCLAN+ -- look for the file
/pub/linux/diag/hp+.c
on cesdis.gsfc.nasa.gov
.
Intel EtherExpress -- look for the file
/pub/linux/diag/eexpress.c
on cesdis.gsfc.nasa.gov
.
NE2000 cards -- look for the file
/pub/linux/diag/ne2k.c
on cesdis.gsfc.nasa.gov
.
RealTek (ATP) Pocket adaptor -- look for the file
/pub/linux/diag/atp-diag.c
on cesdis.gsfc.nasa.gov
.
All Other Cards -- try typing cat /proc/net/dev
and
dmesg
to see what useful info the kernel has on the
card in question.
Okay, so your uncle's cousin's neighbour's friend had a brother who found an old ISA ethernet card in the AT case he was using as a cage for his son's pet hampster. Somehow you ended up with the card and want to try and use it with linux, but nobody has a clue what the card is and there isn't any documentation.
First of all, look for any obvious model numbers that might give a clue. Any model number that contains 2000 will most likely be a NE2000 clone. Any cards with 8003 or 8013 on them somewhere will be Western/Digital WD80x3 cards or SMC Elite cards or clones of them.
Look for the biggest chip on the card. This will be the network controller (NIC) itself, and most can be identified by the part number. If you know which NIC is on the card, the following might be able to help you figure out what card it is.
Probably still the most common NIC is the National Semiconductor DP8390 aka NS32490 aka DP83901 aka DP83902 aka DP83905 aka DP83907. And those are just the ones made by National! Other companies such as Winbond and UMC make DP8390 and DP83905 clone parts, such as the Winbond 89c904 (DP83905 clone) and the UMC 9090. If the card has some form of 8390 on it, then chances are it is a ne1000 or ne2000 clone card. The second most common 8390 based card are wd80x3 cards and clones. Cards with a DP83905 can be configured to be an ne2000 or a wd8013. Never versions of the genuine wd80x3 and SMC Elite cards have an 83c690 in place of the original DP8390. The SMC Ultra cards have an 83c790, and use a slightly different driver than the wd80x3 cards. The SMC EtherEZ cards have an 83c795, and use the same driver as the SMC Ultra. All BNC cards based on some sort of 8390 or 8390 clone will usually have an 8392 (or 83c692, or XXX392) 16 pin DIP chip very close to the BNC connector.
Another common NIC found on older cards is the Intel i82586. Cards having this NIC include the 3c505, 3c507, 3c523, Intel EtherExpress-ISA, Microdyne Exos-205T, and the Racal-Interlan NI5210.
The original AMD LANCE NIC was numbered AM7990, and newer revisions include the 79c960, 79c961, 79c965, 79c970, and 79c974. Most cards with one of the above will work with the Linux LANCE driver, with the exception of the old Racal-Interlan NI6510 cards that have their own driver.
Newer PCI cards having a DEC 21040, 21041, 21140, or similar number on the NIC should be able to use the linux tulip or de4x5 driver.
Other PCI cards having a big chip marked RTL8029 are ne2000 clone cards, and the ne driver in linux version v2.0 and up should automatically detect these cards at boot.
Each ethernet card has its own six byte address that is
unique to that card. The first three bytes of that address
are the same for each card made by that particular manufacturer.
For example all SMC cards start with 00:00:c0
.
The last three are assigned by the manufacturer uniquely to each
individual card as they are produced.
If your card has a sticker on it giving all six bits of its address, you can look up the vendor from the first three. However it is more common to see only the last three bytes printed onto a sticker attached to a socketed PROM, which tells you nothing.
You can determine which vendors have which assigned addresses
from RFC-1340. Apparently there is a more up to date listing
available in various places as well. Try a WWW or FTP search
for EtherNet-codes
or Ethernet-codes
and you will
find something.
If you are still not sure what the card is, but have at least narrowed it down some, then you can build a kernel with a whole bunch of drivers included, and see if any of them autodetect the card at boot.
If the kernel doesn't detect the card, it may be that the
card is not configured to one of the addresses that the
driver probes when looking for a card. In this case, you
might want to try getting scanport.tar.gz
from your
local linux ftp site, and see if that can locate where your
card is jumpered for. It scans ISA i/o space from 0x100
to 0x3ff looking for devices that aren't registered in
/proc/ioports
. If it finds an unknown device starting
at some particular address, you can then explicity point the
ethernet probes at that address with an ether=
boot
argument.
If you manage to get the card detected, you can then usually figure out the unknown jumpers by changing them one at a time and seeing at what i/o base and IRQ that the card is detected at. The IRQ settings can also usually be determined by following the traces on the back of the card to where the jumpers are soldered through. Counting the `gold fingers' on the backside, from the end of the card with the metal bracket, you have IRQ 9, 7, 6, 5, 4, 3, 10, 11, 12, 15, 14 at fingers 4, 21, 22, 23, 24, 25, 34, 35, 36, 37, 38 respectively. Eight bit cards only have up to finger 31.
Jumpers that appear to do nothing usually are for selecting the memory address of an optional boot ROM. Other jumpers that are located near the BNC or RJ-45 or AUI connectors are usually to select the output media. These are also typically near the `black box' voltage converters marked YCL, Valor, or Fil-Mag.
A nice collection of jumper settings for various cards can be found at the following URL: