Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
carte_isa [Le 22/08/2008, 15:40] – Zergy | carte_isa [Le 10/05/2013, 14:46] (Version actuelle) – [Compatibilité] 78.213.107.181 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== L'ISA et le PNP sous Linux ====== | ||
+ | |||
+ | |||
+ | ===== Introduction ===== | ||
+ | Vous avez récupéré un ordinosaure à la décharge, le vieux Pentium 133 de mémé ou tout autres PC dattant d' | ||
+ | Après avoir installé [Ku | Xu | Wu | Edu | U]buntu ou Debian sur cette machine vous remarquez que certains matériels pourtant fonctionnels sous Windows ne sont pas détectés ? | ||
+ | |||
+ | Avant de cracher sur le manchot, vérifiez que les matériels non utilisables ne soient pas connectés à la carte mère par un connecteur ISA, lisez ce tutoriel si c'est le cas. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Quelques mots sur l'ISA ==== | ||
+ | L' | ||
+ | |||
+ | A noter qu'il existe deux types de ports ISA, l'ISA 8 bits, qui n'est plus disponible sur les cartes mère depuis l' | ||
+ | La seul différence physique entre ces deux ports et une plus grande longueur pour les ports ISA 16 bits et leur compatibilité avec le matériel ISA 8 bits. | ||
+ | |||
+ | Si vous ouvrez votre ordinateur, vous trouverez ces connecteurs en bas de la carte mère, ceux-ci sont noirs, longs et utilisent de gros contacteurs, | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | ==== Le PNP sous Linux ==== | ||
+ | Alors que les premières cartes ISA devaient être réglées par l' | ||
+ | |||
+ | À partir de Windows 95, l'ISA PNP fonctionne sans souci (à condition d' | ||
+ | |||
+ | Si les cartes ISA (qu' | ||
+ | |||
+ | Enfin, sachez que sous GNU/Linux, le terme PNP ne concerne **que** les cartes ISA. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Compatibilité ===== | ||
+ | Ce tutorial est compatible avec toutes les carte ISA PNP, quelles se trouvent dans un ordinateur de bureau ou dans un portable. | ||
+ | |||
+ | Les possesseurs de cartes ISA non PNP peuvent suivre ce tutorial à partir de la section " | ||
+ | |||
+ | ===== Prérequis ===== | ||
+ | |||
+ | ==== Connaissances requises ==== | ||
+ | |||
+ | * [[tutoriel: | ||
+ | * [[tutoriel: | ||
+ | * [[console|Utiliser la console]] | ||
+ | |||
+ | ==== Matériel et Logiciels requis ==== | ||
+ | |||
+ | * Une carte mère avec au moins un connecteur ISA | ||
+ | * Au moins une carte ISA | ||
+ | * Un système GNU/Linux | ||
+ | * De la patience | ||
+ | * Le programme // | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Installation ===== | ||
+ | Le programme // | ||
+ | |||
+ | Fort heureusement, | ||
+ | |||
+ | * Si vous utilisez Ubuntu 5.10, Debian 3.1 ou antérieur, [[: | ||
+ | * Si vous utilisez Ubuntu 6.06 LTS, Debian 4.0 ou supérieur, téléchargez la [[http:// | ||
+ | * (Mise à jour 10/09/2008) Ce package n' | ||
+ | Trouvé ici: [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | |||
+ | ==== Trouver les configurations disponibles ==== | ||
+ | Pour configurer la carte ISA, nous allons tout d' | ||
+ | |||
+ | Pour faire ce PNP-Dump, on utilise la commande pnpdump en redirigeant sa sortie vers ''/ | ||
+ | sudo pnpdump > / | ||
+ | Ensuite, il faut éditer ce fichier ''/ | ||
+ | |||
+ | ... et là, c'est le drame, on se retrouve avec un fichier rempli de lignes plus ou moins incompréhensibles sortant du PNP-Dump. :-( | ||
+ | |||
+ | ==== Structure du PNP-Dump ==== | ||
+ | Le PNP-Dump est, contrairement à ce que l'on pourrait croire, structuré. | ||
+ | |||
+ | === Préambule === | ||
+ | Les lignes suivantes sont le préambule du fichier, elles donnent des directives à ISAPNPTools : | ||
+ | < | ||
+ | # $Id: pnpdump_main.c, | ||
+ | # Release isapnptools-1.26 | ||
+ | # | ||
+ | # This is free software, see the sources for details. | ||
+ | # This software has NO WARRANTY, use at your OWN RISK | ||
+ | # | ||
+ | # For details of the output file format, see isapnp.conf(5) | ||
+ | # | ||
+ | # For latest information and FAQ on isapnp and pnpdump see: | ||
+ | # http:// | ||
+ | # | ||
+ | # Compiler flags: | ||
+ | # | ||
+ | # Trying port address 0273 | ||
+ | # Board 1 has serial identifier XX XX XX XX XX XX XX XX XX | ||
+ | # Board 2 has serial identifier XX XX XX XX XX XX XX XX XX | ||
+ | |||
+ | # (DEBUG) | ||
+ | (READPORT 0x0273) | ||
+ | (ISOLATE PRESERVE) | ||
+ | (IDENTIFY *) | ||
+ | (VERBOSITY 2) | ||
+ | (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING | ||
+ | </ | ||
+ | Laissez-les telles quelles. | ||
+ | |||
+ | === Début de la description d'une carte === | ||
+ | Vous trouverez ensuite une ligne indiquant qu'une carte à été trouvée et que sa configuration va être décrite : | ||
+ | < | ||
+ | # Card 1: (serial identifier XX XX XX XX XX XX XX XX XX) | ||
+ | </ | ||
+ | Par exemple, avec ma carte son Yamaha OP3-SA2 : | ||
+ | < | ||
+ | # Card 1: (serial identifier 81 ff ff ff ff 20 00 a8 65) | ||
+ | # Vendor Id YMH0020, No Serial Number (-1), checksum 0x81. | ||
+ | # Version 1.0, Vendor version 0.0 | ||
+ | # ANSI string --> | ||
+ | # | ||
+ | # Logical device id YMH0021 | ||
+ | # | ||
+ | # Edit the entries below to uncomment out the configuration required. | ||
+ | # Note that only the first value of any range is given, this may be changed if required | ||
+ | # Don't forget to uncomment the activate (ACT Y) when happy | ||
+ | </ | ||
+ | Et avec ma carte SCSI Adaptec AHA1505 : | ||
+ | < | ||
+ | # Card 2: (serial identifier 0d da a5 f8 6a 05 15 90 04) | ||
+ | # Vendor Id ADP1505, Serial Number 3668310122, checksum 0x0D. | ||
+ | # | ||
+ | # ANSI string --> | ||
+ | # | ||
+ | # Logical device id ADP1505 | ||
+ | # | ||
+ | # | ||
+ | # Edit the entries below to uncomment out the configuration required. | ||
+ | # Note that only the first value of any range is given, this may be changed if required | ||
+ | # Don't forget to uncomment the activate (ACT Y) when happy | ||
+ | </ | ||
+ | |||
+ | === Fin de la description d'une carte === | ||
+ | La fin de la description d'une carte est marquée d'un simple checksum, du type : | ||
+ | < | ||
+ | # End tag... Checksum 0x00 (OK) | ||
+ | </ | ||
+ | |||
+ | === Corps de la description d'une carte === | ||
+ | La description des ports d' | ||
+ | |||
+ | Voici par exemple la description **d' | ||
+ | < | ||
+ | (CONFIGURE YMH0020/-1 (LD 0 | ||
+ | |||
+ | # Multiple choice time, choose one only ! | ||
+ | |||
+ | # Start dependent functions: priority preferred | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # IO base alignment 16 bytes | ||
+ | # | ||
+ | # (IO 0 (SIZE 16) (BASE 0x0220) (CHECK)) | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # IO base alignment 8 bytes | ||
+ | # | ||
+ | # (IO 1 (SIZE 8) (BASE 0x0530) (CHECK)) | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # IO base alignment 4 bytes | ||
+ | # | ||
+ | # (IO 2 (SIZE 4) (BASE 0x0388) (CHECK)) | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # IO base alignment 2 bytes | ||
+ | # | ||
+ | # (IO 3 (SIZE 2) (BASE 0x0330) (CHECK)) | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # IO base alignment 2 bytes | ||
+ | # | ||
+ | # (IO 4 (SIZE 2) (BASE 0x0370) (CHECK)) | ||
+ | # IRQ 5. | ||
+ | # High true, edge sensitive interrupt | ||
+ | # (INT 0 (IRQ 5 (MODE +E))) | ||
+ | # First DMA channel 0. | ||
+ | # 8 bit DMA only | ||
+ | # | ||
+ | # DMA may execute in count by byte mode | ||
+ | # DMA may not execute in count by word mode | ||
+ | # DMA channel speed type F | ||
+ | # (DMA 0 (CHANNEL 0)) | ||
+ | # Next DMA channel 1. | ||
+ | # 8 bit DMA only | ||
+ | # | ||
+ | # DMA may execute in count by byte mode | ||
+ | # DMA may not execute in count by word mode | ||
+ | # DMA channel speed type F | ||
+ | # (DMA 1 (CHANNEL 1)) | ||
+ | # End dependent functions | ||
+ | (NAME " | ||
+ | # (ACT Y) | ||
+ | )) | ||
+ | </ | ||
+ | Pour faire fonctionner une carte, il faudra choisir un bloc de configuration et décommenter certaines lignes. | ||
+ | |||
+ | Pour vous y retrouver, sachez que de nombreuses lignes sont des commentaires déstinés à vous décrire les entrées/ | ||
+ | |||
+ | === Types de lignes à décommenter === | ||
+ | == Lignes indiquant une plage d' | ||
+ | < | ||
+ | Si vous désirez connaitre la liste des ports d' | ||
+ | cat / | ||
+ | == Ligne indiquant un numéro de DMA. == | ||
+ | < | ||
+ | Il est possible que votre carte ISA n'en utilise pas, auquel cas, vous n' | ||
+ | == Ligne indiquant un IRQ == | ||
+ | < | ||
+ | Lisez les lignes de commentaires se trouvant juste au dessus des lignes d'IRQ, elles vous donneront les numéros d'IRQ utilisables par votre carte ISA. Si un ne fonctionne pas, il faudra en choisir un autre parmi ceux proposés. | ||
+ | Si vous désirez connaitre la liste des IRQs utilisés sur votre système, utilisez la commande suivante : | ||
+ | cat / | ||
+ | == Ligne permettant d' | ||
+ | < | ||
+ | Vous **devez** décommenter cette ligne pour activer votre carte et lui permettre ainsi de fonctionner. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Utilisation ===== | ||
+ | ==== Test de la configuration ==== | ||
+ | Une fois que vous avez décommenté les lignes d'une configuration qui vous semble correcte, nous allons tester cette configuration. | ||
+ | Pour celà, nous allons demander à ISAPNPTools de lire le fichier / | ||
+ | sudo isapnp / | ||
+ | Vous obtiendrez comme réponse une description rapide des cartes trouvées avec une indication sur les éventuelles erreurs. | ||
+ | |||
+ | Exemple de configuration sans erreurs : | ||
+ | < | ||
+ | Board 1 has Identity 81 ff ff ff ff 20 00 a8 65: YMH0020 Serial No -1 [checksum 81] | ||
+ | Board 2 has Identity 0d da a5 f8 6a 05 15 90 04: ADP1505 Serial No 3668310122 [checksum 0d] | ||
+ | YMH0020/ | ||
+ | YMH0020/ | ||
+ | ADP1505/ | ||
+ | </ | ||
+ | Le '' | ||
+ | |||
+ | En cas d' | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | Bien entendu, chaque erreur est précédée de son numéro de ligne (52 ici), ce qui vous permettera de trouver facilement la source du problème. | ||
+ | |||
+ | Si vous trouvez une erreur du type ''< | ||
+ | < | ||
+ | Devient | ||
+ | < | ||
+ | Puis recommencez le test de configuration | ||
+ | |||
+ | Une fois que le test ne retourne plus d' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Charger le module de la carte et lui donner les bons paramètres ==== | ||
+ | |||
+ | === Trouver le module === | ||
+ | Pour trouver le module utilisé par votre carte ISA, il y a plusieurs solutions : | ||
+ | * soit vous utilisez un moteur de recherche en lui demandant une recherche du type '' | ||
+ | * soit vous téléchargez les sources de votre noyau, vous allez dans l' | ||
+ | * soit comme ceci (mais nécessite de repérer le bon module ...) : | ||
+ | '''' | ||
+ | find / | ||
+ | (pour une carte son ici) | ||
+ | |||
+ | Dans le cas de mes cartes, les modules étaient les suivants : | ||
+ | * snd-opl3sa2 pour la carte sonore Yamaha OPL3-SAX ; | ||
+ | * aha152x pour la carte SCSI Adaptec AHA1505. | ||
+ | |||
+ | === Donner les paramètres au module === | ||
+ | Pour charger le module, vous devrez utiliser la commande // | ||
+ | Les paramètres sont généralement les ports d' | ||
+ | |||
+ | Par exemple : | ||
+ | sudo modprobe aha152x io=0x340 irq=10 | ||
+ | |||
+ | === Chargement automatique des modules === | ||
+ | Pour charger automatiquement les modules au démarrage de la machine, il faut indiquer les lignes de chargement de modules (les mêmes que modprobe) dans le fichier /// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== En cas de (kernel) panic ==== | ||
+ | |||
+ | Ne rigolez pas, il arrive que l' | ||
+ | |||
+ | Redémarrez en //mode Maintenance (Recovery mode)// pour charger le minimum ou avec un Live CD et commentez les lignes de modules de vos cartes ISA dans ''/ | ||
+ | |||
+ | En fait, le problème est le suivant : | ||
+ | |||
+ | Malgré le fait qu' // | ||
+ | |||
+ | Pour vous en assurer, listez les IRQ du système : | ||
+ | cat / | ||
+ | Et vérifiez que l'IRQ utilisé par vos cartes ISA soit libre (pas de nom de matériel). | ||
+ | |||
+ | Pour empêcher celà, vous avez les choix suivants : | ||
+ | * Changer la configuration de vos cartes ISA avec // | ||
+ | * Retirer du matériel pour libérer des IRQ. | ||
+ | * Retirer le support de l'ACPI pour libérer un IRQ et permettre aux cartes PCI de prendre d' | ||
+ | |||
+ | Bien sûr, si vous modifiez le numéro d'IRQ de votre carte ISA, modifiez en conséquence le fichier ''/ | ||
+ | |||
+ | ===== Trucs et astuces ===== | ||
+ | ==== Activer toutes les possibilitées de sa cartes son ==== | ||
+ | Si vous configurez une carte son, consultez le fichier ''/ | ||
+ | vim / | ||
+ | Par exemple, pour le modules opl3sa2 de ma carte Yamaha, le fichier ''/ | ||
+ | < | ||
+ | Module snd-opl3sa2 | ||
+ | ------------------ | ||
+ | |||
+ | Module for Yamaha OPL3-SA2/ | ||
+ | |||
+ | port - control port # for OPL3-SA chip (0x370) | ||
+ | sb_port | ||
+ | wss_port | ||
+ | midi_port | ||
+ | fm_port | ||
+ | irq - IRQ # for OPL3-SA chip (5,7,9,10) | ||
+ | dma1 - first DMA # for Yamaha OPL3-SA chip (0,1,3) | ||
+ | dma2 - second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable | ||
+ | isapnp | ||
+ | |||
+ | Module supports up to 8 cards and ISA PnP. This module does not support | ||
+ | autoprobe (if ISA PnP is not used) thus all ports must be specified!!! | ||
+ | |||
+ | The power-management is supported. | ||
+ | </ | ||
+ | Je dois donc indiquer ceci pour charger cette carte son : | ||
+ | sudo modprobe snd-opl3sa2 port=0x370 sb_port=0x220 wss_port=0x530 midi_port=0x330 fm_port=0x388 irq=5 dma1=0 dma2=1 isapnp=0 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Les scanners SCSI sur carte ISA ==== | ||
+ | Si vous utilisez un scanner SCSI branché à une carte SCSI ISA, vous vous souvenez sans doute que sous Windows, il fallait démarrer le scanner avant l' | ||
+ | |||
+ | Rien de tous ça sous GNU/Linux, si jamais vous n' | ||
+ | |||
+ | Par exemple avec une carte SCSI AHA1505AE : | ||
+ | sudo rmmod sg && sudo rmmod aha152x | ||
+ | sudo modprobe sg && sudo modprobe aha152x io=0x340 irq=10 | ||
+ | Vous pouvez utiliser un script nommé scanner dans votre ''/ | ||
+ | |||
+ | Exemple de script : | ||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | |||
+ | ################################################################################ | ||
+ | # # | ||
+ | # Description : # | ||
+ | # Ce script permet la mise en-ligne et hors-ligne à chaud d'un scanner SCSI # | ||
+ | # connecté à une carte SCSI ISA. # | ||
+ | # Celui-ci se contente de décharger, récharger ou de décharger puis recharger | ||
+ | # les modules nécessaires au fonctionnement du scanner SCSI pour # | ||
+ | # respectivement mettre hors-ligne, en ligne ou réinintialiser le scanner. | ||
+ | # # | ||
+ | # Il est possible que ce script puisse s' | ||
+ | # autres que des scanners. | ||
+ | # # | ||
+ | # Il s' | ||
+ | # ' | ||
+ | # Le script renvoie la valeur " | ||
+ | # " | ||
+ | # # | ||
+ | ################################################################################ | ||
+ | |||
+ | ## Variables | ||
+ | # $ISACARDMOD est le module noyau utilisé par votre carte SCSI ISA. | ||
+ | # $ISACARDARGS désigne les arguments d'I/O, d'IRQ et de DMA nécessaire au | ||
+ | # fonctionnement de votre carte SCSI ISA. | ||
+ | # $SCSIMOD designe le module SCSI nécessaire au fonctionnement de votre | ||
+ | # périphérique (autre que la carte SCSI ISA). | ||
+ | ISACARDMOD=" | ||
+ | ISACARDARGS=" | ||
+ | SCSIMOD=" | ||
+ | |||
+ | ## Fonction check | ||
+ | # Cette fonction vérifie la bonne exécution de la commande précédente et renvoi | ||
+ | # " | ||
+ | # code d' | ||
+ | function check() { | ||
+ | if [ $? -eq 0 ] | ||
+ | then | ||
+ | echo -e " | ||
+ | else | ||
+ | echo -e "\t[ Erreur ]"; | ||
+ | exit 1; | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | ## Function start | ||
+ | # La fonction start charge le module nécessaire au périphérique SCSI puis | ||
+ | # celui de la carte SCSI ISA. | ||
+ | function start() { | ||
+ | echo -ne " | ||
+ | modprobe $SCSIMOD; | ||
+ | check; | ||
+ | echo -ne " | ||
+ | modprobe $ISACARDMOD $ISACARDARGS; | ||
+ | check; | ||
+ | } | ||
+ | |||
+ | ## Function stop | ||
+ | # La fonction stop décharge le module nécessaire au périphérique SCSI puis | ||
+ | # celui de la carte SCSI ISA. | ||
+ | function stop() { | ||
+ | echo -ne " | ||
+ | rmmod $ISACARDMOD; | ||
+ | check; | ||
+ | echo -ne " | ||
+ | rmmod $SCSIMOD; | ||
+ | check; | ||
+ | } | ||
+ | |||
+ | ## Function restart | ||
+ | # On exécute à la suite les fonctions stop puis start. | ||
+ | function restart() { | ||
+ | stop && start; | ||
+ | } | ||
+ | |||
+ | ## Section principale du programme | ||
+ | # Entrer start, stop ou restart comme argument pour l' | ||
+ | # de ne pas rentrer d' | ||
+ | # arguments disponible pour son utilisation. | ||
+ | case " | ||
+ | start) | ||
+ | start && exit 0; | ||
+ | ;; | ||
+ | |||
+ | restart) | ||
+ | restart && exit 0; | ||
+ | |||
+ | ;; | ||
+ | |||
+ | stop) | ||
+ | stop && exit 0; | ||
+ | ;; | ||
+ | *) | ||
+ | echo -e " | ||
+ | ;; | ||
+ | esac; | ||
+ | </ | ||
+ | Ainsi, l' | ||
+ | sudo / | ||
+ | |||
+ | Son démarrage (on charge les modules) avec : | ||
+ | sudo / | ||
+ | |||
+ | Et son redémarrage (on décharge puis charge les modules) avec : | ||
+ | sudo / | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | * [[liste_carte_isa|Liste des cartes ISA compatibles sous GNU/Linux]] | ||
+ | |||
+ | ---- | ||
+ | // |