Spanish Spanish

To setup an ISA network card on Linux. First at all we must know what kind of card we have, and then what's the IRQ and Memory Adress used (IO)
ISA card

Let's assume that we don't know that infomation, if the card works on windows without problems, must look to that parameters on: Start/Setup/ControlPanel/Network we'll see the card name and if we select it and press Properties will see IRQ and IO used.
If we don't have it working on windows, then must follow the next steps:

- Get the card out of the case and look for any jumpers on it to select IRQ and IO ( it'll be great if it have jumpers).
- We look to the card's manofacturer and model. If we can't see it, we'll look for the biggest chip on it, sometimes there is an adhesive on the chip that we can remove safetily. There we read something like NE2000 or SMC-ULTRA, thanks to this information we could now know the module to use, we can find it here ethernet-howto
- In case that the card is jumperless, may be we have the setup disk (that is always lost).
We must know that every card type has its own setup disk. Using that disk it's posible to see the IRQ and IO even change it and perform some kind of card test.
- If we don't have that disk could try to search it on the manofacturer's website, but being an ISA card, probably will be on the musseum archive.
- Many times the card is type: NE2000 Compilant, we could try Download this software to see if it can show us that. Once download, must decompress it and boot using MS-DOS and run (from windows or dosemu will not work). This will not always solve the problem, but many times worked for me.
- Still having bad luck?, then must try the test and error method. It's based on keep trying one by one all the IRQ and adresses. This will be a madness doing it from windows because we have to boot every time, but from Linux it's faster.


Well, let's go to the setup.
This have been tested on Debian 2.2.r3 Potato but must work without problems on RedHat or whatever Linux distribution.

Login as user: root on the system and type:

modprobe ne irq=10 io=0x300
ifconfig eth0 netmask
route add default gw dev eth0

ping -c 10
and it must work.
Note: To right resolve web sites check /etc/resolv.conf where the nameserver=.... is.

Let's explain step by step this:

modprobe ne irq=10 io=0x300
ne is the module name that we're going to use because the card is NE2000 compilant.
irq=10 is the IRQ number 10 that the card uses, we have to keep in mind that no other device is using this IRQ to avoid conflicts.
io=0x300 because the card uses the memory adress:  (aka IO) 300, we type 0x300 because it's an hexadecimal number.
If this is not right, we'll see an error message. If we don't know the IRQ and not know the IO the card is using, here is where we have to keep trying, IRQ could be from 5 to 15 aprox. and memory adresses from 200 to 400 step=10. The most usual are: irq=5, irq=10, io=0x300, io=0x320 I hope that this could be usefull for the people not knowing  their card's setup numbers.

ifconfig eth0 netmask
With this we activate the Ethernet device number 0 eth0 and assing to it the IP number: and the netmask what means our net could support till 256 computers.
Why do I choose and not another number? It's because of my LAN computers uses that kind of IP numbers, they are reserverd numbers for local lans. Other IP numbers are:        -  (10/8 prefix) - (172.16/12 prefix) - (192.168/16 prefix)
To know more about IP rank numbers look at RFC1918
If all is rigth, we could try the next command: ifconfig without parameters to see it showing the eth0 device.

route add default gw dev eth0
This line is only needed for those of you that connect througth a gateway, example: using ADSL or some kind of proxy.
What it makes is to tell Linux the default route for eth0 device is then all the data that goes to internet passes throught that IP ( on ADSL it's the router IP adress number). This number depens on the local IP rank numbers on our LAN.
If we don't want internet access, this line isn't necessary.

Note: On RedHat, to modify the gateway we could do it adding:
on this file: /etc/sysconfig/network

ping -c 10
With this we're sending 10 ping signals to a internet server to test it. It's the best test that we could do.
If we don't have internet access could try to ping other computers on our LAN:
ping -c 10

If all worked fine, we have to save all on the Linux boot files, to load it automatically when booting the computer.
On RedHat we could put it on: /etc/rc.d/rc.local

In the case of nothing works:
Check all the wiring, if you're using RJ-45 could check it here , if it's coaxial, check the terminators, check that the IRQ used by the card is free on the system. You could also try the card on another PC.

For more technical information about Ethernet: Charles Spurgeon's Ethernet Web Site
If your card is not supported by the kernel: Linux Network Drivers
C source code to diagnose network cards on Linux: Ethercard Status, Diagnostic and Utilities