$Revision: 1.14 $
$Date: 2004/03/06 18:13:20 $
Vous héritez d'une vieille carte réseau ISA qui n'est pas Plug-and-Play et vous espérez la recycler sur un poste Linux. Ca peut marcher, ça peut aussi être laborieux. Voici quelques pistes qui m'ont permis d'installer deux cartes ISA de marque indéterminée (mais compatibles NE2000) dans un serveur Debian. N'oubliez pas d'allumer un cierge (ou de sacrifier un poulet, c'est selon) avant de vous lancer.
Copyright 2002-2004 Alexandre Ratti. Document diffusé dans les conditions des licences GPL 2 (GNU General Public License) et GFDL 1.2 (GNU Free Documentation License). [Explications]
J'avais donc deux cartes réseau ISA, sans cavalier, de marque et modèle indéterminés. Première chose à faire, essayer de les identifier.
Cherchez le nom du fabricant ou une référence de modèle sur la carte. Si vous trouvez, c'est parfait ; vous pourrez vérifier que la carte est gérée par Linux et récupérer sa doc sur le site du fabricant.
Sinon, cherchez un ID FCC ("FCC ID:") sur la carte.
Les cartes certifiées par le FCC comporte parfois un ID qui peut
être utilisé pour les identifier. Voir par exemple le site
Plasma Online.
Les cartes réseau ont une adresse univoque, composée de 6 octets,
appelée adresse matérielle Ethernet ou adresse MAC.
Exemple : 00 40 33 26 d9 55.
Les trois premiers désignent le fabricant ; les trois derniers
changent de carte en carte. D'après le Linux
Ethernet Howto
(section 4.44), cette adresse est parfois inscrite sur la carte. Si
c'est le cas, vous pouvez connaître la marque de la carte en consultant
une liste de codes Ethernet (utilisez le formulaire de la page Vendor/Ethernet
Mac Address Lookup ou recherchez "Ethernet
codes" sur Google).
Sinon, regardez les informations inscrites sur la plus grosse puce de la
carte (située au centre de la carte, dans mon cas). Exemple :
UMC UM9003AF. Ensuite, recherchez ce numéro sur
Google pour rassembler des informations sur la puce. J'ai ainsi découvert
la page EthernetPlugnPlay
qui a confirmé que cette puce est prise en charge par le pilote NE2000
(ne) de Linux. Ca ne nous dit pas quels sont la marque et le
modèle de la carte, mais nous savons maintenant qu'elle est gérée
par un pilote Linux, ce qui est le principal.
Nous entrons maintenant dans le vif du sujet. En général, les cartes ISA ne sont pas reconnues automatiquement par le système. Le principal problème est d'identifier l'adresse de base d'entrée-sortie (I/O) et la requête d'interruption (IRQ) à utiliser. Toutes les manips décrites ont été faites dans un système Debian 3.0 (Woody) et le pilote de la carte est chargé sous forme de module.
Montez la carte dans l'ordinateur. Si vous avez deux cartes ISA à réutiliser, n'en montez qu'une seule pour commencer, ça simplifiera.
Il paraît que certaines cartes ISA sont accompagnées d'un utilitaire DOS qui permet de définir l'adresse de base et l'IRQ. Si vous disposez de cet outil, utilisez-le ; il vous fera sûrement gagner du temps.
Démarrez le système. La carte n'est pas reconnue automatiquement au démarrage ? Tant pis, on aura essayé.
Si vous ne connaissez pas l'adresse de base et l'IRQ, vous pouvez essayer
de charger le pilote sans indiquer ces paramètres. Ca marche avec
certaines cartes ISA sophistiquées (j'ai une Etherlink III 3Com
qui s'en sort très bien). Utilisez modconf et choisissez
un pilote ou tapez "modprobe ne" (pour une carte
compatible NE2000) en ligne de commande. Ca risque fort de ne pas marcher.
Tapez "cat /proc/interrupts" pour connaître
la liste des IRQ utilisées. Tapez "cat /proc/ioports"
pour connaître les adresses de base utilisées. Vous pouvez
stocker ces infos dans un fichier ; ça pourra servir plus tard.
cat /proc/interrupts > liste-irq.txt
cat /proc/ioports > liste-io.txt
Vous pouvez lancer l'utilitaire scanport pour essayer d'identifier
automatiquement la carte. Voir la section 4.44 du Linux
Ethernet Howto.
Dans Debian, cet utilitaire est dans le paquet hwtools. Il
a produit une erreur ("segmentation fault") dès
que je l'ai lancé ; je n'ai pas insisté.
Essayez de charger le pilote avec certaines adresses de base connues (0x280,
0x300, 0x320, 0x340, par exemple).
Chez moi (dans un Pentium II à 400 Mhz, carte mère Intel BX),
les cartes étaient à 0x300, IRQ 10 (connecteur ISA du
bas) et à 0x280, IRQ 3 (connecteur ISA du haut). Vous pouvez
essayer d'indiquer irq=0, pour voir si l'IRQ est identifié.
Chez moi, ça n'a pas marché, mais il me semble que le message
d'erreur affiché est différent lorsque l'adresse de base est
exacte, mais que l'IRQ est incorrect. C'est un indice.
modprobe ne io=0x280 irq=3
Si ça ne marche toujours pas, on va arrêter d'être subtil.
Le script suivant permet de tester toutes une série d'adresses et
d'IRQ. Collez le code dans un fichier, rendez-le exécutable (chmod
+x test.sh) et regardez les messages d'erreur produits.
for i in [2 3 4 5 6 7 8 9 10 11 12 13 14 15]; do for a in [0x200 0x220 0x240 0x260 0x280 0x300 0x320 0x340 0x360] ; do modprobe ne io=$a irq=$i; done done
À ce stade, vous devriez avoir identifié la combinaison adresse
et IRQ qui permettent de charger le pilote de la carte. Si vous n'avez qu'une
seule carte, vous pouvez l'installer définitivement avec modconf.
L'outil de diagnostic ne2k (ne2k-diag dans Debian,
dans le paquet nictools-nopci) permet d'interroger une carte
compatible NE2000 en indiquant son adresse de base. Voir aussi la section 2.5
du Linux
Ethernet Howto.
Si la carte répond, vous devriez voir :
Checking the ethercard at 0x280.
Receive alignment error counter (0x28d) is ff
Passed initial NE2000 probe, value 00.
Station Address PROM 0: 00 00 40 40 33 33 26 26 d8 d8 42 42 05 05 47 47
Station Address PROM 0x10: 00 00 00 00 00 00 00 00 00 00 00 00 57 57 57
57
NE2000 found at 0x280, using start page 0x40 and end page 0x80.
Connectez l'ordinateur au réseau et vérifiez que la carte
fonctionne. Faites un ping et regardez ce que dit ifconfig.
(L'adresse MAC est également indiquée par ifconfig ;
valeur HWAddr). Vous devrez peut-être relancer le réseau
("/etc/init.d/networking restart"). Lorsque la carte
fonctionne, notez le connecteur ISA, l'adresse de base et l'IRQ utilisés.
Si vous voulez installer une deuxième carte ISA utilisant le même pilote, je crois que vous allez devoir retirer la première, mettre la seconde à son emplacement final et recommencer l'opération pour identifier les paramètres de la 2ème carte. (Qui connaît une meilleure solution ?) Autre solution : si vous avez une autre carte ISA reconnue automatiquement, vous pourriez la monter, repérer l'adresse de base et l'IRQ utilisés, puis essayer d'utiliser ces paramètres avec la carte ISA récalcitrante. (À ce stade, vous regrettez sûrement de ne pas avoir acheté deux cartes PCI neuves.)
Lorsque vous connaissez l'adresse de base et l'IRQ de la 2ème carte,
mettez les deux cartes dans l'ordinateur. J'espère que vous avez
noté à quel connecteur ISA correspondent les paramètres
d'adresse et d'IRQ. Si les cartes sont à 0x300, IRQ 10 et à 0x280,
IRQ 3, vous devriez pouvoir charger le pilote en tapant :
modprobe ne io=0x300,0x280 irq=10,3
Pour charger les cartes automatiquement au démarrage (avec un pilote
modularisé), ajoutez les lignes suivantes au fichier /etc/modutils/ne :
alias eth0 ne
alias eth1 ne
options ne io=0x300,0x280 irq=10,3
puis lancez le script "update-modules". Ce script
actualise automatiquement le fichier /etc/modules.conf, qui
définit les paramètres de chargement des modules. (Si le pilote
est compilé dans le noyau, la manip est différente :
vous devez ajouter un paramètre de démarrage dans lilo.conf.
Voir la section 2.3 du Linux
Ethernet Howto.)
[2004-03-06] Un lecteur me signale qu'il a réussi
à faire fonctionner deux cartes (dont une reconnue automatiquement)
en indiquant les paramètres suivants :
alias eth0 ne
alias eth1 ne
options ne io=0x300 irq=10
dmesg | grep eth".
Avec un peu de chance, vous verrez s'afficher : NE*000 ethercard probe at 0x300: 00 40 33 26 d9 55
eth0: NE2000 found at 0x300, using IRQ 10.
NE*000 ethercard probe at 0x280: 00 40 33 26 d8 42
eth1: NE2000 found at 0x280, using IRQ 3.
$Id: index.html,v 1.14 2004/03/06 18:13:20 alex Exp $
http://www.gabuzomeu.net/alex/doc/reseau/index.html
courrier électronique | e-mail Alexandre Ratti