[Accueil] alex / doc / carte réseau ISA


Installation de cartes réseau ISA
sur Debian GNU/Linux

$Revision: 1.14 $
$Date: 2004/03/06 18:13:20 $

Introduction

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.

Licence

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]

Identification de la carte

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.

  1. 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.

  2. 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.

  3. 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).

  4. 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.

Installation de la carte

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.

  1. Montez la carte dans l'ordinateur. Si vous avez deux cartes ISA à réutiliser, n'en montez qu'une seule pour commencer, ça simplifiera.

  2. 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.

  3. Démarrez le système. La carte n'est pas reconnue automatiquement au démarrage ? Tant pis, on aura essayé.

  4. 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.

  5. 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

  6. 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é. 

  7. 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

  8. 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
    
  9. À 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.

  10. 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.

    L'adresse MAC de la carte devrait être indiquée à la fin du message. Elle peut vous permettre d'identifier le fabricant (voir ci-dessus).

  11. 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.

  12. 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.)

  13. 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

  14. 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

  15. Redémarrez. Tapez ensuite "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.

    C'est beau, non ? On dirait de la poésie.

Documentation


$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