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
- cartes série standards pour PC (COM1 - COM4), auxquelles peuvent être connectés des périphériques série externes (modems, souris série, etc.)
- modems internes standards pour PC (COM1 - COM4)
- Quickpath Systems Port-Folio 550e (autorisant les IRQ 3, 4, 5, 9, 10, 11, 12, ou 15)
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 :
- Essayez de désactiver les fonctionnalités PnP dans le BIOS de l'ordinateur et du modem.
- Démarrez sous Win95, configurez le modem, et vérifiez que les paramètres sont sauvegardés lorsque vous redémarrez sous Linux. Si ce n'est pas le cas :
- Démarrez sous Win95, configurez le modem, et redémarrez à
chaud (warm boot) sous Linux, de manière à ce que les
paramètres soient préservés. Vous pouvez effectuer cette
manipulation avec
loadlin
. - Récupérez les outils PnP à
http://www.redhat.com/linux-info/pnp
. - Et, bien sûr, utilisez un vrai modem :-)
2.3 Cartes série multiports simples (équipées d'UART 8250/16450/16550A)
- AST FourPort et compatibles (4 ports)
- Accent Async-4 (4 ports)
- Arnet Multiport-8 (8 ports)
- Bell Technologies HUB6 (6 ports)
- Boca BB-1004 (4 ports), BB-1008 (8 ports), BB-2016 (16 ports)
- Boca IOAT66 (6 ports)
- Boca 2by4 (4 ports série, 2 ports parallèles)
- Computone ValuePort V4-ISA (compatible AST FourPort)
- Digi PC/8 (8 ports)
- GTEK BBS-550 (8 ports)
- Longshine LCS-8880, Longshine LCS-8880+ (compatible AST FourPort)
- Moxa C104, Moxa C104+ (compatible AST FourPort)
- PC-COMM (4 ports)
- Sealevel Systems COMM-2 (2 ports), COMM-4 (4 ports) et COMM-8 (8 ports)
- SIIG I/O Expander 2S IO1812 (4 ports)
- STB-4COM (4 ports)
- Twincom ACI/550
- Usenet Serial Board II (4 ports)
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
- Comtrol RocketPort (ASIC 36MHz ; 4, 8, 16 ou 32 ports)
contact :info@comtrol.com
ouhttp://www.comtrol.com
état du gestionnaire de périphérique : supporté par Comtrol
emplacement :ftp://tsx-11.mit.edu/pub/linux/packages/comtrol
- Computone IntelliPort II (80186 16MHz ; 4, 8, ou 16
ports),
IntelliPort II EXpandable (80186 20MHz ; 16 - 64 ports)
contact : Michael H. Warfield,mhw@wittsend.atl.ga.us
état du gestionnaire de périphérique : pré-ALPHA - Cyclades Cyclom-Y (UART Cirrus Logic CD1400 ; 8 - 32
ports),
Cyclom-Z (MIPS R3000 25MHz ; 8 - 128 ports)
contact :sales@cyclades.com
ouhttp://www.cyclades.com
état du gestionnaire de périphérique : supporté par Cyclades
emplacement :ftp://ftp.cyclades.com/pub/cyclades
et inclus dans le noyau Linux depuis la version 1.1.75 - Decision PCCOM8 (8 ports)
contact :pccom8@signum.se
emplacement :ftp://ftp.signum.se/pub/pccom8
- Digi PC/Xi (80186 12.5MHz ; 4, 8, ou 16 ports),
PC/Xe (80186 12.5/16MHz ; 2, 4, ou 8 ports),
PC/Xr (IDT3041 16MHz ; 4 ou 8 ports),
PC/Xem (IDT3051 20MHz ; 8 - 64 ports)
contact :sales@dgii.com
ouhttp://www.dgii.com
état du gestionnaire de périphérique : supporté par Digi
emplacement :ftp://ftp.dgii.com/drivers/linux
et inclus dans le noyau Linux depuis la version 2.0 - Digi COM/Xi (80188 10MHz ; 4 ou 8 ports)
contact : Simon Park,si@wimpol.demon.co.uk
état du gestionnaire de périphérique : ALPHA
Remarque : régulièrement, Simon ne peut pas lire son mail pendant plusieurs mois à cause de son travail. Mark Hatle,fray@krypton.mankato.msus.edu
s'est gracieusement porté volontaire pour rendre le gestionnaire de périphérique disponible si vous en avez besoin. Néanmoins, Mark ne s'occupe pas de la maintenance ni du support de ce gestionnaire. - Equinox SuperSerial Technology (ASIC 30MHz ; 2 - 128
ports)
contact :sales@equinox.com
ouhttp://www.equinox.com
état du gestionnaire de périphérique : supporté par Equinox
emplacement :ftp://ftp.equinox.com/library/sst
- GTEK Cyclone (UART 16C654 ; 6, 16 et 32 ports),
SmartCard (Dallas DS80C320 24MHz ; 8 ports),
BlackBoard-8A (UART 16C654 ; 8 ports),
PCSS (8032 15/24MHz ; 8 ports)
contact :spot@gtek.com
ouhttp://www.gtek.com
état du gestionnaire de périphérique : supporté par GTEK
emplacement :ftp://ftp.gtek.com/pub
- Hayes ESP (COM-bic ; 1 - 8 ports)
contact : Andrew J. Robinson,arobinso@nyx.net
ouhttp://www.nyx.net/~arobinso
état du gestionnaire de périphérique : supporté par l'auteur
emplacement :http://www.nyx.net/~arobinso
et inclus dans le noyau Linux depuis la version 2.1.15 - Maxpeed SS (Toshiba ; 4, 8 et 16 ports)
contact :info@maxpeed.com
ouhttp://www.maxpeed.com
état du gestionnaire de périphérique : supporté par Maxpeed
emplacement :ftp://maxpeed.com/pub/ss
- Moxa C218 (80286 12MHz ; 8 ports),
Moxa C320 (TMS320 40MHz ; 8 - 32 ports)
contact :info@moxa.com.tw
ouhttp://www.moxa.com.tw
état du gestionnaire de périphérique : supporté par Moxa
emplacement :ftp://ftp.moxa.com.tw/drivers/c218-320/linux
- SDL RISCom/8 (Cirrus Logic CD180 ; 8 ports)
contact :sales@sdlcomm.com
ouhttp://www.sdlcomm.com
état du gestionnaire de périphérique : supporté par SDL
emplacement :ftp://ftp.sdlcomm.com/pub/drivers
- Specialix SIO (Zilog Z280 20MHz ; 4 - 32 ports),
XIO (25MHz Zilog Z280 ; 4 - 32 ports)
contact : Simon Allen,simonallen@cix.compulink.co.uk
état du gestionnaire de périphérique : BETA
emplacement :ftp://sunsite.unc.edu/pub/Linux/kernel/patches/serial
- Stallion EasyIO-4 (4 ports), EasyIO-8 (8 ports),
et
EasyConnection (8 - 32 ports) - toutes avec des UART,
Stallion (CPU 80186 8MHz ; 8 ou 16 ports),
Brumby (CPU 80186 10/12 MHz ; 4, 8 ou 16 ports),
ONboard (CPU 80186 16MHz ; 4, 8, 12, 16 ou 32 ports),
EasyConnection 8/64 (CPU 80186 25MHz ; 8 - 64 ports)
contact :sales@stallion.com
ouhttp://www.stallion.com
état du gestionnaire de périphérique : supporté par Stallion
emplacement :ftp://ftp.stallion.com/drivers/ata5/Linux
et inclus dans le noyau Linux depuis la version 1.3.27
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.