Guide d'installation et de configuration de Linux | ||
---|---|---|
Précédent | Chapitre 8. Configuration du matériel et des périphériques | Suivant |
Les ports de communication sont les seuls moyens de communication de l'ordinateur avec d'autres appareils, et sont donc essentiels au même titre que les réseaux.
Historiquement, le plus vieux type de port de communication utilisé est sans doute le port série, qui permet de connecter une multitude de périphériques en raison de sa grande simplicité. Les ports parallèles sont également courants, et sont encore souvent utilisés pour connecter les imprimantes. Cependant, ces ports souffrent de défauts indéniables, dont l'un des principaux est sans doute le faible débit de données qu'ils autorisent. Ils ne peuvent donc pas être utilisés pour les applications les plus exigeantes. C'est pour cela que les ports USB (abréviation de l'anglais « Universal Serial Bus ») et IEEE1394 (alias « FireWire ») ont été inventés.
Cette section présente la manière de configurer les différents ports de communication actuellement utilisés, à savoir le port parallèle, les ports série standards, et enfin les ports USB et IEEE1394.
La plupart des PC disposent encore de périphériques d'entrée/sortie standards ISA intégrés aux cartes mères, comme les ports série et les ports parallèles, même s'ils ne permettent plus de brancher des cartes filles ISA. Il est donc encore nécessaire de prendre en charge ces fonctionnalités au niveau du noyau, même si vous ne disposez d'aucun périphérique ISA.
Pour cela, il suffit d'activer les options « Plug and Play support » et « Plug and Play BIOS support » du menu « Plug and Play support » de la configuration du noyau. Ces options permettent de prendre en charge les ressources Plug and Play des cartes mères, et donc de réaliser la configuration automatique des ports parallèles et série de l'ordinateur.
La configuration du port parallèle sous Linux est relativement automatique. Il suffit en effet, dans le programme de configuration du noyau, d'activer les options « Parallel port support », « PC-style hardware », « Use FIFO/DMA if available » et « IEEE 1284 transfer modes » du menu « Parallel port support ». Si vous désirez connecter une imprimante sur votre port parallèle, ce qui est généralement le cas, il vous faudra également activer l'option « Parallel printer support » du menu « Character devices ». De même, si vous désirez connecter un disque dur, un lecteur de CD-ROM ou un lecteur de bande sur votre port parallèle, vous devrez activer l'option « Parallel port IDE device support » du menu « Block devices », ainsi qu'au moins une des sous-options pour le type de périphérique à utiliser et un des modules de prise en charge des protocole de communication sur port parallèle.
Pour des raisons de compatibilité, le gestionnaire de ports parallèles utilise par défaut une interrogation périodique pour déterminer l'état des ports. Cela consomme généralement des ressources de calcul, mais c'est une technique fiable. Toutefois, si votre matériel le permet, il est possible de le configurer pour utiliser une interruption matérielle, et soulager ainsi le processeur de cette tâche. Nous allons donc voir comment configurer le port parallèle ci-dessous.
Afin d'utiliser une interruption matérielle pour le port parallèle,
il est nécessaire de spécifier explicitement la ligne de cette interruption. Cela peut se faire avec
l'option irq
du module prenant en charge le port parallèle. Sur les ordinateurs
de type PC, le nom de ce module est « parport_pc », mais, comme on l'a vu
dans la Section 8.1.1, le noyau demande toujours le chargement du module
« parport_lowlevel » pour des raisons de portabilité. Il faut donc définir
un alias dans le fichier de configuration /etc/modprobe.conf.
Outre la ligne d'interruption à utiliser, le module parport_pc
peut prendre en paramètre une autre option permettant d'indiquer le port d'entrée / sortie qu'il
doit utiliser pour accéder au port parallèle. Cette option est l'option io
.
En général, le port utilisé est le port numéro 378h et la ligne d'interruption est souvent la 7.
Les options suivantes doivent donc être définies dans le ficher modprobe.conf
pour obtenir un fonctionnement optimal du port parallèle sous Linux :
D'autre options pourront être définies dans le fichier de configuration modprobe.conf pour prendre en charge les périphériques de type bloc connectés sur port parallèle. Cela est inutile pour les imprimantes connectées sur le port parallèle.
Si l'on désire intégrer le gestionnaire de périphérique
du port parallèle dans le noyau et faire en sorte qu'il utilise les paramètres détectés automatiquement
pour ce port, la solution la plus simple est de fournir l'option parport
du noyau
et de lui affecter la valeur auto :
Les ports série fournis en standard sur les cartes mères sont détectés et configurés automatiquement par le noyau lorsque l'ordinateur démarre. Pour que cela fonctionne, il suffit que l'option « Standard/generic (8250/16550 and compatible UARTs) serial support » du menu « Character devices » soit activée.
Cela dit, il se peut que votre ordinateur contienne un port série non standard, ou que vous ayez à sélectionner des options spécifiques pour votre matériel. Il vous faudra, dans ce cas, activer les options complémentaires relatives aux ports série dans le menu « Character devices ».
Le noyau n'est, en général, capable d'initialiser que les ports série standards intégrés dans les cartes mères (c'est-à-dire les ports COM1 à COM4), auxquels on accède, sous Linux, par l'intermédiaire des fichiers spéciaux de périphériques /dev/ttyS0 à /dev/ttyS3. Pour les autres ports série, il peut être nécessaire de les initialiser manuellement, par exemple dans un fichier de configuration lancé au démarrage du système.
Cette initialisation se fait à l'aide de la commande setserial, dont la syntaxe simplifiée est la suivante :
setserial fichier [uart type] [port adresse] [irq ligne]où fichier est le fichier spécial de périphérique permettant d'accéder au port série à initialiser, type est le type de port série utilisé, adresse est son adresse d'entrée / sortie et ligne est la ligne d'interruption qu'il utilise. La commande setserial dispose de nombreuses autres options. Je vous invite à en lire la page de manuel pour les découvrir.
Une fois le port série correctement initialisé, il est possible de fixer les paramètres de la ligne de communication avec la commande stty. Comme on l'a déjà vu précédemment, cette commande permet de fixer tous les paramètres des lignes de communication des terminaux et non seulement les paramètres des lignes série, et elle dispose donc d'un grand nombre d'options. Nous n'allons nous intéresser ici qu'aux options utilisés pour les lignes série. La page de manuel de stty pourra être consultée pour plus de détails.
La syntaxe à utiliser pour lire les paramètres de communication d'une ligne série est la suivante :
stty -a -F périphériqueoù périphérique est le fichier spécial de périphérique de la ligne. Si vous exécutez cette commande, vous constaterez qu'un grand nombre d'information est donné. Les informations les plus utiles sont sans doute
speed
, qui donne la vitesse
de la ligne série, csN
, qui donne le nombre N de bits
de données par caractère, [-]parenb
, qui indique si un bit de parité est utilisé
ou non (auquel cas le caractère '-' est présent), [-]parodd
,
qui indique le type de parité utilisée (paire ou impaire selon la présence ou l'absence du caractère
'-'), et [-]cstopb
, qui indique le nombre de bits
de stop utilisés (un ou deux selon la présence ou l'absence du caractère '-').
L'option [-]crtscts
indique si le contrôle de flux matériel est utilisé ou non.
À titre d'exemple, voici une sortie typique de la commande stty sur le premier
port série :
speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <indéfini>; eol2 = <indéfini>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Les mêmes options peuvent être utilsées pour fixer les paramètres de la ligne de communication. La ligne de commande à utiliser est alors la suivante :
stty -F périphérique options
Il existe une différence cependant : le paramètre permettant
de fixer la vitesse de la ligne est décomposé en deux options ispeed
pour
le flux de données entrant et ospeed
pour le flux de données sortant. On peut fixer
la vitesse de la ligne avec l'option ispeed
. Par exemple, pour faire passer la ligne
de communication du deuxième port série à 115200 bauds, 7 bits de données, un bit de stop et
une parité paire, il faut utiliser la ligne de commande suivante :
Bien qu'ayant eu quelques difficultés à ses débuts, le port USB est désormais en pleine expansion. Il s'agit d'une extension des ports série classiques, qui offre les avantages suivants :
possibilité de connecter jusqu'à 127 périphériques sur un même port, selon une structure arborescente ;
bande passante accrue jusqu'à 12 Mbits/s théoriques pour l'USB 1.1, et de 480 Mbits/s pour l'USB 2.0 ;
capacité de connexion des périphériques « à chaud » et détection automatique par le système d'exploitation ;
possibilité d'alimentation des périphériques par le bus lui-même, évitant ainsi d'avoir des câbles supplémentaires pour les périphériques consommant peu d'électricité.
Tous ces avantages font que le bus USB est appelé à remplacer les ports série que l'on connaît, et que l'on n'utilise plus désormais que pour les modems, les vieilles souris série et quelques appareils extérieurs. Notez que la simplicité du port série fera qu'il restera encore présents sur bon nombre d'appareils pour plusieurs années encore, mais les périphériques informatiques risquent de s'en détourner de plus en plus.
La gestion de l'USB sous Linux se base profondément sur les mécanismes de détection dynamique des périphériques connectables à chaud. Les gestionnaires de périphériques sont donc généralement des modules du noyau chargés automatiquement lorsque ces périphériques sont détectés. Il est toutefois également possible d'intégrér ces gestionnaires au sein du noyau, et de laisser les opérations de configuration des périphériques (chargement du firmware, création des fichiers spéciaux de périphériques par udev et configuration du matériel) se faire via les mécanismes de gestion des périphériques amovibles. Linux est capable d'utiliser la plupart des périphériques USB existant actuellement sur le marché.
Au niveau du noyau, la configuration des périphériques USB se fait dans le menu « USB support ». Il faut simplement activer l'option « Support for USB », sélectionner un gestionnaire pour le port USB et choisir les gestionnaires des différents types de périphériques que l'on voudra connecter sur la machine.
Il est impératif d'activer l'option « USB device filesystem » afin de permettres à certains outils d'accéder, via le répertoire /proc/bus/usb/ du système de fichiers virtuel /proc/, aux périphériques USB connectés à l'ordinateur. Ce système de fichiers doit être monté à l'aide de la commande suivante :
pour pouvoir être utilisé. Il est également possible de le monter automatiquement dans le fichier /dev/fstab.En fait, il existe trois types d'interfaces USB sur le marché : les interfaces EHCI (abréviation ed l'anglais « Enhanced Host Controler Interface »), qui prennent en charge l'USB 2.0, les interfaces UHCI (abréviation de l'anglais « Universal Host Controller Interface »), spécifiées par Intel et que les contrôleurs de la plupart des cartes mères utilisent (chipsets Intel et VIA), et les interfaces OHCI (« Open Host Controller Interface »), spécifiées par Compaq, et qui sont utilisées par les chipsets Compaq et ALi principalement. Les ports USB 2.0 comprennent également un port USB 1.1 UHCI ou OHCI, qui permet donc de connecter les anciens périphériques USB. La configuration de l'USB se restreint donc simplement à la sélection des pilotes nécessaires pour votre matériel (option « EHCI HCD (USB 2.0) support » si vous disposez d'un port USB 2.0, et le pilote UHCI « UHCI HCD (most Intel and VIA) support » ou le pilote OHCI « OHCI HCD support »). Notez que le pilote EHCI ne gère que la partie USB 2.0 de votre contrôleur USB, et que vous devez également inclure le support UHCI ou OHCI pour pouvoir utiliser les périphériques USB 1.1.
Comme vous pouvez le constater dans le menu de configuration du noyau, un grand nombre de périphériques USB sont gérés par Linux. Vous devez bien entendu activer les options permettant de prendre en charge votre matériel. Il est conseillé d'inclure ces fonctionnalités sous forme de modules afin de permettre le chargement dynamique des gestionnaires de périphériques. Cela est nécessaire pour la configuration des périphériques connectés à chaud dans le système. Les options les plus importantes sont sans doute « USB Audio support », pour la prise en charge des périphériques USB audio, « USB Printer support », pour toutes les imprimantes USB et « USB Mass Storage support », pour la prise en charge des clefs USB et de la majorité des appareils photos numériques. Les scanners USB sont pris en charge automatiquement par les logiciels et ne requièrent pas de configuration particulière au niveau du noyau.
Les périphériques d'entrée tels que le clavier et la souris devront, si possible, être inclus directement au sein du noyau afin d'éviter de se retrouver sans clavier et sans souris au démarrage, en cas de problème dans la configuration du système. Notez qu'il existe deux types de pilotes pour les périphériques d'entrée : un pilote général (option « USB Human Interface Device (full HID) support ), qui fonctionne avec tous les périphériques d'entrée du menu « Input core support », et des pilotes simplifiés (options du sous-menu « USB HID Boot Protocol drivers »), que l'on utilisera pour réaliser des systèmes embarqués ou des noyaux légers. Il est évidemment recommandé d'utiliser le premier pilote, si réellement le support du clavier USB est nécessaire (normalement, les claviers USB sont pris en charge par le BIOS de l'ordinateur et apparaissent exactement comme des claviers classiques pour le système d'exploitation).
Il est fortement recommandé, si l'on désire utiliser des périphériques USB, d'activer les fonctionnalités de chargement dynamique des modules, de gestion des périphériques connectables à chaud et de chargement des firmware automatique de Linux.
Le bus IEEE1394 (initialement dénommé bus FireWire) est un bus série à grande vitesse, capable de transférer des données avec un très grand débit (400 mégabits par secondes). Ce bus peut être utilisé pour connecter de nombreux périphériques (disques dur et lecteurs de CDROM externes par exemple), mais sa principale utilisation reste pour les transferts de données vidéo provenant des caméscopes numériques. Certaines cartes mères disposent d'un port IEEE1394 intégré, mais la plupart nécessitent l'ajout d'une carte fille PCI. La plupart de ces cartes sont vendues en tant que cartes de montage vidéo et disposent de deux ports IEEE1394 afin de permettre une entrée et une sortie du flux vidéo.
Le bus IEEE1394 dispose d'avantages indéniables, puisqu'il permet de brancher et de débrancher un périphérique à chaud (c'est-à-dire sans redémarrer l'ordinateur), les données sont transférées en numérique (donc sans perte de qualité pour les séquences vidéo), et de piloter les appareils qui y sont connectés (ce qui permet de contrôler par exemple un caméscope à partir d'un logiciel de montage vidéo). Il est également possible d'utiliser le bus IEEE1394 pour connecter deux ordinateurs en réseau, bien que cette fonctionnalité soit encore expérimentale.
Linux dispose des pilotes permettant d'utiliser les ports IEEE1394 de manière générique. Cependant, il faut bien le reconnaître, les logiciels spécifiques aux différents types d'appareils sont encore très rares ou incomplets. Cet état de fait est particulièrement vrai en ce qui concerne les caméscopes numériques, pour lesquels il n'existe quasiment aucun logiciel de montage vidéo dont la qualité s'approche de celle de ceux qui ont été développés pour Windows. Cela dit, les autres périphériques tels que les disques durs et les lecteurs de CD-ROM externes sont mieux supportés, et la configuration du port IEEE1394 peut être réalisée complètement en attendant que des logiciels plus évolués ne voient le jour. Vous pouvez obtenir les dernières informations concernant le support des périphériques FireWire sous Linux sur le site de linux1394.
La prise en charge du bus IEEE1394 au niveau du noyau est réalisable par l'intermédiaire des options du menu « IEEE 1394 (FireWire) support (EXPERIMENTAL) ». Comme le support des périphériques IEEE1394 sous Linux en est encore à ses balbutiements, ce menu ne peut être accédé que si l'on a activé l'option « Prompt for development and/or incomplete code/drivers » du menu « Code maturity level options ». Les principales options utilisables sont les suivantes :
l'option « IEEE 1394 (FireWire) support (EXPERIMENTAL) », qui est l'option principale qui active toutes les autres options. Il faut donc impérativement activer cette option et répondre 'Y' ;
l'option « Texas Instruments PCILynx support », qui permet de prendre en charge les cartes IEEE1394 basées sur la puce PCILynx de Texas Instrument. Ce ne sont pas les cartes les plus couramment utilisées, aussi la réponse recommandée est-elle 'N'. Si vous activez cette option, vous pourrez configurer des paramètres complémentaires du gestionnaire de périphériques avec les options « Use PCILynx local RAM » (utilisation de la mémoire embarquée sur la carte PCI) et « Support for non-IEEE1394 local ports » (utilisation de fonctionnalités complémentaires non FireWire de ces cartes) ;
l'option « OHCI-1394 support », qui active la prise en charge des périphériques IEEE1394 compatible OHCI (abréviation de l'anglais « Open Host Controller Interface ), qui sont les périphériques les plus courants à présent. La réponse recommandée est 'Y' ;
l'option « OHCI-1394 Video support », qui permet de prendre en charge les caméras vidéo numériques. Cette option ajoute également une fonctionnalité intéressante qui permet aux programmes de partager les données avec le gestionnaire de périphériques directement. Cela permet d'éviter qu'une copie de ces données ne soit réalisée entre la mémoire du noyau et la mémoire de l'application et d'obtenir ainsi de meilleures performances. La réponse recommandée est bien évidemment 'Y'. Cette option n'est toutefois disponible que pour les périphériques OHCI ;
l'option « SBP-2 support (Harddisks, etc.) », qui permet de prendre en charge les disques durs et les lecteurs de DVD connectés sur bus IEEE1394. Ces lecteurs apparaissent alors comme des périphériques SCSI standards et pourront être montés via l'un des périphériques /dev/sdx ;
l'option « Raw IEEE1394 I/O support », qui permet aux applications de communiquer directement avec le bus IEEE1394 par l'intermédiaire d'un fichier spécial de périphérique. Cette option est nécessaire au bon fonctionnement de la plupart des applications IEEE1394 et la réponse recommandée est donc 'Y' ;
l'option « Excessive debugging output », qui active l'émission de messages de traces pour toutes les données survenant sur le bus IEEE1394. Cette option saturera vos fichiers de traces très vite et n'est réellement utile que pour les développeurs, aussi faut-il répondre 'N'.
Comme pour tous les périphériques sous Linux, les fonctionnalités IEEE1394 du noyau seront accessibles par l'intermédiaire de fichiers spéciaux de périphériques situés dans le répertoire /dev/. Les fonctionnalités vidéo seront accédées par l'intermédiaire d'un fichier spécial de périphérique de type caractère et de code majeur 172. De même, l'interface de données brute activée par l'option « Raw IEEE1394 I/O support » est exposée par l'intermédiaire d'un fichier spécial de périphérique de type caractère et de code majeur 171. Vous devrez donc créer ces fichiers spéciaux à l'aide des deux commandes suivantes :
mknod /dev/raw1394 c 171 0 mknod -m 666 /dev/video1394 c 172 0Le numéro de code mineur est utilisé pour distinguer les différents ports IEEE1394 présents dans la machine. Les lignes de commandes précédentes ne montrent que la manière de créer les fichiers spéciaux de périphériques que pour le premier port IEEE1394.
Les fonctionnalités IEEE1394 peuvent être utilisées par les applications directement par l'intermédiaire des fichiers spéciaux de périphériques /dev/raw1394 et /dev/video1394, mais quasiment aucune ne le fait. En effet, des bibliothèques spécifiques ont été écrites afin de fixer les interfaces de programmation de Linux avec ces applications. Il est donc nécessaire d'installer ces bibliothèques pour pouvoir utiliser les périphériques IEEE1394.
Il est encore rare que ces bibliothèques soient installées par les distributions, certainement parce qu'elles sont encore en cours de développement. Leur installation nécessite donc de les compiler soi-même, ce qui est une tâche facile si on sait le faire, mais qui peut effrayer un débutant. Rappelons une fois de plus que le support des périphériques IEEE1394 sous Linux est encore expérimental.
La bibliothèque de programme la plus importante est celle qui permet d'utiliser la fonctionnalité d'accès direct aux périphériques IEEE1394 par l'intermédiaire du fichier spécial de périphérique /dev/raw1394. Les fichiers sources de cette bibliothèque peuvent être trouvées sur le site du projet libraw1394. Une autre bibliothèque utilisée par les programmes vidéo est la bibliothèque libavc1394. Cette bibliothèque permet en effet aux programmes de piloter les caméscopes numériques par l'intermédiaire du bus IEEE1394. Enfin, les programmes d'édition vidéo peuvent avoir besoin de la bibliothèque libdv, qui permet de manipuler les données au format DV (c'est-à-dire le format de données utilisé par la plupart des caméscopes numériques). Cette bibliothèque ne fait pas à proprement parler partie des bibliothèques permettant de communiquer avec les périphériques IEEE1394, mais elle est extrêmement utile.
La compilation de ces bibliothèques se fait classiquement avec les commandes suivantes :
./configure --prefix=/usr makeà partir du répertoire des sources. Celui-ci pourra être extrait des archives à l'aide de la commande tar xzf archive, où archive est le nom de l'archive en question. Une fois compilées, les bibliothèques pourront être installées avec la commande :
make installCes opérations ne devraient pas poser de problème particulier. Consultez le Chapitre 7 pour plus de détails sur ces opérations.
Une fois ces bibliothèques installées, vous devriez pouvoir installer et utiliser des applications dédiées aux périphériques IEEE1394, comme dvgrab (outil de capture vidéo), kino ou broadcast2000 (outils d'édition de séquences vidéo). Force est de reconnaître que ces programmes sont très loins d'être finis et réellement difficiles à utiliser.
Précédent | Sommaire | Suivant |
Configuration des cartes filles | Niveau supérieur | Configuration du réseau |