Le Linux HOWTO pour les ports série

Greg Hankins, greg.hankins@cc.gatech.edu
traduit par Eric Festinger, eric@midix.frmug.org

v1.11, 15 Novembre 1997
Ce document décrit la configuration sous Linux des ports série, des programmes associés, et des périphériques qui y sont connectés.

1. Introduction

Ce document est la traduction française du Linux Serial HOWTO. Il tente de décrire la configuration des modems et terminaux sous Linux, de donner quelques conseils, et enfin de résoudre les problèmes liés aux ports série. Il est destiné plus particulièrement aux plateformes Intel x86, même s'il doit être applicable à d'autres architectures.

1.1 Copyright

Copyright (c) 1993 - 1997 Greg Hankins. Ce document peut être redistribué sous les termes de la licence LDP disponible à http://sunsite.unc.edu/LDP/COPYRIGHT.html. Il ne peut être modifié sans l'accord de son auteur.

1.2 Nouvelles versions de ce document

La version originale la plus récente de ce document est disponible à ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/ ainsi que sur les sites miroirs. D'autres formats (PostScript, DVI...) existent dans le répertoire other-formats. Ce HOWTO est également consultable à http://sunsite.unc.edu/LDP/HOWTO/Serial-HOWTO.html et est posté mensuellement dans le forum de discussions comp.os.linux.answers.

La version française est disponible sur http://www.freenix.fr/linux/HOWTO/Serial-HOWTO.html, et est postée tous les mois dans fr.comp.os.linux.annonces.

1.3 Retour d'informations

Merci de me faire parvenir par email à greg.hankins@cc.gatech.edu toutes questions, commentaires et suggestions. Je suis extrêmement intéressé par ce que vous pensez à propos de ce HOWTO, et par les éventuelles améliorations. Faites-moi part de ce que vous ne comprenez pas ou de ce qui nécessite des éclaircissements. Je répondrais à tous les emails, même si ça peut me prendre une semaine ou plus. Je reçois beaucoup de messages de root ou de sites mal configurés. Assurez-vous de m'envoyer un message électronique en tant que personne réelle, ainsi que du bon fonctionnement de votre système de messagerie. Si vous n'avez toujours pas de réponse de ma part au bout de deux semaines, merci de m'envoyer à nouveau votre message.

Je peux également être joint à :
Greg Hankins
College of Computing
801 Atlantic Drive
Atlanta, GA 30332-0280
par courrier postal, et à http://www.cc.gatech.edu/staff/h/Greg.Hankins/.

Merci d'inclure le numéro de version de ce HOWTO dans votre message. Ceci est la version 1.11.

1.4 Avertissement

Votre système peut varier par rapport aux exemples, et les solutions présentées dans ce HOWTO peuvent ne pas fonctionner.

2. Matériel supporté

Les matériels suivants fonctionnent correctement sous Linux.

2.1 Cartes série standards pour PC

Remarque : en raison de conflits d'adresses, vous ne pouvez pas utilisez simultanément COM4 et une carte vidéo IBM8514. Ceci est dû à un bogue de la carte IBM8514.

2.2 Modems Plug And Play (PnP)

Même si les modems PnP fonctionnent sous Linux, je ne les recommande pas. Néanmoins, voici quelques conseils :

2.3 Cartes série multiports simples (équipées d'UART 8250/16450/16550A)

De manière générale, Linux supporte n'importe quelle carte équipée d'un UART 8250, 16450, 16550 ou 16550A (ou compatible), et n'importe quel modem émulant un de ces composants.

Remarque : les BB-1004 et BB-1008 ne supportent pas les signaux DCD et RI, et ne sont donc pas utilisables pour des modems répondeurs. Ils fonctionnent néanmoins très bien dans les autres cas.

2.4 Cartes série multiports intelligentes

Un descriptif des produits Comtrol, Cyclades, Digi, et Stallion est paru dans le numéro 14 de juin 1995 du Linux Journal. Il est disponible à http://www.ssc.com/lj/issue14.

2.5 Matériel non supporté

Les modems dits ``Winmodems'', par exemple l'USR Sportster Winmodem et l'IBM Aptiva MWAVE, ne sont pas supportés sous Linux. Ils utilisent des technologies propriétaires nécessitant des gestionnaires de périphériques spéciaux pour Windows. Les modems nécessitant des gestionnaires Rockwell RPI sont à éviter pour la même raison.

Les cartes série intelligentes nécessitant des gestionnaires non disponibles sous Linux, ne pourront pas fonctionner.

3. Comment se nomment les ports série ?

Un port d'E/S permet de recevoir des données depuis, et d'en envoyer à partir d'un ordinateur. Il existe plusieurs types de ports d'E/S, comme les ports série, les ports parallèles, les contrôleurs de disques durs, les cartes Ethernet, etc. Les modems et les terminaux dont nous allons traiter n'utilisent que des ports série. Chacun de ces ports possède une adresse d'E/S, et un vecteur d'interruption (IRQ). Les quatre ports série suivants correspondent à COM1 - COM4 :

ttyS0 (COM1) adresse 0x3f8 IRQ 4
ttyS1 (COM2) adresse 0x2f8 IRQ 3
ttyS2 (COM3) adresse 0x3e8 IRQ 4
ttyS3 (COM4) adresse 0x2e8 IRQ 3
Si aucun port série n'est détecté lors de l'amorçage de Linux, assurez-vous que leur support a été sélectionné et compilé dans le noyau. Dans ce document, je me réfère à COM1 pour ttyS0, COM2 pour ttyS1, COM3 pour ttyS2, et à COM4 pour ttyS3. Par défaut, ces ports ont des IRQ communes, et vous ne pouvez pas les utiliser simultanément dans cette configuration. Certaines de ces IRQ doivent être réassignées. Reportez-vous à la section Puis-je utiliser plus de deux ports série ?.

Sur certaines installations, deux périphériques supplémentaires vont être créés : /dev/modem pour le modem et /dev/mouse pour la souris. Ce sont des liens symboliques sur le périphérique approprié (dans le répertoire /dev) que vous avez spécifié lors de l'installation. Si vous possédez une souris de type bus PS/2, /dev/mouse pointera correctement sur le périphérique de la souris bus.

Plusieurs discussions ont porté sur les avantages et inconvénients de ces pseudo-périphériques /dev/mouse et /dev/modem. Personnellement, je décourage fortement l'utilisation de ces liens. En particulier, si vous prévoyez d'employer plusieurs modems pour les connexions entrantes sur /dev/modem, des problèmes peuvent apparaître à cause des fichiers de verrouillage (lock files). Vous pouvez néanmoins les utiliser si vous le désirez, mais assurez-vous qu'ils pointent bien sur les bons périphériques. Cependant, si vous supprimez ces liens, certaines applications (comme minicom) peuvent ne plus fonctionner sans reconfiguration.

3.1 Périphériques série et numéros dans /dev

/dev/ttyS0 majeur 4, mineur 64         /dev/cua0 majeur 5, mineur 64
/dev/ttyS1 majeur 4, mineur 65         /dev/cua1 majeur 5, mineur 65
/dev/ttyS2 majeur 4, mineur 66         /dev/cua2 majeur 5, mineur 66
/dev/ttyS3 majeur 4, mineur 67         /dev/cua3 majeur 5, mineur 67
Remarque : toutes les distributions doivent être livrées avec ces périphériques déjà correctement configurés, ce que vous pouvez vérifier en tapant les commandes :
linux% ls -l /dev/cua*
linux% ls -l /dev/ttyS*

Créer les périphériques dans /dev

Si un périphérique est absent, vous devez le créer avec la commande mknod. Par exemple, pour ttyS0 :

linux# mknod -m 666 /dev/cua0 c 5 64
linux# mknod -m 666 /dev/ttyS0 c 4 64

Le script MAKEDEV, situé dans le répertoire /dev, peut être utilisé pour simplifier leur création. Par exemple, pour ttyS0 :
linux# cd /dev
linux# ./MAKEDEV ttyS0
Cette commande crée les périphériques d'entrée et de sortie correspondants, et positionne également les bonnes permissions.

3.2 Remarques pour les cartes multiports simples

Les périphériques utilisés par les cartes multiports sont dépendants du type de carte que vous possédez. Ils sont listés en détail dans le fichier rc.serial fourni avec le programme setserial. Je recommande vivement de récupérer la version la plus récente de setserial si vous devez utiliser une telle carte. Vous devrez alors sûrement créer ces périphériques, soit avec la commande mknod, soit avec le script MAKEDEV. Ils doivent être déclarés en ajoutant 64 au numéro du port. Par exemple, pour ttyS17 :

linux# mknod -m 666 /dev/cua17 c 5 81
linux# mknod -m 666 /dev/ttyS17 c 4 81
Car ``64 + 17 = 81''. En utilisant le script MAKEDEV, il suffit d'entrer :
linux# cd /dev
linux# ./MAKEDEV ttyS17

Remarque : le listing des ports COM5-COM8 pour les IO1812 est erroné dans le manuel SIIG. Les valeurs doivent être remplacées par COM5=0x250, COM6=0x258, COM7=0x260, et COM8=0x268.

Remarque : le registre d'état d'interruption (Interrupt Status Register) de la carte Digi PC/8 se trouve en 0x140.

Remarque : pour la carte AST Fourport, le fichier rc.serial doit spécifier le paramètre skip_test.

3.3 Remarques pour les cartes multiports intelligentes

Lisez les informations fournies avec le gestionnaire. Ces cartes utilisent des périphériques non-standards. Ces informations varient suivant le matériel.

4. Quelques programmes intéressants à connaître

4.1 Qu'est-ce que getty ?

getty est un programme qui gère la phase d'entrée en session (login) sur un système Unix. Il est indispensable si vous souhaitez vous loguer sur votre machine Linux avec un modem. Il n'est par contre pas utile pour des communications sortantes. Il existe trois versions couramment utilisées avec Linux : getty_ps, mgetty et agetty. Chacune possède sa propre syntaxe. Aussi, assurez-vous d'utiliser celle correspondant à votre version de getty.

À propos de getty_ps

La plupart des distributions installent directement le paquetage getty_ps. Il contient deux programmes : getty pour la console et les terminaux, et uugetty pour les modems. Je parlerai essentiellement de cette version, car c'est celle que j'utilise.

À propos de mgetty

mgetty est un getty spécialisé pour l'utilisation avec des modems. Par rapport aux autres versions, mgetty gère les fax, et détecte automatiquement les connexions PPP. La documentation est excellente et suffisante. Veuillez vous y reporter pour l'installation. Les informations les plus récentes sur mgetty peuvent être trouvées à http://www.leo.org/~doering/mgetty/.

À propos de agetty

agetty est la troisième variante de getty. C'est une version simple complètement fonctionnelle, et plus particulièrement destinée à l'utilisation des consoles virtuelles et des terminaux plutôt que des modems.

4.2 Qu'est-ce que setserial ?

setserial est un programme autorisant la consultation et la modification des différents attributs (adresse de port, interruption, etc.) d'un périphérique série. Vous pouvez déterminer le numéro de version installée en lançant setserial sans argument.

Lorsque votre système Linux démarre, seuls ttyS{0-3} sont configurés avec les IRQ positionnées par défault à 4 et 3. Si vous possédez d'autres ports série sur d'autres cartes, ou si ttyS{0-3} utilisent des IRQ non standards, vous devez lancer ce programme pour configurer ces ports. Consultez le manuel pour une description complète des options.

5. Comment puis-je appeler avec mon modem ?

5.1 Matériel nécessaire

Tout d'abord, assurez-vous d'avoir le bon câble. Votre modem requiert un câble droit, sans inversion de fils. Vous devriez pouvoir vous en procurer dans n'importe quel magasin d'informatique. Vérifiez également le genre des connecteurs. Pour un port à 25 broches, ce sera toujours un modèle mâle DB25, à ne pas confondre avec les ports parallèles à embase femelle DB25. Connectez votre modem sur un de vos ports série. Consultez si nécessaire le manuel de votre modem.

Remarques pour les modems internes

Pour un modem interne, aucun câble n'est nécessaire. De même, aucun port série n'est requis, car la carte modem en possède un interne. Vous devez seulement configurer votre modem pour qu'il utilise une interruption (IRQ) et une adresse d'E/S libres. Reportez-vous au manuel de votre modem, ainsi qu'à la section Puis-je utiliser plus de deux périphériques série ? si vous avez besoin d'aide pour choisir les interruptions et les adresses.

Sur certaines cartes mères, il peut être nécessaire de désactiver les ports série afin d'éviter les conflits avec le modem. Cette manipulation peut être effectuée avec des cavaliers ou les paramètres du BIOS. Consultez le manuel de votre carte mère.

Suite à un bogue des cartes vidéo IBM8514, les modems internes ne peuvent pas fonctionner sur ttyS3. Si Linux ne détecte pas le modem sur ttyS3, il suffit alors d'utiliser setserial pour que le modem fonctionne correctement. Un modem interne ttyS{0-2} ne devrait pas poser de problème de détection. Linux n'effectue pas d'autoconfiguration du ttyS3 à cause de ce bogue lié à la carte vidéo.

5.2 ``Parlez'' à votre modem

Avant de vous lancez dans le paramétrage assez complexe de SLIP ou PPP, utilisez kermit ou n'importe quel autre programme de communication pour tester votre configuration. La version la plus récente de kermit peut être téléchargée depuis http://www.columbia.edu/kermit/. L'exemple suivant suppose que votre modem est sur ttyS3, et que sa vitesse est fixée à 115200 bps :

linux# kermit
C-Kermit 6.0.192, 6 Sep 96, for Linux
 Copyright (C) 1985, 1996,
  Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help.
C-Kermit>set line /dev/ttyS3
C-Kermit>set carrier-watch off
C-Kermit>set speed 115200
/dev/ttyS3, 115200 bps
C-Kermit>c
Connecting to /dev/ttyS3, speed 115200.
The escape character is Ctrl-\ (ASCII 28, FS)
Type the escape character followed by C to get back,
or followed by ? to see other options.
ATE1Q0V1                   ; vous tapez cette chaine puis la touche Entree
OK                         ; le modem doit repondre comme ca

Si votre modem répond aux commandes AT, vous pouvez supposer qu'il fonctionne correctement du côté Linux. Il ne reste plus qu'à essayer d'appeler un autre modem :

ATDT7654321
où 7654321 est un numéro de téléphone. Utilisez ATDP à la place de ATDT si vous n'êtes pas connecté à un central numérique. Votre modem fonctionne si l'appel aboutit.

Pour revenir à l'invite kermit, appuyez simultanément sur les touches Ctrl et backslash, puis sur C :

Ctrl-\-C
(Retour a linux)
C-Kermit>quit
linux#

Il s'agissait juste d'un test de numérotation ``à la main''. La méthode normale est de laisser kermit numéroter à votre place à l'aide de sa base de données interne de modems. Par exemple, pour un modem US Robotics (USR) :

linux# kermit
C-Kermit 6.0.192, 6 Sep 1997, for Linux
 Copyright (C) 1985, 1996,
  Trustees of Columbia University in the City of New York.
Default file-transfer mode is BINARY
Type ? or HELP for help
C-Kermit>set modem type usr        ; Selection du type de modem
C-Kermit>set line /dev/ttyS3       ; Choix du peripherique
C-Kermit>set speed 115200          ; Vitesse de communication
C-Kermit>dial 7654321              ; Numerotation
 Number: 7654321
 Device=/dev/ttyS3, modem=usr, speed=115200
 Call completed.

Site hébergé sur un Cloud Public IKOULA Ikoula