HOWTO Terminal Texte pour Linux David S. Lawyer mailto:bf347@lafn.org, traduit par Julien Garnault mailto:judge@club-internet.fr v1.09, 28 Novembre 1999 _________________________________________________________________ _Ce document explique ce que sont les terminaux en mode texte, comment ils fonctionnent, comment les installer et les configurer, et fournit des informations sur la manière de les réparer. Cela peut être utile même si vous n'avez pas le manuel du terminal. Bien qu'il soit écrit pour de vrais terminaux reliés à un système Linux, certaines informations de ce manuel sont applicables à l'émulation de terminal et peuvent être utiles pour des systèmes différents de Linux._ _________________________________________________________________ 1. Introduction Pour tenter d'installer un terminal rapidement, voyez installation rapide. 1.1 Copyright, marques déposées, avertissement et crédits Copyright Copyright 1998-9 par David S. Lawyer. Veuillez copier et distribuer librement ce document (par la vente ou le don). Contactez le mainteneur pour les corrections et les changements mineurs. Sinon, vous pouvez créer et distribuer des travaux dérivés à la condition que vous : 1. envoyez le travail dérivé (dans le format le plus adapté, en sgml par exemple) au LDP (Linux Documentation Project) ou un equivalent pour poster sur internet. Si ce n'est pas le LDP, dites au LDP ou il est trouvable. A part pour une traduction, envoyez une copie a l'url precedente du mainteneur donnée dans la derniere version. 2. donniez une licence au travail dans l'esprit de cette licence, ou que vous utilisiez la GPL. Incluez une notice concernant le copyright et au moin un pointeur vers la licence utilisée. 3. donniez un crédit total aux précédent auteurs et contributeurs majeurs. Si vous considerez faire un travail dérivé autre qu'une traduction, il est requis d'en discuter avec le mainteneur courant. Avertissement Bien que je n'ai pas tenté de vous induire sciemment en erreur, il y a sûrement un certain nombre d'erreurs dans ce document. Veuillez me les signaler. Puisque c'est une documentation libre, il devrait être évident que je ne peux pas être tenu légalement responsable des erreurs commises. Marques déposées Si certains mots représentent des marques déposées, le contexte devrait indiquer clairement à qui elles appartiennent. Par exemple, "MS Windows NT" implique que "Windows NT" appartient à Microsoft (MS). Mac est fabriqué par Apple Computer. Les marques déposées appartiennent à leurs propriétaires respectifs. Crédits La majeure partie de la section "Connexion physique" provient du Howto Serial v. 1.11 de Greg Hankins (avec sa permission). Sa partie : "Comment configurer un terminal connecté à mon PC ?" a été incorporée dans la version 1.00 en des endroits variés. v1.09 a 25 changements (et corrections d'erreurs) suggérés par Alessandro Rubini qui a passé en revu ce HOWTO. Pour la traduction en français, j'aimerais remercier Xavier Glattard, qui a entrepris le début de la traduction et que j'ai reprise en cours ; ainsi que Guillaume Allègre et Jean-Luc Cassel qui ont fait un énorme travail de relecture. Pour ma part (Julien Garnault) Je remercie Olivier Tharan qui a fait du très bon travail. Ce qui m'a permis de reprendre ce HOWTO sans trop de problemes. 1.2 Plans pour l'avenir : vous pouvez m'aider Veuillez me signaler toute erreur dans les faits, les opinions, la logique, l'orthographe, la grammaire, la clarté, les liens, etc. Mais d'abord, si la date est vieille de plus de quelques mois, vérifiez que vous avez la dernière version. Veuillez m'envoyer toutes les informations que vous pensez être pertinentes pour ce document. [ NdT : cela s'applique aussi pour la version française ! ] À partir de la version 1.00, j'ai tenté pour la première fois d'aider les gens à configurer des terminaux sans recourir à un manuel de terminal. Il en faudrait bien plus à cet égard. Une manière de résoudre ce problème serait que les fabricants de terminaux mettent leurs manuels sur Internet. Je vous suggère de les encourager à le faire. Fournir des informations sur la configuration de la plupart des terminaux dans ce HOWTO est une tâche décourageante. Il y a beaucoup de terminaux différents, mais il y a bien moins de modèles qu'il n'y en avait dans les années 1980, la tâche n'est donc pas totalement impossible à réaliser. Veuillez m'envoyer tous les manuels de terminaux que vous pourriez avoir en trop, surtout sur les terminaux fabriqués dans les dix dernières années (mais j'accepterai aussi les manuels plus anciens). De plus, vous pourriez écrire quelque chose sur un certain type de terminal pour l'annexe D : Notes par nom de marque. 1.3 Nouvelles versions de ce HOWTO Les nouvelles versions du HOWTO seront disponibles à la navigation Internet et au téléchargement sur les sites miroirs du LDP (Linux Documentation Project). Voyez http://metalab.unc.edu/LDP/mirrors.html pour avoir une liste de ces miroirs. Divers formats sont disponibles. Si vous voulez chercher rapidement la date de la dernière version, allez à http://metalab.unc.edu/LDP/HOWTO/Text-Terminal-HOWTO.html. (NdT : le miroir officiel en France est http://www.freenix.org/unix/linux/HOWTO/Text-Terminal-HOWTO.html.) 1.4 HOWTOs connexes * Le HOWTO Serial possède des informations sur les cartes série multiports utilisées à la fois pour les terminaux et les racks de modems. Il possède des informations techniques sur le port série, notamment pour le dépanner. * Le HOWTO Modem * Le HOWTO Serial-Programming * Le HOWTO Xterminal (non maintenu). Il se trouve à http://metalab.unc.edu/pub/Linux/docs/HOWTO/unmaintained/mini/Xter minal 1.5 Terminologie utilisée dans ce document Configuration veut dire la même chose que mise en place (NdT : j'ai utilisé le mot "configuration" tout au long du document). Alors que les commandes Linux possèdent des options (avec le symbole -), les options dans un sens plus vaste sont d'autres types de choix. L'installation au sens large comprend la configuration du matériel et du logiciel. Une affirmation que je pense être vraie (mais qui peut ne pas l'être) se termine par deux points d'interrogation : ?? Si vous êtes sûr de l'affirmation, dites-le moi. 1.6 Qu'est-ce qu'un terminal ? Un terminal consiste en un écran et un clavier qu'on utilise pour communiquer à distance avec un ordinateur (hôte). On l'utilise comme s'il s'agissait d'un ordinateur personnel mais le terminal est éloigné de l'ordinateur hôte (à l'autre bout de la pièce ou même à l'autre bout du monde). Les programmes s'exécutent sur l'ordinateur hôte mais les résultats s'affichent sur l'écran du terminal. Sa capacité de calcul est relativement faible (sinon ce serait un ordinateur et non un terminal). Cette capacité de calcul est en général limitée à la capacité d'afficher ce qu'on lui envoie (il est possible que ceci comprenne des graphiques plein écran) et la capacité d'envoyer à l'hôte ce qui est tapé au clavier. Dans les temps éloignés des gros ordinateurs, du milieu des années 1970 au milieu des années 1980, la plupart des gens utilisaient des terminaux pour communiquer avec les ordinateurs. Ils y tapaient des programmes, les faisaient tourner, écrivaient des documents, envoyaient des commandes d'impression, etc. Un câble reliait le terminal à l'ordinateur (souvent de manière indirecte). On l'appelait terminal puisqu'il était situé à une extrémité terminale de ce câble. Si vous utilisez Linux (sauf pour une utilisation avec X Window) avec un moniteur et un clavier vous savez déjà ce qu'est un terminal parce que vous en utilisez un (ou plus précisément un "terminal virtuel"). Le moniteur (avec le clavier) s'appelle console, mais il émule un terminal. Dans X Window : xterm, rxvt et zterm émulent des terminaux. Un vrai terminal est différent d'un moniteur parce que c'est un montage électronique différent. Un terminal texte est souvent relié au port série de l'ordinateur par l'intermédiaire d'un long câble. Ainsi, contrairement à un moniteur qui est le plus souvent situé juste à côté de l'ordinateur, un terminal peut se situer à une distance assez grande de son ordinateur hôte. La carte vidéo à l'intérieur d'un ordinateur stocke l'image vidéo qui apparaît sur l'écran du moniteur. Pour un terminal, l'équivalent de cette carte vidéo est construite à l'intérieur même du terminal mais puisque les terminaux texte sont souvent monochromes sans beaucoup de graphiques, les capacités de cette "carte vidéo" sont plutôt faibles. De plus, la plupart des terminaux texte n'ont pas de souris. Dans la terminologie client-serveur en réseau, on pourrait penser que le terminal est le client et l'ordinateur hôte le serveur. Certains ont appelé le terminal un "client léger". Mais ce n'est pas vraiment un "client" et l'hôte n'est pas vraiment un "serveur". Le seul "service" fourni par l'hôte est de recevoir chaque lettre tapée au clavier et de réagir à ceci comme un ordinateur le ferait. Le terminal ressemble à une fenêtre donnant sur l'ordinateur comme l'est un moniteur (et son clavier). Vous avez sûrement déjà utilisé des terminaux virtuels dans Linux (en pressant Alt(gauche)-F2, etc.). Un vrai terminal est la même chose que lancer un terminal virtuel mais vous le lancez sur l'écran du terminal plutôt que de partager le moniteur. Par rapport à l'utilisation d'un terminal virtuel sur la console (moniteur), ceci permet à une autre personne de s'asseoir devant le terminal réel et d'utiliser l'ordinateur en même temps que d'autres personnes. 2. Types de terminaux 2.1 Terminaux passifs Il y a plusieurs définitions contradictoires pour un "terminal passif" mais à mesure que le temps passe, de plus en plus de terminaux sont appelés passifs. Ce document couvre principalement les terminaux texte qui n'affichent que du texte à l'écran. On pourrait l'appeler "HOWTO Terminaux Passifs" mais dans certains articles de magazine, tout terminal, quelle que soit son intelligence, même ceux qui présentent une interface graphique complète (GUI), sont appelés passifs. Si tous les terminaux sont "passifs" il n'y a plus de raison d'ajouter le mot "passif" derrière le mot terminal (sauf dans un baratin commercial pour vendre des ordinateurs ou similaires en tant que terminaux "intelligents"). À cause de la signification ambiguë de "terminal passif", ce n'est pas considéré ici comme un type de terminal. 2.2 Terminaux texte Pour un terminal texte, un flux d'informations à double sens entre l'ordinateur et le terminal se forme sur le câble les reliant tous les deux. Ce flux est constitué d'octets ASCII où chaque octet représente généralement un caractère. Les octets tapés au clavier vont vers l'ordinateur et la plupart des octets venant de l'ordinateur sont affichés sur l'écran du terminal. Des octets spéciaux (ou des séquences d'octets) de l'ordinateur indiquent au terminal où déplacer le curseur, ce qu'il faut effacer, où démarrer et arrêter le soulignement et/ou le clignotement et/ou le gras, etc. Il y a souvent des centaines de commandes spéciales et beaucoup de terminaux peuvent même changer leur police. La communication utilise des caractères (lettres) encodées avec un tableau de codes correspondant au jeu de caractères en cours d'utilisation. En général, les 128 premiers octets sur les 256 octets possibles utilisent les codes ASCII. Les terminaux pour des systèmes de type Unix sont normalement connectés aux ordinateurs par un câble qui se déroule entre les ports série asynchrones (RS-232-C = EIA-232-D) de l'ordinateur hôte et du terminal. Quelquefois la connexion se fait par modem ou grâce à un serveur de terminaux, etc. D'autres noms pour les terminaux texte sont "terminal série", "terminal à cellule de caractère", "terminal ASCII/ANSI", "terminal asynchrone", "terminal de données", "terminal vidéo" et "terminal d'affichage vidéo" (VDT). Dans les jours anciens, "unité d'affichage vidéo" (VDU) était utilisé pour les terminaux mais en toute rigueur, ceci exclut le clavier. Le "mode par blocs" était exclusivement utilisé par les vieux terminaux des minis IBM mais beaucoup de terminaux modernes possèdent aussi cette capacité (qui n'est pas beaucoup utilisée). Les caractères que vous tapez sont retenus temporairement dans la mémoire du terminal (et peuvent parfois être édités grâce à un éditeur résidant dans le terminal). Alors quand la touche envoi (ou autre) est pressée, un bloc de caractères (parfois juste une ligne de caractères) est envoyé tout d'un coup à l'ordinateur. Le mode par blocs (à la fin 1998) n'est pas supporté par Linux. Voyez la section mode par blocs. 2.3 Terminaux graphiques Jusqu'à un certain degré certains symboles ASCII peuvent fournir du graphisme aux terminaux texte. On peut faire des flèches <--- et dessiner des boîtes avec _ et |. Avec des ensembles spéciaux de caractères graphiques, on peut en faire encore plus. Aucun de ceux-ci ne sont vraiment des terminaux graphiques. Cependant, le terme "terminal graphique" est quelquefois donné à tous les terminaux texte puisque le texte est une forme limitée de graphique. Il y a deux types de base pour l'affichage graphique : rastérisé et vectorisé (rarement utilisé). Les graphiques rastérisés (en mode point par point) affichent des points sur l'écran sur des lignes de balayage horizontal par l'intermédiaire d'un faisceau d'électrons (ou en activant des pixels ou points sur un écran plat). Les affichages à graphisme vectoriel sont généralement destinés à des écrans monochromes qui n'ont pas de points. Ils utilisent une électronique intelligente pour tracer des lignes et des courbes avec un faisceau d'électrons qui peut se déplacer dans n'importe quelle direction (à tout endroit et avec tout angle). Les graphiques vectoriels affichent des lignes de grande qualité sans zigzags mais sont à la fois rares et chers. Les graphiques rastérisés sont utilisés de manière quasi-universelle de nos jours. Pour les PC, les images codées en format graphique vectoriel sont quelquefois utilisées mais sont traduites en format graphique rastérisé pour l'affichage (avec une baisse de qualité pour l'image). Terminaux graphiques sur ligne série La plus grande partie de ce document s'applique aussi à ceux-ci. La plupart de ceux-ci peuvent aussi fonctionner comme des terminaux texte. Les protocoles pour de tels terminaux graphiques sont : Tektronix Vector Graphics, ReGIS (DEC), Sixel (DEC) et NAPLPS (North American Presentation Level Protocol Syntax, syntaxe de protocole au niveau présentation d'Amérique du Nord). Terminaux graphiques rapides (d'autres noms leur sont souvent donnés) Ceux-ci ne sont pas couverts par ce document. Un terminal qui mérite qu'on l'appelle intelligent est un terminal graphique qui peut afficher rapidement des graphiques plein écran comme un moniteur de PC. Il aura aussi une souris. Les octets qu'on lui envoie représentent souvent des bits pour des images (et souvent des graphiques). Il utilisera souvent une connexion à grande vitesse vers son ordinateur hôte en utilisant de la paire torsadée ou un câble coaxial. Les terminaux X Window font partie de ces modèles. Voyez le lien vers le HOWTO XTerminal référencé en HOWTOs connexes Pour afficher une interface graphique MS-Windows il y a plusieurs types d'interfaces et de terminaux : WinTerm en est un, il utilise le logiciel WinFrame de Citrix. Un autre est Hydra de Microsoft (nom de code), basé en partie sur le code de Citrix, aussi connu comme "Serveur de Terminal Windows" qui fonctionne avec la version 4 ou supérieure de Windows NT. Citrix utilise son protocole ICA et a créé un supplément à Hydra nommé pICAsso pour que les terminaux WinFrame (ICA) puissent utiliser le système ICA. Hydra est aussi multi-utilisateurs. Il y a aussi le "Terminal Personnel Multiconsole" de Unbounded Technologies et Tektronix possédait son interface multi-utilisateurs mais supportera désormais Hydra. Un article de magazine en 1997 a appelé Winterm un "terminal passif" mais il est vraiment intelligent. De tels terminaux sont souvent appelés "clients légers", mais certains clients légers sont plus que de simples terminaux puisqu'on peut leur faire exécuter du code Java, etc. 2.4 Network Computers (NC, ordinateurs de réseau) Ce ne sont ni de vrais ordinateurs ni de vrais terminaux mais quelque chose entre les deux. Un type de Network Computers (NC) est un ordinateur avec un processeur mais pas de disque dur. Il est entièrement graphique et se connecte à un ordinateur serveur. Il est différent d'un terminal puisque le programme qu'il fait tourner s'exécute sur son propre processeur. Du code Java peut lui être envoyé pour être exécuté. IBM appelle ceci une "station réseau" (Network Station). Ils devraient fonctionner sur des réseaux IP et pourraient fonctionner avec un serveur sous Linux. Wintel a fabriqué un "NetPC" qui, à la différence du NC, est presque un ordinateur PC. Cependant, il n'a pas de disque amovible et les utilisateurs ne peuvent pas installer leur propre logiciel ou obtenir des copies de quoi que ce soit. Bien que les promoteurs des NCs et des terminaux graphiques similaires aient prévu de remplacer des millions de PCs, cela n'est pas encore arrivé. L'une des raisons principales est que les PCs ont vu leurs prix chuter dans les dernières années et sont souvent moins chers que les NCs. Ainsi pour les terminaux, les terminaux texte sont encore prédominants. 2.5 Émulation sur un PC Puisqu'un PC possède un écran et un clavier (comme un terminal) mais possède aussi plus de puissance de calcul, il est facile d'utiliser une partie de cette puissance de calcul pour que le PC se comporte comme un terminal texte. C'est ce que l'on appelle "l'émulation de terminal". Ils émulent en général des terminaux texte. Voyez émulation de terminal 3. Installation rapide Voici une procédure rapide pour installer un terminal sans passer par une procédure de mise en place à la fois pour le terminal et l'ordinateur hôte. Cela ne fonctionnera probablement pas bien s'il se trouve que le terminal a été configuré de manière incompatible avec l'ordinateur. Si vous ne comprenez pas tout ceci vous devrez consulter d'autres parties de ce document pour plus d'informations. Pour installer un terminal, regardez d'abord dans /etc/termcap ou terminfo.src pour y trouver une entrée le concernant (voir terminfo et termcap (détaillé)). Déterminez sur quel port série vous le brancherez et quelle est le nom tty pour ce port (par exemple, ttyS1, voyez noms de périphériques). En tant qu'utilisateur root, éditez /etc/inittab et ajoutez une commande getty à côté des autres commandes getty. Le format de la commande getty dépend du programme getty que vous utilisez. agetty (simplement appelé getty dans la distribution Debian) est le plus simple (pas de fichier de configuration). Voyez le fichier "info" ou la page de manuel de getty. Pour les paramètres de getty, utilisez le nom terminfo (ou termcap) de votre terminal, comme vt100. Entrez une vitesse de transmission supportée par le terminal. Si vous mettez la vitesse trop haut vous aurez peut-être besoin d'utiliser le contrôle de flux. Connectez alors physiquement le port série principal du terminal au port série choisi de l'ordinateur avec un câble null-modem et allumez le terminal. N'espérez pas que la plupart des câbles tout prêts soient câblés correctement pour gérer le contrôle de flux matériel. Assurez-vous que la vitesse de transmission du terminal est la même que celle que vous avez donnée à getty et que son paramètre "bits de données" est 8. Alors, sur la console de l'ordinateur tapez "init q" pour faire prendre en compte les changements que vous avez faits au fichier inittab. Vous devriez maintenant voir une invite de login sur le terminal. Sinon, appuyez sur la touche retour chariot du terminal. Si cela ne fonctionne pas, continuez de lire ce document et/ou voyez régler les problèmes. 4. Pourquoi utiliser un terminal ? 4.1 Introduction sur le fait d'utiliser un terminal Les PC sont de nos jours si puissants qu'un seul PC peut souvent supporter plusieurs personnes à la fois en train de l'utiliser, surtout s'ils exécutent des tâches faibles en charge telles que l'édition de texte, l'entrée de données, etc. Une manière de faire ceci est de relier un certain nombre de terminaux à un seul PC (ordinateur hôte) par l'intermédiaire de modems ou de connexions directes par câble. Pour ce faire, il est mieux d'avoir un système d'exploitation multi-utilisateurs tel que Linux, comma ca chaque utilisateur sur un terminal peut utiliser l'ordinateur independemment. On a appelé cela le "partage de temps" (time sharing) mais ce n'est pas une terminologie correcte de nos jours puisque l'informatique "distribuée" sur un réseau est aussi une sorte de partage de temps. On pourrait mieux le décrire comme de l'informatique "centralisée". Mais l'ordinateur central peut être connecté au reste du monde par un réseau afin que les utilisateurs des terminaux puissent envoyer du courrier électronique, naviguer sur Internet avec le navigateur "lynx", etc. Ce n'est donc pas vraiment "centralisé" non plus. On a rarement utilisé des terminaux avec des PC parce que les systèmes d'exploitation populaires qui les ont utilisés (Windows, DOS et Mac) n'ont pas été multi-utilisateurs jusqu'en 1998 (c'est le cas pour MS Windows NT) et ne pouvaient pas auparavant tres bien accepter de terminaux. Maintenant que Linux, système d'exploitation multi-utilisateurs, est disponible pour les PC, l'utilisation de terminaux avec des PC devient envisageable. L'inconvénient est que les terminaux texte ne sont pas assez perfectionnés pour supporter le type d'interface graphique utilisateur (GUI) que bien des utilisateurs d'ordinateur attendent de nos jours. 4.2 Une réduction du coût du matériel ? Quand les ordinateurs (même les PCs) étaient relativement chers, l'utilisation de terminaux tirait les coûts du matériel vers le bas de manière significative. Maintenant, avec les PCs bon marché, les économies sur les coûts sont un problème. Voici ce que j'ai écrit il y a des années quand les PCs étaient plus chers. C'est encore vrai maintenant, mais d'une moindre mesure. Si plusieurs personnes utilisent le même ordinateur en même temps, il y a une diminution de la quantité de matériel nécessaire pour le même niveau de service. Une façon de faire des économies est due au partage du code. Les fichiers des applications sur les disques durs sont partagés, de même que les bibliothèques partagées en mémoire (même si les gens font tourner des programmes différents, à condition qu'ils utilisent certaines fonctions identiques dans leur code). Une autre façon d'économiser est due à la réduction du pic de charge. Le matériel d'un seul PC peut être inactif la plupart du temps pendant que les gens entrent les informations lentement, réfléchissent, discutent ou s'éloignent de leur bureau. Avoir plusieurs personnes sur le même ordinateur à la fois fait bon usage d'une bonne partie de ce temps d'inactivité qui, sinon, serait gâché. Ces économies sont substantielles. On peut estimer grossièrement (en utilisant la théorie des statistiques) que pour neuf personnes (huit terminaux et une console), le PC partagé n'a besoin que d'environ trois fois plus de capacité (en mémoire, espace disque, puissance processeur, etc.) qu'un PC unique afin de fournir le même niveau de service par personne. Le coût par utilisateur du matériel de calcul pour un tel système partagé devrait donc être trois fois moindre. Cependant, le coût du système d'affichage (écrans, claviers, électronique vidéo, etc.) est à peu près le même dans les deux cas. Les terminaux induisent cependant un surcoût : l'équipement de l'ordinateur hôte avec des ports série supplémentaires. Pour faire une comparaison honnête avec les PC, les terminaux devraient avoir les mêmes capacités que les moniteurs de PC. Malheureusement, les terminaux graphiques couleur pour Linux (X Window) avec des communications à grande vitesse est un marché de niche avec des prix élevés, et par conséquent dans ce cas les économies en coût de matériel risquent d'être inexistantes. Pour les terminaux texte, par contre, on fera des économies, surtout si on obtient les terminaux à bas prix. 4.3 Contrôle des logiciels En informatique centralisée, les logiciels (et les mises à jour des logiciels) ne doivent être installés que sur un seul ordinateur hôte au lieu de plusieurs. La personne qui s'occupe de cet ordinateur peut contrôler les logiciels qui y sont installés. Ceci est avantageux si la personne qui contrôle l'ordinateur hôte fait du bon travail et connaît les besoins et préférences des autres utilisateurs. On peut empêcher les utilisateurs de jouer à des jeux ou de naviguer sur Internet en n'installant pas les logiciels (ou bien en en restreignant l'accès). Que le contrôle centralisé soit désirable ou non dépend de chaque situation. 4.4 Mises à jour du matériel Avec les terminaux, les mises à jour du matériel de l'ordinateur ne prennent place que sur un ordinateur au lieu de plusieurs. Ceci économise un effort d'installation. Alors que le coût du matériel pour la mise à jour de l'ordinateur hôte sera plus important que pour un PC simple (puisque l'hôte a besoin de plus de puissance de calcul qu'un PC), le coût sera bien moindre que de mettre à jour le materiel d'un nombre de PC qu'on utiliserait à la place des terminaux. 4.5 Autres avantages des terminaux * L'élimination du bruit des ventilateurs et des disques durs, à condition que les terminaux ne soient pas proches de l'ordinateur. * Les utilisateurs des terminaux peuvent partager des données et des fichiers et peuvent s'envoyer du courrier électronique. C'est la même chose qu'un réseau local. 4.6 Désavantages majeurs des terminaux * Les terminaux texte ne disposent pas d'affichage graphique rapide (ou de graphiques haute résolution) bien qu'ils utilisent souvent des jeux de caractères graphiques pour dessiner des boîtes, etc. Ce manque limite les logiciels qu'on peut utiliser dessus. * Si l'ordinateur hôte s'arrête, plus personne ne peut utiliser les terminaux non plus (sauf si on peut se connecter sur un ordinateur hôte qui attend cela). 4.7 Les terminaux texte sont-ils obsolètes ? Les terminaux texte représentent une technologie obsolète parce que pour un matériel légèrement plus cher, on pourrait construire un terminal intelligent (avec la même qualité d'affichage). Ceci n'a pas toujours été le cas puisque aux alentours de 1980 la mémoire coûtait des milliers de francs par méga-octet. Maintenant avec de la mémoire et des processeurs à bas prix, on pourrait faire un terminal texte intelligent pour une augmentation du coût du matériel de seulement 10 à 20 %. Les raisons pour lesquelles les terminaux texte ne sont pas encore obsolètes sont : * Il n'y a pas d'interface normalisée satisfaisante pour des terminaux graphiques intelligents. Le système MS Hydra fonctionne avec Windows NT, alors que X Window n'est pas aussi efficace qu'il devrait être (et les terminaux X Window sont trop chers). * Beaucoup de gens n'ont pas besoin de graphiques plein écran. * Les terminaux texte sont peu coûteux et mettent en théorie plus de temps à devenir obsolètes, mais peuvent cependant donner accès à un ordinateur bien plus récent (et plus puissant). * Puisque le fonctionnement d'un terminal texte (en opposition à un terminal entièrement graphique) ne consomme pas beaucoup de ressources sur un PC moderne, on peut faire tourner beaucoup de terminaux sur un seul PC de manière efficace. 5. Vue d'ensemble du fonctionnement des terminaux (sous Linux) Voir aussi la section quelques détails sur le fonctionnement des terminaux. 5.1 Noms de périphériques Chaque terminal est relié à un port série sur l'ordinateur hôte (souvent un simple PC). Les ports ont les noms suivants : ttyS0, ttyS1, ttyS2, etc. Ils sont représentés par des fichiers spéciaux dans le répertoire /dev (device : périphérique). /dev/ttyS0 correspond au COM1 sous DOS ou Windows. ttyS1 est le COM2, etc. Voyez fichiers spéciaux pour les terminaux pour plus de détails sur ceux-ci et les "périphériques" connexes tels que cua. 5.2 Se logger / se délogger Quand l'ordinateur hôte démarre il lance le programme getty (voyez le HOWTO Serial 4.1 et 7.2) sur chaque port série qui y possède un terminal (ainsi qu'il est spécifié dans le fichier /etc/inittab). Le programme getty lance le programme "login" pour que les gens puissent se logger. Une invite "login:" apparaît à l'écran. Les gens sur le terminal se loggent (après avoir donné leur mot de passe) et ont alors accès à l'ordinateur. Quand il est temps d'éteindre le terminal, on se délogge en général et on éteint le terminal. Voyez restrictions sur le login à propos de la restriction sur les logins (avec la permission pour l'utilisateur root de se logger sur un terminal). 5.3 Half/Full Duplex Si on regarde quelqu'un taper sur un terminal, les lettres tapées apparaissent simultanément sur l'écran. Une personne naïve pourrait penser que ce qu'on tape est envoyé directement du clavier à l'écran avec une copie dirigée vers l'ordinateur (de manière half-duplex, voir le paragraphe suivant). Ce qui se passe généralement est que ce qui est tapé au clavier est envoyé directement à l'ordinateur hôte uniquement qui en retour renvoie au terminal chaque caractère qu'il reçoit (ce qu'on appelle full-duplex). Dans certains cas (comme les mots de passe ou des commandes brutes d'éditeurs) les lettres tapées ne sont pas renvoyées. Full-duplex veut dire qu'il y a deux liens de communications unidirectionnels. Le full-duplex est la norme de fait sur les terminaux. Le half-duplex est la moitié d'un duplex, ce qui veut dire qu'il n'y a qu'un lien de communication unidirectionnel. Ce lien doit être partagé par les communications allant dans les deux directions et on ne peut utiliser qu'une direction à la fois. Dans ce cas l'ordinateur n'est pas en mesure de répéter les caractères que vous tapez (et que vous lui envoyez) et par conséquent le terminal doit aussi envoyer directement sur son écran chaque caractère que vous tapez. Certains terminaux possèdent un mode de fonctionnement half-duplex qui est rarement utilisé. 5.4 Mémoire du terminal L'image sur un tube à électrons s'évanouira presque instantanément à moins qu'elle ne soit réaffichée fréquemment sur l'écran par un faisceau d'électrons lancés sur la face du tube. Puisque que le texte envoyé à un terminal doit rester sur l'écran, l'image de l'écran doit être stockée dans les puces mémoire du terminal et le faisceau d'électrons doit balayer l'écran de façon répétée (disons 60 fois par seconde) pour maintenir l'image. Voyez mémoire du terminal pour plus de détails. 5.5 Commandes pour le terminal Le terminal est sous le contrôle de l'ordinateur. L'ordinateur envoie au terminal non seulement du texte pour afficher ce dernier sur l'écran mais aussi des commandes que le terminal exécute. Ce sont des codes de contrôle (octets) et des séquences d'échappement. Par exemple, le code de contrôle CR (retour chariot) déplace le curseur sur le côté gauche de l'écran. Une certaine séquence d'échappement (plusieurs octets dans lesquels le premier octet est le code de contrôle d'"échappement") peut déplacer le curseur à l'emplacement de l'écran spécifié par les paramètres placés dans la séquence d'échappement. Les premiers terminaux n'avaient que peu de telles commandes mais les terminaux modernes en ont des centaines. L'apparence de l'affichage peut être modifiée à certains endroits : fort, faible, souligné, clignotant et vidéo inverse. Un haut-parleur dans un terminal peut émettre un "cliquetis" quand une touche est pressée ou émettre un bip si une erreur s'est produite. Les touches de fonctions peuvent être programmées pour des utilisations spéciales. Des polices variées peuvent exister. On peut faire défiler l'affichage vers le haut ou vers le bas. On peut effacer des parties spécifiques de l'affichage. On peut utiliser divers types de contrôle de flux pour arrêter le flux de données quand les octets sont envoyés au terminal plus rapidement que le terminal ne peut le supporter. Il y en a bien plus, que vous découvrirez en parcourant une notice de terminal très technique ou à travers les liens Internet de la liste des séquences d'échappement. 5.6 Manque de normalisation résolu par Terminfo Alors que les terminaux faits pour les États-Unis utilisaient tous le même code ASCII pour l'alphabet (sauf les terminaux IBM qui utilisaient EBCDIC), il n'utilisaient malheureusement pas tous les mêmes séquences d'échappement. Ceci s'est produit même après que plusieurs normes ANSI (et ISO) aient été établies puisque ces normes n'ont jamais été suffisamment matures. De plus, les vieux terminaux n'avaient pas les possibilités des nouveaux terminaux. Ceci pouvait poser des problèmes. Par exemple, l'ordinateur pouvait envoyer une séquence d'échappement à un terminal lui disant de séparer l'écran en deux fenêtres de taille spécifiée, sans réaliser que le terminal était incapable de le faire. Pour surmonter ces problèmes une base de données appelée "termcap" (maintenant "terminfo") a été mise en place. Cette base de données réside dans certains fichiers sur l'ordinateur et en une partie (quelquefois le fichier entier) pour chaque modèle de terminal. Pour chaque modèle (comme le VT100) une liste des capacités est fournie, avec une liste de certaines séquences d'échappement disponibles et ce qu'elles font. Par exemple blink=\E5m veut dire que pour faire clignoter le curseur, il faut envoyer au terminal : Escape 5 m. Voyez la section termcap et terminfo (détaillés) pour plus de détails. Les applications peuvent utiliser cette base de données en appelant certaines fonctions de la bibliothèque C. Un grand ensemble de tels programmes (il y en a plus de 200) est appelé "ncurses" et ils sont listés sur la page de manuel de "ncurses". 5.7 L'interface La variable d'environnement TERM décrit le type de terminal que Linux croit que vous utilisez. Certaines applications l'utilisent pour regarder les capacités dans la base de données terminfo et par conséquent TERM doit être positionnée correctement. Mais que l'ordinateur connaisse les capacités du terminal n'est qu'une partie du chemin vers une interface correcte. Pour que les octets affluent de l'ordinateur vers le terminal, le terminal doit être configuré pour recevoir les octets à la même vitesse (en bits par seconde) qu'ils sont envoyés du terminal. Si on configure le terminal pour recevoir à 19200 bauds et que l'ordinateur envoie des caractères à 9600 bauds, on ne verra à l'écran que des parasites (ou peut-être rien du tout). On sélectionne la vitesse de transmission pour un terminal (ainsi que bien d'autres possibilités) à partir des menus de "configuration" (set-up) sur le terminal. La plupart des terminaux possèdent un grand nombre d'options dans leurs menus de "configuration" (voyez configuration du terminal (détaillée)). Le port série de l'ordinateur a aussi des options et ces options doivent être configurées d'une manière compatible (voyez configuration de l'ordinateur (détaillée)). 5.8 Émulation La plupart des terminaux de nos jours possèdent plus d'une émulation (personnalité ou "mode de terminal"). Les numéros de modèles des terminaux fabriqués autrefois par DEC (Digital Equipment Corporation, maintenant Compaq) commencent par VT (par exemple, VT100). Bien d'autres terminaux différents des VT100 peuvent être configurés pour émuler un VT100. Wyse est un grand fabricant de terminaux et la plupart de leurs terminaux peuvent émuler des terminaux DEC divers comme les VT100 et les VT220. Par conséquent si vous voulez, disons, utiliser un terminal VT320 vous pouvez soit utiliser un vrai VT320 en personnalité "naturelle" soit utiliser un autre terminal capable d'émuler un VT320. Les personnalités "naturelles" ont en général plus de capacités donc, toutes choses étant égales par ailleurs, c'est la meilleure option à utiliser. Le type d'émulation le plus courant est d'utiliser un PC comme si c'était un terminal vt100 (ou identique). Les programmes chargés dans la mémoire du PC permettent ceci. Dans Linux (sauf si vous êtes dans X Window) le moniteur du PC (appelé la console) émule un terminal de type "Linux" (proche du vt100). Même certaines fenêtres dans X Window émulent des terminaux. Voyez émulation de terminal. 5.9 La console Sur un PC, le moniteur est appelé la console. Elle émule un terminal de type "Linux". On se logge dessus via un terminal virtuel. Voyez la console : /dev/tty?. Elle reçoit des messages du noyau concernant la progression du démarrage (boot) et de l'arrêt de la machine. On peut faire en sorte que les messages allant normalement sur la console aillent sur le terminal. Pour ceci, vous devez patcher et recompiler le noyau à la main, sauf pour les noyaux 2.2 (et plus) pour lesquels il s'agit d'une option de configuration. Voyez faire qu'un terminal devienne la console. 6. Fichiers spéciaux pour les terminaux tels que /dev/tty "tty" est l'abréviation de "Teletype". Les premiers terminaux étaient des télétypes (comme machine à écrire pilotée à distance). Voyez la sous-section télétypes. On trouve une liste des périphériques Linux (ce qui se trouve dans le répertoire /dev) dans "Linux Allocated Devices" (en français "Périphériques référencés sous Linux"), normalement inclus dans les sources du noyau. Il "décrit" à quoi sert un périphérique en un mot ou deux mais ne vous dit pas comment l'utiliser. 6.1 Terminaux sur port série L'ordinateur considère chaque port série comme un "périphérique". On l'appelle parfois périphérique terminal puisqu'à un moment les terminaux représentaient une utilisation courante des ports série. Pour chacun de ces ports série, il existe un fichier spécial dans le répertoire /dev (device : périphérique). /dev/ttyS0 est le fichier spécial pour le port série connu sous le nom COM1 dans le monde DOS/Windows. Pour envoyer du texte à un terminal vous pouvez rediriger la sortie standard de certains programmes en ligne de commande vers le fichier spécial approprié. Par exemple en tapant "echo test > /dev/ttyS1" à l'invite de commandes, le mot "test" devrait être envoyé sur le terminal sur ttyS1 (COM2) à condition que vous ayez la permission d'écrire sur /dev/ttyS1. De même, taper "cat mon_fichier > /dev/ttyS0" enverra le contenu du fichier mon_fichier sur COM1 (ttyS0). En plus de ttyS0 (/dev/ttyS0), ttyS1, ttyS2, etc. (le "S" veut dire port Série) il y a aussi une série de "cua" : cua0, cua1, cua2, etc. cua0 correspond au même port que ttyS0, etc. Le "cu" dans cua veut dire CalloUt (appel sortant). Les séries ttyS sont conformes à Posix alors que l'utilisation de cua peut permettre l'ouverture d'un port dont les lignes de contrôles du modem affirment qu'il n'est pas prêt. À partir du noyau 2.2 cua est obsolète et un message d'avertissement est affiché quand vous essayez de l'utiliser (bien qu'il fonctionne encore). Pendant les dernières années, il n'était présent dans Linux que pour assurer une compatibilité ascendante. Un programmeur peut faire en sorte que ttyS se comporte comme cua, et donc cua n'est pas vraiment utile. 6.2 Pseudo-terminaux Les pseudo-terminaux n'ont pas de connecteur physique sur l'ordinateur. On les utilise pour émuler un port série. Ils n'ont pas d'adresses E/S (IO) ni d'IRQ. Par exemple, si quelqu'un se connecte grâce à telnet sur votre ordinateur à travers un réseau, il peut se trouver connecté au périphérique /dev/ptyp2 (un port de pseudo-terminal). Dans X Window, le programme d'émulation de terminal, xterm (ou rxvt), utilise des pseudo-terminaux. Les programmes pour les radioamateurs sous Linux les utilisent aussi. Avec certaines applications, il est possible d'attacher deux ou plus de deux pseudo-terminaux sur le même port série physique. Les pseudo-terminaux vont par deux comme ttyp3 et ptyp3. La série pty... est le terminal maître ou contrôleur et la série tty... est l'esclave. ttyq5 est aussi un pseudo-terminal comme l'est ttysc (``c'' est un chiffre hexadécimal). Plus précisément, les pseudo-terminaux maîtres sont /dev/pty[p-s]N et les esclaves correspondants sont /dev/tty[p-s]N où N est un chiffre hexadécimal entre 0 et f. L'esclave /dev/ttyp agit comme un port série pour une application, elle peut y lire et y écrire. Cependant, l'application communique vraiment avec quelque soit le programme qui ecrit et lit au maitre /dev/pty correspondant. Aussi le maitre et l'esclave sont vraiment le meme "port" mais un est utilisé par l'application et l'autre par un programme réseau (ou l'équivalent) qui envoit (et récupère) des données au (et du) "port". La norme Unix98 n'utilise pas les conventions ci-dessus, mais utilise à la place un "pty maître" qui est /dev/ptmx. Celui-ci peut fournir un pty à la demande. Les détails sur l'utilisation des pseudo-terminaux avec d'autres programmes programmes se trouvent dans quelques pages de manuels, mais un manuel dédié seulement aux pseudo-terminaux est nécéssaire pour Linux. D'autres unix-like ont une telle page nommée "pty - pseudo terminal driver". 6.3 Le terminal contrôlant /dev/tty /dev/tty est le terminal contrôlant (s'il y en a un) le processus en cours. Pour déterminer uels ttys sont attachés à quels processus, utilisez la commande "ps -a" à l'invite de commandes (la ligne de commandes). Regardez la colonne "tty". Pour le processus shell que vous utilisez, /dev/tty est le terminal que vous utilisez à l'instant. Tapez "tty" à l'invite de commandes pour voir lequel c'est (voyez la page de manuel tty(1)). /dev/tty est quelque chose semblable à un lien vers le nom de périphérique du terminal en cours avec certaines possibilités supplémentaires pour les programmeurs en C : voyez la page de manuel tty(4). 6.4 "Terminaux" /dev/ttyIN N représente un entier. L'une des utilisations possibles de ces terminaux dans Linux est le paquet du pilote ISDN (RNIS) : isdn4linux. La série ttyIN ressemble à ttySN. Il y a aussi une série cuiN qui ressemble à cuaN. Les séries ttyI et cui émulent des modems et on peut leur envoyer des commandes de modems. 6.5 La console : /dev/ttyN Dans Linux le moniteur du PC est en général appelé la console et on lui associe plusieurs fichiers spéciaux de périphériques : tty0, tty1, tty2, etc. Quand vous vous loggez vous êtes sur le tty1. Pour aller sur le tty2(sur le meme ecran) appuyez sur Alt-F2, pour tty3 appuyez sur Alt(Gauche)-F3. Ces (tty1, tty2, tty3, etc.) sont appellés "terminaux virtuels". tty0 est juste un alias pour le terminal virtuel courant et c'est celui ou sont envoyés les messages du système. Aussi, les messages seront affichés sur la console (moniteur) sans se coucier de quel terminal virtuel est affiché. Vous pouvez vous logger sur différents terminaux virtuels et ainsi avoir plusieurs sessions différentes tournant en même temps sur l'ordinateur. Seuls le système et l'utilisateur root peuvent écrire dans /dev/tty0 à laquelle /dev/console est quelquefois liée. Pour plus d'informations sur la console, voyez la console Linux. 6.6 Créer un périphérique avec "mknod" Le répertoire /dev est installé avec beaucoup de fichiers spéciaux de périphériques. Si vous avez besoin de quelque chose non présent dans ce répertoire, vous pouvez essayer de le créer avec la commande "mknod". Voyez la page de manuel de ttys(4) pour savoir comment le faire pour les ports série. Pour utiliser mknod vous devez connaître les numéros de périphériques mineur et majeur. Vous pourriez déduire les numéros dont vous avez besoin en utilisant la commande "ls -l" dans le répertoire /dev. Elle affichera les numéros majeur et mineur des fichiers spéciaux existants. 7. Quelques détails sur le fonctionnement des terminaux Si vous ne connaissez presque rien sur les terminaux, je vous suggère de lire en premier introduction et de lire aussi survol du fonctionnement des terminaux. 7.1 Mémoire du terminal L'écran du terminal se rafraîchit peut-être 60 fois par seconde à partir d'une image stockée dans la mémoire du terminal. Pour un PC l'image du moniteur est stockée dans la mémoire de la carte vidéo à l'intérieur de l'ordinateur mais pour un terminal, l'équivalent de la carte vidéo est à l'intérieur du terminal. Pour un terminal texte le stockage d'une image utilise peu de mémoire. Au lieu de placer chaque point (pixel) sur l'écran en mémoire, ce qui demande le stockage d'à peu près 250.000 points, on utilise une méthode de stockage bien plus efficace. Un écran rempli de texte peut être représenté dans la mémoire du terminal par des octets ASCII, un pour chaque caractère à l'écran. Un écran entier ne prend qu'environ 2 K octets ASCII. Pour afficher ces caractères, le terminal doit aussi connaître l'image (la forme) de chacun des presque 100 caractères ASCII imprimables. L'image d'un caractère n'occupant que, disons, 15 octets, on n'a besoin que d'environ 1,5 K de mémoire pour les images de tous les caractères ASCII (la police). Ce texte ASCII et la mémoire de la police sont balayés pour que l'image résultante soit affichée à l'écran environ 60 fois par seconde. C'est une forme de mémoire partagée où l'image unique d'une lettre telle que la lettre e est partagée par toutes les nombreuses lettres e qui apparaissent sur un écran rempli de texte. Une faible demande en mémoire impliquait des coûts réduits pour produire des moniteurs au début des années 1980 quand le coût de la mémoire était plusieurs milliers de fois plus important qu'il ne l'est actuellement (ce qui représentait à l'époque plusieurs dollars par kilo-octet). 7.2 Les premiers terminaux Les premiers terminaux ressemblaient à des machines à écrire contrôlées à distance qui ne pouvaient "afficher" (imprimer sur du papier) que le flux de caractères que leur envoyait l'ordinateur. Les premiers modèles étaient appelés télétypes. Le nom "tty" n'est que l'abréviation de "Teletype". Les premiers terminaux étaient capables de faire un saut de ligne et un retour chariot comme une machine à écrire et faire tinter une sonnette quand un caractère sonnette (bell) était reçu. À cause du manque de possibilités significatives, ce sont les premiers terminaux à avoir reçu l'appellation "simple" (dumb). Ce genre d'interface terminale (l'utilisation d'un type de terminal appelé "dumb") est quelque fois utilisé de nos jours quand l'ordinateur ne peut pas déterminer avec quelle sorte de terminal il communique. 7.3 Séquences d'échappement et codes de contrôle (introduction) Les terminaux possèdent beaucoup de possibilités dont certaines sont toujours présentes ; pour les autres, l'ordinateur doit envoyer des commandes au terminal afin de modifier ou activer ces possibilités. Mettre en oeuvre toutes ces possibilités sous le contrôle d'un ordinateur nécessite la mise en place de codes spéciaux pour que l'ordinateur puisse dire au terminal ce qu'il doit faire. Il y a deux grandes sortes de codes : les séquences d'échappement et les code de contrôle (caractères de contrôle). Il y a bien plus de séquences d'échappement que de codes de contrôle. Codes de contrôle Les codes de contrôle (ou caractères de contrôle) sont constitués des 32 premiers octets de l'alphabet ASCII. Ils comprennent les codes suivants : retour chariot (curseur à l'extrémité gauche), saut de ligne (curseur une ligne vers le bas), retour en arrière, caractère d'échappement, tabulation et sonnette. Ils ne s'impriment normalement pas sur l'écran. Il y a souvent une commande que vous pouvez envoyer à votre terminal qui fera qu'ils seront affichés quand le terminal les recevra. On l'appelle parfois "Contrôles d'affichage" ou "Moniteur". Si vous faites ceci, l'affichage aura l'air légèrement dans le désordre puisque les séquences d'échappement, qui commencent toutes par le caractère de contrôle ESC (escape, échappement), ne seront plus exécutées. Les mots qui devraient apparaître en haut ou en bas de l'écran apparaîtront à d'autres endroits. Les séquences d'échappement pour repositionner le curseur s'afficheront sur l'écran mais le curseur ne se déplacera pas vers la destination indiquée par la séquence d'échappement. Séquences d'échappement Puisque qu'il n'y pas assez de codes de contrôle pour tout faire (et pour une raison ou pour une autre, ils ne sont pas tous utilisés), on utilise de nombreuses séquences d'échappement. Elles sont constituées du caractère de contrôle d'échappement (ESC) suivi d'une séquence de caractères ordinaires. En recevant un caractère d'échappement, le terminal examine les caractères suivants pour interpréter la séquence et exécuter la commande voulue par l'ordinateur. Une fois que la fin d'une séquence valide est reconnue, les caractères suivants s'affichent simplement à l'écran (sauf s'il s'agit de codes de contrôle ou de séquences d'échappement supplémentaires). Certaines séquences d'échappement peuvent prendre des paramètres (ou arguments) comme les coordonnées écran pour déplacer le curseur. Les paramètres font partie de la séquence d'échappement. Une liste des séquences d'échappement se trouve sur le Web pour certains terminaux, mais c'est un peu brutal. Une liste des séquences d'échappement pour votre terminal devrait se trouver dans le "manuel du programmeur" de votre terminal. À part pour de très vieux terminaux, il devrait y avoir deux ou trois cents séquences. Si vous n'avez pas de manuel, ce n'est pas facile de les trouver. Certaines séquences sont disponibles sur Internet. Un lien possible est liste des séquences d'échappement. En cherchant une séquence sur Internet (comme ESC[5m) vous pouvez tomber sur une longue liste. Une autre façon de déterminer certaines séquences est de trouver la section termcap (terminfo) du terminal et de la décoder mentalement. Voyez terminfo et termcap (détails) dans ce document et/ou le manuel termcap sur Internet. Malheureusement, la section termcap (terminfo) d'un terminal ne liste souvent pas toutes les séquences d'échappement disponibles sur le terminal, mais heureusement, les plus importantes sont en général présentes. 7.4 Attributs d'affichage et cookies magiques Les terminaux possèdent diverses méthodes pour générer des attributs de caractères tels que gras, vidéo inverse, soulignement, etc. L'utilisateur ne devrait pas s'inquiéter de la manière dont c'est géré, sauf que cela peut poser des problèmes pour certains vieux terminaux et il y a quelquefois une option à ce sujet dans le menu de configuration des terminaux plus récents. La méthode des cookies magiques (magic cookie) est dépassée. C'est la méthode la plus simple (et la pire) pour définir des attributs : l'utilisation d'un octet particulier pour démarrer un attribut et un autre pour indiquer la fin de cet attribut. Par exemple, un octet magique "démarrer le soulignement" est placé juste devant le premier mot à souligner. Ces octets supplémentaires sont placés dans la mémoire de la page écran, comme les octets pour les caractères qui s'affichent normalement. Ceci peut cependant fausser le décompte du nombre de caractères par ligne puisque les caractères de cookies magiques non imprimables sont mélangés avec les autres caractères imprimables. Ceci peut dans certains cas poser des problèmes. Une méthode plus efficace, qui utilise plus de mémoire, est d'associer un caractère d'attribut (ou un demi-caractère, etc.) à chaque caractère affiché. Cette méthode est utilisée par les cartes vidéo PC (pour le texte) pour les moniteurs PC courants. 8. Possibilités spéciales de certains terminaux 8.1 Couleur Bien que le terminal monochrome courant ne soit pas un terminal couleur, il peut avoir un affichage en "couleur" fixe autre que blanc comme vert ou ambre. Tous les terminaux possèdent le noir (faisceau d'électrons éteint = luminosité nulle). Un véritable terminal couleur peut modifier la couleur du texte et du fond avec plusieurs couleurs différentes alors qu'un terminal monochrome ne peut modifier que la luminosité d'une couleur donnée. Cependant, changer la luminosité, etc. offre bien des possibilités. Par exemple, un terminal noir et blanc (monochrome) peut avoir du blanc, du gris et du noir en variant la luminosité. Certains mots peuvent être en noir sur un fond légèrement gris tandis que d'autres sont mis en valeur par du noir sur fond blanc. En plus il y a du blanc sur noir, du soulignement et du clignotement. La couleur fonctionne comme la couleur sur un moniteur d'ordinateur ou un écran de télévision. Le tube possède trois couleurs de points, chacune étant contrôlée par son propre faisceau d'électrons (il y a trois faisceaux). Le monochrome a par définition une meilleure résolution puisqu'il ne dépend pas de points fixés en permanence à l'écran. Pour les terminaux texte la seule utilisation de la couleur permet de différencier le texte et cet avantage ne vaut pas toujours le coût d'une résolution moins bonne. Le monochrome peut donc être meilleur puisqu'il est aussi moins cher. 8.2 Sessions multiples Pour les sessions doubles, le terminal possède deux ports série de statut égal. Chaque port est connecté au port série d'un ordinateur différent. Ainsi on peut se logger sur deux ordinateurs différents, chaque session s'affichant dans une fenêtre de l'écran séparé en deux. Autrement, chaque session peut s'exécuter en plein écran et on utilise une touche "rapide" (hot key) pour accéder directement à une session (ou une même touche pour basculer). On pourrait aussi se connecter sur deux ports série différents sur le même ordinateur et se logger deux fois (de manière identique aux "terminaux virtuels" sur la console). Le programme "screen" pourra faire tourner sur n'importe quel terminal (session unique) relié à un ordinateur unique deux "sessions" ou plus. 8.3 Port imprimante/auxiliaire Beaucoup de terminaux possèdent un connecteur à l'arrière pour un tel port. Il peut s'appeler "Aux" ou "Printer", etc. Certains ports d'imprimantes sont destinés aux imprimantes parallèle alors que d'autres sont destinés aux imprimantes série. Si une imprimante est connectée au port imprimante ou auxiliaire, alors l'appui sur certaines touches imprime l'écran. On peut aussi faire imprimer tout ce qui s'affiche à l'écran. Si le port est un port auxiliaire, on peut le connecter à un autre ordinateur et avoir des sessions doubles comme ci-dessus. Cependant, la mémoire vidéo à l'intérieur du terminal peut ne pas retenir les deux sessions et vous pouvez avoir besoin de rafraîchir l'écran en basculant sur l'autre session. Il n'y aura peut-être pas de touche rapide non plus mais on pourra peut-être programmer une touche de fonction pour accomplir cette tâche. Il existe de nombreuses combinaisons de touches et de séquences d'échappement pour contrôler un tel port. Voyez échappement de l'imprimante. Il y a un programme appelé vtprint qui est fait pour envoyer un travail d'impression à votre terminal en vue de l'imprimer sur une imprimante reliée au terminal. Sa page Web est http://people.qualcomm.com/garrett/vtprint. Il est aussi inclus (en 1998) dans la distribution Debian de Linux. xprt (aussi dans Debian) semble faire une chose identique, mais seulement pour les terminaux X Window ?? 8.4 Pages Beaucoup de terminaux permettent le stockage de plus d'une page dans leur mémoire vidéo. Quelquefois la taille de la page est la même que celle de l'écran, mais elle est parfois plus grande, ce qui fait que le défilement révèlera les parties invisibles de la page. Quand quelqu'un regarde un écran, il peut y avoir du texte caché sur la même page au-dessus ou en dessous de l'affichage. En plus, s'il y a plus d'une seule page, il peut y avoir du texte caché sur ces autres pages. Une utilisation possible de ces pages concerne les terminaux qui supportent les sessions doubles. Chaque session peut avoir sa propre page et on peut basculer de l'une à l'autre simplement. Même si vous avez un terminal à page unique avec la taille de la page égale à ce qui est affiché sur l'écran, vous verrez encore d'autres pages d'un fichier (etc.) tant que l'hôte envoie des données au terminal. L'un des avantages de stocker des pages supplémentaires dans la mémoire du terminal est que vous pouvez y accéder instantanément sans attendre une seconde ou presque qu'elles soient transmises depuis l'hôte. Les pages multiples sont supportées par ncurses. Faites-moi savoir si vous en connaissez. Il y a un programme commercial appelé "Multiscreen" qui les supporte mais il n'est sûrement pas pour Linux ?? Il parait que Multiscreen fait partie de SCO et fait quelque chose dans le genre des terminaux virtuels sur une console PC Linux. Le programme Linux "screen" fait semblant d'avoir des pages multiples mais elles sont stockées sur l'ordinateur et vous ne pouvez avoir qu'une fenêtre-page pour chaque programme en cours. 8.5 Jeux de caractères Un jeu de caractères est normalement représenté par une liste (ou table ou tableau) de caractères accompagnée du code d'octet assigné à chaque caractère. Les codes d'un octet vont de 0 à 255 (00 à FF en hexadécimal). Dans MS-DOS, les tables de jeux de caractères sont appelées "pages de code". Vous devriez examiner une telle table si vous n'êtes pas familier avec celles-ci. Elles sont parfois incluses dans les manuels d'imprimantes et de terminaux mais peuvent être difficiles à trouver. L'ASCII est l'un des jeux de caractères les plus courants utilisés sur les terminaux texte. C'est un code sur 7 bits mais qui peut être converti en 8 bits si le premier bit (bit de haut rang) est toujours positionné à 0. D'autres jeux de caractères sont en général disponibles (sauf sur de très vieux terminaux où le seul choix est l'ASCII). La première moitié de la plupart des jeux de caractères sont les caractères ASCII traditionnels et la deuxième moitié (les caractères avec le bit de haut rang mis à 1) appartiennent à une grande variété de jeux de caractères. Les jeux de caractères sont souvent des normes ISO. Pour obtenir des jeux de caractères spécialisés sur un terminal, vous devrez certainement télécharger une police logicielle pour ce jeu de caractères dans la mémoire du terminal. À côté de l'ASCII, il y a d'autres jeux de caractères courants, tous en 8 bits. CP est l'abréviation des jeux de caractères de page de codes (Code Page) inventés par IBM : CP-437 (ECS DOS), CP-850 (Latin 1 multilingue -- pas le même que ISO Latin-1), ISO-8859-1 (Latin-1), ANSI (dérivé de Latin-1). MS Windows utilise ANSI alors qu'Internet utilise souvent Latin-1. Il y a plusieurs jeux de caractères ISO-8859 en plus de Latin-1. Ceux-ci comprennent le grec (-7), l'arabe (-6), l'Europe de l'Est (-2) et le russe (-5). Il y en a bien d'autres. Par exemple, KOI8-R est plus souvent utilisé pour le russe que ISO-8859-5. Unicode est un jeu de caractères très grand dans lequel chaque caractère est représenté sur deux octets au lieu d'un seul. Voici plus d'informations sur les ensembles de caractères : * Pages de manuel : ASCII et latin1 * Les HOWTOs pour diverses langues (sûrement écrits dans cette langue spécifique). Voyez "Cyrillic" pour le russe. * http://www.cc.columbia.edu/kermit/charsets.html pour une liste courte des divers noms de jeux de caractères. * http://www.pku.edu.cn/on_line/w3html/International/Overview.html pour des informations sur les jeux de caractères et Internet. * Langues, pays et jeux de caractères * Utiliser plusieurs langues en HTML Une fois que vous aurez le nom (ou le numéro) du jeu de caractères qui vous intéresse, vous pouvez chercher plus d'informations dessus sur Internet. 8.6 Polices La plupart des terminaux fabriqués après le milieu des années 1980 peuvent accepter des polices logicielles téléchargées. Ceci veut dire qu'ils peuvent afficher quasiment n'importe quel jeu de caractères à condition que vous trouviez la police logicielle pour celui-ci. Si vous ne pouvez pas trouver la police logicielle nécessaire, vous pouvez toujours créer la vôtre. Un éditeur de polices libre pour effectuer ceci s'appelle BitFontEdit (écrit par l'auteur de ce document) et se trouvait (en 1998) à Europe : http:/www.funet.fi/pub/culture/russian/comp/cyril-term/ Amérique du Nord : ftp://cs.utk.edu/pub/shuford/BitFontEdit.tar.gz 8.7 Claviers et touches spéciales Les claviers des terminaux ont souvent un certain nombre de touches qu'on ne trouve pas sur un clavier de PC. Peu (ou pas du tout) de terminaux actuels auront toutes ces touches et la plupart auront des touches supplémentaires qui ne sont pas listées ici. Certains d'entre eux possèdent un grand nombre de touches à usage spécial comme les terminaux faits pour les caisses enregistreuses. Il y a souvent bien plus de significations pour les touches que ce qui est décrit ici puisque ces touches ont souvent une signification étendue quand on les utilise avec d'autres touches (comme les touches shift et control). * BREAK (interruption) envoie un bit 0 très long (intervalle = +12 V) de durée de 300 à 700 millisecondes vers l'hôte. L'hôte peut l'interpréter comme une interruption si stty a positionné brkint ou l'ignorer si ignbrk est positionné. * NO SCROLL (pas de défilement) arrête le défilement de l'écran comme le fait ^S. Presser la touche à nouveau reprend le défilement. Utilise des signaux de contrôle de flux pour faire ceci. * REPEAT (répétition) si on la maintient avec une autre touche, force la sortie répétée de cette autre touche même si l'option de répétition automatique est désactivée. * LINE FEED (saut de ligne) envoie le caractère de saut de ligne ^J à l'hôte. Rarement utilisée. * SET-UP (configuration) permet la configuration manuelle du terminal par l'intermédiaire de menus. Quelquefois désactivée à dessein en plaçant un bloc en dessous pour qu'on ne puisse pas la presser. Parfois il faut appyer sur une autre touche en même temps comme Shift ou Control. Voyez entrer dans le mode de configuration. * LOCAL déconnecte le terminal de l'hôte. En local, ce qu'on tape va directement à l'écran. Utile pour faire des tests. * RETURN (retour chariot) est la même chose que la touche "Entrée" sur un PC. Elle envoie en général un retour chariot à l'hôte qui est normalement traduit en un caractère nouvelle ligne par le pilote de périphériques de l'hôte. Sur certains terminaux on peut le configurer pour qu'il envoie autre chose. * F1, F2, ... ou PF1, PF2, ... sont des touches de fonction qu'on peut généralement programmer pour envoyer une séquence d'octets (caractères). Voyez touches de fonction 9. Émulation de terminal ; la console 9.1 Émulation de terminal Introduction à l'émulation de terminal Puisqu'un PC possède un écran et un clavier (comme un terminal) mais possède aussi bien plus de puissance de calcul, il est facile d'utiliser une partie de cette puissance de calcul pour que le PC se comporte comme un terminal texte. Voici un type d'émulation de terminal. Un autre type d'émulation de terminal est de configurer un vrai terminal pour qu'il émule un terminal de modèle ou de marque différents. Pour ce faire, sélectionnez l'émulation désirée (que le jargon Wyse appelle "personnalité") à partir du menu de paramétrage du terminal. Cette section parle du premier type d'émulation : l'émulation d'un terminal sur un PC. Les logiciels d'émulation sont disponibles pour MS Windows et sont intégrés dans les versions récentes de MS Windows. La plupart des logiciels Linux ne peuvent émuler que des VT100, VT102 ou VT100/ANSI. Si vous en trouvez d'autres, dites-le moi. Puisque la plupart des PC possèdent des moniteurs couleur mais que les VT100 et VT102 ont été faits pour des terminaux monochromes, l'émulation ajoute en général des possibilités de gestion de couleurs (et un choix de couleurs). Parfois l'émulation n'est pas parfaite à 100 % mais ceci ne crée en général que peu de problèmes. Pour utiliser un Macintosh pour émuler un terminal, voyez le mini-Howto : Mac-Terminal. N'utilisez pas TERM pour l'émulation Certaines personnes ont pensé, de manière incorrecte, qu'ils pouvaient faire un émulateur sur la console Linux (le moniteur) en positionnant la variable d'environnement TERM sur le type de terminal qu'elles aimeraient émuler. Ceci ne fonctionne pas. La valeur de TERM ne fait qu'indiquer à l'application le terminal que vous utilisez. Ainsi elle n'a pas besoin de vous le demander directement. Si vous êtes sur le moniteur du PC, c'est un terminal de type "Linux" et vous ne pouvez rien y faire. Vous devez donc positionner TERM à "Linux". Si vous mettez autre chose, vous racontez des bobards à votre application. En conséquence, elles interpréteront certaines séquences d'échappement provenant de la console de manière incorrecte, ce qui donnera une interface corrompue. Puisque la console Linux se comporte presque comme un terminal vt100, elle pourrait encore fonctionner correctement si vous indiquiez que c'est un vt100 (ou tout autre terminal qui ressemble à un vt100). Cela doit marcher la plupart du temps, mais il suffit d'une fois pour qu'il y ait une erreur quand vous editez ou equivalent. Programmes de communications (appels téléphoniques) Un programme d'émulation est souvent couplé à un programme d'appel par modem (comme Minicom, Seyon ou Kermit) pour que l'on puisse (par exemple) appeler par téléphone des bibliothèques publiques pour utiliser leurs catalogues et index (ou même lire des articles de magazine). Seyon ne s'utilise qu'avec X Window et peut émuler des terminaux Tektronix 4014. Des émulateurs existent pour DOS comme telix et procomm et fonctionnent aussi bien. Les terminaux émulés sont souvent les vieux VT100, VT102 ou ANSI (comme VT100). Émulation sous X Window Xterm (obsolète ??) peut fonctionner sous X Window et permet d'émuler un VT102, VT220 ou Tektronix 4014. Il y a aussi une émulation xterm (bien qu'il n'y ait pas de terminal physiques qui s'appelle "xterm"). Si vous n'avez pas besoin de l'émulation Tektronix 4014 (un terminal avec des vecteurs graphiques ; voyez terminaux graphiques) vous pouvez utiliser eterm. Les prédécesseurs de eterm sont rxvt et xvt. eterm supporte les pixmaps en fond de fenêtre. Pour les alphabets différents de Latin, kterm permet l'émulation de terminal Kanji (ou tout autre alphabet non Latin) alors que xcin est fait pour le chinois. Il y a aussi l'émulateur 9term. Il semble que ce soit plus qu'un simple émulateur puisqu'il possède un éditeur intégré et des barres de défilement. Il a été fait pour Plan 9, un système d'exploitation à la Unix de AT&T. Les vrais terminaux sont mieux Sauf si vous utilisez X Window avec un grand affichage, il est plus agréable d'utiliser un vrai terminal que de l'émuler. Il coûte en général moins cher, a une meilleur résolution pour le texte et n'a pas de lecteurs de disques qui font des bruits agaçants. 9.2 Tester l'émulation du terminal Pour la série des terminaux VT il y a un programme de test : vttest pour aider à déterminer si un terminal se comporte correctement comme un vt53, vt100, vt102, vt220, vt320, vt420, etc. Il n'y a pas de documentation mais il a des menus et est facile à utiliser. Pour le compiler lancez le script configure et ensuite tapez "make". On peut le charger à : ftp://ftp.clark/net:/pub/dickey/vttest/. Un autre site de chargement est : http://metalab.unc.edu/pub/Linux/utils/console/. 9.3 La console Linux La console d'un système PC sous Linux est le moniteur de l'ordinateur. Il émule un terminal de type "Linux". Il n'y a pas moyen (sauf si vous voulez passer des jours à réécrire le code du noyau) pour le faire émuler autre chose. Positionner la variable d'environnement TERM à un type de terminal différent de "Linux" n'aboutira pas à l'émulation de cet autre terminal. Vous n'obtiendrez qu'une interface corrompue puisque vous avez déclaré faussement (par l'intermédiaire de la variable TERM) que votre "terminal" est d'un type différent de ce qu'il est. Voyez la section n'utilisez pas TERM pour l'émulation. L'émulation "Linux" est souple et possède des possibilités qui vont bien au-delà de celles du terminal vt102 qu'il était censé émuler. Celles-ci comprennent la possibilité d'utiliser des fontes personnalisées et de reconfigurer facilement le clavier (sans modifier le code source et recompiler le noyau comme il faut le faire dans le cas d'un terminal réel). Ces possibilités supplémentaires se trouvent dans le logiciel de pilotage de la console et non dans le logiciel d'émulation mais le résultat fait qu'on dirait que ces possibilités font partie de l'émulation. Beaucoup de commandes existent (voyez le HOWTO Keyboard-and-Console) pour utiliser ces possibilités supplémentaires. Les vrais terminaux, qui n'utilisent ni codes de balayages (scancodes) ni carte VGA, ne peuvent malheureusement pas utiliser la plupart de ces possibilités. On peut recompiler Linux pour qu'un terminal reçoive les messages qui vont normalement sur la console. Voyez transformer un terminal en console. 10. Contrôle de flux (prise de contact) Le contrôle de flux (= prise de contact (handshaking) = ralentissement) permet d'empêcher un flux d'octets trop rapide de dépasser un terminal, un ordinateur, un modem ou un autre périphérique. Le dépassement est le fait qu'un périphérique ne puisse pas traiter ce qu'il reçoit assez rapidement et ainsi perd des octets et/ou fait d'autres erreurs sérieuses. Ce que fait le contrôle de flux est d'arrêter le flux d'octets jusqu'à ce que le terminal (par exemple) soit prêt à recevoir des octets supplémentaires. Le contrôle de flux envoie un signal pour arrêter le flux dans la direction opposée au flux des données qu'il veut arrêter. Le contrôle de flux doit être lancé à la fois sur le terminal et sur l'ordinateur. Il y a deux types de contrôle de flux : matériel et logiciel (Xon/Xoff ou DC1/DC3). Le contrôle de flux matériel utilise des fils de signaux dédiés comme RTS/CTS ou DTR/DSR alors que le contrôle de flux logiciel se signale en envoyant les octets de contrôle DC1 ou DC3 dans les fils de données normaux. Pour le contrôle de flux matériel, le câble doit être câblé correctement. Le flux des octets de données dans le câble entre deux ports série est bidirectionnel, il y a donc deux flux (et deux fils) différents à considérer : 1. le flux de données de l'ordinateur vers le terminal 2. le flux de données du clavier du terminal vers l'ordinateur 10.1 Pourquoi le contrôle de flux est-il nécessaire ? Vous pouvez vous demander : "Pourquoi ne pas envoyer les données à une vitesse suffisamment petite pour que le périphérique ne soit pas dépassé et que le contrôle de flux ne soit ainsi plus nécessaire ?" Ceci est possible mais c'est en général bien plus lent que d'envoyer les données plus rapidement et d'utiliser le contrôle de flux. Une raison à ceci est qu'on ne peut pas positionner la vitesse du port série à n'importe quelle vitesse comme 14.500, puisqu'un nombre limité de choix est disponible. Le meilleur choix est de sélectionner une vitesse légèrement plus élevée que ce que peut soutenir le périphérique et d'utiliser ensuite le contrôle de flux pour que les choses fonctionnent correctement. Si on décide de ne pas utiliser le contrôle de flux, la vitesse doit alors être suffisamment basse pour pallier à la pire des situations. Pour un terminal, cela arrive quand on envoie des séquences d'échappement pour effectuer des tâches complexes qui prennent plus de temps qu'à l'accoutumée. Dans le cas d'un modem (avec la compression de données mais pas de contrôle de flux) la vitesse de l'ordinateur au modem doit être suffisamment basse pour que cette même vitesse soit utilisable sur la ligne téléphonique, puisque dans le pire des cas les données sont aléatoires et ne peuvent être compressées. Si on ne pouvait pas utiliser de contrôle de flux, la vitesse (avec la compression de données activée) ne serait pas plus rapide que si on n'utilisait pas de compression du tout. Les buffers (mémoires tampons) aident à gérer les situations catastrophes de courte durée. Le tampon stocke les octets qui arrivent trop rapidement pour être traités tout d'un coup, et les garde pour les traiter plus tard. 10.2 Remplissage Une autre manière de gérer une situation "catastrophe" (sans utiliser de contrôle de flux ni de tampon) est d'ajouter un groupe de nulls (octets de valeur zéro) aux séquences d'échappement. Quelquefois on utilise des DEL à la place, à condition qu'ils n'aient pas d'autre fonction. Voyez reconnaître DEL. La séquence d'échappement permet au terminal de commencer à faire quelque chose, et pendant que le terminal est occupé à le faire, il reçoit une poignée de nulls qu'il ignore. Quand il reçoit le dernier null, il a terminé sa tâche et est prêt pour la commande suivante. C'est ce qu'on appelle le remplissage de zéros (null padding). Ces nulls étaient autrefois appelés des "caractères de remplissage". Ces nulls sont ajoutés simplement pour "perdre" du temps, mais ce n'est pas tout à fait perdu puisque le terminal est en général occupé à faire autre chose pendant que les nulls sont reçus. On utilisait beaucoup cette méthode dans le passé avant que le contrôle de flux ne devienne populaire. Pour être efficace, il fallait ajouter le nombre exact de nulls et trouver la bonne valeur est difficile. On le faisait souvent par essais successifs et tâtonnements puisque les manuels de terminaux n'étaient pas de grand secours. Si le contrôle de flux ne fonctionne pas correctement ou n'est pas implémenté, le remplissage est une solution. Certaines options de la commande stty concernent le remplissage. 10.3 Débordement d'un port série On peut se demander comment le débordement est possible sur un port série puisqu'à la fois les ports série d'envoi et de réception servant à la transmission d'octets de données sont paramétrés pour la même vitesse (en bits/s) comme 19200. La raison est que bien que l'électronique du port série récepteur peut gérer la vitesse du flux arrivant, le matériel/logiciel qui prend et traite les octets du port série ne peut pas toujours se débrouiller avec une vitesse de flux élevée. L'une des causes de ceci est que le tampon matériel du port série est assez petit. Les anciens ports série avaient une taille de tampon matériel d'un octet seulement (à l'intérieur de la puce UART). Si cet unique octet de données reçu dans le tampon n'est pas enlevé (pris) par des instructions CPU avant que l'octet suivant n'arrive, cet octet est perdu (le tampon est débordé). Les UART récents, par exemple la plupart des 16550A, possèdent des tampons de 16 octets (mais peuvent être paramétrés pour émuler un tampon d'un octet) et sont moins susceptibles d'être débordés. On peut le paramétrer pour envoyer une interruption quand le nombre d'octets dans son tampon atteint 1, 4, 8 ou 14 octets. C'est le travail d'une autre puce dans l'ordinateur (généralement la puce principale CPU pour un ordinateur) de retirer ces octets entrants de ce petit tampon matériel et de les traiter (ainsi que d'effectuer d'autres tâches). Quand le contenu de ce petit tampon matériel de réception atteint la limite spécifiée (un octet pour les vieux UART) une interruption est levée. L'ordinateur interrompt alors ce qu'il était en train de faire et une routine fait une vérification pour déterminer ce qui vient de se passer. Il détermine finalement qu'il doit retirer un octet (ou plusieurs) du tampon du port série. Il prend cet (ces) octet(s) et les met dans un tampon plus grand (un autre tampon pour le port série) que le noyau maintient dans la mémoire principale. Pour le tampon de transmission, le matériel série génère une interruption quand le tampon est vide (ou presque vide) pour dire à la CPU de mettre quelques octets supplémentaires dans ce tampon afin de les envoyer. Les terminaux possèdent aussi des ports série et des tampons similaires à ceux de l'ordinateur. Puisque le flux de données des octets vers le terminal est en général plus grand que le flux dans la direction opposée du clavier vers l'ordinateur hôte, le terminal a plus de chance de souffrir du débordement. Bien sûr, si vous utilisez un ordinateur comme terminal (par émulation), il est à son tour sujet au débordement. Les situations risquées où le débordement est très probable sont : 1. quand un autre processus a désactivé les interruptions (pour un ordinateur), 2. quand le tampon du port série dans la mémoire principale (ou dans celle du terminal) est prête à déborder. 10.4 Arrêt de l'envoi Quand le récepteur est sur le point d'être débordé par les octets entrants, il envoie un signal à l'expéditeur pour arrêter l'envoi. C'est le contrôle de flux et les signaux de contrôle de flux sont toujours envoyés dans la direction opposée au flux de données qu'ils contrôlent (bien que ce ne soit pas dans le même canal ou le même fil). Ce signal peut être soit un caractère de contrôle (^S = DC3 = Xoff) envoyé comme un octet de données ordinaire sur la ligne de données (signalement dans la bande), soit une transition de tension du positif au négatif dans le fil de signal dtr-vers-cts (ou autre ; signalement hors-bande). L'utilisation de Xoff est appelée "contrôle de flux logiciel" et l'utilisation du saut de tension dans un fil de signal dédié (à l'intérieur du câble) est appelée contrôle de flux matériel. 10.5 Blocage du clavier Avec les terminaux, le cas le plus commun "d'arret d'envoi", est quand le terminal ne peut pas suivre avec les caractères qui lui sont envoyés et qui en conclut par un "arret" du PC. Un autre cas, est quand quelqu'un presse control-S. Un autre cas un peu moin commun, est l'opposé, quand le PC ne peut plus suivre votre vitesse de frappe et dit au terminal d'arrêter l'envoi. Le terminal "bloque" le clavier et un message ou une lumière devrait vous informer que le clavier est bloqué. Tout ce que vous tapez sur un clavier bloqué est ignoré. Le terme "bloqué" est aussi quelque fois utilisé pous les cas où l'on dit à l'ordinateur d'arrêter d'envoyer à un terminal. Le clavier n'est pas bloqué, afin que tout ce que vous tapez soit envoyé à l'ordinateur, mais puisque l'ordinateur ne peut rien vous renvoyer, les caractères que vous tapez ne s'affichent pas sur l'écran et il peut sembler que le clavier est bloqué. Le défilement est bloqué (scroll lock) mais le clavier n'y est pas. 10.6 Reprendre l'envoi Quand le récepteur a rattrapé son retard dans le traitement et est prêt à recevoir plus d'octets de données il envoie un signal à l'envoyeur. Pour le contrôle de flux logiciel ce signal est le caractère de contrôle ^Q = DC1 = Xon qui est envoyé sur la ligne de données normale. Pour le contrôle de flux matériel la tension dans une ligne de signal passe de négative (niée) à positive (affirmée). Si on dit à un terminal de reprendre la transmission le clavier est alors débloqué et prêt à être utilisé. 10.7 Contrôle de flux matériel (RTS/CTS, etc.) Certains terminaux anciens n'offrent pas de contrôle de flux matériel alors que d'autres offraient un assortiment varié de broches diverses sur le port série pour le faire. Pour une liste des differentes borches, aller voir Brochage standard d'un cable null-modem. La broche la plus en vogue actuellement semble être la broche DTR (ou les broches DTR et DSR ensemble). Contrôle de flux RTS/CTS, DTR et DTR/DSR Les PC Linux utilisent RTS/CTS mais le contrôle de flux DTR/DSR (utilisé par certains terminaux) se comporte de la même manière. Le contrôle de flux DTR (dans une seule direction et aussi utilisé par certains terminaux) n'est que la partie DTR du contrôle de flux DTR/DSR. RTS/CTS utilise les broches RTS et CTS sur le connecteur série (EIA-232). RTS veut dire "Request To Send" (demande d'envoyer). Quand cette broche reste en position haute (tension positive) sur le récepteur cela veut dire : continuez de m'envoyer des données. Si RTS passe en position basse (la tension devient négative), cela nie "demande d'envoyer", ce qui veut dire : arrêtez d'envoyer. Quand le récepteur est prêt à recevoir plus de données, il relance RTS, demandant à l'autre côté de reprendre l'envoi. Pour les ordinateurs et les terminaux (tous les deux des équipements terminaux) la broche RTS envoie le signal de contrôle de flux à la broche CTS (Clear To Send, prêt à envoyer) de l'autre côté du câble. C'est-à-dire que la broche RTS à un bout du câble est reliée à la broche CTS à l'autre bout du câble. Pour un modem (équipement de connexion) le principe est différent puisque la broche RTS du modem reçoit le signal et sa broche CTS l'envoie. Alors que ceci peut sembler déroutant, il y a des raisons historiques correctes pour l'expliquer, raisons qui sont trop compliquées pour en discuter ici. Les terminaux disposent en général du contrôle de flux DTR ou DTR/DSR. Le contrôle de flux DTR est le même que le contrôle de flux DTR/DSR mais il est unidirectionnel et la broche DSR n'est pas utilisée. En ce qui concerne le contrôle de flux DTR/DSR sur un terminal, le signal DTR est comme le signal envoyé de la broche RTS, et la broche DSR est simplement comme la broche CTS. Etablir une connexion avec le contrôle de flux DTR ou DTR/DSR Certains terminaux n'utilisent que le contrôle de flux DTR. C'est un contrôle de flux unidirectionnel uniquement pour empêcher le terminal d'être dépassé. Il ne protège pas l'ordinateur de quelqu'un qui tape trop vite pour que l'ordinateur puisse gérer la situation. Dans un câble null modem classique la broche DTR du terminal est reliée à la broche DSR de l'ordinateur. Linux, par contre, ne supporte pas le contrôle de flux DTR/DSR (bien que des pilotes pour des cartes multiports peuvent supporter le contrôle de flux DTR/DSR). Un moyen de contourner ce problème est simplement de relier la broche DTR à la broche CTS sur l'ordinateur et d'activer le contrôle de flux RTS/CTS (stty crtscts). Le fait que ce soit unidirectionnel ne changera rien tant que l'hôte n'est pas dépassé par votre vitesse de frappe et ne lâche RTS en une vaine tentative pour bloquer votre clavier. Voyez blocage du clavier. Pour obtenir le contrôle de flux DTR/DSR (si votre terminal supporte ce type de contrôle de flux bidirectionnel) vous faites ce qui est décrit ci-dessus. Mais vous connectez aussi la broche DSR sur le terminal à la broche RTS sur l'ordinateur. Vous êtes alors protégé si vous tapez trop rapidement. L'ancienne prise de contact RTS/CTS est différente Ce qui est déroutant est que l'utilisation d'origine de RTS veut dire à peu près le contraire de l'explication précédente ci-dessus. La signification d'origine est : je demande à vous envoyer (I Request To Send to you). Cette requête était destinée à être envoyée d'un terminal (ou d'un ordinateur) vers un modem qui, s'il décidait d'accorder la requête, renvoyait un CTS affirmatif à partir de sa broche CTS vers la broche CTS de l'ordinateur : vous êtes autorisé à m'envoyer (You are Cleared To Send to me). Notez qu'au contraire du contrôle de flux RTS/CTS bidirectionnel du modem, ceci ne protège le flux que dans une direction : de l'ordinateur (ou du terminal) vers le modem. Pour de vieux terminaux, RTS peut avoir cette signification et devient positif quand le terminal doit envoyer des données. L'utilisation ci-dessus est une forme de contrôle de flux puisque si le modem veut que l'ordinateur arrête d'envoyer il lâche CTS (connecté au CTS de l'ordinateur) et l'ordinateur arrête d'envoyer. Canal inversé Les vieux terminaux à sortie papier peuvent avoir une broche de canal inversé (comme la broche 19) qui se comporte comme la broche RTS dans le contrôle de flux RTS/CTS. Cette broche passera aussi en négatif s'il n'y a plus de papier ou de ruban. Il est souvent possible de relier cette broche à la broche CTS de l'ordinateur hôte. Il peut y avoir un petit interrupteur pour positionner la polarité de ce signal. 10.8 Est-ce que le contrôle de flux matériel est fait par le matériel ? Certains pensent que le contrôle de flux matériel est fait par le matériel mais (sauf si vous utilisez une carte série intelligente avec plusieurs ports série) c'est en réalité votre système d'exploitation qui s'en charge. Les puces UART et le matériel associé ne connaissent en général rien du contrôle de flux matériel. Quand un signal de contrôle de flux matériel est reçu, le fil du signal inverse la polarité. Ce changement d'état est enregistré dans un registre de port série qui est vérifié par le pilote série avant de mettre les octets dans les tampons materiels de 16 octets. Si le fil du control de flux dit "stop", il n'y a plus d'octets ajoutés et le flux sortant des lignes séries s'arrete. Il y'a un autre moyen qui aurait pu être implementer depuis que la polarité s'inverse, le materiel aurait pu être configuré pour envoyer un signal éléctrique d'interruption au processeur. Alors le processeur arreterait ce qu'il était en train de faire, se brancherait a un sous-programme de service du pilote série, verifierait les registres dans lesquels le port serie a laissé des traces pour trouver ce qui s'est passé, et fais un rapport, pour ne pas redémarrer le flux apres que le sous programme de service soit quitté. Cela doit être un peu plus efficace, mais il semble que Linux n'agisse pas comme ca. A mon avis. Noter qu'avec l'une ou l'autre des methodes, le flux d'octets s'arrette quasiment instantanement. Cependant tous les octets (jusqu'à 16) qui étaient déjà dans le tampon de transmission matériel du port série seront encore transmis. Utiliser un control de flux logiciel requiert que chaque octet arrivant soit verifié pour voir si c'est un octet "eteint". Ces octets sont retardés en passant à travers le tampon de réception de 16 octets. Si l'octet "éteint" était le premier octet dans ce tampon, il pourrait y avoir une attente le temps que 15 octets soient reçus. Alors les 16 octets lus seraient obtenus et l'octet "éteint" trouvé. Cette attente supplementaire n'arrive pas avec un control de flux materiel. 10.9 Obsolète ?? Contrôle de flux ETX/ACK ou ENQ/ACK Ceci est aussi du contrôle de flux matériel et nécessite un pilote de périphérique qui sait le traiter. Les octets sont envoyés par paquets (grâce au port série asynchrone), chaque paquet étant terminé par un caractère de contrôle ETX (End of Text, fin de texte). Quand le terminal reçoit un ETX il attend jusqu'à ce qu'il soit prêt à recevoir le paquet suivant et retourne alors un ACK (Acknowledge, acquittement). Quand l'ordinateur reçoit le ACK, il envoie le paquet suivant. Et ainsi de suite. Ceci n'est pas supporté par Linux ?? Certains terminaux HP utilisent la même méthode mais utilisent ENQ au lieux de ETX. 11. Connexion physique Les cartes multiports permettent de relier plusieurs terminaux (ou modems) à un ordinateur. On peut relier un terminal à son ordinateur hôte soit par une connexion directe par câble, soit par un modem, ou encore par l'intermédiaire d'un serveur de terminaux. 11.1 Cartes d'entrées/sorties multiports (adaptateurs) On peut acheter des cartes série supplémentaires qui possèdent plusieurs ports série, et qu'on appelle "cartes multiports". Ces cartes ne sont pas détaillées dans ce HOWTO mais on en parle beaucoup dans le HOWTO Serial. Une société qui fait des prix en dessous de la moyenne est ByteRunner. 11.2 Connexion directe par câble La manière la plus simple de relier un terminal à un ordinateur hôte est par l'intermédiaire d'une connexion directe vers un port série de l'ordinateur. La plupart des PC possèdent deux ports série, mais la souris en utilise en général un. Vous pouvez aussi utiliser quelques infos dans cette section pour connecter un ordinateur a un autre(par le port série). Pour le port EIA-232, vous avez besoin d'un câble null modem qui croise les fils de transmission et de réception. Si vous voulez faire du contrôle de flux matériel, vous utiliserez sûrement la broche DTR (ou les broches DTR et DSR ensemble). Assurez-vous que vous avez le bon type de câble. Un câble null modem acheté dans un magasin d'ordinateurs peut être bon (s'il est assez long), mais ne fonctionnera probablement pas bien pour le contrôle de flux matériel. Ce genre de câble peut être étiqueté comme un câble pour imprimante série. Voyez ceci pour vous aider à déterminer si vous devez acheter ou fabriquer votre propre câble. Assurez-vous que vous utilisez votre port série, la prise mâle DB25 ou DB9, et non pas votre port parallèle (prise DB25 femelle ou Centronics). Schéma de brochage des câbles null modem (3, 4 ou 5 conducteurs) Ces 3 diagrammes sont pour les vrais terminaux textes. Mais vous pouvez les utiliser pour connecter 2 PC si vous remplacer RTS par DTR et CTS par DSR. (N'utilisez pas 4 conducteurs pour PC à PC). Pour les terminaus, si vous n'avez que le contrôle de flux DTR (unidirectionnel), vous pouvez éliminer le fil RTS-vers-DSR. Si vous n'avez pas de contrôle de flux matériel, vous pouvez alors aussi éliminer le fil CTS-vers-DTR. Alors, si vous avez deux paires torsadées, vous pouvez utiliser deux fils pour la masse du signal comme indiqué à une astuce qui utilise du câble en paire torsadée. Pour un connecteur DB25 sur votre PC, vous avez besoin de : PC DB25 mâle Terminal DB25 TxD Transmit Data 2 --> 3 RxD Receive Data RxD Receive Data 3 <-- 2 TxD Transmit Data SG Signal Ground 7 --- 7 SG Signal Ground CTS Clear To Send 5 <-- 20 DTR Data Terminal Ready RTS Request To Send 4 --> 6 DSR Data Set Ready Si vous avez un connecteur DB9 sur votre PC, essayez le schéma suivant : PC DB9 Terminal DB25 RxD Receive Data 2 <-- 2 TxD Transmit Data TxD Transmit Data 3 --> 3 RxD Receive Data SG Signal Ground 5 --- 7 SG Signal Ground CTS Clear To Send 8 <-- 20 DTR Data Terminal Ready RTS Request To Send 7 --> 6 DSR Data Set Ready ** Si vous avec un connecteur DB9 sur tous vos ports séries et terminal : PC DB9 Terminal DB25 RxD Receive Data 2 <-- 3 TxD Transmit Data TxD Transmit Data 3 --> 2 RxD Receive Data SG Signal Ground 5 --- 5 SG Signal Ground CTS Clear To Send 8 <-- 4 DTR Data Terminal Ready RTS Request To Send 7 --> 6 DSR Data Set Ready ** Les schémas ci-dessus n'ont pas de lignes de contrôle de modem, soyez donc sûr de donner une option "local" à getty (ce qui est équivalent à "stty clocal"). De plus si vous avez besoin du contrôle de flux matériel il doit être activé du côté de votre ordinateur (utilisez le drapeau -h avec agetty) (équivalent à "stty crtscts"). Brochage d'un câble null modem standard (7 connecteurs) Les 3 diagrammes suivants montrent des câbles null modem "standards" complets. Si vous en achetez un, il risque d'être câblé de cette manière. Ils fonctionneront pour les terminaux en utilisant le contrôle de flux logiciel (Xon/Xoff), ou sans contrôle de flux. Cependant, ils ne fonctionnent pas pour le contrôle de flux matériel de terminal puisque la plupart des vrais terminaux supportent le contrôle de flux DTR ou DTR/DSR (prise de contact) mais que Linux ne le fait pas. PC DB25 mâle Terminal DB25 TxD Transmit Data 2 --> 3 RxD Receive Data RxD Receive Data 3 <-- 2 TxD Transmit Data RTS Request To Send 4 --> 5 CTS Clear To Send CTS Clear To Send 5 <-- 4 RTS Request To Send DSR Data Set Ready 6 | DCD Carrier Detect 8 <-- 20 DTR Data Terminal Ready SG Signal Ground 7 --- 7 SG Signal Ground 6 DSR Data Set Ready | DTR Data Terminal Ready 20 --> 8 DCD Carrier Detect Autrement, voici un câble null modem DB9-DB25 (ne fonctionnera pas avec la prise de contact matérielle des terminaux ; voir ci-dessus) : PC DB9 Terminal DB25 RxD Receive Data 2 <-- 2 TxD Transmit Data TxD Transmit Data 3 --> 3 RxD Receive Data 6 DSR Data Set Ready | DTR Data Terminal Ready 4 --> 8 DCD Carrier Detect GND Signal Ground 5 --- 7 GND Signal Ground DCD Carrier Detect 1 | DSR Data Set Ready 6 <-- 20 DTR Data Terminal Ready RTS Request To Send 7 --> 5 CTS Clear To Send CTS Clear To Send 8 <-- 4 RTS Request To Send RI Ring Indicator 9 (pas nécessaire) (Oui, les broches 2 et 3 _ont vraiment_ des significations opposées dans les connecteurs DB9 et DB25 !) Voici comment connecter 2 DB9 ensemble en null-modem (mais le flux de control DTR ne marchera pas) : PC DB9 Terminal DB25 RxD Receive Data 2 <-- 3 TxD Transmit Data TxD Transmit Data 3 --> 2 RxD Receive Data 6 DSR Data Set Ready | DTR Data Terminal Ready 4 --> 1 DCD Carrier Detect GND Signal Ground 5 --- 5 GND Signal Ground DCD Carrier Detect 1 | DSR Data Set Ready 6 <-- 4 DTR Data Terminal Ready RTS Request To Send 7 --> 8 CTS Clear To Send CTS Clear To Send 8 <-- 7 RTS Request To Send RI Ring Indicator 9 (pas nécessaire) L'utilisation des deux connexions ci-dessus fournit des signaux de contrôle de modem complets et de même nous permettent de positionner "stty -clocal". On doit alors allumer le terminal en premier (pour lancer DTR) avant de pouvoir ouvrir le port de manière normale par getty, etc. Mais il risque d'y avoir des problèmes si vous n'allumez pas le terminal en premier (voyez getty se relance trop rapidement). Pour cette raison, on devrait utiliser "stty clocal" qui est la valeur par défaut (ignore les lignes de contrôle du modem) et les fils supplémentaires dans ces câbles ne servent alors à rien d'utile. Dans les jours anciens où il n'était pas si facile d'ignorer les signaux de contrôle du modem, etc., on utilisait "l'astuce" suivante pour les câbles qui n'avaient pas les fils pour le contrôle de modem : du côté ordinateur du connecteur, on reliait RTS et CTS ensemble, et on connectait aussi DSR, DCD et DTR ensemble. De cette manière, quand l'ordinateur avait besoin d'un certain signal de prise de contact pour continuer, il l'obtenait (par erreur) de lui-même. Limitations de longueur Un câble de plus de 15 mètres environ (50 pieds) peut ne pas fonctionner correctement à grande vitesse. Des longueurs bien plus grandes fonctionnent parfois correctement, surtout si la vitesse est basse et/ou le câble est de type basse capacitance et/ou l'électronique de la partie réception est très sensible. On dit que sous certaines conditions idéales à 9600 bauds, un câble de 1000 pieds (300 mètres) fonctionne correctement. Une manière de couvrir de longues distances est d'installer un pilote de ligne près de chaque port série afin de convertir des signaux asymétriques en symétriques (et inversement) et d'utiliser ensuite du câblage en paire torsadée. Mais les pilotes de lignes sont chers. Câbles pour le contrôle de flux matériel Si vous voulez faire du contrôle de flux matériel (prise de contact) vous aurez certainement besoin de fabriquer votre propre câble (ou de le faire faire). Bien sûr, si les connecteurs à chaque extrémité d'un câble usagé s'enlèvent, vous pouvez le reconnecter. Voyez installation de connecteurs DB. Vous devrez déterminer si oui ou non le terminal utilise la broche DTR pour cela, et sinon, quelle(s) broche(s) il utilise. Les menus de configuration peuvent vous donner des indices là-dessus puisqu'il peut y avoir une option pour activer la "prise de contact DTR" (ou le contrôle de flux), ce qui implique bien sûr qu'il utilise la broche DTR. Il peut aussi utiliser la broche DSR. Voyez contrôle de flux matériel pour une explication détaillée. Des terminaux anciens peuvent ne rien fournir pour faire du contrôle de flux matériel. Astuces sur les câbles Un câble "droit" normal ne fonctionnera pas sauf si vous l'utilisez comme câble d'extension couplé soit à un câble null modem, soit à un adaptateur null modem. Assurez-vous que les connecteurs au bout du câble se brancheront dans les connecteurs matériels. On peut utiliser du câble de téléphone qui a au moins 4 conducteurs (et peut-être en paire torsadée). Un câble d'ordinateur spécial de basse capacitance, blindé, est mieux. Une bidouille qui utilise un câble en paire torsadée Bien qu'aucun signal EIA-232 ne soit stabilisé pour de la paire torsadée on peut tenter d'utiliser un câble en paire torsadée. Utilisez une paire pour la transmission et l'autre pour la réception. Pour faire ceci connectez le signal de terre à un fil sur chacune de ces deux paires. Une partie seulement du signal de terre passe dans le fil désiré mais ça peut aider. À cause de l'inductance plus faible du circuit en paire torsadée (comparée au courant de retour de masse par un autre chemin), un peu plus de courant de retour (terre) se massera sur le chemin désiré que ce qu'on pourrait attendre des seuls calculs de résistances. Ceci est surtout vrai à des fréquences plus élevées puisque l'impédance d'induction augmente avec la fréquence. La courbe rectangulaire du port série contient des harmoniques de haute fréquence. Mise à la terre du câble La broche 1 (d'une prise DB25) devrait être reliée à la masse du châssis (qui est aussi la masse de la terre) mais sur les ports série économiques il peut n'être connecté à rien du tout. Un connecteur 9 broches n'est même pas relié à la masse du châssis. La masse du signal est la broche 7 et est en général reliée à la masse du châssis. Cela veut dire qu'une partie du courant du signal passera dans les fils de masse de l'installation électrique du bâtiment (indésirable). Les blindages de câbles sont sensés n'être mis à la terre qu'à une seule extrémité du câble, mais il peut être mieux de relier les deux extrémités à la terre puisqu'il est mieux d'avoir du courant dans le blindage que dans l'installation électrique du bâtiment ?? 11.3 Connexion sur un modem En utilisant une combinaison terminal-modem (sans ordinateur) on peut se connecter à des BBS. Certains BBS (comme free-nets) permettent un accès à Internet grâce au navigateur texte lynx qui fonctionnera sur les terminaux texte. Ainsi avec un vieux terminal et un modem externe, on peut se connecter à Internet. Si on se connecte à un ordinateur hôte sur lequel on a un compte, on peut parfois y stocker ses fichiers (ou ses téléchargements). Appeler à l'extérieur à partir d'un terminal Au lieu de relier un terminal (ou un ordinateur émulant un terminal) directement à un ordinateur hôte en utilisant un câble, il peut être relié à l'hôte par l'intermédiaire d'une ligne téléphonique (ou d'une liaison spécialisée dédiée) avec un modem à chaque bout de la ligne. Le terminal (ou l'ordinateur) appellera en général un ordinateur hôte avec une ligne téléphonique. La plupart des gens utilisent un PC et un modem pour appeler vers l'extérieur. Le PC peut posséder un terminal relié à un port série et la personne sur le terminal peut appeler par l'intermédiaire du PC. La connexion d'un vrai terminal directement sur le modem externe est plus difficile car le vrai terminal n'est pas très intelligent et ne donne pas autant de retour à l'utilisateur. Pour appeler à l'extérieur, beaucoup de terminaux peuvent stocker un ou plusieurs numéros de téléphone comme des messages qu'on peut leur "paramétrer". Ces numéros sont envoyés au modem en pressant certaines touches de fonction. Beaucoup de modems peuvent aussi stocker des numéros de téléphone. La séquence d'initialisation du modem doit précéder le numéro de téléphone. Quande un autre modem répond à un appel sortant a l'autre bout de la ligne téléphonique, l'ordinateur hote sur ceux modem doit lancer un programme getty pour vous puissiez vous connectez. On peut appeler un terminal Il est courant pour un ordinateur faisant tourner Linux de se faire appeler par téléphone. L'appelant obtient une invite de login et se logge. À première vue, il peut sembler étrange qu'un terminal simple (relié à aucun ordinateur) puisse accepter un appel entrant, mais il le peut. Une des raisons possibles de faire ainsi est d'économiser les factures de téléphone quand les tarifs ne sont pas symétriques. Votre terminal doit être configuré pour un appel entrant : mettez le modem derrière votre terminal en mode réponse automatique (auto answer, registre S0 mis à 2 répondra à la deuxième sonnerie). Vous allumez le terminal et le modem avant d'attendre un appel et quand l'appel arrive vous obtenez une invite de login et vous vous loggez. L'ordinateur hôte qui appelle votre terminal doit faire quelque chose d'inhabituel. Aussitôt que votre modem répond, il doit lancer login (getty). Un hôte peut faire ceci en lançant le programme Linux "callback", parfois appelé "cb". Le callback (ou rappel) c'est l'ordinateur A qui appelle l'ordinateur B, B raccroche et rappelle A. C'est ce que vous voulez si vous utilisez l'ordinateur A pour émuler un terminal. Dans le cas d'un vrai terminal cette tâche peut être trop complexe et par conséquent l'hôte n'utilise que la partie retour du programme callback. Le fichier de configuration de callback doit être configuré correctement sur l'hôte. Callback appelle le terminal et ensuite dit à mgetty de lancer un login sur ce port. Mgetty lui-même (au début 1998) ne sait gérer que les appels entrants mais on travaille sur l'incorporation de possibilités de rappel automatique et le rendre ainsi capable de gérer les appels sortants. Au début de 1999, cela ne semblait pas avoir été réalisé. 11.4 Connexion à un serveur de terminaux Une utilisation possible est de connecter beaucoup de terminaux (ou des modems) à un réseau à haut débit qui permet la connexion à des ordinateurs hôtes. Bien sûr le serveur de terminaux doit avoir la puissance de calcul et les logiciels pour faire tourner des protocoles réseau, il ressemble donc à un ordinateur. Le serveur de terminaux peut interagir avec l'utilisateur et demander sur quel ordinateur il veut se connecter, etc. ou il peut le connecter sans rien demander. On peut parfois envoyer des travaux à une imprimante à travers un serveur de terminaux. Un PC de nos jours a suffisamment de puissance de calcul pour agir comme un serveur de terminaux pour des terminaux texte sauf que chaque port série devrait avoir sa propre interruption matérielle. Les PC ne possèdent que peu d'interruptions libres à cette fin et puisqu'elles sont configurées en dur on ne peut pas en créer davantage par logiciel. Une solution est d'utiliser une carte série multiport avancée qui possède son propre système d'interruptions (ou sur les modèles de plus bas prix, partage l'une des interruptions du PC entre un certain nombre de ports). Voyez le HOWTO Serial pour plus d'informations sur de telles cartes. Si un tel PC fait tourner Linux avec getty tournant sur beaucoup de ports série on peut le considérer comme un serveur de terminaux s'il est relié à d'autres PC sur un réseau et si son travail est principalement de transférer les données et de gérer les interruptions du port série tous les 14 octets (ou à peu près). On utilise parfois un logiciel appelé "radius". De nos jours les vrais serveurs de terminaux servent plus que de simples terminaux. Ils servent aussi des PC qui émulent des terminaux, et sont parfois reliés à des racks de modems reliés à des lignes téléphoniques. Certains contiennent parfois des modems intégrés. Si un terminal (ou un PC en émulant un) est relié directement à un modem, le modem à l'autre bout de la ligne devrait être relié à un serveur de terminaux. Dans certains cas le serveur de terminaux par défaut s'attend à ce que l'appelant utilise des paquets PPP, quelque chose que les vrais terminaux texte ne génèrent pas. 11.5 Types de connecteurs et d'adaptateurs Un connecteur est plus ou moins relié de façon permanente à l'extrémité d'un câble ou à une unité matérielle. Il y a deux types de connexions de base : 1. DBxx avec des broches et 2. des connecteurs modulaires de type téléphone. Un adaptateur ressemble à peu près à un connecteur mais il possède deux extrémités. C'est comme un câble qui est si court qu'il ne reste plus de partie câblée du tout -- il ne reste que des connecteurs différents sur chaque extrémité. L'adaptateur se branche de chaque côté. Il permet de relier entre eux deux connecteurs incompatibles en s'interposant entre les deux. Quelquefois le but de l'adaptateur est d'interchanger les fils. Évidemment, on peut utiliser un câble spécial (éventuellement fait maison) pour remplacer pour cet adaptateur. Sexe des connecteurs / adaptateurs Les connecteurs (ou un côté des adaptateurs) sont soit mâles soit femelles. Les connecteurs qui ont des broches sont mâles et ceux qui ont des "trous" sont femelles. Pour les connecteurs modulaires, ceux qui ont les contacts visibles sont les fiches tandis que ceux qui ont les contacts à l'intérieur (pas facile à voir) sont les prises. Les fiches sont mâles ; les prises sont femelles (NdT : mais en français on dit aussi prise pour un connecteur mâle). Types d'adaptateurs Il y a trois type d'adaptateurs de base : les null modem, les changeurs de genre et les adaptateurs de ports. Certains adaptateurs effectuent plus d'une fonction parmi ces trois fonctions. * adaptateur null modem : croise certaines connexions, comme un câble null modem. * changeur de genre : change le sexe d'une extrémité d'un câble. Deux connecteurs du même sexe peuvent maintenant être reliés l'un à l'autre. * adaptateur de port : va d'un type de connecteur à un autre (DB9 vers DB25, etc.). Connecteurs DB Pour savoir comment installer un connecteur DB à l'extrémité d'un câble, voyez installer des connecteurs DB. Ceux-ci sont disponibles en 9 ou 25 broches. Les spécifications EIA-232 demandent des 25 broches mais puisque la plupart de ces broches ne sont pas utilisées sur les ports série ordinaires, 9 broches sont suffisantes. Voyez DB9-DB25 pour la signification des brochages. Les broches sont en général numérotées si vous regardez de suffisamment près ou si vous utilisez une loupe grossissante. Connecteurs modulaires RJ Ceux-ci ressemblent à des connecteurs de téléphone modernes mais ne sont parfois pas compatibles avec les connecteurs téléphoniques. Voyez aussi installer des connecteurs RJ. Il peut y avoir 6, 8 ou 10 conducteurs. RJ11/14 est une fiche de téléphone à 4-6 conducteurs. Une fiche qui lui ressemble est un connecteur MMJ (6 conducteurs) utilisé sur certains modèles tardifs de terminaux VT (et autres). MMJ possède une languette décalée et n'est pas compatible avec RJ11/14. Cependant, certains connecteurs ont été fabriqués et sont compatibles à la fois avec MMJ et RJ11/14. Le brochage MMJ est : 1-DTR, 2-TXD, 3-TXD GND, 4-RXD GND, 5-RXD, 6-DSR. Un câble null modem avec des connecteurs MMJ (ou RJ11/14) reliera : 1-6, 2-5 et 3-4. Notez qu'un tel câble supporte le contrôle de flux DTR/DSR qui n'est pas (encore) supporté par Linux. Faire vous-même votre propre câble null modem à 6 conducteurs est très simple si vous comprenez que le câble téléphonique à 4 conducteurs de votre mur à votre téléphone, utilisé dans des centaines de millions d'habitations, est aussi un câble null modem. Trouvez-en un et câblez votre câble de la même façon. Si vous étalez un tel câble (ou le câble null modem de votre terminal) à plat sur le sol (sans torsion) vous noterez que les deux fiches aux extrémités ont leurs contacts dorés dirigés tous les deux vers le haut (ou tous les deux vers le bas). Bien que ce soit symétrique, c'est aussi null modem si vous y réfléchissez un peu. On pourrait associer un petit nombre de ces câbles avec des coupleurs en ligne et tout fonctionnera correctement car chaque coupleur en ligne est aussi un adaptateur null modem. Deux périphériques null modem en série donnent une connexion directe. RJ45 et RJ48 sont des fiches téléphoniques à 8 conducteurs (ou 10 conducteurs pour certaines applications informatiques). Ceux à 10 conducteurs sont légèrement plus larges et ne rentreront pas dans des fiches à 8 conducteurs. On les utilise à la fois pour des câbles téléphoniques plats et des câbles à paire torsadée ronds. L'extrémité du connecteur côté câble peut être différent pour les câbles plats et ronds et à la fois RJ45 et RJ48 peuvent avoir 8 ou 10 conducteurs, donc assurez-vous que vous choisissez le bon. RJ48 possède un taquet supplémentaire ce qui fait qu'une fiche RJ48 ne rentrera pas dans une prise RJ45 (mais une fiche RJ45 rentrera dans une prise RJ48). On les utilise sur certaines cartes série multiports et dans les réseaux. Voici les numéros de broches pour une prise à 8 conducteurs : Fiche Prise (En regardant à (En regardant la l'extrémité d'un câble) cavité dans un mur) .__________. .__________. | 87654321 | | 12345678 | |__. .__| |__. .__| |____| |____| 11.6 Fabriquer ou modifier un câble Acheter ou fabriquer ? Vous pouvez essayer d'acheter un câble null modem court. On les étiquette souvent comme des câbles d'imprimantes série (mais les imprimantes série ne sont pas très en vogue de nos jours, ni les câbles associés). Malheureusement, ils ne fonctionneront probablement pas pour le contrôle de flux matériel. Assurez-vous que les connecteurs sur les extrémités du câble conviendront aux connecteurs sur votre ordinateur et votre terminal. Mais si vous avez besoin de câbles plus longs pour relier des terminaux ou si vous avez besoin du contrôle de flux matériel, comment obtenez-vous les bons câbles ? Les bons câbles longs tout prêts peuvent s'avérer difficiles à trouver (vous pouvez tenter de les chercher sur Internet), surtout si vous voulez utiliser un minimum (disons 4) de conducteurs. Une option est de les faire faire spécialement, ce qui risque d'être relativement cher bien que vous puissiez trouver quelqu'un pour le faire à des prix à peine plus élevés que ceux tout prêts (c'est ce que j'ai fait). Une autre alternative est de fabriquer le vôtre. Ceci peut nécessiter des outils spéciaux. Si vous pouvez en trouver, du câble d'occasion peut s'avérer faire une bonne affaire mais vous devrez probablement recâbler les connecteurs. La plupart des connecteurs livrés avec les câbles courts sont moulés de manière permanente sur le câble et ne peuvent pas être recâblés mais la plupart des câbles faits sur mesure ou à la main possèdent des connecteurs qu'on peut recâbler. L'avantage de fabriquer votre propre câble est que les compétences que vous acquérerez seront utiles si un câble se casse (ou devient mauvais) ou si vous devez fabriquer un autre câble en vitesse. Numéros de broches Les numéros des broches devraient être gravées sur la partie plastique du connecteur. Chaque broche devrait avoir un numéro juste à côté. Vous aurez peut-être besoin d'une loupe grossissante pour les lire. Installer des connecteurs DB sur les extrémités des câbles Voyez connecteurs DB pour une courte description de ces connecteurs. Malheureusement, la plupart des câbles achetés de nos jours possèdent des connecteurs moulés à chaque extrémité qu'on ne peut pas modifier. Si vous fabriquez des câbles ou en modifiez un existant, vous devrez apprendre à connaître les broches. Il y en a deux sortes : soudées et serties. Les broches serties nécessitent un outil de sertissage spécial et aussi un outil "d'insertion/extraction". Mais une fois que vous avez les outils, fabriquer et modifier un câble est plus rapide que de les souder. Si vous reliez deux fils à la même broche (nécessaire aussi si vous voulez relier une broche connectée à une autre broche) alors la soudure est plus rapide (pour ces broches). C'est dû au fait que les broches serties ne peuvent prendre qu'un fil à la fois, alors que les broches soudées peuvent accepter plus d'un fil par broche. Pour insérer des broches serties, poussez-les simplement à la main ou avec l'outil. Enlever une broche avec l'outil est un peu difficile. Ces instructions seront mieux compréhensibles si vous avez à la fois l'outil et les fils devant vous. Vous devez mettre l'embout de l'outil autour de l'arrière de la broche et l'insérer aussi profond que possible dans le trou (environ 1 cm 1/2.). Certains outils ont une marque (comme un tout petit trou) pour indiquer jusqu'où l'insérer. L'embout de l'outil devrait avoir un creux taillé en pointe pour que vous puissiez placer l'embout autour du fil en le mettant là où le creux est plus large que le fil. L'outil peut avoir deux embouts. Celui qui est le plus difficile à mettre autour du fil est aussi celui qui enlève le fil le plus facilement puisqu'il enveloppe presque complètement le fil. Avec l'embout proprement inséré, tirez à la fois doucement à la fois sur l'outil et sur le fil. Si ça ne vient pas, l'outil n'a sûrement pas été inséré correctement, poussez-le alors plus en avant ou bien tournez-le dans une position différente (ou les deux). Vous auriez peut-être dû utiliser l'autre embout qui entoure mieux la broche. En utilisant cet outil, on peut facilement convertir un câble droit en câble null modem, etc. Vous pouvez avoir des problèmes en utilisant l'outil d'"insertion/extraction". Si les outils ne s'insèrent pas sur le derrière de la broche, il se peut que la broche n'ait pas été sertie correctement sur le fil et tienne plus du carré que du rond, etc. Si une broche commence à sortir mais ne se redresse pas en entier, la broche peut être tordue. Regardez-la sous une loupe grossissante. Redresser une broche avec une pince à épiler peut endommager le plaquage en or. Parfois une broche coincée peut être poussée au dehors avec le bout d'une lame de tournevis épaisse (ou quelque chose de semblable) mais si vous poussez trop fort vous pouvez agrandir le trou en plastique ou tordre la broche. N'essayez pas de souder sauf si vous savez ce que vous faites ou avez lu comment le faire. Installer des connecteurs RJ Ce sont des connecteurs modulaires de téléphones, dont une sorte est utilisée pour la plupart des téléphones ordinaires. Mais il y a beaucoup de sortes différentes (voyez connecteurs modulaires RJ). Ils ne sont pas faciles à réutiliser. Vous pourriez retirer les fils, pousser à l'intérieur un outil pointu qui relèverait les contacts dorés et réutiliser le connecteur. Il y a des outils de sertissage spéciaux qu'on utilise pour les installer ; un outil différent pour chaque sorte. Si vous n'avez pas d'outil de sertissage, l'installation est quand même possible (mais difficile) en utilisant un petit tournevis (et peut-être un marteau). Poussez les fils du câble à l'intérieur et ensuite poussez chaque contact doré vers le bas assez fort avec le petit tournevis qui passera juste entre les stries isolantes entre les contacts. Vous pouvez l'abîmer si vous n'utilisez pas un tournevis avec une tête qui a presque la même épaisseur que les contacts ou si le tournevis glisse du contact alors que vous le poussez vers le bas. Vous pouvez aussi utiliser un petit marteau pour faire contrepoids sur le tournevis (poussez d'abord à la main). Assurez-vous de ne pas abîmer le "levier d'extraction" sur le connecteur quand vous poussez sur les contacts. Ne le posez pas simplement sur une table en poussant les contacts. Il est préférable de mettre une cale (d'environ 1 mm d'épaisseur) qui se placera parfaitement dans la crevasse entre le levier et le corps. Pour une telle cale vous pouvez utiliser du bristol épais, plusieurs cartes téléphoniques ou du bois. Puisque le dessous du connecteur (que vous mettrez sur la table) n'est pas droit (à cause du "levier d'extraction"), assurez-vous que le dessus de la table est recouvert de quelque chose de mou (comme un morceau de carton) pour aider à supporter le connecteur qui n'est pas droit. Encore mieux : vous pourriez mettre une autre cale d'un millimètre sous les 6 premiers millimètres du connecteur en le supportant juste en dessous de la partie visible des contacts. Un dessus de table mou ne peut pas faire de mal non plus. Une autre méthode (je n'ai jamais fait cela) est de mettre le connecteur dans un étau mais faites attention à ne pas casser le connecteur. En comparaison de l'utilisation d'un outil de sertissage, l'installation comme indiqué ci-dessus prend beaucoup plus de temps et est plus sujette aux erreurs mais c'est quelquefois plus expéditif et bien moins cher que d'acheter un outil spécial si vous n'avez qu'un ou deux connecteurs à installer. 12. Mise en place (configuration) en général 12.1 Introduction à la configuration La configuration (mise en place) nécessite à la fois de stocker la configuration dans la mémoire non volatile du terminal et de mettre des commandes dans les fichiers de démarrage (sur votre disque dur) qui se lanceront à chaque fois que l'ordinateur est allumé (ou peut-être aussi à chaque changement de niveau d'exécution). Cette section donne une vue d'ensemble de la configuration et couvre la configuration des principales options de communication à la fois pour le terminal et pour l'ordinateur. Les deux grandes sections suivantes couvrent la configuration du terminal (voyez mise en place du terminal et de l'ordinateur (voyez détails de la mise en place de l'ordinateur (configuration). 12.2 Vue d'ensemble de la mise en place (configuration) du terminal Quand un terminal est installé il est nécessaire de configurer le terminal physique en sauvant (dans sa mémoire non volatile qui n'est pas perdue lorsque l'on éteint le terminal) les caractéristiques qu'il aura au démarrage. Vous pouvez avoir de la chance et avoir un terminal qu'on a déjà configuré correctement pour votre installation de sorte que peu ou aucune configuration sur le terminal ne soit nécessaire. Il y a deux façons simples de configurer un terminal. L'une est de s'asseoir devant le terminal et de parcourir un ensemble de menus de configuration. Une autre est d'envoyer des séquences d'échappement au terminal à partir de l'ordinateur hôte. Avant que vous n'envoyiez quoi que ce soit au terminal (comme les séquences d'échappement ci-dessus), ses options d' interface de communication comme la vitesse de transmission doivent être configurées pour correspondre à celles de l'ordinateur. On ne peut faire ceci qu'en s'asseyant devant le terminal puisqu'il faut configurer la communication correctement avant que l'ordinateur et le terminal ne puissent se "parler". Voyez configuration du terminal. 12.3 Vue d'ensemble de la mise en place (configuration) de l'ordinateur À part peut-être l'envoi de séquences d'échappement à partir de l'ordinateur pour configurer le terminal, il faut configurer l'ordinateur lui-même pour gérer le terminal. Si vous avez de la chance tout ce que vous avez à faire est d'ajouter une commande "getty" dans le fichier /etc/inittab pour qu'une invite "login:" soit envoyée au terminal quand l'ordinateur démarre. Voyez getty (dans /etc/inittab) pour plus de détails. L'ordinateur communique avec le terminal en utilisant un logiciel de pilote de périphérique (qui fait partie du noyau). Le pilote de périphérique série possède une configuration par défaut et est aussi configuré en partie (parfois en totalité) par le programme getty avant de lancer "login" sur chaque terminal. Cependant, des configurations supplémentaires sont souvent nécessaires en utilisant des programmes appelés "stty" et "setserial". Ces programmes (si besoin est) doivent être lancés à chaque fois que l'ordinateur démarre puisque la configuration est perdue à chaque fois que l'ordinateur s'éteint. Voyez détails de la mise en place de l'ordinateur (configuration). 12.4 Beaucoup d'options Il y a énormément d'options de configuration dans lesquelles vous pourrez piocher. Les options de communication doivent être correctes ou le terminal ne fonctionnera pas du tout. D'autres options peuvent être incorrectes, mais ne causeront pas de problèmes puisque les possibilités qu'elles introduisent ne sont pas utilisées. Par exemple, si vous n'avez pas d'imprimante reliée au terminal, la manière dont sont positionnés les paramètres de configuration de l'imprimante dans le terminal n'a aucun effet. Cette dernière affirmation n'est pas correcte à 100 %. Supposez que vous n'avez pas d'imprimante mais que l'ordinateur envoie (par erreur) au terminal une commande pour rediriger tous les caractères (les données) de l'ordinateur vers l'imprimante uniquement. Alors rien ne s'affichera sur l'écran et votre terminal sera mort. Certains terminaux possèdent une option de configuration pour informer le terminal qu'aucune imprimante n'est présente. Dans ce cas le terminal ignorera toute commande qui redirigerait la sortie vers "l'imprimante" et le problème ci-dessus n'arrivera jamais. Cependant, ceci n'apporte pas beaucoup d'aide puisqu'il y a beaucoup d'autres commandes erronnées qu'on peut envoyer à votre terminal et qui sèmeront vraiment la pagaille. Cela arrivera sûrement si vous envoyez un fichier binaire au terminal par accident. Dans certains cas un paramètrage incorrect ne causera aucun problème jusqu'à ce qu'il vous arrive de lancer une application peu connue qui attend du paramètre qu'il soit positionné d'une certaine façon. Certaines options ne concernent que l'apparence de l'affichage et le terminal fonctionnera correctement si elles sont mal positionnées mais ne sera pas aussi beau à regarder. Certaines options ne concernent que le terminal et n'ont pas besoin d'être positionnées sur l'ordinateur. Par exemple : voulez-vous des lettres noires sur un fond clair ? C'est plus agréable à l'oeil qu'un fond noir. Une touche qu'on appuie doit-elle se répéter ? Est-ce que l'écran doit défiler quand une ligne dépasse le bord droit de l'écran ? Est-ce que les touches doivent émettre un cliquetis ? 12.5 Options de l'interface de communication Certains paramètres (options) de communication concernent à la fois le terminal et l'ordinateur et doivent être positionnés exactement à l'identique sur les deux : vitesse, parité, bits/caractères et contrôle de flux. D'autres options de communication ne sont positionnées que sur le terminal (et uniquement certaines d'entre elles sont essentielles pour établir une communication). D'autres encore comme l'adresse et l'interruption (IRQ) du port physique ttyS ne sont positionnées que sur l'ordinateur en utilisant la commande "setserial". Jusqu'à ce que toutes les options essentielles ci-dessus soient paramétrées de manière compatible on ne pourra pas faire de communication série satisfaisante (et sûrement pas de communication du tout) entre le terminal et l'ordinateur. Pour le terminal, on doit positionner ces options à la main avec des menus sur chaque terminal (ou en utilisant une sorte de cartouche spéciale sur chaque terminal). L'ordinateur hôte est configuré en lançant des commandes à chaque démarrage de l'ordinateur (ou quand les gens se loggent). Quelquefois le programme getty (qu'on trouve dans le fichier /etc/inittab) qui démarre le processus login s'occupera de ceci pour l'ordinateur. Voyez getty (dans /etc/inittab). Les paramètres à la fois pour l'ordinateur et le terminal sont : * vitesse (bits/seconde) * parité * bits par caractère * contrôle de flux Certains paramètres essentiels au terminal seul sont : * sélection du port * Positionner la communication en full duplex (=FDX sur les terminaux Wyse) Si le programme getty (dans /etc/inittab) ne peut pas paramétrer la partie côté ordinateur de la manière dont vous le désirez, vous aurez alors besoin d'utiliser l'une des commandes stty et setserial (ou les deux). Vitesse Elle doit être identique à la fois sur le terminal et l'ordinateur. La vitesse est en bits/seconde (bps ou vitesse en bauds). Utilisez la vitesse la plus grande qui fonctionne sans erreurs. Autoriser le contrôle de flux peut rendre possible des vitesses plus élevées. Il se peut qu'on puisse configurer deux vitesses sur le terminal : transmission et réception, qu'on abrège parfois en T et R. On leur donne en général la même valeur puisque stty dans Linux ne semble pas encore avoir l'option de les positionner différemment. (Il y a une option pour faire ceci avec la commande "stty" mais en réalité il semble qu'elle leur donne la même valeur.) Les vitesses courantes sont 300, 600, 1200, 2400, 4800, 9600, 19200, 38400 ... Les vitesses basses (comme 600) sont faites pour les imprimantes et les terminaux à sortie papier. La parité et devriez-vous l'utiliser ? Pour une définition, voyez la parité expliquée. La parité désactivée est souvent la valeur par défaut. Pour activer la parité, vous devez à la fois l'activer et ensuite sélectionner une parité paire ou impaire. Cela ne fait probablement pas de différence si c'est pair ou impair. Pour les terminaux il y a parfois des paramètres de parité pour la transmission et la réception. Vous devriez positionner les deux à la même valeur puisque stty sur l'ordinateur ne permet pas un paramétrage différent. Le port série du PC ne peut pas habituellement supporter differentes parités. Certains terminaux ne sont pas capables de positionner la parité de réception et ignoreront simplement tout bit de parité reçu. Sur certains terminaux plus anciens, si vous utilisez 8 bits de données par octet, la parité ne fonctionnera pas puisqu'il n'y a pas de place au niveau matériel pour le bit de parité supplémentaire. Est-ce vous devriez utiliser la parité ? Il est bon de disposer de la parité, bien qu'elle ne soit pas strictement nécessaire. Si vous n'avez pas de parité, vous pourrez avoir une lettre incorrecte ici ou là et finirez par corriger des fautes d'orthographe qui n'existent pas vraiment. Cependant, la parité a un coût. D'abord, elle est plus compliquée à configurer puisqu'en général par défaut il n'y a pas de parité. Ensuite, la parité diminuera la vitesse avec laquelle les octets traversent le câble puisqu'il y aura un bit supplémentaire par octet. Ceci peut ou peut ne pas diminuer la vitesse effective. Par exemple, un terminal à sortie papier est en général limité par la mécanique du processus d'impression. L'augmentation des octets/seconde quand l'ordinateur (sa puce UART) est en train de transmettre ne conduit qu'à plus de signaux "d'arrêt" de contrôle de flux pour permettre au mécanisme d'impression de rattraper le rythme. À cause des attentes supplémentaires dues au contrôle de flux, la vitesse effective n'est pas meilleure sans parité qu'avec. La situation est identique pour certains terminaux : après avoir mis en place la parité il peut y avoir moins d'attente due au contrôle de flux par unité de temps ce qui résulte en plus de bits/seconde (en moyenne). Cependant, à cause des bits de parité ajoutés, le nombre d'octets/seconde (en moyenne) reste le même. Une possibilité est d'installer les terminaux sans parité. Ensuite si on remarque des erreurs de parité, on peut l'activer plus tard. Pour détecter des erreurs possibles sans parité, regardez des erreurs de frappe que vous ne pensez pas avoir faites. Si vous détectez une telle erreur, rafraichissez l'écran (retransmettez de l'ordinateur). Si l'erreur s'en va, c'est alors sûrement une erreur de parité. Si trop d'erreurs surviennent (comme plus d'une par quelques centaines d'écrans), il faut faire une action corrective comme : activer la parité et/ou réduire la vitesse et/ou utiliser un câble plus court/meilleur. Activer la parité ne réduira pas le nombre d'erreurs mais vous signalera quand une erreur s'est produite. La politique opposée est d'activer la parité dès le départ. Ensuite si on ne voit jamais d'erreur de parité (des symboles d'erreur sur l'écran), sur une période de temps raisonnable, disons un mois ou deux, on peut la désactiver sans danger. Bits/caractère C'est la taille d'un caractère (le nombre de bits de données par caractère, en excluant tout bit de parité). Pour l'ASCII, c'est 7, mais c'est 8 pour les jeux de caractères ISO. Si vous n'allez utiliser que des caractères ASCII, sélectionnez alors 7 bits puisqu'il est plus rapide de transmettre 7 bits que 8. Certains vieux terminaux n'afficheront que des caractères 7 bits. Quel contrôle de flux (prise de contact) ? Il faut choisir entre le contrôle de flux "matériel" (par exemple dtr/cts) et "logiciel" (Xon/Xoff). (le menu du terminal Adds utilise de manière incorrecte "Xon/Xoff" pour indiquer tout type de contrôle de flux.) Bien que le contrôle de flux matériel soit plus rapide (si les deux fils supplémentaires nécessaires sont présents dans le câble et si le terminal le supporte) dans la plupart des cas Xon/Xoff devrait fonctionner correctement. Certaines personnes disent qu'elles ont résolu des problèmes dérangeants (voir ci-dessous) en passant au contrôle de flux matériel mais le contrôle de flux logiciel a bien fonctionné sur les autres installations (et chez moi personnellement). Si vous utilisez le contrôle de flux logiciel (Xon/Xoff) et avez des utilisateurs qui ne le savent pas, ils peuvent alors envoyer par accident un Xoff à l'hôte et bloquer leur terminal. Pendant qu'il est bloqué, ils peuvent très bien taper frénétiquement en une vaine tentative pour le débloquer. Quand alors Xon est enfin envoyé pour rétablir la communication, tout ce qui a été tapé à toute vitesse est exécuté, peut-être avec des résultats inattendus. Ils ne risquent pas ceci avec le contrôle de flux matériel. Voyez contrôle de flux pour une explication sur le contrôle de flux. Sélection du port Puisque la plupart des terminaux possèdent deux connecteurs ou plus derrière eux, il est en général possible de dire que l'un de ces connecteurs sera relié à l'ordinateur et de dire que l'autre connecteur sera le port imprimante. Il peut y avoir un nom à côté du connecteur (regardez-le bien) et ce nom (comme Aux ou Serial 2, ou Modem) peut être donné à la connexion vers l'hôte principal ou vers l'imprimante (ou autre). 12.6 Essai rapide Bien que tout ce qui est au-dessus puisse sembler très compliqué, faire fonctionner un terminal est souvent assez simple. La section installation rapide décrit une manière simple d'essayer de le faire. Mais si cela ne fonctionne pas ou si vous voulez améliorer l'affichage, vous avez besoin d'en lire plus. 13. Détails de la mise en place (configuration) du terminal À part la prochaine sous-section qui décrit l'envoi de séquences d'échappement au terminal, cette section présente principalement les détails de la configuration du terminal à la main en s'asseyant devant le terminal et en se déplaçant entre différents menus. Si vous ne l'avez pas encore fait, vous devriez lire vue d'ensemble de la mise en place (configuration) d'un terminal. C'est mieux si vous avez le manuel du terminal, mais même si vous ne l'avez pas il y a ici des informations concernant beaucoup d'options que vous serez peut-être amené à configurer. Les paramètres de communication tels que la vitesse d'envoi doivent toujours être configurés sur le terminal puisque si vous ne le faites pas ici on ne peut pas communiquer avec le terminal. Une fois que la communication est établie vous avez deux choix pour effectuer le reste de la configuration du terminal. Vous pouvez continuer à faire la configuration à la main sur le terminal et sauver les résultats dans la mémoire permanente du terminal ou vous pouvez le faire en envoyant des séquences d'échappement au terminal à partir de l'ordinateur à chaque fois que le terminal est allumé. Si vous savez comment mettre en place et sauver une bonne configuration dans le terminal ce peut être la meilleure façon. Si vous ne savez pas, vous pouvez simplement envoyer la chaîne d'initialisation de terminfo à votre terminal à chaque fois que vous utilisez le terminal. Peut-être que ne rien faire vous donnera quand même un terminal utilisable. Vous (ou une application) pouvez toujours changer les choses en envoyant certains séquences d'échappement au terminal. 13.1 Envoyer des séquences d'échappement au terminal Une fois que l'interface de communication est en place, le reste de la configuration des terminaux peut parfois être fait en envoyant des séquences d'échappement aux terminaux depuis l'ordinateur. Si vous avez un grand nombre de terminaux, il peut être utile d'écrire (ou de trouver) un script shell pour faire ceci de manière automatique. Il peut (ou non) y avoir une commande à envoyer au terminal pour lui dire de sauver sa configuration en cours dans sa mémoire permanente pour qu'elle soit présente la prochaine fois qu'on allumera le terminal. Il y a une manière simple d'envoyer ces séquences d'échappement et une manière compliquée. Avec la manière simple, vous ne regardez jamais les séquences d'échappement mais envoyez des commandes qui trouvent toutes seules la séquence d'échappement appropriée dans la base de données terminfo et l'envoient. Malheureusement, toutes les séquences d'échappement que vous avez besoin d'envoyer ne sont pas toujours dans la base de données terminfo. Ainsi la manière plus compliquée (mais peut-être meilleure) est d'envoyer directement les séquences d'échappement. Pour cette méthode compliquée vous aurez besoin d'un manuel avancé. Les vieux manuels de terminaux comprenaient autrefois une liste détaillée de séquences d'échappement mais les manuels récents n'en ont généralement pas. Pour les trouver vous devrez peut-être acheter un autre manuel intitulé "manuel du programmeur" (ou similaire) qui n'est pas fourni avec le terminal. Une liste de séquences d'échappement de certains terminaux est sur Internet mais c'est une liste brute et sûrement incomplète. Même sans manuel ou autre, vous pouvez quand même envoyer des commandes pour configurer le terminal en utilisant les programmes "tput" et "setterm". Voyez changer les paramètres du terminal. Vous pourriez simplement envoyer une chaîne d'initialisation au terminal à partir de l'entrée terminfo si la chaîne d'initialisation configure le terminal comme vous le désirez. Voyez chaîne d'initialisation. Excepté si vous pensez envoyer ces séquences de l'ordinateur au terminal à chaque fois que vous allumez ce dernier, vous devez sauver ces paramètres dans la mémoire permanente du terminal. 13.2 Configuration des vieux terminaux Sur les vieux terminaux, cherchez sur le clavier des noms juste au-dessus de la rangée supérieure du pavé numérique. S'ils existent, ces noms peuvent représenter l'action des touches en mode configuration. Certains vieux terminaux peuvent n'avoir qu'un menu de configuration (setup). Certains encore plus anciens possèdent des interrupteurs physiques. Dans certains cas toutes les touches ne sont pas bien nommées mais peuvent être bien cachées. Bien sûr, si vous activez quelque chose en basculant un interrupteur, c'est "sauvegardé" et vous n'avez pas besoin de sauver le paramètre en mémoire permanente. 13.3 Entrer dans le mode de configuration Pour sélectionner des options (configurer) sur le terminal, vous devez d'abord entrer en mode "setup" et ensuite sélectionner des options (c'est-à-dire configurer) en utilisant des menus stockés dans le terminal et affichés sur l'écran. Pour ce faire, le terminal n'a même pas besoin d'être relié à un ordinateur. La manière d'entrer en mode de configuration est expliquée dans le manuel du terminal, mais voici quelques indices qui peuvent aider : S'il y a une touche "setup", essayez de l'enfoncer. Essayez aussi en appuyant sur la touche "Shift" en même temps. * Wyse : essayez d'abord la touche "Shift" + "Select" ; ensuite remplacez Shift par Ctrl dans tout ce qui est au-dessus. * VT, Dorio : F3 peut être la touche de configuration. Sur les VT420 et modèles postérieurs cette touche peut avoir été reprogrammée pour faire autre chose, alors éteignez le terminal. Quand vous remettrez le courant, appuyez sur la touche F3 dès que vous obtenez un message initial à l'écran. * IBM : 3151 : Ctrl-ScrollLock. 3153 : Ctrl-Moins_du_pavé_numérique (ou pareil que pour le 3151). Pour vous déplacer dans les menus de configuration, utilisez les touches fléchées. Utilisez Retour, Espace ou une touche spéciale ("toggle" sur les vieux terminaux) pour sélectionner quelque chose. Pour sortir du mode de configuration choisissez exit dans un menu (ou sur certains vieux terminaux appuyez de nouveau sur la touche setup). 13.4 Options de communication Pour que le terminal fonctionne, il faut paramétrer correctement la vitesse, la parité, le nombre de bits par caractère et le mode de communication. Un contrôle de flux incorrect peut être la cause de la perte ou de la corruption des données affichées à l'écran. On a parlé des options de communication essentielles (à la fois pour le terminal et pour l'ordinateur) dans une autre section : voyez interface de communication. La liste suivante fournit quelques liens dans cette section, ainsi que des options de communication supplémentaires positionnées uniquement sur le terminal. * Vitesse (bits/seconde) (vitesse de transmission) : 9600, 19200, etc. * Parité : aucune, paire, impaire, marque, espace * Bits par caractère {Données} : 7 ou 8 * Contrôle de flux ou prise de contact {Hndshk} : aucun, Xon-Xoff, ou matériel (DTR, etc) + Prise de contact du récepteur {Rcv Hndshk} protège les données reçues par le terminal en envoyant des signaux de contrôle de flux à l'hôte. + Prise de contact de l'émetteur {Xmt Hndshk} est une protection des données transmises par le terminal. Le terminal reçoit des signaux de contrôle de flux (et bloque/débloque le clavier). Comprend "Xon/Xoff entrant". * Nombre de bits d'arrêt : 1 ou 2. Voyez séquence de tension pour un octet * Niveau de contrôle de flux {Rcv Hndshk Level} {{Xoff à ...}} : le contrôle de flux enverra un "arrêt" quand ce nombre d'octets sera dépassé dans le tampon du terminal. * Mode de communication {Comm} : Full Duplex {FDX}, Half Duplex {HDX} {{Local Echo}}, Mode Local {{Online/Local}} * Limite du taux de transmission (vitesse) {Xmt Lim} : limite le taux de transmission au nombre de cps (caractères par seconde) spécifié même si la vitesse est plus grande. * Limite du taux de touches de fonction : comme ci-dessus mais pour les messages de touches de fonction. * Sélection du port : quel connecteur physique va à l'hôte {Host Port} ? 13.5 Sauver la configuration Votre configuration doit être sauvée dans la mémoire permanente du terminal pour être en place la prochaine fois que vous allumez le terminal. Si vous manquez à cette sauvegarde, les nouveaux paramètres seront perdus quand vous éteindrez le terminal. Avant de vous fatiguer à configurer un terminal, assurez-vous que vous savez sauvegarder les paramètres. Sur les terminaux modernes la commande de sauvegarde se fait grâce à un menu. Dans certains vieux terminaux, seul le manuel vous indique comment sauver. Pour beaucoup d'entre eux, pressez Ctrl-S pour sauver. 13.6 Paramètres/options de configuration Voyez la page de configuration de Teemworld pour avoir une description d'un grand nombre de ces paramètres utilisés en émulation de terminaux. L'émulation est souvent légèrement différente du terminal réel. Ce qui suit dans cette section décrit certaines options disponibles dans les menus de configuration de beaucoup de terminaux. Les options sont aussi appelées paramètres ou capacités. Beaucoup d'options sont parfois appelées "modes". Paramétrer des options est souvent appelé "configurer". On peut paramétrer beaucoup de ces options en envoyant certaines séquences d'échappement au terminal. Des modèles et marques différents de terminaux ont des options variées et la même option peut avoir des noms différents (qu'on ne donnera pas tous ici). Les noms abrupts utilisés par Wyse sont entourés de {...}. Les noms utilisés principalement pour les terminaux VT sont entourés de {{...}}. 13.7 Émulation {Personnalité} {{Modes de terminaux}} La plupart des terminaux modernes peuvent émuler plusieurs autres terminaux. Le terminal peut sûrement faire plus si on le fait s'émuler lui-même (en fait sans émulation) {personnalité native}. Quelque fois il y deux émulations différentes pour le même modèle de terminal. Par exemple, VT220-7 émule un VT220 avec 7 bits par octet alors que VT220-8 émule un VT220 avec 8 bits par octet (256 caractères possibles). Des vieux modèles de terminaux possèdent en général moins de possibilités que les modèles plus récents. Supposez qu'on veuille émuler un vieux terminal tout en gardant certaines possibilités avancées du modèle de terminal plus récent devant lequel on s'assied. Ceci est parfois possible (jusqu'à un certain niveau). Cette possibilité est parfois appelée {Enhance} (ou Enhanced ??). 13.8 Options d'affichage Taille de cellule de caractère{Char Cell} C'est la taille de la cellule dans laquelle tient un caractère. On la mesure en pixels (= petits points). Plus il y a de points, meilleure est la résolution. 10x16 représente 10 points de large sur 16 points de haut (16 lignes et 10 colonnes). Notez que la notation est inversée par rapport à la notation de la dimension des matrices qui donnent les lignes (la hauteur) d'abord. De même, la cellule de caractère comprend les lignes et les colonnes allouées à l'espace entre des caractères adjacents, donc la taille de la cellule qui définit les bords d'un caractère réel peut être plus petite. Colonnes / lignes En général il y a 80 colonnes et 24 ou 25 lignes. Ceci veut dire qu'il peut y avoir jusqu'à 80 caractères sur une ligne de l'écran. Beaucoup de terminaux possèdent une option de 132 caractères par colonne mais, sauf si vous avez un grand écran, les petits caractères peuvent être difficiles à lire. {{Activer le mode 132 colonnes}} Curseur On peut paramétrer le curseur pour qu'il apparaisse comme un rectangle (= bloc) {Blk}. D'autres options sont le souligné {Line} ou le clignotement. Je préfère un bloc non clignotant {Steady} puisqu'il est suffisamment grand pour qu'on le trouve rapidement sans qu'il y a ait de clignotement distrayant. Si vous le rendez invisible (une option sur certains terminaux) il disparaîtra mais les nouveaux caractères apparaîtront à l'écran au fur et à mesure que vous tapez sous le curseur invisible. Attributs d'affichage (cookies magiques) Les attributs d'affichage peuvent être soit des cookies magiques soit des octets d'attributs assignés à chaque caractère. Pour les cookies magiques, il y a une limite à leur étendue : leur effet s'étend-il jusqu'à la fin de la ligne ou jusqu'à la fin de la page ? Il est mieux d'utiliser des octets d'attributs (qui peuvent en réalité être des demi-octets = petits bouts). Caractères de contrôle d'affichage {Monitor} Ils peuvent avoir des noms variés tels que "contrôles d'affichage". Désactivés (par défaut), ils veulent dire "interpréter les caractères de contrôle". Quand on les active, vous voyez les séquences d'échappement de l'hôte (que vous ne voyez jamais à l'écran en temps normal). Pour que ces séquences soient visualisées d'un coup sur une ligne, le terminal ne les interprète pas, sauf la séquence CR LF, qui crée une nouvelle ligne. Voyez codes de contrôle. Largeur/hauteur double Certains terminaux peuvent afficher des caractères en largeur et/ou en hauteur double. Cette possibilité est rarement nécessaire. En changeant une ligne en largeur double (DW = Double Width) la moitié gauche (RH = Right Half) est poussée à l'extérieur de l'écran et il faut se poser la question de l'effacer ou non. "Préserver" veut dire garder la moitié gauche des lignes en largeur double. En mode hauteur double, il peut être nécessaire d'envoyer chacune de ces lignes deux fois (la deuxième fois une ligne plus bas) pour obtenir une ligne en hauteur double à l'écran. Vidéo inverse {Display} (Fond clair/foncé) La vidéo normale consiste en des lettres (premier plan) claires (blanches, vertes, ambre) sur un fond foncé (noir). La vidéo inverse {Display Light} est le contraire : du texte noir sur un fond clair. Cela est plus commode pour les yeux (sauf si la pièce est sombre). Ligne d'état Une ligne d'état est une ligne en haut ou en bas de l'écran qui affiche des informations sur l'application en cours d'utilisation. Elle est souvent mise en valeur d'une certaine manière. Avec une telle ligne d'état, une application peut envoyer au terminal une séquence d'échappement spéciale qui veut dire que le texte qui suit concerne la ligne d'état. Cependant, beaucoup d'applications n'utilisent pas cette possibilité et à la place simulent une ligne d'état réelle en positionnant directement le curseur. L'utilisateur de base qui le regarde ne voit pas la différence. Pendant le changement 80/132 : effacer ou préserver ? En basculant le nombre de colonnes de 80 à 132 (ou l'inverse), est-ce que les données affichées dans le format précédent doivent être effacées ou préservées ? {80/132 Clr} {{Screen Width Change}}. La manière dont vous positionnez cette option ne devrait pas faire de différence puisque si une application utilise 132 colonnes, elle devrait positionner cette option correctement grâce à une séquence d'échappement. 13.9 Options liées aux pages Pour qu'un terminal Wyse puisse accéder à plusieurs pages dans la mémoire d'affichage, il faut activer {Multipage}. Taille de la page La mémoire du terminal peut être divisée en un certain nombre de pages. Voyez pages et pages (définition) pour une explication sur les pages. Vous pouvez partitionner la mémoire de pages en un certain nombre de pages de taille déterminée. Les applications Linux ne semblent pas utiliser les pages pour le moment, il ne devrait donc pas y avoir de différence au niveau de la configuration. Couplage (du curseur et de l'affichage) La mémoire du terminal peut être divisée en un certain nombre de pages. Voyez pages et pages (2) pour avoir une explication sur les pages. Quand on déplace le curseur à un endroit en mémoire vidéo qui n'est pas affichée à cet instant (comme une autre page, ou sur la même page mais à un endroit non affiché à l'écran), est-ce que l'affichage doit suivre pour que l'on voie la nouvelle position du curseur ? Si c'est le cas, c'est ce qu'on appelle le "couplage". En ce qui concerne le mouvement du curseur dans la même page, il y a le "couplage vertical" et le "couplage horizontal". En ce qui concerne le mouvement vers une autre page, il y a le "couplage de page". 13.10 Faire un rapport et répondre Le terminal donnera son identité et son état, ou enverra un message pré-enregistré en réponse à certaines séquences d'échappement. Message de réponse (chaîne) Vous pouvez écrire un message court pendant la configuration qui peut être envoyé de manière optionnelle à l'hôte durant le démarrage ou être envoyé à l'hôte en réponse à une demande de l'hôte (peut-être le caractère de contrôle ENQ (enquire, demande)). Réponse automatique Si ce paramètre est positionné, envoie le message de réponse à l'hôte durant le démarrage sans que l'hôte le demande. Est-ce qu'un processus "getty" quelconque cherchent ce message ?? Réponse cachée Si ce paramètre est positionné, il ne laissera personne voir le message de réponse (sauf bien sûr l'ordinateur hôte). S'il faut le modifier, désactivez "réponse cachée" et le message précédemment caché sera détruit pour que vous puissiez alors entrer un nouveau message (mais vous ne verrez pas le message précédent). Numéro ID du terminal {ANSI ID} Le terminal envoie cette réponse à la réception d'une demande d'identité. 13.11 Options du clavier Clic de touche Quand ce paramètre est positionné, la pression de n'importe quelle touche provoque un cliquetis (émis par un minuscule haut-parleur dans le clavier). Ces cliquetis ennuient certaines personnes et je pense qu'il est mieux de désactiver cette option. Verrouillage majuscule {Keylock} Quand la touche de verrouillage majuscule est enfoncée, les touches alphabétiques doivent-elles être les seules à générer des caractères en majuscule ? Si le paramètre est positionné à {Caps} ou majuscule uniquement (upper-case-only), alors l'appui sur une touche numérique avec le verrouillage majuscules tapera le chiffre en question. Pour obtenir le symbole au-dessus du chiffre il faudra appuyer sur la touche shift à la main. C'est le mode normal. S'il est positionné sur {Shift} toutes les touches tapent alors le caractère "décalé" quand le verrouillage majuscules est enfoncé (l'appui sur la touche 5 devrait afficher % sans devoir appuyer sur Shift, etc.) NdT : sur les claviers français, c'est l'inverse, les chiffres étant normalement obtenus en appuyant sur la touche Shift. Répétition automatique {Repeat} Si on maintient une touche enfoncée, celle-ci est "tapée" de manière répétée. Cela est pratique pour taper répétitivement le même caractère pour créer une ligne à travers une page. Sonnette de marge Quand le curseur arrive à 8 colonnes du bord droit de l'écran, une sonnette sonne (comme sur une vieille machine à écrire). Quasiment tous les éditeurs créeront automatiquement une ligne nouvelle si nécessaire (pas besoin d'appuyer sur la touche entrée), par conséquent cette possibilité est rarement nécessaire. Redéfinir les touches Le code envoyé à l'hôte quand on appuie sur une touche correspond normalement au code ASCII de cette touche (et dépend aussi des touches Shift et Control). Sur certains terminaux vous pouvez faire en sorte que n'importe quelle touche envoie n'importe quel code. C'est-à-dire que vous pouvez complètement redéfinir le clavier en configurant le terminal de cette façon. Cela peut être utile pour certaines langues étrangères et pour les claviers Dvorak etc. qui vous permettent de taper plus rapidement. Touche de coin (uniquement pour les Wyse) Les terminaux Wyse possèdent une touche près du coin inférieur gauche qu'on peut configurer pour des fonctions variées. Elle peut être appelée "Funct", "Compose Character", "Alt", "Hold" or "Scroll Lock". Les modèles récents n'ont pas toutes les options suivantes : Quand on la met sur {Hold} (arrêt du défilement, No-Scroll), elle permet d'arrêter le flux de données (en utilisant le contrôle de flux) vers le terminal. L'appui à nouveau sur cette touche redonne un flux normal. Quand on la met sur {Compose} elle permet de générer un nombre limité de caractères non-latins prédéfinis. Quand on la met sur Meta, cela en fait une touche Meta qui positionne le bit de haut rang sur chaque octet. Quand on la met sur {Funct} (et qu'on l'enfonce), chaque touche alphanumérique enfoncée envoie un octet préfixe (SOH) et un octet suffixe (CR) qui encadrent le code de l'octet ASCII. Quand on la met sur {Kpd Compose} (et qu'on l'enfonce) alors la frappe d'un nombre décimal sur le pavé numérique (suivi de "entrée") envoie le même chiffre en hexadécimal ?? Envois grâce au pavé numérique ou aux touches fléchées On peut configurer le pavé numérique (le rectangle de touches presque toutes numériques à la droite de la partie principale du clavier) pour envoyer des codes spéciaux qui feront certaines choses dans certaines applications. Idem pour les touches fléchées. Il y a donc un mode "normal" où elles envoient ce qui est marqué sur la touche (ou la séquence d'échappement normale pour une touche fléchée) et un mode "application" où une séquence d'échappement spéciale est envoyée. Dans certains cas il y a un mode numérique "hexadécimal" qui ressemble au mode numérique à la différence que 6 touches non numériques envoient les lettres A à F. On peut ainsi taper par exemple "B36F" sur le pavé numérique. Qu'envoient les touches Shift+Del et Shift+Backspace ? Selon la manière dont les touches sont configurées Shift-Del envoie parfois le caractère de contrôle CAN et Shift-Backspace envoie parfois DEL. Codes de balayage PC Les terminaux récents peuvent émuler un clavier de PC en envoyant des codes de balayage PC (voyez le Keyboard-and-Console-HOWTO) au lieu de codes ASCII. Cela pourrait être utilisé si vous étiez directement relié à un PC sous DOS/Windows. Positionnez {Keycode} sur {Scan}. L'émulation du "PCTerm" DEC devrait faire la même chose et même plus. Un port série sous Linux ne peut pas s'occuper de tels codes de balayage. Caractères alternés Certaines touches peuvent contenir des lettres alternatives. Quand on positionne les touches sur "machine à écrire" (Typewriter) elles envoient ce qu'elles enverraient normalement sur une machine à écrire. Quand on les positionne sur autre chose, les caractères alternatifs sont envoyés. 13.12 Signification des codes de contrôle reçus Nouvelle ligne automatique {Newline} Dans ce cas "nouvelle ligne" veut dire une ligne nouvelle démarrant sur le bord gauche en dessous de la ligne en cours. Sous Linux et en C "nouvelle ligne" (NL) peut avoir une signification différente : le caractère de saut de ligne LF qu'on appelle aussi nouvelle ligne ou NL. C'est parce que dans les fichiers texte Linux, le caractère LF veut dire "une nouvelle ligne commence ici" et donc on l'appelle NL. Normalement, un LF (NL) envoyé à un terminal ne fait que descendre le curseur d'une ligne par rapport à l'endroit où il se trouvait et ne donne pas une nouvelle ligne. Si le paramètre Auto New Line (nouvelle ligne automatique) est positionné, la situation "normale" ci-dessus est annulée et une nouvelle ligne physique est créée sur l'écran en recevant un LF de l'hôte. C'est exactement ce qu'on veut sous Linux. Sauf que (quand Auto New Line est positionné) la touche Retour (ou Entrée) envoie une séquence CR LF à l'hôte (pour les Wyse et les VT100, mais pour les VT420 ??). Puisque Linux utilise LF comme marqueur de "nouvelle ligne" dans les fichiers, Linux n'aimerait recevoir qu'un LF (et pas un CR LF). L'option "New Line" est par conséquent rarement utilisée. À la place, les traductions nécessaires sont effectuées par le pilote du port série par défaut. C'est comme si on envoyait la commande "stty onlcr icrnl" mais vous n'avez pas besoin de le faire puisque c'est le comportement par défaut. Saut de ligne automatique {Rcv CR} Cela est simplement un autre type de "nouvelle ligne automatique". Quand un caractère CR (retour chariot) est reçu, une action LF (saut de ligne) est ajoutée ce qui résulte en l'affichage d'une nouvelle ligne. Puisque Linux marque les fins de lignes par LF, cette option n'est pas utilisée. Reconnaître DEL (seulement pour Wyse ??) ou NULL Si ce paramètre est désactivé, tout caractère DEL reçu par le terminal est ignoré. S'il est activé, DEL effectue un retour en arrière destructif. Les caractères NULL sont en général ignorés dans n'importe quel cas. Les caractères DEL et NULL sont parfois utilisés ensemble pour faire du remplissage. Voyez Remplissage. 13.13 Où va le nouveau texte Passage à la ligne On l'appelle aussi passage automatique (Auto Wrap, Auto Wraparound). Qu'arrive-t-il quand on atteint le bord droit de l'écran (colonne 80, etc.) et que l'hôte n'a pas envoyé de caractère retour (ou autre) ? Si le passage à la ligne est activé, le reste de la ligne s'affiche alors sur la ligne suivante, etc. Sinon, le reste de la ligne est perdu et n'est pas affiché à l'écran. Toute application qui se respecte devrait envoyer des caractères "retour" pour que le passage s'effectue avant d'atteindre le bord de l'écran. Cependant une commande de copie brute (et d'autres situations) peut ne pas le faire, il est donc en général mieux de positionner le passage à la ligne. Pour un écran de 80 colonnes, la plupart des terminaux ne passent à la ligne que si le 81ème caractère venant de l'hôte est un caractère graphique (imprimable). Cela autorise les cas où le 81ème caractère venant de l'hôte peut être un "retour" ou "nouvelle ligne" (caractères non graphiques) qui veut dire que l'application gère bien le passage à la ligne et le terminal n'a pas besoin d'intervenir. Défilement Le défilement {Scrl} est quand toutes les lignes de l'écran se déplacent vers le haut ou vers le bas. On parle aussi de "panoramique" (pan), ce qui comprend un mouvement sur les côtés. Dans le défilement ordinaire, les lignes disparaissent vers le bas ou vers le haut de l'écran et de nouvelles lignes envoyées par l'hôte apparaissent sur le bord opposé (haut ou bas). Il y en a trois sortes : doux, par sauts ou instantané. Le défilement instantané n'est pas vraiment un défilement puisqu'il y a remplacement instantané d'une page écran par une nouvelle (bien que certaines lignes du nouvel écran puissent provenir de l'écran précédent). Le défilement par sauts est quand les nouvelles lignes arrivent en sautillant les unes après les autres [ NdT : en fait, elles arrivent une à la fois, mais la tentation était trop forte ;-) ]. Le défilement doux {Smth} est quand le texte se déplace à une vitesse soutenue vers le haut ou vers le bas. Si la vitesse de défilement douce est suffisamment lente, on peut lire les lignes qui apparaissent alors qu'elles sont encore en train de bouger (en mouvement). Le défilement doux sur les terminaux lents était utile autrefois puisqu'on pouvait continuer à lire alors que l'affichage défilait. Mais avec les vitesses de transfert plus rapides, le défilement par sauts est si rapide qu'on ne perd que peu de temps en attendant l'apparition du nouvel affichage. Puisque la lecture d'un texte qui défile prend légèrement plus de temps que la lecture d'un texte fixe, on peut en fait perdre plus de temps si on sélectionne un défilement doux. Si on désactive le défilement automatique {Autoscrl}, le nouveau texte venant de l'hôte doit aller quelque part, alors il est mis en haut de l'affichage. Si l'ancien texte n'est pas effacé, le nouveau texte se mélange (de façon insensée) à l'ancien. Si le vieux texte est effacé, le nouveau texte sort alors de son contexte. Conservez donc le défilement automatique. Nouvelle page ? Voyez pages et pages (définition) pour avoir une explication sur les pages. Quand la page courante est pleine (la dernière ligne est terminée), est-ce que la page doit défiler, ou est-ce qu'une nouvelle page doit être créée (laissant la page précédente stockée dans la mémoire d'affichage du terminal) ? Si le paramètre {Autopage} est positionné, une nouvelle page est créée. Puisque vous n'utilisez probablement pas les pages, vous devriez sûrement désactiver ce paramètre. 13.14 Touches de fonction Ce sont les touches nommées F1, F2, etc. Sur les vieux terminaux elles s'appellent peut-être PF1, PF2, etc. où le P veut dire (P)rogrammable. Certains claviers ont les deux. On peut programmer (redéfinir) ces touches pour envoyer une chaîne d'octets définie par l'utilisateur. On peut souvent les "programmer" facilement en utilisant un certain menu de configuration {FKey}. Sur certains terminaux, on peut aussi spécifier où la chaîne est envoyée quand on appuie sur la touche. En mode "normal" l'appui sur la touche ressemble à la frappe d'une chaîne au clavier. En mode "local" l'appui sur la touche envoie la chaîne au terminal (comme si le terminal était en mode local). On peut utiliser cela pour envoyer des séquences d'échappement au terminal pour le configurer d'une manière spéciale. En mode "lointain" la chaîne est toujours envoyée sur le port série vers l'ordinateur hôte (même si le terminal est en mode local). 13.15 Options en mode par blocs Certaines options ne concernent que le cas du mode par blocs. Cette option est utile puisqu'elle fournit des formulaires et retire une charge à l'hôte en transmettant par rafales. Mais c'est plus compliqué à configurer et ce n'est donc pas beaucoup utilisé. Affichage de formulaires En mode par blocs, certaines parties de l'écran concernent le texte des formulaires et sont donc protégées en écriture "Prot" {WPRT}. Des options peuvent faire que les caractères dans ces parties apparaissent assombris, en vidéo inverse {WPRT Rev} et/ou soulignés {WPRT Undrln}. {WPRT Intensity} (l'intensité) peut être sombre, normale ou même vierge (invisible). Envoi par blocs Est-ce que le texte protégé en écriture (le texte d'origine du formulaire) doit être envoyé à l'hôte lors de la transmission d'un bloc : {Send All} ou est-ce que le texte protégé en écriture est aussi protégé en lecture : {Send Erasable} ? Partie à envoyer Doit-on envoyer l'écran entier ou simplement la partie qui défile ? {Send Area}. L'envoi doit-il s'arrêter quand la position courante du curseur est atteinte ? Si {Xfer Term} est mis sur Cursor, seules les données sur l'écran jusqu'au curseur sont envoyées. Délimiteur de bloc / de page Quel est le symbole de délimitation à ajouter à un bloc de données ? {Blk End} ou à la fin d'une page {Send Term}inaison. 13.16 Blocages Il y a divers types de blocages. L'un est le clavier bloqué à cause du contrôle de flux. Voyez blocage du clavier. Un autre blocage {Feature Lock} est celui qui empêche l'ordinateur hôte de modifier la configuration du terminal en envoyant certaines séquences d'échappement au terminal. Placer un tel verrou peut provoquer des comportements inattendus quand les applications enverront des séquences d'échappement qui seront ignorées par le terminal. Tous les paramètres de configuration ne sont pas verrouillés. Sauf si vous avez une bonne raison de le faire, vous ne devriez pas activer de tels verrous. Un blocage de touche de fonction empêchera l'ordinateur de redéfinir ce qu'envoie une touche de fonction programmable. Vous voudrez utiliser cela si vous avez programmé quelque chose d'important dans les touches de fonction. 13.17 Économiseur d'écran {Scrn Saver} On l'appelle aussi "CRT Saver" (NdT : ce qui revient au même). Ceci éteint (ou diminue la luminosité) de l'écran quand le terminal n'est pas utilisé pendant un certain temps. La durée de vie de l'écran est prolongée et cela peut économiser de l'énergie. L'appui sur une touche permettra en général de retrouver l'écran et peut "exécuter" cette touche donc il est préférable d'appuyer sur la touche Shift etc. 13.18 Imprimante Pour les Wyse, s'il n'y a pas d'imprimante reliée, désactivez {Printer Attached}. Ce n'est pas essentiel de faire ceci, mais si vous le faites toute séquence d'échappement envoyant du texte à l'imprimante (au lieu du terminal) sera ignorée. Paramétrer le port de l'imprimante est à peu près la même chose (en général plus simple) que de paramétrer les communications sur le port principal. Il y a quelques options spécifiques à l'imprimante. Est-ce une imprimante série ou parallèle ? Si c'est parallèle, on doit la désigner comme telle dans la configuration et la connecter sur le port parallèle du terminal (s'il y en a un). Doit-on envoyer un FF (saut de page) à l'imprimante à la fin d'un travail d'impression ? Si {Print Term} est mis sur FF, c'est ce qui se passera. 14. Détails de la configuration de l'ordinateur Il faut éditer plusieurs fichiers pour configurer l'ordinateur pour gérer le terminal. Si vous avez de la chance, vous ne devrez éditer que /etc/inittab. On fait ce travail d'édition à partir de la console (ou de n'importe quel terminal qui fonctionne). 14.1 Getty (dans /etc/inittab) Afin de lancer un processus de login sur un port série quand l'ordinateur démarre (ou change de niveau d'exécution) une commande getty doit être placée dans le fichier /etc/inittab. Getty permet de faire fonctionner (GET) un terminal (TTY). Chaque terminal a besoin de sa commande getty. Il y a aussi au moins une commande getty pour la console dans chaque fichier /etc/inittab. Trouvez-la et ajoutez-y les commandes getty pour les vrais terminaux. Ce fichier peut contenir des lignes d'exemples de commandes getty pour les terminaux texte mises en commentaire, et donc tout ce qu'il vous reste à faire est d'enlever les commentaires (enlevez le # au début de la ligne) et de modifier quelques arguments. Les arguments autorisés dépendent du getty que vous utilisez : Les deux meilleurs getty pour les terminaux reliés de manière directe sont : * agetty (qu'on appelle parfois simplement getty) : très facile à configurer. Pas de fichiers de configuration. Voyez Agetty ; * Voyez getty (fait partie du paquet getty_ps) ; Les deux gettys plus appropriés pour les modems (évitez-les pour les terminaux) sont : * mgetty : le meilleur pour les modems ; fonctionne avec les terminaux mais inférieur ; * uugetty : uniquement pour les modems, fait partie du paquet getty_ps ; Un getty simple à utiliser uniquement pour les logins sur la console : * mingetty : uniquement pour les consoles. Si vous n'avez pas le getty que vous désirez, cherchez-le dans d'autres distributions et utilisez le programme alien pour le convertir entre paquets RPM et Debian. Le code source sur Metalab (logiciels série). Si vous n'utilisez pas les lignes de contrôle du modem (par exemple si vous n'utilisez que les 3 conducteurs minimums : transmission, réception et masse commune) vous devriez le faire savoir à getty en utilisant un drapeau "local". Le format de celui-ci dépend du getty que vous utilisez. Agetty (peut s'appeler getty) Un exemple de ligne dans /etc/inittab : S1:23:respawn:/sbin/getty -L 19200 ttyS1 vt102 S1 vient de ttyS1. 23 veut dire que getty est lancé en entrant dans les niveaux d'exécution 2 ou 3. respawn veut dire que si getty est tué, il se relancera automatiquement. /sbin/getty est la commande getty. Le -L veut dire Local (ignorer les signaux de contrôle du modem). -h (non montré dans l'exemple) permet le contrôle de flux matériel (même chose que stty crtscts). 19200 est la vitesse de transmission. ttyS1 veut dire /dev/ttyS1 (COM2 sous MS-DOS). vt102 est le type de terminal et ce getty donnera cette valeur à la variable d'environnement TERM. Il n'y a pas de fichiers de configuration. Tapez "init q" sur la ligne de commande après avoir édité la ligne de getty et vous devriez apercevoir une invite de login. La détection de parité de Agetty Le programme agetty détectera automatiquement la parité configurée dans le terminal. Excpté si vous utilisez 8bit d'octet de données avec 1-bit de parité. Si vous utilisez stty pour fixer la parité, agetty la désactivera automatiquement puisqu'il veut que le bit de parité passe comme si c'était un bit de donnée. C'est parce qu'il a besoin d'obtenir le dernier bit (qui peut être un bit de parité) pendant que vous tapez votre nom de login afin d'auto-détecter la parité. Donc, si vous utilisez la parité, ne l'activez que du côté du terminal et laissez agetty la détecter automatiquement et la positionner sur l'ordinateur. Si votre terminal supporte la parité en réception, l'invite de login sera brouillée jusqu'à ce que vous tapiez quelque chose et que getty positionne la parité. L'invite brouillée repoussera les visiteurs etc. qui essaient de se logger. Cela peut être exactement ce que vous voulez. Il y a parfois des problèmes avec l'autodetection de parité. Cela arrive car après la première frappe de votre login, agetty utilise le programme login pour finir de vous loguer. Si le premier essai de login échoue, login se relance pour s'occuper des éssais futurs de login (incluant l'écriture de votre login). Le problème est que seulement agetty peut detecter la parité tandis que le programme login ne le fait pas. Donc, si vous remontez dans le programme login pour quelque raison que ce soit et que la parité n'a pas encore été détectée, vous etes en difficulté tant que le programme login ne peut pas detecter la parité. Avec une mauvaise parité, login ne peut pas lire correctement ce que vous écrivez et vous ne pouvez pas vous loguez. Si votre terminal supporte la réception de parité, vous continuerez à voir un écran brouillé. On peut arriver dans cette "boucle de login" de plusieurs façons. Supposez que vous tapez une ou deux lettres seulement pour votre login et que vous tapez Entrée. Si ces lettres ne sont pas suffisantes pour la detection de parité, alors login se lancera avant que la parité soit detectée. Quelque fois ce problème arrive si vous n'avez pas le terminal allumé et connecté quand agetty démarre pour la première fois. Si vous restez bloqué dans cette "boucle de login", une solution est d'attendre à peu près une minute, le temps qu'agetty se relance dû au "timeout". La parité d'Agetty avec des octets de données de 8-bit Malheureusement, agetty ne peut pas detecter cette parité. Il (fin 1999) n'y a pas d'options pour desactiver l'auto-detection de parité et cela detectera les parités incorrects. Le résultat est que le processus de login sera brouillé et la parité sera mal reglé. Ainsi il ne parait pas faisable d'essayer d'utiliser des octets de données de 8-bit avec parité. getty (fait partie de getty_ps) (Ceci est tiré du vieux Serial-HOWTO de Greg Hankins). Ajoutez des entrées pour getty pour utiliser votre terminal dans le fichier de configuration /etc/gettydefs si elles ne sont pas déjà présentes : # 38400 bps Dumb Terminal entry DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400 # 19200 bps Dumb Terminal entry DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200 # 9600 bps Dumb Terminal entry DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600 Si vous voulez, vous pouvez faire en sorte que getty affiche des choses intéressantes dans la bannière de login. Dans mes exemples, je fais afficher le nom du système et la ligne série. Vous pouvez ajouter d'autres choses : @B la vitesse courante (évaluée au moment où @B est rencontré). @D la date courante, au format MM/JJ/AA. @L la ligne série à laquelle est attaché getty. @S le nom du système. @T l'heure courante, au format HH:MM:SS (24 heures). @U le nombre d'utilisateurs actuellement loggés. C'est le compte du nombre d'entrées dans le fichier /etc/utmp qui possèdent un champ ut_name non nul. @V la valeur de VERSION, donnée dans les fichiers de valeurs par défaut. Pour afficher un caractère '@', utilisez soit '\@', soit '@@'. Quand vous avez fini d'éditer /etc/gettydefs, vous pouvez vérifier que la syntaxe est correcte en faisant : linux# getty -c /etc/gettydefs Assurez-vous qu'il n'y a pas de fichier de configuration getty ou uugetty pour le port série auquel est attaché votre terminal (/etc/default/{uu}getty.ttyS_N_ ou /etc/conf.{uu}getty.ttyS_N_), car cela entrera sûrement en conflit avec le lancement de getty sur un terminal. Enlevez le fichier s'il existe. Éditez le fichier /etc/inittab pour lancer getty sur le port série (en mettant les informations correctes pour votre environnement -- port, vitesse et type de terminal par défaut) : S1:23:respawn:/sbin/getty ttyS1 DT9600 vt100 Relancez init : linux# init q À ce point, vous devriez voir une invite de login sur votre terminal. Vous devrez peut-être appuyer sur Retour pour que le terminal soit attentif. mgetty Le "m" veut dire modem. Ce programme est d'abord destiné aux modems et en mi-1999 ne fonctionnait pas toujours très bien pour les terminaux texte. Il est très mal documenté pour les terminaux et vous devrez parcourir beaucoup de documentation sur les modems pour déterminer comment l'utiliser pour un terminal. Regardez les dernières lignes de /etc/mgetty/mgetty.config pour avoir un exemple de la configuration d'un terminal. [Note du relecteur : je le trouve au contraire bien documenté (janvier 1999) dans man mgetty : un mgetty -r -s 9600 /dev/ttyS0 (par exemple) est suffisant. Le -r indique que la connexion est directe (sans modem).] Ceci sera, espérons-le, réparé dans le futur. Il serait bien d'avoir le même getty à la fois pour les terminaux et les modems mais mgetty nécessite quelques améliorations avant de convenir pour les deux utilisations. 14.2 Stty et Setserial Il y a à la fois une commande "stty" et une commande "setserial" pour configurer les ports série. Certains (ou tous les) paramètres stty nécessaires peuvent être positionnés grâce à getty et il peut ne pas être nécessaire d'utiliser setserial ; l'utilisation de ces deux commandes peut donc ne pas être nécessaire. Celles-ci (stty et setserial) paramètrent différents aspects du port série. Stty en fait la plupart tandis que setserial configure la partie bas niveau comme les interruptions et les adresses de ports. Pour "sauvegarder" les paramètres, ces commandes doivent être écrites dans certains fichiers (scripts shell) qui sont lancés à chaque démarrage de l'ordinateur. Les distributions de Linux fournissent souvent un script shell qui lance setserial mais en fournissent rarement un qui lance stty tant qu'on en aura rarement besoin.. 14.3 Setserial Introduction N'utilisez jamais setserial avec des portables (PCMCIA). setserial est un programme vous permettant d'indiquer au logiciel pilote l'adresse d'entrée/sortie du port série, quelle interruption (IRQ) est positionnée dans le matériel du port, le type d'UART que vous possédez, etc. Il peut aussi vous montrer comment le pilote est configuré à ce moment. En plus, il peut faire des requêtes au matériel (si certaines options sont données). Si vous avez seulement un ou deux ports séries, ils seront bien configuré sans utiliser setserial. Autrement (ou si il y'a des problèmes avec ce port série) vous devrez utiliser setserial. En plus du manuel de setserial, regardez les informations dans /usr/doc/setserial.../ ou autre. Cela devrait vous indiquer comment setserial se comporte dans votre distribution de Linux. Setserial est souvent lancé automatiquement au démarrage par un script shell. Il ne fonctionnera que si le module série est chargé. Si vous devez pour une raison ou pour une autre décharger le module série plus tard, les modifications faites précédemment par setserial seront oubliées. Setserial doit donc être re-lancé pour les prendre en compte à nouveau. En plus de le lancer avec un script de démarrage, quelque chose semblable à setserial se lance quand le module série est chargé. Ainsi quand vous regardez les messages de démarrage sur l'écran il pourra vous sembler être lancé deux fois, et en fait c'est ce qui s'est passé. Setserial peut régler le temps que le port restera actif après qu'il soit fermé (pour sortir les caractères qui sont encore dans leurs buffers dans la RAM principale). C'est necéssaire pour un taux de transferts de 1200 baud ou plus bas. C'est aussi necéssaire pour des vitesses plus rapides si il y'a beaucoup de "contrôle de flux" en attente. Si votre port série est Plug-and-Play, vous devrez peut-être consulter d'autres HOWTOs, comme Plug-and-Play et Serial. Avec les bonnes options, setserial peut chercher (à une adresse d'entrée/sortie donnée) un port série mais vous devez deviner l'adresse d'entrée/sortie. Si vous lui demandez de chercher /dev/ttyS2 par exemple, il ne cherchera qu'à l'adresse où il pense trouver ttyS2. Si vous dites à setserial que ttyS2 est à une adresse différente, alors il cherchera à cette adresse, etc. Voyez Recherche. Setserial ne positionne pas lui-même les IRQ ou les adresses d'entrée/sortie dans le matériel du port série. Ceci est fait soit avec des cavaliers, soit par plug-n-play. Vous devez dire à setserial les valeurs mêmes qui ont été configurées dans le matériel. N'inventez pas simplement des valeurs dont vous pensez qu'elles font joli en les soumettant à setserial. Cependant, si vous connaissez les adresses d'entrée/sortie mais pas l'IRQ, vous pouvez demander à setserial de tenter de déterminer l'IRQ. Vous pouvez voir une liste des commandes possibles et utilisables (mais pas les options à une lettre telles que -v pour verbeux -- que vous devriez normalement utiliser pour déboguer) en tapant simplement setserial sans argument. Notez que setserial nomme une adresse d'entrée/sortie un "port". Si vous tapez : setserial -g /dev/ttyS* vous verrez quelques informations sur la manière dont ce pilote de périphériques est configuré pour vos ports. Ajoutez un "v" à l'option "-g" pour en voir plus. Mais ceci ne vous dira pas si le matériel dispose vraiment de ces valeurs. En fait, vous pouvez lancer setserial et assigner une adresse d'entrée/sortie purement fictive, n'importe quelle IRQ, et tout type d'UART que vous aimeriez avoir. Alors, la prochaine fois que vous lancerez "setserial ...", il affichera ces valeurs fausses sans se plaindre. Notez que les assignations faites par setserial sont perdues quand le PC est éteint donc il est en général lancé automatiquement quelque part à chaque fois que Linux est démarré. Recherche Afin de tenter de trouver si vous avez un certain type de matériel série, vous devez d'abord savoir (ou deviner) son adresse d'entrée/sortie (ou le pilote de périphérique doit en avoir une adresse d'entrée/sortie, sûrement positionnée précédemment par setserial). Pour tenter de détecter le matériel physique, utilisez l'option -v (verbeux) et la commande autoconfig de setserial. Si le message résultant montre un type d'UART tel que 16550A, alors tout est bon pour vous. Si par contre il affiche un type d'UART "unknown" (inconnu), alors il n'y a sûrement pas de port série du tout à cette adresse d'entrée/sortie. Certains ports série bon marché ne s'identifient pas correctement donc si vous voyez "unknown" vous avez peut-être quand même un port série à cet endroit. En plus de faire une auto-détection sur le type d'UART, setserial peut aussi déterminer automatiquement les IRQs, mais ceci ne fonctionne pas toujours bien non plus. Dans les versions de setserial >= 2.15, votre dernier test de recherche peut être sauvé et placé dans le fichier de configuration /etc/serial.conf qui sera utilisé au prochain démarrage de Linux. Le script qui lance setserial au démarrage ne fait généralement pas de recherche, mais vous pouvez le modifier pour qu'il le fasse. Voyez la section suivante. Linux peut-il configurer les périphériques série automagiquement ? Oui, mais... Votre distribution doit deja le faire au démarrage. Mais vous pouvez le customiser. C'est facile à faire avec setserial < 2.15. Ajoutez simplement quelques lignes au fichier qui lance setserial au démarrage. Voyez vieille méthode de configuration : édition d'un script. Par exemple, pour ttyS3 vous ajouteriez : /sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig au fichier qui lance setserial au démarrage. Faites ceci pour chaque port série que vous voulez auto-configurer. Assurez-vous de donner un nom de périphérique qui existe vraiment sur votre machine. Dans certains cas ca ne marchera pas bien à cause du matériel, donc vous pouvez lui assigner un irq et/ou un type d'uart. Par exemple: /sbin/setserial /dev/ttyS3 irq 5 uart 16550A skip_test Pour les versions >= 2.15 (à condition que votre distribution ait inclus la modification, Redhat ne l'a pas fait), il est plus difficile de le faire puisque le fichier qui lance setserial au démarrage, /etc/init.d/setserial ou autre n'a pas été prévu pour être édité par l'utilisateur. Il peut ne pas y avoir de commentaires utiles comme il y en avait dans les versions précédentes. Configuration au démarrage Quand le noyau charge le module série (ou si le "module" est intégré au noyau) alors seuls ttyS{0-3} sont auto-détectés et le pilote est configuré avec les IRQs 4 et 3 (peu importe la configuration réelle du matériel). Vous le voyez sur un message au démarrage comme si setserial avait été lancé. Si vous utilisez 3 ports ou plus, ceci peut engendrer des conflits d'IRQ. Pour régler de tels conflits en donnant à setserial les vraies IRQs (ou pour d'autres raisons) il peut y avoir un fichier quelque part qui lance setserial à nouveau. Ceci se passe tôt pendant le démarrage avant que n'importe quel processus utilise le port série. En fait, votre distribution peut avoir configuré les choses pour que le programme setserial se lance automatiquement à partir d'un script au démarrage. On peut trouver plus d'informations pour gérer cette situation dans /usr/doc/setserial.../ ou autre. Nouvelle méthode de configuration en utilisant /etc/serial.conf les versions inferieurs à la 2.15 de setserial, la façon pour le configurer était d'édité le script shell qui lancait setserial au démarrage. Avec la version 2.15 (1999) de setserial le script shell n'est pas édité mais est lancé au démarrage et obtient ses données à partir d'un fichier de configuration: /etc/serial.conf. Mais on n'édite normalement jamais /etc/serial.conf. À la place, utilisez simplement setserial sur la ligne de commande. Normalement, ce que vous avez modifié avec la commande setserial est sauvé dans le fichier de configuration (serial.conf) quand vous éteignez (normalement) ou que vous redémarrez. Ceci ne fonctionne que si "###AUTOSAVE###" ou similaire se trouve sur la première ligne de serial.conf. Si vous devez utiliser setserial de manière expérimentale et qu'il ne fonctionne pas correctement, alors n'oubliez pas de le relancer pour que les paramètres expérimentaux ne soient pas sauvés par erreur. Le fichier le plus couramment utilisé pour lancer setserial au démarrage (en restant conforme avec le fichier de configuration) est maintenant /etc/init.d/setserial (Debian) ou /etc/init.d/serial (Redhat), ou etc., mais ne devrait normalement pas être édité non plus. Pour désactiver un port, utilisez setserial pour le positionner à "uart none". Le format de /etc/serial.conf apparaît être comme celui des paramètres placés après "setserial" sur la ligne de commande avec une ligne pour chaque port. Si vous n'utilisez pas autosave, vous pouvez éditer /etc/serial.conf à la main. Pour la version 2.15, la distribution Debian installe le système avec la sauvegarde automatique activée, mais Redhat 6.0 avait simplement un fichier /usr/doc/setserial-2.15/rc.serial que vous deviez déplacer dans /etc/init.d/. BOGUE : en juillet 1999 il un bogue/problème puisqu'avec ###AUTOSAVE### seuls les paramètres de setserial affichés par "setserial -G /dev/ttyS?" (où ? vaut 0, 1, 2, ...) sont sauvés mais pas les autres paramètres. Ceci n'affecte qu'une minorité d'utilisateurs puisque les paramètres non sauvés sont de toute façon rarement utilisés. Cela a été rapporté comme un bogue et peut être réparé maintenant. Afin de forcer les paramètres courants positionnés par setserial à être sauvés dans le fichier de configuration (serial.conf) sans éteindre la machine, faites ce qui se passe normalement quand vous éteignez : lancez le script shell /etc/init.d/{set}serial stop. La commande "stop" sauvera la configuration courante mais les ports série continueront de fonctionner correctement. Dans certains cas vous pouvez avoir l'ancienne et nouvelle méthode d'installé mais heureusement juste une d'elles se lance au démarrage. Debian étiquette les fichiers obsolètes avec "...pre-2.15". Ancienne méthode de configuration : édition d'un script Avant la version 2.15 (1999) il n'y avait pas /etc/setserial.conf pour configurer setserial. Ainsi vous devez chercher un fichier qui lance setserial au démarrage et l'édité. S'il n'existe pas, vous devez en créer un (ou placer les commandes dans un fichier qui se lance tôt au démarrage). Si un tel fichier est utilisé en ce moment, il se trouve sûrement dans l'arborescence /etc. Mais Redhat <6.0 l'a mis dans /usr/doc/setserial/ bien que vous deviez le déplacer dans l'arborescence /etc avant de l'utiliser. Vous pouvez utiliser "locate" pour essayer de trouver un tel fichier. Par exemple, vous pouvez taper : locate "*serial*". Ce que pouvez chercher peut s'appeler rc.serial ou 0setserial (Debian). Si un tel fichier est fourni, il devrait contenir un certain nombre d'exemples commentés. En décommentant certains d'entre eux et/ou en les modifiant, vous devriez pouvoir configurer les choses correctement. Assurez-vous que vous utilisez un chemin valide pour setserial, et un nom de périphérique valide. Vous pouvez faire un test en exécutant ce fichier à la main (tapez simplement son nom en tant que super-utilisateur) pour voir si ça fonctionne bien. Un test comme celui-ci est bien plus rapide que de faire des redémarrages à répétition pour avoir le bon résultat. Bien sûr, vous pouvez aussi tester une commande setserial unique en la tapant simplement sur la ligne de commande. Le script /etc/rc.d/rc.serial était couramment utilisé dans le passé. La distribution Debian a utilisé /etc/rc.boot/0setserial. Un autre fichier qui a été utilisé est /etc/rc.d/rc.local mais ce n'est pas une bonne idée car il peut ne pas être lancé assez tôt. On a indiqué que d'autres processus peuvent essayer d'ouvrir le port série avant l'exécution de rc.local, ce qui entraîne des échecs de communication série. IRQs Par défaut, ttyS0 et ttyS2 partagent l'IRQ 4, tandis que ttyS1 et ttyS3 partagent l'IRQ 3. Le partage des interruptions série n'est permis que si : 1. vous avez un noyau 2.2 ou supérieur, 2. vous avez compilé le support pour le faire et 3. votre matériel série le supporte. Voyez le HOWTO Série, sur le partage des interruptions et les noyaux 2.2 et plus. Si vous n'avez que deux ports série, ttyS0 et ttyS1, cela fonctionne encore puisque les conflits de partage d'IRQ n'existent pas pour des périphériques non existants. Si vous ajoutez un modem interne et gardez ttyS0 et ttyS1, vous devriez alors tenter de trouver une IRQ non utilisée et la positionner à la fois sur votre port série (ou carte modem) et ensuite utiliser setserial pour l'assigner à votre pilote de périphérique. Si l'IRQ 5 n'est pas utilisée par une carte son, ce peut être une IRQ utilisable pour un modem. Pour positionner l'IRQ de manière matérielle vous devrez peut-être utiliser isapnp, un BIOS PnP ou modifier Linux pour le rendre PnP. Pour vous aider à déterminer quelles IRQs sont disponibles, tapez "man setserial" et cherchez, disons "IRQ 11". 14.4 Stty Introduction stty effectue la plupart de la configuration du port série mais puisque les applications (et le programme getty) la gèrent souvent, vous n'aurez peut-être pas besoin de l'utiliser souvent. C'est pratique si vous avez des problèmes ou voulez voir comment le port est paramétré. Essayez de taper ``stty -a'' sur votre terminal/console pour voir les paramètres actuels. Essayez aussi de taper la commande sans le -a (all = tout) pour obtenir une liste courte qui montre les paramètres différents de la normale. N'essayez pas d'apprendre tous les réglages à moins de vouloir devenir un gourou du port série. La plupart des valeurs par défaut conviennent et certains réglages ne sont nécessaires que pour certains terminaux non-intelligents et obsolètes fabriqués dans les années 1970 (Mais pas après) Alors que setserial ne travaille qu'avec les ports série réels, stty s'utilise à la fois pour les ports série et pour les terminaux virtuels comme l'interface texte standard de Linux sur un moniteur de PC. Pour le moniteur de PC, la plupart des paramètres de stty n'ont pas de signification. Le changement de la vitesse de transmission, etc. ne semble pas faire grand chose. Voici quelques uns des items que stty peut configurer : vitesse (bits/seconde), parité, bits par octet, nombre de bits de stop, enlever le 8ème bit ?, signaux de contrôle du modem, contrôle de flux, signal d'arrêt, délimiteurs de fin de ligne, changer la casse, remplissage, sonner si le tampon déborde ?, écho, permettre à des tâches de fond d'écrire sur le terminal ?, définir des caractères spéciaux (de contrôle, comme quelle touche presser pour faire une interruption). Voyez la page de manuel de stty ou la page info pour plus de détails. Voyez aussi la page de manuel : termios qui couvre les mêmes options que stty mais (en mi-1999) couvre des possibilités que la page de manuel de stty ne mentionne pas. Pour l'utilisation de certains caractères spéciaux, voyez caractères spéciaux (de contrôle). Avec certaines implémentations de getty (paquet getty_ps), les commandes qu'on enverrait normalement à stty sont entrées dans un fichier de configuration getty : /etc/gettydefs. Même sans ce fichier de configuration, la ligne de commande de getty devrait suffire pour paramètrer les choses de sorte que vous n'ayez pas besoin de stty. On peut écrire des programmes en C qui modifient la configuration de stty etc. Regarder la documentation pour ce faire peut aider quelqu'un à mieux comprendre l'utilisation des commandes stty (et ses nombreux arguments possibles). Le Serial-Programming-HOWTO est utile. La page de manuel de termios contient la description de la structure au sens langage C (de type termios) qui stocke la configuration de stty dans la mémoire de l'ordinateur. Bien des noms de drapeaux dans cette structure C sont quasiment les mêmes (et font la même chose) que les arguments de la commande stty. Utilisation de stty pour un terminal "étranger" L'utilisation de stty pour inspecter ou configurer le terminal que vous utilisez est facile. Faire ca pour terminal (étranger) different ou un port série est délicat. Par exemple, supposons que êtes sur le moniteur du PC (tty1) et vouliez utiliser stty pour le port série ttyS2. Vous devez utiliser l'opérateur de redirection <. D'abord, soyez prévenu que s'il y a un terminal sur ttyS2 et un shell tourne sur ce terminal, ce que vous verrez alors sera décevant et une tentative de le paramétrer sera infructueuse. Voyez deux interfaces sur un terminal pour comprendre ceci. Tapez ``stty -a < /dev/ttyS2'' pour regarder les paramètres de ttyS2. Utilisez le même opérateur de redirection < pour paramétrer ttyS2. Cela fait de ttyS2 l'entrée standard de stty. Ca donne au programme stty un lien vers le "fichier" ttyS2 donc il doit le "lire". Mais au lieu de lire les octets envoyés vers ttyS2 comme on pourrait le prévoir, il utilise le lien pour trouver les paramètres de configuration du port donc il devrait les lire ou les changer. Certaines personnes tentent d'utiliser ``stty ... > /dev/ttyS2'' pour paramétrer le terminal. Ceci ne le fera pas. À la place, il prendra le message normal affiché par la commande stty pour le terminal sur lequel vous êtes (tty1) et envoie ce message à ttyS2 mais ne change aucun paramètre pour ttyS2. Arrive un autre problème avec l'opérateur de redirection. Quelques fois quand on essaye d'utiliser stty, la commande s'arrette et rien ne se passe ( vous n'avez pas de prompt pour une autre commande, même après avoir frapper ). C'est probablement due au port étant bloqué car il attend une ligne de controle modem pour être déclaré. Par exemple, tant que vous n'avez pas parametrer "clocal" pour ignorer les lignes de controles modem, Alors si il n'y a pas de signal CD de déclaré, le port ne s'ouvrira pas et stty ne fonctionnera pas. Une situation similaire doit exister pour le control de flux materiel. Si le cable du port n'a pas de fils pour la broche qui doit être déclaré donc il n'y a pas besoin d'arreter l'attente. Une façon à essayer pour se passer de cette attente, est d'utiliser un programme sur le port qui le forcera à être opérationnel même si les lignes de controles disent le contraire. Ainsi heureusement, ce programme doit parametrer le port donc il n'a plus besoin du signal de controle pour ouvrir: clocal ou -crtscts. Pour se servir de "minicom" pour faire ca, il faut le reconfigurer pour un autre ttyS, etc, et le redémarrer. Puisque vous avez à reconfigurer minicom, c'est plus simple de redémarrer le PC. Les versions à partir de 1.17 (pas encore sortie en mi-1999) n'auront plus besoin de la redirection (<) mais à la place utiliseront ``stty ... -F /dev/ttyS2'' (ou --file au lieu de -F), etc. Cela devrait forcer le port à s'ouvrir et eviter le second problème de redirection. Deux interfaces sur un terminal En utilisant un shell (tel que bash) avec l'édition de la ligne de commande activée, il y a deux interfaces de terminal différentes (ce que vous voyez quand vous tapez stty -a). Quand vous tapez sur la ligne de commande vous avez une interface "brute" temporaire (mode brut, ou "raw") où chaque caractère est lu par l'éditeur de ligne de commande au moment où vous le tapez. Une fois que vous appuyez sur la touche , l'éditeur de ligne de commande sort et l'interface du terminal est modifiée en interface nominale "améliorée" (mode amélioré ou "cooked") pour le terminal. Ce mode amélioré dure jusqu'à ce que l'invite suivante soit envoyée au terminal. Notez qu'on ne tape jamais rien dans ce mode "amélioré" mais ce qui a été tapé en mode raw passe en mode amélioré dès qu'on a tapé sur la touche . Quand une invite est envoyée au terminal, le terminal passe du mode "amélioré" au mode "brut" (comme il le fait quand vous démarrez un éditeur puisque vous démarrez l'éditeur de ligne de commande). Les paramètres pour le mode "brut" ne sont basés que sur les paramètres de base pris à partir du mode "amélioré". Le mode brut garde ces paramètres mais modifie plusieurs autres paramètres afin de passer en mode "brut". Il n'est pas du tout basé sur les paramètres utilisés dans le mode "brut" précédent. Ainsi si on utilise stty pour modifier les paramètres du mode brut, de tels paramètres seront perdus dès qu'on appuiera sur la touche sur le terminal qu'on suppose avoir "configuré". Maintenant, quand on utilise tape stty pour regarder l'interface du terminal, on peut avoir une vue soit du mode amélioré, soit du mode brut. Vous devez trouver lequel vous regardez. Si vous utilisez stty à partir d'un autre terminal pour vous occuper d'un terminal qui affiche une ligne de commande, vous aurez la vue du mode brut. Tout changement effectué ne le sera que pour le mode brut et sera perdu quand quelqu'un appuiera sur sur le terminal que vous avez tenté de "paramétrer". Mais si vous tapez une commande stty sur votre terminal (sans utiliser < pour la redirection) et ensuite tapez sur , c'est une histoire différente. met le terminal en mode amélioré. Vos modifications seront sauvées et seront toujours présentes quand le terminal reviendra en mode brut (sauf, bien sûr, si c'est un paramètre non permis en mode brut). Cette situation peut créer des problèmes. Par exemple, supposez que vous corrompez votre interface de terminal et que pour la récupérer vous alliez sur un autre terminal et tapiez "stty sane ), soit essayez de trouver le fichier de code source de terminfo (voyez ref id="tc_source_loc" name="emplacements du code sources des bases de données">). 14.7 Fichier /etc/ttytype rarement nécessaire Le fichier de configuration /etc/ttytype est utilisé pour faire la correspondance entre /dev/ttySn et les noms de terminaux comme dans terminfo. tset l'utilise, mais si la variable d'environnement TERM est déjà positionnée correctement, alors ce fichier n'est pas nécessaire. Puisque le getty de Linux positionne TERM pour chaque tty, vous n'avez pas besoin de ce fichier. Dans d'autres systèmes Unix comme FreeBSD, le fichier /etc/ttys fait la correspondance entre les ttys et bien plus de choses, comme la commande getty appropriée, et la catégorie de connexion (comme "dialup"). Un exemple de ligne pour le ttytype sous Linux : vt220 ttyS1 14.8 Restrictions sur les logins Par défaut, l'utilisateur root ne peut pas se logger à partir d'un terminal. Pour permettre cela vous devez créer (ou éditer) le fichier /etc/securetty en suivant la page de manuel "securetty". Mais cette utilisation est spécifique à la distribution, la Suse n'utilise pas /etc/securetty. Pour restreindre les logins de certains utilisateurs et/ou de certains terminaux etc., éditez /etc/login.access (cela remplace le vieux fichier /etc/usertty ??). /etc/login.defs détermine si /etc/securetty doit être utilisé et peut être édité afin que /etc/securetty ne soit pas nécessaire (ou utilisé). /etc/porttime restreint les heures auxquelles certains ttys et utilisateurs peuvent utiliser l'ordinateur. S'il y a trop de tentatives de login ratées pour un utilisateur, cet utilisateur peut se voir interdire l'accès au système. Voyez la page de manuel "faillog" sur la manière de contrôler cela. 14.9 Lancer des commandes uniquement si TERM=mon_terminal Il y a parfois des commandes qu'on ne veut exécuter au démarrage que pour un certain type de terminal. Faire cela pour la commande stty ne pose pas de problèmes puisque l'on utilise l'opérateur de redirection < pour spécifier le terminal vers lequel la commande est destinée. Mais quid des alias de shell ou des fonctions ? Vous aurez envie de créer une fonction pour la commande ls qui mettra en couleur la liste des répertoires uniquement sur des terminaux couleur ou sur la console. Pour les terminaux monochromes vous voudrez le même nom de fonction (mais un corps de fonction différent) qui utilisera des symboles à la place du codage par couleurs. Où mettre de telles définitions de fonctions qui doivent être différentes pour des terminaux différents ? Vous pouvez les mettre à l'intérieur d'opérateurs "if" dans /etc/profile qui est lu au départ à chaque fois que quelqu'un se logge. L'opérateur confitionnel "if" définit certaines fonctions etc., seulement si le terminal est d'un type spécifique. Exemple pour la fonction ls Bien que la plupart de ce que fait cet opérateur if puisse être fait dans le fichier de configuration de dircolors, voici un exemple dans le cas du shell bash : _________________________________________________________________ if [ "$TERM" = linux ]; then eval `dircolors`; elif [ "$TERM" = vt220 ]; then ls () { command ls -F $* ; } # pour exporter la fonction ls(): declare -xf ls else echo "De /etc/profile : terminal de type $TERM inconnu" fi _________________________________________________________________ 15. Terminfo et Termcap (en détails) 15.1 Introduction à Terminfo Terminfo (anciennement termcap) est une base de données des capacités des terminaux et plus. Pour chaque (enfin presque) modèle de terminal elle indique aux applications ce que le terminal est capable de faire. Elle indique quelles séquences d'échappement (ou caractère de contrôle) envoyer au terminal afin de faire des choses telles que déplacer le curseur vers un nouvel endroit, effacer une partie de l'écran, faire défiler l'écran, changer de mode, changer l'apparence (couleurs, luminosité, clignotement, soulignement, vidéo inverse, etc.). À partir de 1980 environ, beaucoup de terminaux supportaient plus d'une centaine de commandes (certaines d'entre elles prenant des paramètres numériques). La façon dont terminfo donne les information a un programme est par les fonctions "ncurses" que le programmeur met dans un programme C. Par exemple si un programme veut bouger le curseur à la ligne 3, colonne 6, il appelle simplement: move(3,6). La fonction move() (faisant partie de ncurses) sait comment faire pour votre terminal (elle peut lire terminfo). Donc il envoit la sequence d'échappement appropriée au terminal qui lui fait faire ce mouvement. Les abréviations terminfo sont en général plus longues que celles de termcap et il est ainsi plus facile de deviner ce qu'elles veulent dire. Les pages de manuel de terminfo sont plus détaillées (et incluent les anciennes abréviations de termcap). Ainsi, sauf si vous êtes déjà obligé de travailler avec termcap, il est suggéré que vous utilisiez les fichier terminfo. 15.2 Base de données terminfo Introduction La base de données terminfo est compilée et possède ainsi une partie source et une partie compilée. La vieille base de données termcap ne possède qu'une partie source mais cette source peut, grâce à une seule commande, être à la fois convertie en source terminfo et ensuite compilée. Vous pouvez ainsi vous en tirer sans avoir le source terminfo puisque le source termcap peut créer la base terminfo compilée. Pour voir un affichage de la base de données pour le terminal que vous utilisez actuellement (y compris un moniteur de PC), tapez "infocmp" et vous devriez voir le "fichier" source terminfo correspondant. Pour voir si votre terminal (disons vt100) est dans la base de données terminfo, tapez "locate vt100". Si vous ne connaissez pas le nom de votre terminal, explorez la liste des fichiers dans la base de données compilée ou voyez quel est le nom terminfo de mon terminal ?. Où se trouve la base de données ? Emplacements de la base de données compilée Le fait de taper "locate vt100" peut vous indiquer /usr/lib/terminfo/v/vt100, /usr/share/terminfo/v/vt100, /home/vous/.terminfo/v/vt100 et/ou /etc/terminfo/v/vt100. Tout ceci sont des localisations possibles des fichiers terminfo compilés. Quoique le répertoire /etc/terminfo ne soit pas l'emplacement standard pour ca, avoir quelques types de terminal a cet endroit peut être pratique au cas ou le répertoire /usr ne soit pas accessible. Par exemple, /usr peut être placé sur un disque ou une partition qui n'ait pas pue être montée. Normalement, les applications qui utilisent votre base de donnée terminfo principale sont capables de les trouver si il est mis dans au moin un des emplacements mentionnés avant. Autrement la variable d'environnement TERMINFO devrait être positionnée sur le chemin vers cette base de données. Exemple : TERMINFO=/usr/share/terminfo. Si le terminfo compilé se trouve à plus d'un endroit, tout se passe en général bien jusqu'à ce que quelqu'un récupère un ou plusieurs fichiers terminfo (d'une distribution plus récente, d'Internet, en éditant la plus vieille, etc.). Le nouveau terminfo doit être placé à tous les emplacements existants (ou les emplacements redondants doivent être abolis). Si vous ne vous assurez pas que c'est fait, alors plusieurs applications peuvent se retrouver à chercher et utiliser les anciennes données terminfo (boguées) qui existent encore à un emplacement "traditionnel". Emplacements du code source des bases de données Le code source que vous utilisez peut résider dans /etc/termcap et/ou dans terminfo.src (ou un autre nom). Voyez les pages de manuel : terminfo(5) ou termcap(5) pour voir le format nécessaire pour créer (ou modifier) ces fichiers source. Le fichier terminfo.src peut se trouver en divers endroits sur votre ordinateur ou peut ne pas être inclus dans votre distribution Linux. Utilisez la commande locate pour essayer de le trouver. Il est disponible pour téléchargement (sous le nom termtypes.ti) à http://sagan.earthspace.net/terminfo. Compilateur terminfo (tic) Les données des fichiers sources sont compilées avec le programme "tic" qui est capable de faire les conversions entre les formats termcap et terminfo. Vous pouvez ainsi créer une base de données terminfo compilée à partir d'un source termcap. Le programme d'installation utilisé pour installer Linux a probablement installé les fichiers compilés sur votre disque dur donc vous ne devez rien compiler sauf si vous modifiez /etc/termcap (ou terminfo.src). "tic" installera automatiquement les fichiers compilés résultant dans un répertoire terminfo prêt à être utilisé par les applications. Regardez votre terminfo C'est une bonne idée de jeter un coup d'oeil à votre entrée terminfo pour le terminal que vous utilisez (le code source, bien sûr) et de lire les commentaires. Une manière rapide de l'inspecter sans les commentaires est de taper simplement "infocmp". Mais les commentaires pourront vous dire des choses spéciales sur le terminal comme la manière dont vous devez le configurer pour qu'il fonctionne correctement avec la base de données terminfo. Effacer des données non nécessaires Afin d'économiser de l'espace disque, on peut effacer toute la base de données à part les types de terminaux que l'on possède (ou dont on pourrait avoir besoin dans le futur). N'effacez aucun termcap pour un "terminal Linux" (la console) ou les entrées xterm si vous utilisez X Window. Le type de terminal "dumb" peut être nécessaire quand une application ne peut pas déterminer le type de terminal que vous utilisez. Cela économiserait de l'espace disque si les programmes d'installation n'installaient les terminfo que pour les terminaux que vous possédez et que vous puissiez obtenir un termcap pour un nouveau terminal sur Internet en quelques secondes. 15.3 Bogues dans les fichiers terminfo existants (et dans le matériel) Malheureusement, il y a un certain nombres de bogues dans les fichiers terminfo et termcap. En plus, bien des définitions ne sont pas complètes et ne définissent pas certaines capacités disponibles sur les terminaux. Parfois vous pouvez vous en tirer sans modifier terminfo mais dans d'autres cas vous devez le modifier ou peut-être utiliser une autre émulation qui possède un bon terminfo. Le mauvais état des fichiers terminfo fournis est dû à un certain nombre de raisons. L'une d'entre elles est que durant les années 1980, quand on en a écrit beaucoup (souvent au format termcap), les applications n'utilisaient les capacités avancées des terminaux. Ainsi, si une telle capacité n'était pas dans le fichier termcap (ou terminfo), personne ne se plaignait. Aujourd'hui, les programmes tels que vim utilisent la "colorisation contextuelle" et minicom utilise le code de caractère graphique du terminal. Ceux-ci ont souvent besoin de plus de définitions à ajouter à l'ancien termcap. Ceci peut (ou peut ne pas) avoir déjà été fait. La plupart des terminaux avaient des bogues matériels (dans leur programme interne) qui étaient parfois "réparés" en modifiant le termcap. Ensuite, le fabricant pouvait envoyer des puces de remplacement qui réparaient le bogue. Tous les propriétaires ne passaient pas leur temps à obtenir les puces de remplacement. Ainsi il peut y avoir deux terminfos ou plus pour votre terminal, selon les puces qu'il possède. Cette situation n'était pas toujours notée dans le termcap et un seul termcap peut être fourni avec Linux. Certains bogues matériels présents pour des capacités qui n'étaient quasiment jamais utilisées dans le passé n'ont sûrement jamais été réparés. De plus, certaines bogues matériels rapportés peuvent ne jamais avoir été réparés puisqu'ils n'étaient pas très importants à l'époque ou que la société est décédée, etc. 15.4 Modification des fichiers terminfo Pour faire ceci vous avez besoin du manuel de votre terminal indiquant les séquences d'échappement qu'il utilise. Les manuels récents des années 1990 ne les montrent pas souvent. Vous avez aussi besoin d'un manuel terminfo (ou similaire). Par exemple, afin d'ajouter des capacités graphiques vous devez assigner des valeurs aux variables terminfo : enacs, rmacs et smacs en éditant un fichier source. Alors en utilisant "tic" vous pouvez le compiler. "tic" devrait placer automatiquement le fichier terminfo compilé dans le répertoire correct réservé à cet usage. Si vous voulez trouver un meilleur terminfo pour un certain terminal que celui qui est fourni, vous pouvez essayer de chercher sur Internet (mais ce que vous y trouverez peut être pire). Si votre nouvelle entrée terminfo est meilleure que l'ancienne et semble stable (vous l'avez utilisée pendant un moment sans problèmes) vous devriez en envoyer une copie au mainteneur de terminfo comme indiqué au début du fichier source de terminfo (ou termcap). 15.5 Chaîne d'initialisation Dans le terminfo sont souvent incluses des chaînes d'initialisation qu'on peut envoyer au terminal pour l'initialiser. Cela peut modifier l'apparence de l'écran, changer le mode dans lequel se trouve le terminal et/ou faire que le terminal émule un autre terminal. Une chaîne d'initialisation n'est pas envoyée automatiquement au terminal pour l'initialiser. On pourrait espérer que le programme getty le fasse mais s'il le faisait, on pourrait faire un changement de configuration sur le terminal et ce changement ne serait pas pris en compte parce que la chaîne d'initialisation l'annulerait automatiquement. Vous devez utiliser une commande sur la ligne de commande (ou dans un script shell) pour envoyer la chaîne d'initialisation telle quelle. De telles commandes sont : "tset", "tput init" ou "setterm -initialize". Parfois il n'y a pas besoin d'envoyer la chaîne d'initialisation puisque le terminal peut se configurer correctement quand il est allumé (en utilisant les options et préférences qu'on a sauvées dans la mémoire permanente du terminal). 15.6 Variable TERM La variable d'environnement TERM devrait être initialisée au nom de terminal que vous utilisez. Si TERM n'a pas encore été positionnée et que vous ne connaissez pas le nom de votre terminal, voyez quel est le nom terminfo de mon terminal ?. Elle est normalement positionnée par le paramètre terminal_type passé au programme getty (regardez-le dans le fichier /etc/inittab). Ce nom doit se trouver dans la base de données terminfo. Tapez simplement "set" sur la ligne de commande pour voir quelle valeur a TERM (ou tapez : tset -q). Sur la console (moniteur) TERM est positionné à "linux" qui représente le moniteur du PC émulant un modèle de terminal fictif appelé "linux". Puisque "linux" est proche d'un terminal vt100 et que beaucoup de terminaux le sont aussi, l'appellation "linux" fonctionnera parfois comme un recours temporaire sur un terminal texte. Si on peut connecter plus d'un type de terminal sur le même port (/dev/tty...) (par exemple, si un commutateur permet à différents types de terminaux d'utiliser le même port série, ou si le port est relié à un modem que des personnes appellent depuis différents types de terminaux) alors TERM doit être positionné à chaque fois que quelqu'un se connecte sur le port série. Il y a souvent une séquence d'échappement de requête pour que l'ordinateur puisse demander au terminal de quel type il est. Une autre façon est de demander à l'utilisateur de taper (sélectionner) le type de terminal qu'il ou elle utilise. Vous aurez peut-être besoin d'utiliser tset ou d'écrire un petit script shell pour gérer cela. Une manière est d'utiliser "tset" (voir la page de manuel). tset essaie de déterminer le nom du terminal à partir du terminal que vous utilisez. Il regarde ensuite les données dans terminfo et envoie une chaîne d'initialisation à votre terminal. Il peut aussi positionner la valeur de TERM. Par exemple, un utilisateur appelle et se logge. Le script de login .profile est exécuté et il contient la commande suivante : eval `tset -s ?vt100`. Ceci fait que : on demande à l'utilisateur s'il ou elle utilise un vt100. L'utilisateur répond oui ou bien tape le type de terminal réel qu'il ou elle utilise. tset envoie ensuite la chaîne d'initialisation et positionne TERM à ce nom (type) de terminal. 15.7 Documents sur terminfo/termcap * pages de manuel de terminfo(5) (la meilleure) et/ou termcap(5). Le manuel Termcap (2ème éd.) par Richard M. Stallman est un manuel GNU qui est quelque peu obsolète depuis qu'il n'inclut plus terminfo. * les fichiers : terminfo.src et /etc/termcap possèdent des informations sur les diverses versions des fichiers termcap, les conventions de nommage pour les terminaux et des codes de capacités spéciales nommées u6-u9. Si vous ne les avez pas, allez à http://sagan.earthspace.net/terminfo * "Termcap et Terminfo" est un livre publié par O'Reilly en 1988. 16. Utilisation du terminal 16.1 Introduction à l'utilisation du terminal Cette section parle du contrôle de l'interface terminal-ordinateur et/ou du changement de configuration du terminal pendant son utilisation. Elle explique (ou pointe vers des explications sur) la manière dont l'utilisateur d'un terminal peut contrôler et inspecter l'interface, et comment utiliser diverses commandes fournies par le pilote de périphérique. Elle n'explique pas comment utiliser les nombreuses applications, shells ou la plupart des utilitaires Linux. Deux commandes utilisées couramment sur un terminal sont : * clear (pour effacer l'écran) * reset (pour réinitialiser le terminal) 16.2 Démarrer le terminal Évidemment il faut allumer le terminal pour qu'il fonctionne. Si vous ne voyez pas d'invite de login, appuyez sur la touche "Retour" (ou "Entrée") plusieurs fois. Saisissez ensuite le nom de votre compte (suivi d'un retour/entrée) et votre mot de passe quand on vous le demande (suivi aussi d'un retour/entrée). Prenez garde à ne pas tout taper en lettres majuscules. Si vous le faites, l'ordinateur peut croire que vous avez un vieux terminal qui ne peut pas transmettre de lettres minuscules et le pilote série peut se configurer pour n'envoyer que des lettres majuscules au terminal. Si rien ne se passe, assurez-vous que l'ordinateur hôte va bien. Si l'ordinateur hôte est éteint (pas de courant), ce que vous tapez sur le clavier du terminal peut apparaître à l'écran puisque les broches de transmission et de réception sur l'ordinateur peuvent être reliées ensemble, ce qui fait que les caractères sont retournés par un ordinateur "éteint". Si vous ne pouvez pas vous logger quand l'ordinateur fonctionne, voyez résolution des problèmes. 16.3 Pilote de périphérique (série) du terminal En tapant sur la ligne de commande, le shell (tel que le shell Bash) lit ce que vous tapez et y réagit. Ce que vous tapez passe d'abord par la partie pilote de terminal de votre système d'exploitation. Ce pilote peut traduire certains caractères (comme changer le caractère "retour" généré par la touche "retour" en un caractère "nouvelle ligne" pour les fichiers Linux). Il reconnaît aussi certains codes de contrôle que vous pourriez taper au clavier comme ^C pour interrompre l'exécution d'un programme. Il retourne normalement ce que vous tapez à l'écran. On peut utiliser stty pour configurer le comportement de ce terminal, ce qui comprend l'arrêt de tout ou partie de cette fonctionnalité. 16.4 Problèmes avec les éditeurs Il peut y avoir quelques problèmes pendant l'utilisation d'emacs et de vi sur certains terminaux. Emacs et ^S,^Q Si le contrôle de flux logiciel est présent, la commande ^S dans Emacs bloquera l'affichage. La commande ^Q débloquera l'affichage. La solution est de relier cette commande à une autre touche dans le fichier de configuration de Emacs. Vi et les touches curseur Vi utilise la touche ESC comme commande pour sortir du mode d'insertion. Si on appuie sur une touche fléchée (touche de curseur) une séquence d'échappement (démarrant par le caractère ESC) est envoyée à l'hôte. Vi doit faire la différence entre ces deux significations d'ESC. Un vi intelligent (comme vim) doit être capable de détecter la différence en regardant le temps entre la touche ESC et celle qui suit. Si il s'agit d'un court délai, c'est comme si une touche curseur avait été pressée. Utilisez "help cursor-keys" dans vim pour en savoir plus. Il y'a une autre façon d'arranger ça.Sur les terminaux VT on peut faire en sorte que la touche flèche gauche envoie soit ESC [ D soit ESC O D. Les autres touches fléchées sont similaires mais utilisent A, B et C au lieu de D. Si vous avez des problèmes, choisissez ESC [ D puisque le "O" dans l'autre alternative peut être interprétée comme une commande d'"ouverture de ligne". Le "[" devrait être interprété par vi pour dire qu'une touche fléchée a été pressée. ESC [ D sera envoyé à condition que le "mode application touches fléchées" (Cursor Key Application Mode) n'ait pas été activé. ESC [ D est normalement la valeur par défaut donc tout devrait être correct. Sauf que de nombreux termcaps contiennent une chaîne (pas la chaîne d'initialisation) qui positionne ce que vous voulez éviter : "Mode Application". Les éditeurs peuvent envoyer cette chaîne au terminal quand ils démarrent. Là, vous avez des problèmes. Cette chaîne possède le code termcap "ks" (smkx dans terminfo) qui veut dire activer les touches de fonctions (et similaires, incluant les touches fléchées). Une application active ces touches en envoyant la chaîne "ks" au terminal. La personne qui a écrit le termcap a conclu que si une application voulait activer ces touches, elles devraient être mises en "Mode Application" puisque c'est une "application", mais vous ne voulez pas cela. La console Linux n'a pas de chaîne "ks" pour que vous ne tombiez pas dans ce piège sur la console. Pour d'autres terminaux vous aurez besoin d'éditer termcap (ou terminfo) ou d'utiliser une autre entrée termcap. Vous devez modifier non seulement la chaîne "ks" mais aussi les définitions termcap de ce qu'elle envoie : kd, kl, kr, ku. Lancez ensuite tic pour l'installer. Pour vim (VI aMélioré) il y a une manière de le configurer pour qu'il fonctionne correctement avec ESC O D (pour que vous ne deviez pas éditer termcap) : cherchez "vt100-cursor-keys" dans l'aide de vim. Vous pouvez lancer "gitkeys" et ensuite appuyer sur les touches fléchées pour voir ce qu'elles envoient mais on peut les configurer pour qu'elles envoient autre chose quand vous êtes dans un éditeur. 16.5 Corruption du ls en couleur Si ls met en l'air l'émulation de votre terminal avec la possibilité de couleur, arrêtez-la. ls --color et ls --colour utilisent la possibilité de couleur. Certaines installations font que ls utilise la couleur par défaut. Vérifiez dans /etc/profile, etc. s'il y a des alias pour ls. Voyez exemple de fonction ls pour savoir comment faire pour que ls soit en couleur sur la console et en noir et blanc sur les terminaux. 16.6 L'affichage se bloque (terminal bloqué) Les symptômes d'un terminal bloqué sont que ce que vous tapez ne s'affiche pas sur le terminal (ou dans certains cas s'affiche mais ne fait rien). Si ce que vous tapez est invisible (ou ne fait rien) tapez ^Q pour relancer le flux (si le contrôle de flux l'a stoppé). Le blocage peut aussi venir de : envoi d'un binaire au terminal ou un programme s'est terminé de façon anormale Si vous n'avez fait ni l'un ni l'autre, votre programme peut alors être boggé ou vous avez intéragi de manière fatale avec lui. Si vous voulez quitter le programme que vous avez lancé et que vous ne pouvez pas le faire par les méthodes normales (certains programmes ont des touches spéciales que vous devez taper pour sortir) essayez de le tuer à partir d'un autre terminal en utilisant "top" ou "kill". Si le processus refuse de s'arrêter, vous pouvez essayer de lui envoyer un signal 9 à partir de top qui devrait le forcer à s'arrêter. Le type de sortie forcée "9" peut laisser certains fichiers temporaires qui traînent ainsi qu'une interface corrompue. Tuer le shell de login devrait relancer getty avec une nouvelle invite de login. Les personnes débutantes sous Linux peuvent sans le faire exprès appuyer sur Ctrl-S (^S) (ou la touche "Arrêt Défil") qui bloque l'écran de manière mystérieuse (bien que ce soit ce que cette touche est supposée faire si vous utilisez le contrôle de flux logiciel). Pour retrouver une interaction normale avec l'écran, pressez Ctrl-Q (^Q). Notez que tout ce qui est tapé durant le "blocage" est exécuté mais vous n'en verrez rien avant d'appuyer sur ^Q. Ainsi quand il est bloqué, ne tapez rien de spécial qui pourrait effacer des fichiers etc. L'un des arguments en faveur du contrôle de flux matériel est qu'il empêche de tels blocages. 16.7 Interface du terminal corrompue Cela inclut le cas de l'"affichage bloqué" = "terminal stoppé net" de la section précédente. Symptômes Quand l'affichage ne semble pas correct, ou quand ce que vous tapez ne s'affiche pas correctement (si même un affichage se produit), ou que rien ne se passe quand vous tapez une commande, il y a des chances que vous soyez en face d'une corruption de l'interface du terminal. Dans les cas rares où la partie matérielle du port série elle-même serait corrompue, le seul remède peut être de basculer l'interrupteur (éteindre le PC et redémarrer). Le problème peut provenir de choses telles qu'un bogue dans le programme que vous utilisez, une panne matérielle (ce qui inclut un défaut matériel obscur avec lequel vous pouvez normalement vivre) ou peut-être une configuration incorrecte. Si tout fonctionnait correctement mais que ça va soudainement mal, il se peut que l'interface ait été corrompue par une de vos actions. Vous pouvez avoir fait l'une de ces trois erreurs : * Envoyer des données binaires au terminal * Stopper un programme de manière anormale * Taper Ctrl-S par erreur Envoyer des données binaires au terminal Votre terminal modifiera ses caractéristiques si on lui envoie certaines séquences d'échappement ou des caractères de contrôle. Si vous essayez par inadvertance d'afficher un fichier binaire, il peut contenir par hasard de telles séquences qui peuvent placer votre terminal dans un mode de fonctionnement étrange voire le rendre inutilisable. Visualisez ou éditez toujours un fichier binaire avec des programmes faits à cet effet pour que cela n'arrive pas. La plupart des éditeurs et des afficheurs manipuleront les binaires de la bonne manière afin de ne pas corrompre l'interface. Certains peuvent afficher un message vous avertissant qu'ils ne peuvent éditer du binaire. Par contre, l'utilisation de "cat ...." ou "cp .... /dev/tty.." où .... est un fichier binaire enverra le binaire au terminal et risque fortement de générer des problèmes. La corruption peut aussi arriver en utilisant un programme de communication où un ordinateur distant peut envoyer des données binaires à l'écran. Il y a de nombreuses autres façons pour lesquelles ces problèmes peuvent arriver, alors soyez-y préparé. Même un fichier qu'on prend pour un fichier ASCII peut contenir des codes de contrôle indésirables. Pour résoudre ce problème, ré-initialisez le terminal. Vous pouvez essayer de taper soit "reset" soit "setterm -reset" (bien que vous ne puissiez pas voir ce que vous tapez). Ceci enverra la chaîne de ré-initialisation à partir de l'entrée du terminal dans la base terminfo. Si la configuration correcte a été sauvée à l'intérieur du terminal, alors l'appui sur certaine(s) touche(s) (peut-être en mode de configuration) peut retrouver ce paramétrage. Vous voudrez alors ensuite encore utiliser "reset" pour envoyer la chaîne d'initialisation si vous l'utilisez pour configurer votre terminal. Terminer un programme de façon anormale De grandes applications (comme des éditeurs) utilisent souvent les commandes stty (ou autres) dans leur code pour modifier de manière temporaire la configuration stty pendant que vous utilisez ce programme. Cela peut mettre le pilote de périphérique en mode "brut" pour que chaque caractère que vous tapez aille directement à l'application. L'écho de retour que fait le pilote est désactivé pour que tout ce que vous voyez à l'écran vienne directement de l'application. Ainsi de nombreuses commandes de contrôle (comme ^C) peuvent ne pas fonctionner dans certaines applications. Quand vous quittez de telles applications, celle-ci remet d'abord en place les paramètres stty aux valeurs qu'ils avaient avant le démarrage de l'application. Si vous quittez le programme de manière anormale (vous pouvez deviner que ça s'est passé ainsi quand ce que vous tapez ne s'affiche plus à l'écran) vous risquez d'être encore en mode "brut" sur la ligne de commande. Pour sortir du mode brut et revenir aux paramètres stty normaux, tapez "stty sane". Cependant, vous devez taper ceci juste après un "retour" et le terminer par un "retour". Mais l'appui sur la touche "retour" ne donne pas le résultat escompté puisque le code "retour" n'est plus traduit en caractères nouvelle ligne que le shell attend. Tapez donc simplement nouvelle ligne (^J) à la place de "retour". L'interface de terminal "sane" peut ne pas être exactement la même que d'habitude mais elle fonctionne en général. "stty sane" peut aussi être utile pour sortir d'une interface corrompue par d'autres causes. 16.8 Caractères (de contrôle) spéciaux Un certain nombre de caractères de contrôle que vous pouvez taper au clavier sont "attrapés" par le pilote de terminal et effectuent diverses tâches. Pour voir ces commandes de contrôle tapez : stty -a et regardez les lignes 2 à 4. Elles sont expliquées de manière vague dans les pages de manuel de stty. On peut modifier les caractères ou les désactiver en utilisant la commande stty. Ainsi vos caractères de contrôle peuvent différer de ceux décrits ci-dessous. On les utilise pour l'édition de la ligne de commande, l'interruption, le défilement et pour se déplacer sur le caractère suivant de manière transparente. Édition de la ligne de commande Alors que le pilote de terminal possède quelques commandes pour l'édition de la ligne de commande, certains shells possèdent un vrai éditeur intégré (comme "readline" dans le shell Bash). Un tel éditeur est normalement activé par défaut donc vous n'avez besoin de rien faire pour l'activer. S'il est disponible vous ne devez pas apprendre les commandes suivantes bien qu'elles fonctionnent souvent en plus de l'éditeur de lignes de commande. Les plus importantes à apprendre sont ^C (interruption), ^D et comment arrêter le défilement. * Delete-key (touche d'effacement, que stty montre comme ^?) efface le dernier caractère * ^U détruit (efface) la ligne * ^W efface un mot en arrière * ^R réaffiche la ligne. Utile principalement sur les terminaux à sortie papier ?? Interruption (et Quit, Suspend, EOF, Flush) * ^C interrompt. Quitte le programme et vous remet sur l'invite de la ligne de commande. * ^/ quitte. Comme l'interruption ^C mais plus faible. Fait aussi générer un fichier "core" (dont vous n'avez probablement pas l'utilité) dans votre répertoire de travail). * ^Z suspend. Stoppe le programme et le met en tâche de fond. Tapez fg pour le relancer. * ^D fin de fichier. S'il est tapé sur l'invite de la ligne de commande, quitte le shell et va là où vous étiez avant que le shell démarre. * ^O chasser. Pas implémenté sur Linux. Envoie la sortie vers /dev/null. Arrêt et reprise du défilement Si ce que vous désirez voir défile hors du bas de l'écran, vous pouvez empêcher cela en envoyant un signal d'arrêt "stop" (^S ou Xoff) à l'hôte (à condition que le contrôle de flux Xon-Xoff soit activé). Envoyez un signal de départ "start" (^Q ou Xon) pour reprendre. Certains terminaux possèdent une touche "Pas de défilement" qui enverra de manière alternée Xoff et Xon ou peut-être enverra des signaux de contrôle de flux matériel ?? Voici ce que font ctrl-S (^S) et ctrl-Q (^Q) : * ^S arrête le défilement (Xoff) * ^Q reprend le défilement (Xon) Si vous voulez à la fois arrêter le défilement et quitter, utilisez ^C. Si vous voulez arrêter le défilement pour faire autre chose mais voulez garder le programme qui générait la sortie en mémoire pour que vous puissiez reprendre le défilement plus tard, utilisez ^Z pour suspendre. Une méthode de défilement différente est d'envoyer la sortie dans un tube vers un afficheur comme more, less ou most. Cependant, la sortie peut ne pas être la sortie standard mais peut être la sortie d'erreur que l'afficheur ne reconnaît pas. Pour résoudre ceci vous pouvez utiliser une redirection "2>&1" pour que l'afficheur fonctionne correctement. Il est souvent plus simple d'utiliser simplement ^S et ^Q sauf si vous devez défiler en arrière. Sur une console PC (qui émule un terminal), vous pouvez défiler en arrière en utilisant Shift-PageHaut. Cela est fréquemment nécessaire puisque le défilement est souvent trop rapide à arrêter en utilisant ^S. Une fois que vous avez défilé en arrière Shift-PageBas défilera en avant à nouveau. Prendre littéralement en compte le caractère suivant ^V envoie le caractère tapé suivant (en général un caractère de contrôle) directement au pilote de périphérique sans action ou interprétation. En retour deux caractères ASCII comme ^C sont affichés. 16.9 Visualiser des fichiers Latin-1 sur un terminal 7 bits Certains fichiers texte sont au format Latin1 sur 8 bits (voyez ensembles de caractères). Si vous avez un terminal qui n'affiche pas les caractères Latin1 (ou sur lequel on n'a pas sélectionné l'ensemble de caractères Latin1), un symbole de boulet s'affichera comme un 7, etc. En visualisant des pages de manuel (elles sont en Latin1) vous pouvez passer l'option -7 à man afin de traduire les 7, etc. à quelque chose proche d'un boulet (en ASCII). Y a-t-il des afficheurs qui font ces traductions ?? 16.10 Inspection de l'interface Ces utilitaires vous fourniront des informations sur l'interface du terminal : * gitkeys : montre quel(s) octet(s) chaque touche envoie à l'hôte. * tty : montre à quel port tty vous êtes connecté. * set : montre la valeur de TERM (le nom de l'entrée terminfo) * stty -a : montre tous les paramètres stty. * setserial -g /dev/tty?? (remplissez les ??) montre le type d'UART, l'adresse du port et le numéro d'IRQ. * infocmp : montre l'entrée de terminfo en cours (moins de commentaires) 16.11 Modifier les paramètres du terminal Les paramètres du terminal sont normalement positionnés une fois quand le terminal est installé en utilisant les procédures de configuration du manuel du terminal. Cependant, certains paramètres peuvent être modifiés alors que le terminal est en cours d'utilisation. Vous ne donnez normalement aucune commande "stty" ou "setserial" quand le terminal est en cours d'utilisation car elles causeront certainement des problèmes à l'interface du terminal. Cependant, vous pouvez faire certaines modifications à l'apparence de l'écran du terminal ou à son comportement sans détruire l'intégrité de l'interface. Parfois ces modifications sont faites automatiquement par les applications et donc vous ne devriez pas avoir besoin de vous en occuper. Une méthode directe pour effectuer de telles modifications est d'utiliser la touche de configuration (ou autre) sur le terminal et ensuite d'utiliser les menus pour faire les modifications. Pour cela, vous aurez besoin de bien connaître le terminal. Les trois autres méthodes envoient une séquence d'échappement de l'ordinateur vers le terminal pour faire les modifications. Ces trois exemples montrent des méthodes différentes pour faire cela en positionnant la vidéo inverse : 1. setterm -reverse 2. tput -rev 3. echo ^[[7m setterm C'est la commande la plus facile à utiliser. Elle utilise des options longues (mais n'utilise pas les -- normaux devant). Elle consulte la base de données terminfo pour déterminer le code à envoyer. Vous pouvez modifier la couleur, la luminosité, la coupure de ligne, la vitesse de répétition du clavier, l'apparence du curseur etc. tput La commande "tput" est similaire à "setterm" mais au lieu d'utiliser des mots ordinaires comme arguments, vous devez utiliser les abréviations utilisées par terminfo. Beaucoup d'abréviations sont relativement laconiques et difficiles à retenir. echo Dans l'exemple "echo ^[[7m" pour positionner la vidéo inverse, ^[ est le caractère d'échappement. Pour le taper, tapez ^V^[ (ou ^V suivi de la touche ESC). Pour utiliser cette méthode "echo" vous devez trouver quel code utiliser à partir d'un manuel de terminal ou à partir de terminfo ou termcap. Il est plus facile d'utiliser setterm ou tput si vous tapez sur la ligne de commande. Puisque "echo ..." s'exécutera plus vite (puisqu'il ne fait de requête), il est bon pour être utilisé dans les scripts shell lancés au démarrage, etc. Sauver les modifications Quand vous éteignez le terminal les modifications que vous avez faites seront perdues (sauf si vous les avez sauvées dans la mémoire permanente du terminal en allant dans le mode configuration et en les sauvant). Si vous voulez les utiliser à nouveau sans devoir les retaper, mettez les commandes dans un script shell ou créez une fonction shell. Lancez-la ensuite quand vous voulez faire les modifications. Une manière de rendre les modifications semi-permanentes est de mettre ces commandes dans un fichier lancé à chaque fois que vous vous loggez ou que vous démarrez l'ordinateur. 16.12 Faire d'un terminal une console C'est aussi ce que l'on appelle une "console série". Beaucoup de messages en provenance du système ne sont normalement envoyés que sur la console (Le moniteur). On peut aussi voir sur un terminal certains messages envoyés sur la console durant le démarrage après un démarrage réussi en tapant la commande : dmesg. Si le démarrage ne réussit pas, ceci ne sera d'aucun utilité. Il est possible de modifier le noyau Linux pour qu'un terminal serve de console et reçoive tous les messages de Linux destinés à la console. Malheureusement, les messages du BIOS (qui s'affiche sur le moniteur quand un PC est démarré) seront perdus puisqu'ils ne seront pas affichés sur le terminal. Creer une "console série" veut dire que la console (dans la forme d'un terminal) se trouve maintenant sur un port série. Bien sûr, elle n'aura pas les couleurs, les fontes, les capacités graphiques, ni les possibilités de redéfinition du clavier de la vraie console du PC. Avant le noyau 2.2, vous deviez patcher le noyau à la main. À partir du noyau 2.2, le support est inclus dans le noyau à condition que ce dernier ait été configuré pour cela. Ces deux cas sont traités dans les deux sous-sections suivantes : Pour les noyaux 2.2 et supérieurs Les instructions pour faire une console série sont incluses dans la documentation livrée avec le code source dans le fichier : serial-console.txt. Normalement, le périphérique /dev/console est un lien vers tty0 (la console PC). Pour une console série vous créez un nouveau /dev/console qui est un vrai périphérique (et non pas un lien vers autre chose). Vous devez aussi inclure une déclaration à propos de la console série dans /etc/lilo.conf et ensuite lancer lilo. C'est parce que l'équivalent de "setserial" doit être lancé pour configurer votre console série avant le chargement du noyau. Voyez la documentation ci-mentionnée pour plus de détails. Pour les noyaux antérieurs à 2.2 Le Linux Journal d'avril 1997 avait un article sur la façon d'appliquer une rustine au noyau. Vous ajoutez quelques #define au début de src/linux/drivers/char/console.c : #define CONFIG_SERIAL_ECHO #define SERIAL_ECHO_PORT 0x2f8 /* Serial port address */ Ce qui suit n'était pas dans l'article de Linux Journal. Dans les noyaux 2.+ (et précédents ??) vous avez aussi besoin de positionner la vitesse d'émission (sauf si 9600 est convenable). Cherchez ces deux lignes : serial_echo_outb(0x00, UART_DLM); /* 9600 baud */ serial_echo_outb(0x0c, UART_DLL); Changez 0x0c dans la ligne ci-dessus en (selon la vitesse que vous désirez) : 115200 baud: 0x01 19200 baud: 0x06 2400 baud: 0x30 57600 baud: 0x02 9600 baud: 0x0c 1200 baud: 0x60 38400 baud: 0x03 4800 baud: 0x18 Si vous utilisez la console pour sélectionner quel système d'exploitation démarrer (avec LILO), mais que vous voudriez le faire à partir d'un terminal, vous devez ajouter une ligne au fichier /etc/lilo.conf. Voyez la page de manuel de lilo.conf et cherchez la chaîne "serial=". Puis-je lancer Linux sans moniteur (console PC) ? Oui, en utilisant un terminal et en le faisant passer pour une console comme indiqué ci-dessus. Vous aurez sans doute quand même besoin d'une carte graphique puisque la plupart des BIOS en ont besoin pour démarrer le PC. Votre BIOS peut aussi avoir besoin d'un clavier pour démarrer, ou bien il peut avoir une option grâce à laquelle vous pouvez indiquer au BIOS qu'il n'a pas besoin de clavier. 16.13 Sessions multiples Le paquet "screen" lance des sessions multiples un peu comme les terminaux virtuels sur la console : voyez la console : /dev/tty?. Cependant, ce n'est pas comme les "pages" ( section sur les pages) puisque l'image des pages est stockée sur l'ordinateur hôte et non à l'intérieur du terminal comme elles le sont avec les "pages". 16.14 Se délogger Pour vous délogger, tapez soit "logout", soit "exit". Dans certains cas votre demande sera refusée, mais on devrait vous dire pourquoi. L'une des raisons du refus est que vous n'êtes pas sur le même shell que celui avec lequel vous vous êtes loggé. Une autre manière de vous délogger est d'appuyer sur ^D. Puisqu'on utilise aussi ^D à d'autres fins, vous ne voudrez pas forcément que cette touche vous délogge. Si vous positionnez la variable IGNOREEOF dans le shell Bash, alors ^D ne vous déloggera plus. 16.15 Discuter entre terminaux, espionner Si deux personnes loggées par l'intermédiaire de terminaux sur le même ordinateur hôte désirent discuter ensemble, ils peuvent utiliser les programmes "write" ou "talk". Sur Internet, on peut discuter en utilisant le navigateur "lynx". Pour espionner ce qu'une autre personne fait sur son terminal, utilisez le programme "ttysnoop". Dans "ttysnoop", les deux terminaux ont le même état et tout ce qui est tapé sur l'un des deux claviers apparaît sur les deux écrans (au même endroit). Donc si vous espionnez et ne voulez pas être détecté, vous ne devriez rien taper. On peut utiliser ttysnoop pour s'entraîner avec un professeur et un étudiant assis côte à côte, chacun sur son terminal. Le professeur peut regarder ce que tape l'étudiant et peut corriger les erreurs en tapant correctement. L'étudiant peut regarder ce que tape le professeur et ensuite le répéter lui-même. C'est comme s'ils utilisaient un seul terminal, les deux personnes ayant leurs mains sur le clavier en même temps. 17. Résoudre les problèmes (logiciels) Si vous suspectez que le problème soit matériel, voyez la section réparation et diagnostic. Si le problème concerne le port série lui-même, voyez le Serial-HOWTO. Voici une liste des problèmes possibles : * Le terminal fonctionne-t-il ? Soupçonnez que le terminal est en panne. * Texte manquant Soit passe au-dessus d'une partie du texte soit affiche correctement du texte puis se bloque * Getty se relance trop rapidement (message d'erreur sur la console) * Ne fonctionne pas juste après le login * Ne peut pas se logger mais l'invite de login est OK. * Invite de login embrouillée * Aucun signe d'une invite de login Il y a deux cas dans lesquels le terminal se comporte mal. L'un arrive quand il a fonctionné correctement et s'est mis à mal fonctionner tout à coup. C'est ce dont on parle dans la sous-section suivante. L'autre cas arrive quand les choses vont mal juste après l'installation du terminal. Dans ce cas, vous pouvez passer à la section suivante. 17.1 Le terminal fonctionnait correctement Quand un terminal qui fonctionnait correctement ne tourne tout d'un coup pas bien, il est souvent facile de déceler le problème. Si vous réfléchissez à ce qui s'est passé récemment cela vous donnera certainement un indice quant à la cause du problème. Le problème peut être évident comme un message d'erreur au démarrage du terminal. S'il émet un bruit, il a sûrement besoin d'une réparation. Voyez réparation et diagnostics. D'abord, réflechissez à ce que vous avez fait ou modifié récemment car c'est sûrement la cause du problème. Est-ce que le problème est apparu juste après l'installation d'un nouveau logiciel ou après une modification de configuration ? Si le terminal ne répond pas correctement (s'il répond tout court) à ce que vous tapez, vous avez peut-être une interface de terminal corrompue. 17.2 Terminal nouvellement installé Si vous venez de relier un terminal à votre ordinateur en suivant les instructions et qu'il ne fonctionne pas, cette section vous concerne. Si un terminal qui fonctionnait correctement auparavant ne fonctionne plus, voyez le terminal fonctionnait. Si vous présumez que le port série de votre ordinateur est défectueux, vous pouvez essayer de lancer un programme de test et de diagnostics sur ce port. À présent (juin 1998) il semble que Linux ne dispose pas encore d'un tel programme de diagnostics et vous devrez donc lancer les diagnostics sous MS DOS/Windows. Il y a quelques programmes pour surveiller les diverses lignes série comme DTR, CTS, etc. et qui peuvent vous aider. Voyez surveillance/diagnostic série. Une manière est d'abord de voir si le terminal fonctionne en essayant de copier un fichier vers le terminal (cp mon_fichier /dev/ttyS?) dans la situation la plus simple. Ceci implique la désactivation des lignes de contrôle du modem et à une vitesse qui ne nécessite pas de contrôle de flux (assurez-vous que le contrôle de flux matériel est désactivé). Si cette copie fonctionne, compliquez alors un petit peu la situation et voyez si ça fonctionne encore, etc., etc. Quand le problème apparaît juste après avoir fait une modification, alors ce changement est sûrement la cause du problème. En fait, il est plus efficace (mais plus compliqué) de sauter de la situation simple à à peu près la moitié de la configuration finale pour que le test élimine à peu près la moitié des causes possibles restantes pour le problème. Répétez alors cette méthode pour le test suivant. De cette manière il ne faudrait que dix tests environ pour trouver la cause sur un millier de causes possibles. Vous devriez vous écarter un peu de cette méthode en vous basant sur des intuitions et des indices. 17.3 Est-ce que le terminal va bien ? Un bon terminal démarre en général en affichant quelques mots à l'écran. Si ces mots ne donnent aucun message d'erreur, le terminal va probablement bien. S'il n'y aucun signe de courant (aucune lumière n'est allumée, etc.), réenfoncez le câble d'alimentation des deux côtés. Assurez-vous qu'il y ait du courant sur la prise murale (ou au bout du cordon d'alimentation). Essayez un autre cordon si vous en avez un. Assurez-vous que le terminal est allumé et que son fusible n'a pas sauté. Un écran blanc (ou sombre) peut parfois être réparé simplement en tournant les molettes de luminosité et de contraste ou par une touche de clavier dans le mode de configuration. Si cela ne fonctionne toujours pas, voyez réparations et diagnostics pour avoir des astuces sur la réparation du terminal. Si le terminal démarre correctement, mais que vous soupçonnez qu'il y ait un problème, mettez-vous en "mode local" où il fonctionnera comme une machine à écrire et essayez de taper. Voyez mode local. 17.4 Texte manquant Si le texte s'affiche normalement sur le terminal puis s'arrête sans avoir terminé (au milieu d'un mot, etc.) ou si des morceaux de texte manquent, vous avez sûrement un problème avec le contrôle de flux. Si vous ne pouvez pas trouver tout de suite ce qui le cause, baissez la vitesse. Si cela l'arrange, c'est sûrement un problème de contrôle de flux. Il se peut que le contrôle de flux ne fonctionne pas du tout à cause d'un manque de configuration correcte ou à cause d'un câblage incorrect (pour le contrôle de flux matériel). Voyez contrôle de flux. Si des caractèrs isolés manquent, le port série est peut-être dépassé par une vitesse trop élevée. Essayez une vitesse plus petite. Si vous utilisez une vitesse de transmission en dessous de 1200 (très lente, principalement utilisée par les anciens terminaux à copie papier et les imprimantes) et que le texte est tronqué, alors le problème peut provenir du pilote de périphériques série. Voyez le Printing-HOWTO à la section "périphériques série" sur la manière de régler ceci. 17.5 Getty se relance trop rapidement Module série non chargé Utilisez la commande "lsmod" pour voir si le module série est chargé. Pas de tension de contrôle du modem Si getty ne peut pas ouvrir et/ou utiliser un port à cause du manque de tension de contrôle de modem positive sur l'une des broches, alors getty peut se terminer. Alors, grâce aux instructions dans inittab, getty se relance et essaie encore, uniquement pour être terminé à nouveau, etc. etc. Vous pouvez voir un message d'erreur indiquant que, à cause de getty qui se relance trop rapidement, il a été temporairement désactivé. Essayez d'utiliser l'option "local" dans getty et/ou de vérifier les paramètres et les tensions de contrôle du modem. Touche enfoncée Une autre cause possible du relancement de getty est qu'une touche du clavier soit enfoncée, ce qui donne le même résultat que si la touche était maintenue appuyée en continu. Avec la répétition automatique activée, ceci "tape" des milliers de caractères à l'invite de login. Cherchez un écran rempli de caractères identiques (dans certains cas avec deux caractères différents ou plus). 17.6 Échec après le login Si vous pouvez vous logger correctement mais ne pouvez utiliser le terminal il se peut que le démarrage du shell de login ait reconfiguré le terminal (avec des paramètres incorrects) à cause d'une commande que quelqu'un a mise dans l'un des fichiers qui sont lancés quand vous vous loggez, et qu'un shell soit lancé. Ces fichiers comprennent /etc/profile et /.bashrc. Cherchez une commande commençant par "stty" ou "setserial" et assurez-vous qu'elle est correcte. Même si elle est correcte dans un fichier d'initialisation, elle peut être repositionnée de manière incorrecte dans un autre fichier d'initialisation que vous ne soupçonnez pas. Des méthodes pour revenir sur le système afin de le réparer et d'utiliser un autre terminal ou console est d'utiliser une disquette de secours ou de taper : "linux single" à l'invite de LILO qui vous mettra en mode utilisateur unique sans lancer les fichiers de démarrage. 17.7 Impossible de se logger Si vous obtenez une invite de login mais pas de réponse (ou peut-être une réponse embrouillée) à vos tentatives de login, une cause possible est que la communication se fait mal dans un sens du terminal vers l'ordinateur. Cela peut être dû à un connecteur/câble mauvais ou mal câblé. Si vous n'utilisez pas encore l'option "local" de getty, faites-le afin de désactiver les lignes de contrôle du modem. Voyez getty (dans /etc/inittab). Vous pourriez aussi désactiver le contrôle de flux matériel (stty -crtscts) s'il était activé. Si cela fonctionne maintenant correctement, alors soit les lignes de contrôle de votre modem sont câblées de manière incorrecte, soit il y a une erreur dans votre configuration. Certains terminaux permettent le positionnement de valeurs différentes (comme la vitesse de transmission) pour envoyer et recevoir, de sorte que la réception soit bonne mais pas l'envoi. Vous devriez aussi (sur la console) essayer "stty < /dev/ttyS1" (si vous utilisez ttyS1) pour vérifier qu'il est configuré correctement. Il sera souvent en mode brut (et c'est sûrement bon) avec -icanon et -echo, etc. Si le terminal est configuré de manière incorrecte en half-duplex (HDX), alors une partie des caractères que vous voyez quand vous tapez viennent du terminal lui-même. Si les caractères sont doublés, alors les échos de l'ordinateur sont bons et vous pouvez passer en full-duplex pour corriger ceci. Mais si vous êtes en half-duplex et que vous ne voyez que ce qui semble être des "échos" normaux, ils ne viennent donc pas de l'ordinateur comme ils devraient le faire. Si vous obtenez un message qui ressemble à "login failed" (le login a échoué) alors, si vous n'avez fait aucune erreur en tapant ou dans votre mot de passe, il peut y avoir des restrictions sur les logins qui ne vous permettent pas de vous logger. Malheureusement, ce message peut ne pas vous dire pourquoi la tentative a échoué. Voyez restrictions sur les logins. 17.8 Invite de login embrouillée Ceci peut-être à cause de l'utilisation d'un jeu de caractères incorrect, des erreurs de transmission dues à des vitesses de connexion trop élevées, des vitesses de connexion incompatibles, des parités incompatibles ou un nombre de bits par octet incorrect. Si c'est une variété de caractères étranges vous avez un jeu de caractères incorrect ou un bit de haut rang est positionné par erreur. Si les mots ont des fautes d'orthographe, essayez une vitesse de transmission plus basse. Pour les incompatibilités de vitesse de transmission, de parité ou de bits/caractère, vous voyez beaucoup d'erreurs "character error" identiques (erreur de caractère) qui représentent le fait qu'un vrai caractère ne peut être affiché correctement à cause d'une erreur dans la parité ou la vitesse de transmission. Si vous utilisez agetty (souvent nommé simplement getty), le programme agetty détectera et positionnera la parité et/ou les bits/caractère si vous tapez quelque chose. Essayez-le avec un retour chariot pour voir si cela répare quelque chose. 17.9 Aucun signe d'une quelconque invite de login Cela arrive quand rien ne se passe du tout sur le terminal, mais que le terminal semble fonctionner correctement. L'une des premières choses à faire est de s'assurer que toutes les connexions câblées sont fermes et reliées au bon connecteur à la fois sur l'ordinateur et sur le terminal. D'autres causes comprennent du matériel ou des câbles défectueux (les câbles doivent être des null-modem), getty ne tournant pas, une différence de vitesse de transmission, un terminal en mode local, etc. À ce point, deux possibilités d'approche sont (vous pouvez en suivre plus d'une à la fois) : * diagnostiquer les problèmes à partir de la console * mesurer les tensions Diagnostiquer les problèmes à partir de la console Sur la console (ou sur un autre terminal qui fonctionne), utilisez "top" ou "ps -al" pour voir si getty fonctionne sur le port. Ne le confondez pas avec d'autres programmes getty qui tournent sur d'autres ports ou sur les consoles virtuelles. Vous n'obtiendrez pas d'invite de login si getty ne tourne pas. Un test possible est de tenter la copie d'un court fichier vers le terminal (une bonne idée serait d'essayer cela au début du processus d'installation avant de configurer getty). Utilisez la commande Linux de copie comme ceci : cp nom_fichier /dev/ttyS1. Si cela ne fonctionne pas, utilisez stty pour rendre l'interface aussi simple que possible en désactivant tout (comme le contrôle de flux matériel : -crtscts ; la parité, et les signaux de contrôle du modem : clocal). Assurez-vous que les vitesses de transmission et le nombre de bits par octet sont les mêmes. Si rien ne se passe, vérifiez que le port est vivant avec un voltmètre grâce à la section suivante. Mesure des tensions Si vous disposez d'un voltmètre à portée de main, vérifiez qu'il y a une tension négative (-4v à -15v) sur la broche 3 (réception de données) du côté du terminal sur le câble null modem. La borne positive du voltmètre devrait être reliée à une bonne terre (les connecteurs métalliques sur les extrémités des câbles ne sont souvent pas reliés à la terre). S'il n'y a pas de tension négative, vérifiez-la sur la broche de transmission (TxD) sur l'ordinateur (voyez DB9-DB25 pour le brochage). Si elle est présente là mais pas sur la broche de réception (RxD) du terminal, alors le câble est mauvais (connexion flottante, câble cassé ou le câble n'est pas null modem). S'il n'y a pas de tension du côté de l'ordinateur, le port série de l'ordinateur est mort. Testez-le avec un programme de diagnostics ou remplacez-le. Si le port série est vivant, vous pouvez lui envoyer un fichier (avec les contrôles de modem désactivés) et voyez si quelque chose y arrive. Pour vérifier qu'un signal est transmis avec un voltmètre analogique, regardez l'aiguille à -12 V quand la ligne est inactive. Commencez ensuite à envoyer un fichier (ou lancez getty). Vous devriez voir l'aiguille revenir à zéro et bouger autour de 0 alors qu'elle mesure des moyennes de courte distance sur le flux de données. Vous pouvez aussi le voir sur l'échelle de courant alternatif à condition que votre voltmètre dispose d'une capacité pour bloquer les tensions continues quand vous êtes sur l'échelle alternative. S'il n'en a pas, alors le -12 V continu en inactif donnera une lecture alternative erronée. Sans voltmètre, vous pourriez relier un périphérique que vous savez en bon état (comme un autre terminal ou un modem externe) au port série et voir s'il fonctionne correctement. 17.10 Ralentissement: Pauses de quelques secondes entre l'affichage des caractères Vous avez surement mal parametrer les interruptions: Voyez les sections du Serial-HOWTO commençant par "Ralentissement:". 17.11 Surveillance et diagnostics du port série Quelques programmes Linux surveilleront les lignes de contrôle du modem et indiqueront si elles sont positives (1) ou négatives (0). * statserial (dans la distribution Debian) * serialmon (ne surveille pas RTS, CTS, DSR mais indique les autres fonctions) * modemstat (ne fonctionne que sur les consoles PC Linux. Fonctionnera en concordance avec la ligne de commande) Vous les avez peut-être déjà. Sinon, allez à logiciels série. En les utilisant, gardez à l'esprit que ce que vous voyez est l'état des lignes sur l'ordinateur hôte. La situation sur le terminal sera différente puisque certains fils sont souvent manquants des câbles alors que d'autres fils se croisent. En juin 1998, je ne connais aucun programme de diagnostic sous Linux pour le port série. 17.12 Mode local En mode local, le terminal se déconnecte de l'ordinateur et se comporte comme une machine à écrire (sauf qu'il n'imprime pas sur papier mais sur l'écran). En revenant en ligne, le terminal se reconnecte à l'ordinateur vous permettant de reprendre les activités au point où vous vous étiez arrêté quand vous êtes passé en mode "local". Ceci est utile à la fois pour tester le terminal et à des fins éducatives. En mode local vous pouvez taper des séquences d'échappement (en commençant par la touche ESC) et observer ce qu'elles font. Si le terminal ne fonctionne pas correctement en mode local, il est quasiment certain qu'il ne fonctionnera pas mieux quand il sera relié à l'ordinateur. Si vous n'êtes pas vraiment sûr de ce que fait une séquence d'échappement, vous pouvez l'essayer en mode local. Vous pouvez aussi l'utiliser pour essayer un terminal qui est à vendre. Pour aller en mode local vous devez d'abord entrer en mode de configuration et ensuite sélectionner "local" dans un menu (ou presser une certaine touche). Voyez aller dans le mode de configuration. 17.13 Équipement de test électrique pour le port série Gadgets d'évasion etc. Alors qu'un multimètre (utilisé comme voltmètre) peut être tout ce dont vous avez besoin pour quelques terminaux, un équipement de test spécial simple a été fait pour tester les lignes des ports série. Certains s'appellent "évasion ..." (breakout, NdT) où évasion veut dire sortir des conducteurs d'un câble. Ces gadgets possèdent quelques connecteurs et s'insèrent dans le câble série. Certains possèdent des points de tests pour y relier un voltmètre. Certains possèdent des LEDs qui s'allument quand certaines lignes de contrôle sont activées (allumées). D'autres encore possèdent des cavaliers pour que vous puissiez relier n'importe quel fil à n'importe quel fil. Certains possèdent des interrupteurs. Radio Shack vend (en 1998), un "expert de RS-232" ou "testeur de ligne RS-232" qui vérifie TD, RD, CD, RTS, CTS, DTR, et DSR. Une lumière verte veut dire "allumé" (+12 V) alors que rouge veut dire "éteint" (-12 V). Ils vendent aussi une "boîte de cavaliers série RS-232" qui permet de relier les broches de la manière dont vous le souhaitez. Mesurer des tensions N'importe quel voltmètre ou multimètre, même les moins chers qu'on vend pour environ 60 F, devraient fonctionner correctement. Essayer d'utiliser d'autres méthodes pour tester la tension est compliqué. N'utilisez pas de diode électroluminescente (LED) sauf si on lui adjoint une résistance en série pour réduire la tension sur la diode. On utilise une résistance de 470 ohms pour une diode de 20 mA (mais toutes les diodes ne font pas 20 mA). La diode ne s'allumera que pour une certaine polarité pour que vous puissiez tester les tensions positives ou négatives. Personne ne fait un tel gadget pour tester automatiquement les circuits ?? Les sondes logiques peuvent être endommagées si vous essayez de les utiliser puisque les tensions TTL pour lesquelles elles sont faites ne sont que de 5 volts. Tenter d'utiliser une ampoule incandescente de 12 V n'est pas une bonne idée. Cela ne vous montrera pas la polarité et à cause du courant de sortie limité de l'UART, l'ampoule ne s'allumera probablement pas. Pour mesurer la tension sur un connecteur femelle, vous pouvez enfoncer un trombone déplié dans l'ouverture désirée. Le diamètre du trombone ne doit pas être plus grand que les broches afin de ne pas abîmer le contact. Mettez une pince croco (ou autre) sur le trombone pour vous connecter. Goûter la tension En dernier recours, si vous n'avez pas d'équipement de test et voulez risquer d'être choqué (ou même électrocuté) vous pouvez toujours goûter à la tension. Avant de toucher à l'une des broches de test avec votre langue, testez-les pour vous assurez qu'il n'y a pas de haute tension sur elles. Prenez les deux broches (à la fois) dans une main pour voir si ça vous fait de l'effet. Si ce test vous choque, vous n'aurez sûrement pas envie d'utiliser votre langue. Pour tester du 12 V, léchez un doigt et tenez-y une broche de test. Mettez l'autre broche de test sur votre langue. Si la broche sur votre langue est positive, il y aura un goût reconnaissable. Vous pouvez d'abord essayer ceci avec des piles 4,5 V pour savoir quel goût ça aura. 18. Réparations et diagnostics La réparation d'un terminal possède beaucoup en commun avec la réparation d'un moniteur et/ou d'un clavier. Parfois les diagnostics intégrés au terminal vous indiqueront à l'écran ce qui ne va pas. Sinon, par les symptômes, on peut souvent isoler le problème à l'une des choses suivantes : clavier défectueux, écran mort, panne de l'électronique numérique du terminal. Il est mieux d'avoir un manuel de service, mais même si vous n'en avez pas, beaucoup de terminaux peuvent encore être réparés. 18.1 Livres et sites Web sur la réparation Livres Bigelow, Stephen J. : Troubleshooting & Repairing Computer Monitors, 2ème édition, McGraw-Hill, 1997. Ne couvre pas l'électronique de génération des caractères ni le clavier. Sites Web La FAQ http://www.repairfaq.org du groupe de nouvelles sci.electronics.repair est longue et complète, bien qu'elle ne couvre pas les terminaux en soi. Voyez la section "Moniteurs d'ordinateurs et vidéos" ("Computer and Video Monitors", NdT). La plupart de ces informations peuvent s'appliquer aux terminaux ainsi que dans les sections "tester les capacités", "tester les transformateurs", etc. Peut-être que dans le futur, les "informations" de réparation de ce HOWTO consisteront principalement en des liens vers la FAQ ci-dessus (ou un document identique). Une autre source d'informations est l' archive de réparations de Shuford, archive de posts dans des groupes de nouvelles sur la réparation des terminaux. 18.2 Sécurité Les écrans utilisent de très hautes tensions jusqu'à 30000 volts pour la couleur (un peu moins pour le noir et blanc). Faites attention de ne pas toucher cette tension si l'écran est allumé et le couvercle retiré. Cela ne vous tuera probablement pas même si vous le faites puisque la somme de courant qu'il peut fournir est limité. Mais il est possible que cela vous brûle gravement et vous choque, etc. Les hautes tensions peuvent passer à travers des couches d'air et traverser certains isolants, alors gardez vos mains à une distance sûre. Vous devriez remarquer le câble à haute tension bien isolé connecté à un bout du tube d'images. Même quand l'écran est éteint, il reste suffisamment de tension résiduelle sur la connexion du câble au tube d'images pour vous donner un certain choc. Pour décharger cette tension quand l'écran est débranché, utiliser un tournevis (poignée isolée) avec la lame en métal relié au câble de masse du tube d'images par un fil cavalier. N'utilisez pas la masse du chassis. Les tensions plus basses (quelques centaines de volts) peut être encore plus dangereuses parce qu'elles ne sont pas limitées en courant. Elles sont même encore plus dangereuses si vos mains sont mouillées ou si vous portez un bracelet de montre en métal, un anneau ou autre. Dans certains cas rares, des gens en sont morts alors faites attention. Les tensions plus faibles de seulement quelques volts sur les circuits numériques sont relativement sûrs mais ne touchez à rien (sauf avec un outil bien isolé) sauf si vous savez ce que vous faites. 18.3 Apparence de l'affichage Si l'affichage est trop faible, augmentez la luminosité et/ou le contraste en utilisant les molettes à l'extérieur de l'unité (si elles existent). Si la largeur, la hauteur ou le centrage sont incorrects, il y a souvent des molettes de contrôle pour ceux-ci. Sur certains terminaux anciens, on doit presser une touche fléchée (ou autre) en mode de configuration. Vous aurez peut-être besoin d'enlever le couvercle pour faire des ajustements, surtout sur les modèles anciens. Vous pourriez arranger les choses pour qu'un grand miroir soit en face du terminal afin de voir l'affichage dans le miroir tout en faisant les ajustements. Ce qu'il faut tourner peut se trouver sur un circuit imprimé. Alors qu'un tournevis (peut-être avec une tête Phillips) peut être tout ce dont vous avez besoin, les bobines peuvent nécessiter certains outils spéciaux d'alignement de télévisions (clés en plastique, etc.). Le nom abrégé de l'ajustement devrait être imprimé sur le circuit imprimé. Par exemple, voici de tels noms : * V-Size ajuste la hauteur verticale (taille) * H-Size ajuste largeur horizontale (taille). Ce peut-être une bobine. * V-Pos ajuste la position verticale * H-Pos ajuste la position horizontale * V-Lin ajuste la linéarité verticale (à utiliser si la largeur des lignes de balayage diffère en haut et en bas de l'écran) * V-Hold ajuste le maintien vertical (à utiliser si l'écran défile de manière incontrôlable) * Bright ajuste la luminosité (une molette extérieure peut aussi exister) * Sub-Bright ajuste la luminosité du mode d'intensité atténuée (souvent le mode normal : plus faible que le mode gras ou fort). Changer la linéarité peut modifier la taille et donc il peut être nécessaire de la réajuster. Un terminal qui a été stocké pendant quelque temps peut avoir un petit rectangle d'affichage sur l'écran entouré d'un grand bord noir. S'il est difficile à ajuster, attendez un peu avant de l'ajuster puisqu'il va en récupérer un peu avec l'utilisation (les bords noirs vont rétrécir). 18.4 Diagnostiquer Le terminal a émis un bruit Si le terminal a émis un bruit juste avant de tomber en panne (ou quand vous l'allumez juste après qu'il est tombé en panne), ce bruit est un indice de ce qui ne va pas. Si vous entendez un crépitement ou voyez/sentez de la fumée, éteignez immédiatement le terminal pour empêcher des dommages supplémentaires. Le problème est sûrement dans l'alimentation en haute tension de plusieurs milliers de volts. Enlevez le couvercle et si le point faible n'est pas évident, rallumez-le pendant une courte période de temps dans une pièce peu éclairée et regardez les arcs électriques. Le câble à haute tension (qui court entre le transformateur et le côté du tube d'images) peut avoir une isolation défectueuse qui provoque des arcs avec la terre. Réparez-le avec de l'isolant haute tension, ou du chatterton électrique spécial fait pour, disons, 10000 volts. Le transformateur (haute tension) peut ne faire qu'un cliquetis ou un crépitement faible quand il tombe en panne. Vous pouvez ne pas l'entendre jusqu'à ce que vous éteigniez le terminal pendant un moment pour le reposer et l'allumiez ensuite à nouveau. Pour déterminer la provenance du bruit, vous pouvez utiliser un morceau de tube en caoutchouc (comme on en utilise dans les voitures) comme stéthoscope pour écouter. Mais pendant que vous écoutez le son, le terminal souffre de plus de dommages alors essayez de le trouver rapidement (mais pas rapide au point de risquer d'être électrocuté). Un court-circuit dans l'alimentation peut faire sauter un fusible avec un bruit "pop". Le remplacement d'un fusible éclaté peut ne pas résoudre le problème car le même court-circuit peut faire éclater le fusible à nouveau. Recherchez les points noircis à cause d'une chaleur trop importante et testez ces composants. Les transistors de puissance court-circuités peuvent faire éclater le fusible. On peut les tester avec un vérificateur de transistors ou même avec un ohmmètre. Utilisez une petite échelle d'ohms sur un ohmmètre pour que la tension appliquée par l'ohmmètre soit faible. Ceci réduira les dommages possibles sur les composants sains causés par ce test de tension. Si le terminal a été exposé à l'humidité, en étant stocké dans un endroit humide ou près d'une cuisine avec la vapeur de la cuisine, une solution peut être de sécher l'unité. Chauffer un transformateur "en panne" avec un sèche-cheveux pendant quelques minutes peut le ranimer. Le terminal n'a émis aucun bruit Un écran vide peut être causé par une personne qui a tourné le contrôle de luminosité au plus bas niveau ou par l'âge. La chose à faire alors est de vérifier les câbles pour voir si les connexions sont mal faites ou cassées. S'il n'y a pas de signe de courant, mettez un nouveau cordon d'alimentation après vous être assuré que la prise de courant murale délivre du courant. Si vous soupçonnez le clavier, essayez-le sur un autre terminal du même type ou mettez un bon clavier. Manipulez les extrémités du câble du clavier et la prise. Les fils à l'intérieur du câble peuvent casser, surtout vers leurs extrémités. Si la cassure est vérifiée en bougeant le câble (et en alternant la panne et la bonne marche du terminal en même temps que le mouvement), il faut alors soit obtenir un nouveau câble, soit couper le câble et ressouder les cassures, etc. L'une des premières choses à faire si le clavier fonctionne est de mettre le terminal en mode local. Si cela fonctionne en local, alors le problème vient sûrement de la connexion à l'ordinateur hôte (ou d'une interface incorrecte) ou dans les puces UART du terminal. En inspectant avec attention les circuits, on peut souvent trouver la cause du problème. Regardez les changements de couleurs, les craquelures, etc. Un problème intermittent peut se révéler en appuyant sur les composantes avec un stylo à bille (pas la partie métallique, bien sûr). Une cassure de la partie conductrice d'un circuit imprimé peut parfois être révélée en tordant le circuit. De la soudure qui semble avoir fait une goutte ou un joint avec un peu de soudure peut avoir besoin d'être refaite. La soudure peut faire chauffer les transistors (et d'autres composants) et les endommager, utilisez donc un puits de chaleur si c'est faisable. Si vous avez une marque de terminal connue, vous pouvez chercher des posts sur les groupes de nouvelles sur l'Internet pour trouver les types de problèmes les plus fréquents pour votre terminal et peut-être des informations sur la manière de les réparer. Pour voir si l'électronique numérique fonctionne, essayez (en utilisant un bon clavier) de taper sur le mauvais terminal. Essayez de lire cela en tapant sur un bon terminal (ou sur la console) en utilisant la commande de copie ou avec un programme de communication avec les terminaux comme Minicom. Vous aurez peut-être besoin d'appuyer sur la touche retour chariot afin d'envoyer une ligne. On peut demander l'identité, etc. du mauvais terminal à partir d'un autre terminal. Cela montrera si la communication dans les deux sens fonctionne. 18.5 Messages d'erreur à l'écran Vous avez de la chance si vous voyez un message d'erreur à l'écran. Cela arrive en général quand vous allumez pour la première fois le terminal. Erreur de clavier Ceci veut dire en général que le clavier n'est pas branché, ou que la connexion est branlante. Pour des problèmes plus sérieux, voyez claviers. Erreur de somme de contrôle en NVR La NVR est la mémoire non volatile (Non-Volatile RAM, NdT). Ceci veut dire que la NVR, où sont stockées les informations de configuration, est corrompue. Le terminal fonctionnera sûrement encore mais la configuration qui avait été sauvegardée la dernière fois que quelqu'un a configuré le terminal a sûrement été perdue. Essayez de refaire la configuration et de la sauver. Cela a des chances de fonctionner. Sur certains terminaux très vieux (début des années 1980) il y avait un CMOS alimenté sur pile pour sauver la configuration donc dans ce cas le problème peut venir d'une pile morte. Parfois la puce EEPROM (pas besoin de pile) devient mauvaise après trop de sauvegardes. On aura du mal à en trouver. Si vous ne pouvez pas la réparer vous êtes soit bloqué avec la configuration par défaut ou vous pouvez envoyer des séquences d'échappement au terminal quand vous le démarrez ou quand vous essayez de le configurer. 18.6 Capacités Les capacités électrolytiques possèdent une coquille de métal et peuvent faiblir ou tomber en panne s'ils restent inutilisés pendant des années. Parfois le fait de laisser le terminal allumé pendant un certain temps peut aider à les restaurer en partie. Si vous le pouvez, faites faire de l'exercice aux terminaux que vous avez en stock en les allumant pendant quelques instants chaque année ou tous les deux ans. 18.7 Claviers Interchangeabilité Les claviers pour terminaux ne sont pas les mêmes que les claviers pour PC. La différence ne réside pas seulement dans la disposition des touches mais aussi dans les codes générés quand on presse une touche. De plus, les claviers pour diverses marques et modèles de terminaux ne sont pas toujours interchangeables. On obtient parfois un clavier "incompatible" qui fonctionne en partie sur un terminal. Toutes les touches ASCII fonctionneront correctement, mais les touches spéciales pour la configuration et la pause ne fonctionneront pas correctement. Comment ils fonctionnent La plupart des claviers font simplement un contact entre deux conducteurs quand vous appuyez sur une touche. L'électronique à l'intérieur d'une puce dans le clavier convertit l'établissement de ce contact en un code envoyé à travers le câble externe du clavier. Au lieu d'avoir un fil (ou conducteur) séparé allant de chaque touche à la puce, le principe suivant est utilisé. Numérotez les conducteurs disons de 1 à 10 et de A à J. Par exemple : le conducteur 3 conduit à plusieurs touches et le conducteur B conduit à plusieurs touches, mais seule une touche a les deux conducteurs qui la rejoignent. Quand cette touche est pressée, un court-circuit est établi entre 3 et B. La puce ressent ce court-circuit et sait quelle touche a été pressée. Un tel principe réduit le nombre de conducteurs nécessaire (et réduit le nombre de broches nécessaires sur la puce). C'est un principe similaire à ce qu'on appelle un commutateur croisé (crossbar). L'appui sur une touche affiche deux caractères différents Si, à cause d'un défaut, les conducteurs 3 et 4 sont court-circuités alors l'appui sur la touche 3-B court-circuitera aussi 4 et B et la puce croira que les touches 3-B et 4-B ont été pressées à la fois. Ceci fera sûrement afficher deux caractères différents alors que tout ce que vous souhaitiez était un caractère. Claviers modernes contre anciens Alors que le clavier moderne et le type ancien se ressemblent beaucoup, la mécanique d'opération est différente. Les vieux possèdent des contacts de touches individuels sous le capuchon de chaque touche, chaque contact étant inclus dans une enveloppe en plastique dur. Les claviers modernes utilisent de grandes feuilles (membranes) en plastique souple de la taille du clavier. Une feuille de plastique avec des trous est prise en sandwich entre deux autres feuilles de plastique contenant des circuits imprimés (comprenant des points de contact). Quand vous appuyez sur une touche, les deux feuilles "imprimées" sont pressées l'une contre l'autre à un certain point, ce qui ferme les contacts imprimés sur les feuilles à ce point. Le clavier ne fonctionne pas du tout Si aucune touche ne fonctionne, essayez un autre clavier (si vous en avez un) pour vérifier que le clavier est effectivement le problème. La cause la plus probable est un fil cassé à l'intérieur du cordon (câble) le reliant au terminal. La position la plus probable de la cassure est à l'une des extrémités du cordon. Essayez de manipuler les extrémités du cordon tout en tapant sur une touche pour voir si ça fonctionne de manière intermittente. Si vous trouvez un point endommagé, vous pouvez couper attentivement le cordon avec un couteau à l'endroit du point endommagé et épisser le conducteur cassé. Parfois une simple goutte de soudure fera l'affaire. Scellez le cordon avec du chatterton ou de la colle. L'appui sur b affiche bb, etc. (affichage en double) Si tous les caractères apparaissent en double il n'y a sûrement pas de problèmes avec le clavier. En revanche, votre terminal a sûrement été configuré de manière incorrecte en semi-duplex (HDX ou echo local = oui) et chaque caractère que vous tapez est renvoyé à la fois depuis l'électronique à l'intérieur de votre terminal et depuis votre ordinateur hôte. Si les deux caractères ne sont pas les mêmes, il peut y avoir un court-circuit à l'intérieur de votre clavier. Voyez un appui affiche deux caractères différents. Le clavier tape tout seul Si une touche est court-circuitée il est probable qu'elle tapera un grand nombre de fois le même caractère si la répétition automatique est activée. Si plus d'une touche est court-circuitée, alors la répétition de séquences de quelques caractères sera tapée. Cela peut amener getty à se relancer trop rapidement si cela arrive à l'invite de login. Voyez touche court-circuitée. La solution est de nettoyer les contacts grâce à nettoyage des contacts du clavier. Liquide versé sur le clavier Si de l'eau ou du liquide aqueux a été versé sur le clavier (ou s'il a été exposé à la pluie, une rosée forte ou à l'humidité), certaines touches ne fonctionneront pas correctement. L'humidité peut faire un court-circuit sur une touche (comme si on appuyait dessus tout le temps) et vous pourrez voir l'écran se remplir avec cette lettre si la répétition automatique est activée. S'il est devenu humide et ensuite séché en partie (ou en totalité), certaines touches pourront ne pas fonctionner à cause de dépôts sur la surface des contacts. Sur les types de claviers modernes, on peut facilement séparer les feuilles de plastique à l'intérieur et les sécher/nettoyer. Pour les plus anciens, on peut les laisser sécher au soleil ou au four (basse température). Quand c'est sec il faudra peut-être nettoyer les contacts comme expliqué ci-dessous. Nettoyage des contacts du clavier Claviers avec membrane Sur certains claviers récents, les feuilles de plastique (membranes) sont faciles à enlever pour les inspecter et les nettoyer si nécessaire. Vous n'avez besoin d'enlever que quelques vis pour séparer le clavier en deux et obtenir les feuilles. Sur certains vieux clavier IBM les feuilles ne peuvent pas être enlevées sans casser beaucoup de taquets en plastique qu'il faudra réparer à la colle afin de les remettre (probablement pas la peine de les réparer). Un tel clavier peut parfois fonctionner en tordant, tournant et/ou pesant sur l'assemblage contenant les feuilles de plastique. Claviers avec contacts individuels Ce qui suit concerne les vieux claviers qui possèdent des contacts séparés en plastique dur pour chaque touche. Avant de faire tout le travail de nettoyage des contacts électriques essayez d'abord de tourner le clavier tête en bas et bougez les mauvaises touches. Ceci peut aider à déloger les saletés, surtout si vous pressez la touche fortement et rapidement pour faire une vibration. (NdT : bien secouer le clavier régulièrement fait effectivement tomber toutes les saletés, miettes de pain, etc. et fait du bien au clavier !) Il est souvent utile d'enfoncer la touche et de l'agiter de bord à bord. Souvent on peut enlever les capuchons de touches en les découvrant vers le haut en utilisant un petit tournevis comme levier tout en empêchant une inclinaison excessive avec un doigt. Il existe un outil spécial appelé extracteur de touches mais vous pouvez vous en passer. (Attention : les capuchons de touches sur les claviers modernes ne se découvrent pas.) Le capuchon de touche peut basculer un peu et branler alors qu'il se détache. Il peut même s'envoler et atterrir par terre. Vous avez alors deux choix sur le nettoyage des contacts : utiliser un vaporisateur de nettoyant de contact directement au-dessus du contact de la touche, ou séparer le contact de touche et le nettoyer. Un tout autre choix est de remplacer le contact de touche par un nouveau ou un d'occasion. La vaporisation directe d'un nettoyant de contacts ou autre (obtenu dans un magasin d'électronique) au-dessus du contact de la touche est la méthode la plus rapide mais peut ne pas fonctionner et peut aussi endommager le plastique. Avant de vaporiser, nettoyez la surface près des supports de contacts. Avec le clavier branché (ou en connectant un ohmmètre sur les contacts de touches) utilisez le tube livré avec le vaporisateur pour injecter du nettoyant à l'intérieur du contact de touche. Ne laissez pas le liquide de nettoyage s'en aller dans les touches voisines où il pourrait amasser de la poussière et s'infiltrer (avec la poussière) dans les contacts de touches adjacents. Si vous faites cette erreur, vous pourriez réparer une touche et abimer les touches voisines. Si cela arrive, faites immédiatement bouger les touches adjacentes affectées jusqu'à ce qu'elles fonctionnent correctement. Vous pouvez basculez le clavier pour que le nettoyant coule à l'intérieur des contacts. Pour le terminal CIT101e avec un clavier Alps, ceci implique de basculer la rangée des chiffres vers le plafond. Faites bouger le contact de touche vers le haut et vers le bas avec un stylo ou le manche d'un petit tournevis pour éviter d'avoir du liquide nettoyant toxique sur votre peau (ou portez des gants). Finalement retournez le clavier tête en bas tout en bougeant la touche pour enlever le nettoyant qui reste. Plus vous injecterez de nettoyant plus vous serez sûr de réparer la touche mais vous aurez aussi plus de chances d'endommager le plastique ou de contaminer les touches adjacentes, utilisez donc ce que vous jugez nécessaire pour faire le travail. Une fois que la touche fonctionne correctement, bougez-la de haut en bas encore un peu et testez-la une demi-minute plus tard, etc. pour vous assurer qu'elle fonctionne encore correctement. Parfois une touche fonctionne très bien quand les contacts à l'intérieur sont saturés de liquide de nettoyant de contacts, mais quand le liquide sèche quelques minutes plus tard, le dépôt résultant sur les contacts empêche un contact correct et la touche fonctionne avec des ratés (si elle fonctionne). Faire bouger la touche alors que le liquide sèche à l'intérieur peut aider les choses. Certaines touches possèdent des contacts presque scellés à l'intérieur et donc peu de nettoyant pour contact atteint les contacts. Le nettoyant qui arrive effectivement sur les contacts peut apporter la contamination (le nettoyage autour du haut des touches avant la vaporisation peut aider à minimiser cet effet). Si vous devez désassembler le contact de touche, inspectez-le d'abord pour voir comment il est installé et se sépare. Parfois on peut enlever le capuchon du contact sans enlever le contact du clavier. Pour ce faire, découvrez (ou tirez) le haut du contact de touche après avoir retiré les taquets en plastique fin qui le retiennent. Ne tirez pas trop fort ou vous pourriez casser le plastique fin. Si vous ne pouvez faire cela, vous devrez peut-être dessouder le contact et l'enlever afin de le séparer (ou de le remplacer). Une fois que le contact a été séparé, vous pourrez ne pas encore voir les contacts si les surfaces des contacts sont prises en sandwich (qui se touchent presque). Vous pouvez mettre du nettoyant pour contact sur les contacts en soulevant légèrement les surfaces conductrices et en injectant du nettoyant entre elles. Il peut y avoir une sorte d'attache maintenant les surfaces de contact ensemble qui doit être enlevée avant de soulever ces surfaces. Avec du nettoyant sur les contacts, faites-les bouger. Faire basculer le clavier ou le retourner peut aider. Prenez garde de ne pas perdre de petites parties car elles peuvent s'envoler en l'air quand vous enlevez un contact de touche. 19. Annexe A : généralités 19.1 Liste des commandes Linux pour les terminaux Envoyer une commande à un terminal * setterm : options longues * tput : options courtes * tset : ne fait que l'initialisation * clear : efface l'écran * reset : envoie une chaîne de réinitialisation Configuration du pilote de périphériques pour les terminaux * Setserial : * Stty Terminfo * Compilateur Terminfo (tic) : compilateur et traducteur pour terminfo * toe : montre la liste des terminaux pour lesquels vous avez des fichiers terminfo * infocmp : compare ou affiche des entrées terminfo Autres * gitkeys : montre quels octets chaque touche envoie à l'hôte. * tty : montre sur quel port tty vous êtes connecté. * set (ou tset -q) : montre la valeur de TERM, le nom de l'entrée terminfo * tset : positionne TERM de manière interactive et fait l'initialisation 19.2 Internet et les livres Information sur le terminal sur l'Internet * Site Web de Shuford à l'université du Tennessee possède beaucoup d'informations utiles sur les terminaux texte ; * Boundless a racheté la partie terminaux VT et Dorio chez DEC. Pour obtenir des spécifications, choisissez les liens ADDS, VT ou DORIO. Choisissez ensuite un lien "data sheet". Ensuite, sur la feuille de données, sélectionnez le lien "Go to Specs". * Wyse est un grand fabricant de terminaux. Pour les nouveaux modèles, voyez terminaux Wyse. Voyez aussi vieilles spécifications des terminaux Wyse * Séquences d'échappement ; Amérique du Nord ou séquences d'échappement ; Europe est une liste de séquences d'échappement (et codes de contrôles) pour certaines émulations de terminal (qui comprend les VT 100, 300, 420 et Wyse) ; * comp.terminals est le groupe de nouvelles pour les terminaux. Livres liés aux terminaux * port série EIA-232, voir Livres sur EIA-232 (RS-232). * réparations, voir livres et sites Web sur la réparation. * base de données Terminfo, voir documents Termcap Livres consacrés entièrement aux terminaux Autant que je sache, il n'existe pas de livre satisfaisant sur les terminaux texte (sauf si vous vous intéressez aux terminaux antiques des années 70). * Handbook of Interactive Computer Terminals par Duane E. Sharp ; Reston Publishing Co. 1977. (quasiment obsolète) * Communicating with Display Terminals par Roger K. deBry ; McGraw-Hill 1985. (principalement sur les terminaux synchrones IBM) Le "HANDBOOK..." présente les spécifications brèves de plus de cent modèles différents de vieux terminaux fabriqués au début des années 1970 par plus de 60 sociétés différentes. Il explique aussi comment ils fonctionnent physiquement mais montre de manière incorrecte un diagramme pour un écran qui utilise une déviation électrostatique du faisceau d'électrons (même dans les années 1970). Ce livre explique un certain nombre de concepts techniques avancés comme le "balayage au hasard" et le "principe de pénétration de la couleur". Le livre "COMMUNICATING..." au contraire du "Handbook..." ignore les détails physiques et électroniques des terminaux. Il possède un chapitre entier sur l'explication des nombres binaires (qui n'est pas nécessaire dans un livre sur les terminaux puisque cette information est largement disponible par ailleurs). Il semble couvrir principalement les vieux terminaux IBM (surtout les 3270) dans les modes de fonctionnement en bloc et synchrone. Il est de peu d'utilité pour les terminaux ANSI utilisés couramment de nos jours sur les systèmes de type Unix. Bien qu'il en parle un peu, il ne montre les différents systèmes de câblage utilisés pour les relier aux ports série. Livres possédant des chapitres sur les terminaux Ces chapitres ne couvrent presque rien sur les terminaux eux-mêmes et leurs capacités. Par contre, ces chapitres couvrent plutôt la manière de configurer l'ordinateur (et le pilote de terminal) pour qu'il fonctionne avec les terminaux. À cause des différences entre les systèmes Unix, la plupart des informations ne s'appliquent pas à Linux. * Unix Power Tools by Jerry Peck et. al. O'Reilly 1998. Ch. 5 : configuration de votre terminal, Ch. 41 : paramètres du terminal et de la ligne série, Ch. 42 : problèmes avec les terminaux * Advanced Programming in the Unix Environment par W. Richard Stevens Addison-Wesley, 1993. Ch. 11 : entrées/sorties avec le terminal, Ch. 19 : pseudo-terminaux * Essential System Administration par Aleen Frisch, 2ème édition. O'Reilly, 1998. Ch. 11 : terminaux et modems. Le livre "UNIX POWER TOOLS" possède trois chapitres courts sur les terminaux texte. Il couvre moins de choses que ce HOWTO mais donne plus d'exemples pour vous aider. Le livre "ADVANCED PROGRAMMING...", dans le chapitre 11, ne couvre que le pilote de périphériques du système d'exploitation pour s'occuper des terminaux. Il explique les paramètres qu'on donne à la commande stty pour configurer le terminal. Le chapitre du livre "ESSENTIAL SYSTEM..." en dit plus sur les terminaux que sur les modems. Il semble bien écrit. 19.3 Systèmes non Linux La configuration de l'ordinateur hôte pour les terminaux sur des systèmes d'exploitation différents de Linux est en général largement différente que sous Linux. Voici quelques liens vers des manuels en ligne pour les systèmes de type Unix : * Ajouter des terminaux série pour SCO OpenServer dans le manuel de SCO OpenServer. * Configuration des terminaux et modems pour HP-UX de Hewlett-Packard. 20. Annexe B : terminologie des commandes de séquences d'échappement On les appelle parfois "séquences de contrôle". Cette section du Text-Terminal HOWTO est incomplète (et pourra ne jamais être complète car il y a un grand nombre de séquences de contrôle). Cette section sert de référence et appartient peut-être vraiment à ce qu'on pourrait appeler "Text-Terminal-Programming-HOWTO" (HOWTO sur la programmation d'un terminal texte). Un exemple de séquence d'échappement ANSI normale est ESC[5B qui déplace le curseur vers le bas de cinq lignes. ESC est le caractère d'échappement. Le paramètre 5 est inclus dans la séquence. Si c'était 7 le curseur bougerait vers le bas de sept lignes, etc. Il est facile de comprendre l'explication suivante pour la séquence : "déplacer le curseur vers le bas de x lignes : ESC[xB". Mais un jargon de commande tel que : "requête d'attribut pour périphérique tertiaire" est moins compréhensible. Cette section essaiera d'expliquer une partie du jargon utilisé dans les commandes de séquences d'échappement. Une liste complète (comprenant les codes de séquences d'échappement pour la norme ANSI) est un projet "qu'on voudrait bien faire". Puisque beaucoup de séquences d'échappement font la même chose que ce qui est fait en configurant le terminal avec options de configuration, de telles options en séquences d'échappement ne seront pas répétées ici. 20.1 Liste de séquences d'échappement Pour avoir une liste de nombreuses séquences d'échappement (mais pas toutes) pour divers terminaux, voyez séquences d'échappement ; Amérique du Nord ou séquences d'échappement ; Europe. On utilise celles-ci pour émuler un terminal et elles ne sont pas toujours les mêmes que sur le vrai terminal correspondant. Une liste pour les VT (non maintenue) se trouve à FAQ Émulateurs. Cherchez "VT". 20.2 Codes de contrôle 8 bits Table des codes de contrôle 8 bits DEC (en hexadécimal). Fonctionne sur les VT2xx ou plus récents. CSI est le code le plus courant. ACRONYME NOM_COMPLET HEXA REMPLACE IND Index (une ligne vers le bas) 84 ESC D NEL Ligne Suivante 85 ESC E RI Index Inverse (une ligne vers le haut) 8D ESC M SS2 Décalage Simple 2 8E ESC N SS3 Décalage Simple 3 8F ESC O DCS Chaîne de Contrôle Périphérique 90 ESC P CSI Introduction Séquence de Contrôle 9B ESC [ ST Terminaison de Chaîne 9C ESC \ 20.3 Échappement pour l'imprimante * Auto Print on/off (impression automatique oui/non) : Activée (on), les données venant de l'hôte sont aussi envoyées sur le port imprimante du terminal (et sont aussi affichées sur l'écran du terminal). * Print Controller on/off (contrôleur d'impression oui/non) : Activée (on), les données venant de l'hôte ne sont envoyées qu'à l'imprimante (rien ne s'affiche sur l'écran du terminal). 20.4 Rapports Ces séquences sont en général des requêtes envoyées de l'hôte pour demander un rapport du terminal. Le terminal répond en envoyant un rapport (en fait une autre séquence d'échappement) à l'hôte qui y a intégré certaines valeurs indiquant à l'hôte l'état en cours du terminal. Dans certains cas un rapport peut être envoyé à l'hôte même s'il n'a pas été demandé. Ceci arrive parfois quand on quitte la configuration. Par défaut aucun rapport non sollicité ne devrait être envoyé. * Request for Status (Report Operating Status) (Demande d'état, rapporter l'état d'opération) : la signification des réponses du VT100 est soit "je vais bien", soit "je ne vais pas bien" * Request for Device Attributes (demande des attributs du périphérique) : le "périphérique" est en général l'imprimante. Y a-t-il une imprimante ? Est-elle prête ? * Request for Tertiary Device Attributes (pour les VT) (demande des attributs des périphériques tertiaires) : la réponse est le rapport qui a été entré pendant la configuration. Le périphérique tertiaire est le troisième périphérique (l'imprimante ou le périphérique sur le port auxiliaire ??). Le premier périphérique peut être l'ordinateur hôte et le deuxième périphérique le terminal. * Request for Terminal Parameters (demande des paramètres du terminal) : quelle est la parité, la vitesse de transmission, la largeur d'octets, etc. Cette demande n'a pas l'air d'avoir beaucoup de sens, puisque si l'hôte ne connaissait pas déjà ces données, il ne pourrait pas communiquer avec le terminal ou envoyer une réponse. 20.5 Mouvements du curseur Le curseur se trouve à l'endroit où le prochain caractère reçu de l'hôte sera affiché. La plupart des mouvements de curseur sont compréhensibles. "index cursor" (indexer le curseur) veut dire déplacer le curseur vers le bas d'une ligne. Les mouvements du curseur peuvent être relatifs à la position en cours comme "déplacer de 4 espaces vers la gauche" ou absolus comme "déplacer à la rangée 3, colonne 39". Le mouvement absolu s'appelle "positionnement direct du curseur" ou "adressage direct du curseur". La position d'origine est rangée 1, colonne 1 (l'origine de l'index est 1). Mais l'emplacement de cette position d'origine à l'écran n'est pas clair. Si "mode d'origine du curseur", équivalent à "mode d'origine relatif", est choisi, l'origine se trouve en haut de la partie défilante (pas forcément le haut de l'écran). Si le "mode d'origine absolu" est choisi (même chose que désactiver l'un des deux modes de la phrase précédente) alors l'origine se situe dans le coin en haut à gauche de l'écran. Sur certains terminaux anciens si le "mode d'origine du curseur" est activé, cela veut dire que c'est relatif. 20.6 Pages (définition) Voyez pages pour avoir une explication sur les pages. Il y a un certain nombre de séquences d'échappement pour s'occuper des pages. Le texte peut être copié d'une page à une autre et on peut déplacer le curseur de page en page. Le passage d'une page à l'autre peut ou peut ne pas être automatique : quand l'écran est plein (page 1), alors les données supplémentaires venant de l'hôte vont sur la page 2. Le curseur peut n'être que sur une page à la fois et les caractères envoyés au terminal vont là. Si cette page n'est pas affichée, le nouveau texte sera reçu par le terminal et ira en mémoire d'affichage, mais vous ne le verrez pas (jusqu'à ce qu'on passe à cette page sur le terminal). 21. Annexe C : communications série sur EIA-232 (RS-232) 21.1 Introduction aux communications série (Une grande partie de cette section se trouve maintenant dans le Serial-HOWTO.) Les terminaux texte sur les systèmes de type Unix (et sur les PC) sont connectés en général sur un port série asynchrone 232 d'un ordinateur. C'est en général un port RS-232-C, EIA-232-D ou EIA-232-E. Ces trois ports sont à peu près identiques. Le préfixe originel RS est devenu EIA (Electronics Industries Association) et plus tard EIA/TIA après que EIA se soit alliée avec TIA (Telecommunications Industries Association). La spécification EIA-232 décrit aussi les communications synchrones mais le matériel qui supporte les communications synchrones manque quasiment toujours sur les PC. La désignation RS est obsolète mais est toujours utilisée. On utilisera EIA dans cet article. Le port série représente plus qu'un simple connecteur physique au dos d'un ordinateur ou d'un terminal. Il comprend l'électronique associée qui doit produire des signaux conformes à la spécification EIA-232. Le connecteur standard possède 25 broches, dont la plupart sont inutilisées. Un connecteur différent ne possède que neuf broches. Une broche est utilisée pour envoyer des octets de données et une autre pour en recevoir. Une autre broche est la masse commune du signal. Les autres broches "utiles" sont principalement utilisées à des fins de signalisation avec une tension négative régulière voulant dire "éteint" et une tension positive régulière voulant dire "allumé". La puce UART (émetteur-récepteur asynchrone universel) fait la plus grande partie du travail. Aujourd'hui, les possibilités de cette puce sont en général incluses dans une autre puce. 21.2 Tensions Tension pour un bit Sur le port série EIA-232, les tensions sont bi-polaires (positives ou négatives par rapport à la masse) et devraient être de l'ordre de 12 volts en amplitude (certaines font 5 ou 10 volts). Sur les broches d'émission et de réception +12 volts représente le bit 0 (parfois appelé "espace") et -12 volts est le bit 1 (parfois appelé "marque"). On appelle cela la logique inversée puisque normalement le bit 0 est à la fois faux et négatif alors que le 1 est normalement vrai et positif. Bien que les broches de transmission et réception soient en logique inversée, d'autres broches (les lignes de contrôle du modem) sont en logique normale avec une tension positive étant vraie et une tension négative étant fausse. La tension zéro n'a aucune signification (sauf qu'elle veut dire en général que l'unité est éteinte). Une étendue de tensions est permise. Les spécifications disent que l'amplitude d'un signal transmis devrait être entre 5 et 15 volts mais ne doit jamais dépasser 25 volts. Toute tension reçue en dessous de 3 volts est indéfinie (mais certains terminaux considèreront qu'une tension plus basse est valide). On voit parfois des affirmations erronnées selon lesquelles la tension est communément 5 volts (ou même 3 volts) mais c'est en général 11-12 volts. Si vous utilisez un port EIA-422 sur un ordinateur Macintosh comme un EIA-232 (cela demande un câble spécial) ou un EIA-423 alors la tension sera vraiment 5 volts. La discussion ici suppose que c'est 12 volts. Il y a beaucoup de confusion à propos des tensions sur Internet. Notez que la logique d'ordinateur normale n'est que de quelques volts (à une époque, la norme était 5 volts), et que si vous essayez d'utiliser un équipement de test fait pour tester une logique d'ordinateur en 3-5 volts (TTL) sur les 12 volts d'un port série, cela peut endommager l'équipement de test. Séquence de tension pour un octet La broche de transmission (TxD) est maintenue à -12 V (marque) comme inactive quand rien n'est envoyé. Pour commencer un octet elle passe à +12 V (espace) pour le bit de départ et reste à +12 V pendant la durée (période) du bit de départ. Après vient le bit de bas niveau de l'octet de données. Si c'est un bit 0 rien ne change et la ligne reste à +12 V pendant une autre période de bit. Après vient le bit suivant, etc. Finalement, un bit de parité peut être envoyé et ensuite un bit de stop de -12 V (marque). La ligne reste à -12 V (inactive) jusqu'au prochain bit de départ. Notez qu'il n'y a pas de retour à 0 volts et il n'y a donc pas de moyen simple (sauf avec un signal de synchronisation) pour dire où finit un bit et où commence le bit suivant dans le cas où deux bits consécutifs ont la même polarité (tous les deux zéro ou tous les deux un). Un deuxième bit de stop serait aussi à -12 V, identique au premier bit de stop. Puisqu'il n'y a pas de signal pour marquer la frontière entre ces deux bits, le seul effet du deuxième bit de stop est que la ligne doit rester inactive à -12 V deux fois plus longtemps. Le récepteur n'a aucun moyen de faire la différence entre un deuxième bit de stop et un temps d'inactivité plus long entre les octets. Ainsi les communications fonctionnent bien si une extrémité utilise un bit de stop et l'autre extrémité utilise deux bits de stop, mais n'utiliser qu'un bit de stop est visiblement plus rapide. Dans de rares cas, un bit de stop et demi est utilisé. Ceci veut dire que la ligne est gardée à -12 V pendant une période de temps et demie (comme un bit de stop 50 % plus long que la normale). 21.3 La parité expliquée Les caractères sont normalement transmis sur 7 ou 8 bits (de données). Une parité supplémentaire peut (ou peut ne pas) y être ajoutée, ce qui donne un octet de longueur 7, 8 ou 9 bits. Certains émulateurs de terminaux et terminaux anciens n'autorisent pas 9 bits. Certains interdisent 9 bits si on utilise deux bits de stop (puisque cela ferait beaucoup trop de bits : 12 bits au total). On peut mettre une parité impaire, paire, ou pas de parité (les parités marque et espace peuvent être des options sur certains terminaux). Avec une parité impaire, le bit de parité est sélectionné de telle sorte que le nombre de bit 1 dans un octet, en comprenant le bit de parité, soit impair. Si un tel octet se détériore par l'inversion d'un bit, le résultat est un octet illégal de parité paire. Cette erreur sera détectée et si c'est un octet arrivant au terminal, un symbole caractère d'erreur apparaîtra à l'écran. La parité paire fonctionne de manière similaire avec tous les octets légaux (comprenant le bit de parité) ayant un nombre de bit 1 pair. Pendant la configuration, le nombre de bits par caractère signifie en général le nombre de bits de données par octet (7 pour de l'ASCII pur et 8 pour les divers codes de caractères ISO). Une "marque" est un bit 1 (ou un 1 logique) et un "espace" est un bit 0 (ou un 0 logique). Pour la parité marque, le bit de parité est toujours un bit 1. Pour la parité espace c'est toujours un bit 0. La parité marque ou espace ne fait que gâcher de la bande passante et devrait être évitée autant que possible. "Pas de parité" veut dire qu'aucun bit de parité n'est ajouté. Pour les terminaux qui n'autorisent pas les octets de 9 bits, il faut sélectionner "pas de parité" pour utiliser des codes de caractères sur 8 bits puisqu'il n'y a pas de place pour le bit de parité. 21.4 Formation d'un octet (encadrement) Dans la transmission en série des octets par les ports EIA-232, le bit de bas niveau est toujours envoyé en premier. Les ports série sur les PC utilisent des communications asynchrones quand il y a un bit de départ et un bit de stop pour marquer le début et la fin d'un octet. On appelle cela l'encadrement et l'octet encadré s'appelle parfois un cadre. Au final, 9, 10 ou 11 bits sont envoyés par octet, 10 étant le nombre le plus courant. 8-N-1 veut dire 8 bits de données, pas de parité, 1 bit de stop. Ceci fait en tout 10 bits si on compte le bit de départ. Un bit de stop est utilisé quasiment partout. À 110 bits/seconde (et parfois à 300 bits/seconde) deux bits de stop étaient autrefois utilisés mais maintenant le deuxième bit de stop n'est utilisé que dans des situations très inhabituelles (ou par erreur puisqu'il semble encore fonctionner correctement de cette manière). 21.5 Limitations de EIA-232 Basses vitesses et courtes distances Le port série EIA-232 traditionnel est à basse vitesse de manière inhérente, et est sérieusement limité en taille (distance). Les publicités disent souvent "grande vitesse" mais cela ne peut fonctionner à grande vitesse que sur de très courtes distances comme pour un modem situé juste à côté de l'ordinateur. Tous les fils utilisent un retour de masse commun et donc la technologie en paire torsadée (nécessaire à de grandes vitesses) ne peut être utilisée sans matériel supplémentaire. Cependant certains ordinateurs possèdent des interfaces plus modernes. Voyez successeurs de EIA-232. Il est parfois décevant que la norme RS-232 de 1969 n'ait pas utilisé la technologie en paire torsadée qui aurait pu fonctionner à peu près 100 fois plus rapidement. Les paires torsadées sont utilisées dans les câbles téléphoniques depuis la fin du 19ème siècle. En 1888 (il y a plus de 100 ans) la "conférence sur le câble" a rapporté son attachement à la paire torsadée (pour les systèmes téléphoniques) et a avancé ses avantages. Mais plus de 80 ans après cette approbation par la "conférence du câble", RS-232 n'a pas réussi à l'utiliser. Puisque RS-232 était au départ faite pour connecter un terminal à un modem basse vitesse situé tout près, le besoin de grande vitesse et d'une longueur de transmission plus élevée n'a apparemment pas été perçu. Successeurs de EIA-232 Un certain nombre de normes EIA ont été établies pour des vitesses plus élevées et des distances plus grandes en utilisant la technologie en paire torsadée (équilibrée). Une transmission équilibrée peut parfois être une centaire de fois plus rapide que EIA-232 non équilibrée. Pour une vitesse donnée, la distance (longueur maximale du câble) peut être beaucoup de fois plus grande avec de la paire torsadée. Mais les PC continuent d'être fabriqués avec l'EIA-232 "obsolète" puisque que cela fonctionne correctement avec les modems reliés aux lignes téléphoniques lentes, et cela fonctionne correctement avec les souris. Une exception reste l'ordinateur Macintosh d'Apple avec son GeoPort EIA-232/EIA-422 qui fournit de la paire torsadée (équilibrée) pour la transmission et la réception. Il utilise un petit connecteur rond "mini-DIN". Il fournit aussi du EIA-232 traditionnel mais seulement à 5 volts (ce qui reste du EIA-232 légal). Cependant, à cause du fait que les Mac coûtent plus cher que les PC, on les utilise rarement comme ordinateur hôte pour des terminaux. Certains terminaux récents utilisent l'EIA-423 mais cela reste comme de l'EIA-232 non équilibré et on peut les relier à un port EIA-232. Cet EIA-423 ne fait que 5 volts, mais les spécifications donnent des vitesses plus élevées que pour EIA-232 (qui ne sera d'aucune aide sur une grande distance où c'est le non-équilibrage qu cause les interférences). L'EIA-530-A (équilibré mais peut aussi être non équilibré) à 2 Mbits/s (équilibré) était fait pour remplacer EIA-232 mais on en a peu installé. Elle utilise le même connecteur à 25 broches que EIA-232. L'interface série à grande vitesse (HSSI = EIA-612/613, High Speed Serial Interface) utilise un connecteur à 50 broches et monte à peu près à 50 Mbits/s mais la distance est limitée à seulement quelques mètres. Le Bus Série Universel (USB, Universal Serial Bus) est construit dans des puces PCI. Il fait 12 Mbits/s sur une paire torsadée avec un connecteur à 4 broches (2 câbles fournissent le courant) mais il est aussi limité à des distances courtes d'au plus 5 mètres (cela dépend de la configuration). Pilotes de lignes Pour un terminal texte, les vitesses de EIA-232 sont suffisamment rapides mais la longueur de câble utilisable est souvent trop courte. La technologie équilibrée pourrait résoudre ce problème. La méthode courante pour obtenir une communication équilibrée avec un terminal texte est d'installer deux pilotes de ligne dans la liaison série pour convertir du non équilibré en équilibré (et vice-versa). Ce sont des appareils spécialisés et ils sont chers si on les achète neufs. 21.6 Synchronisation et synchrone Comment on synchronise l'"asynchrone" Dans EIA-232 il n'y a que deux états sur le fil de transmission (ou de réception) : marque (-12 V) ou espace (+12 V). Il n'y a pas d'état à 0 V. Ainsi une séquence de bits à 1 est tranmise avec uniquement du -12 V stable sans marqueur d'aucune sorte entre les bits. Pour que le récepteur détecte les bits individuels il doit toujours disposer d'un signal d'horloge qui est synchronisé avec l'horloge de l'émetteur. De telles horloges génèrent un "top" synchronisé avec chaque bit transmis (ou reçu). En transmission asynchrone, la synchronisation est faite en encadrant chaque octet d'un bit de départ et d'un bit de stop (fait par le matériel). Le récepteur attend sur la ligne un bit de départ et quand il en détecte un il lance son top d'horloge. Il utilise ce top d'horloge pour mesurer le temps de lecture des 7, 8 ou 9 prochains bits. (C'est en fait un petit peu plus compliqué que cela puisqu'on prend en général plusieurs mesures pour un bit, ce qui demande des tops supplémentaires.) Ensuite le bit de stop est lu, l'horloge s'arrête et le récepteur attend le bit de départ suivant. Ainsi l'asynchrone est en fait synchronisé pendant la réception d'un seul octet mais il n'y a pas de synchronisation entre un octet et l'octet suivant. Définir l'asynchrone par rapport au synchrone L'asynchrone signifie "non synchrone". En pratique, un signal asynchrone représente ce que le port série asynchrone envoie et reçoit qui est un flux d'octets, chacun d'entre eux étant délimité par un bit de départ et un bit de stop. Le synchrone est à peu près tout le reste. Mais ceci n'explique pas les concepts de base. En théorie, synchrone veut dire que les octets sont envoyés à vitesse constante l'un après l'autre en accord sur un top d'horloge. Il y a souvent un fil ou un canal séparé pour envoyer le top d'horloge. Les octets asynchrones peuvent être envoyés n'importe quand avec des intervalles de temps variés entre les octets (comme quelqu'un qui tape des caractères sur un clavier). Il y a des situations limites qu'on doit classer comme synchrones ou asynchrones. Le port série asynchrone envoie souvent des octets dans un flux constant qui en ferait un cas synchrone mais comme il y aura encore les bits de départ et de stop (ce qui permet de les envoyer de manière indéterminée) on l'appelle asynchrone. Un autre cas est quand les octets de données (sans auncun bit de départ ou de stop) forment des paquets avec un espacement erratique entre un paquet et le suivant. On l'appelle synchrone puisque les octets à l'intérieur de chaque paquet doit être transmis de manière synchrone. Communication synchrone Ne vous-êtes vous jamais demandé ce qu'on faisait de toutes les broches inutilisées sur un connecteur 25 broches pour le port série ? La plupart d'entre eux sont utilisés dans une communication synchrone qu'on implémente rarement sur les PC. Il y a des broches pour les signaux de temporisation de synchronisation ainsi que pour un canal inverse synchronisé. La spécification EIA-232 est donnée à la fois pour les communications synchrones et asynchrones mais les PC utilisent une puce UART (Émetteur Récepteur Asynchrone Universel) comme un 16450, un 16550A ou un 16550 et ne peuvent faire de la synchronisation. Pour faire du synchrone on a besoin d'une puce USART ou équivalente où le "S" veut dire synchrone. Puisque le synchrone est un marché de niche, un port série synchrone est sûrement assez cher. À côté de la partie synchrone de EIA-232, il y a plusieurs autres normes EIA synchrones. Pour EIA-232, trois broches sur le connecteur sont réservées pour les signaux d'horloge (de temporisation). Parfois c'est le rôl du modem de générer certains signaux de temporisation rendant l'utilisation de communications synchrones impossibles sans un modem synchrone (ou sans appareil qu'on appelle "éliminateur de modem synchrone" qui fournit les signaux de temporisation). Bien que peu de ports série soient synchrones, la communication synchrone prend souvent place sur les lignes téléphoniques en utilisant des modems qui utilisent la correction d'erreurs V.42. Ceci enlève les bits de départ et de stop et place les octets de données dans des paquets ce qui donne une opération synchrone sur la ligne téléphonique. 21.7 Mode par blocs Introduction au mode par blocs Le mode par blocs est rarement utilisé sous Linux. En mode par blocs, quand quelqu'un tape sur un terminal, le résultat est sauvé dans la mémoire du terminal et n'est pas envoyé immédiatement à l'ordinateur hôte. De tels terminaux possèdent souvent des possibilités d'édition intégrées. Quand l'utilisateur appuie sur certaines touches (comme la touche envoi), ce qui a été sauvegardé dans la mémoire du terminal est envoyé à l'ordinateur hôte. Cependant les éditeurs vi et emacs sous Linux réagissent instantanément à l'appui de certaines touches, mais, dans la situation ci-dessus, si on appuie sur de telles touches, rien ne se passera puisque rien n'est envoyé quand on appuie sur une touche. Ainsi l'utilisation d'un terminal en mode par blocs ne permettra pas l'utilisation de tels programmes interactifs. La vieille interface vers les minis IBM utilise le mode par blocs (voyez terminaux IBM) et donc beaucoup de terminaux IBM ne fonctionnent qu'en mode par blocs et sont aussi synchrones (voyez la section synchronisation et synchrone). Types de modes par blocs, formulaires Le mode par blocs peut lui-même avoir divers sous-modes comme "page" (une page à la fois) et "ligne" (une ligne à la fois). Certains terminaux possèdent à la fois les modes de transmissions par blocs et les modes traditionnels par caractères, et on peut passer d'un mode à l'autre. Les terminaux asynchrones possédant des modes par blocs sont parmi les HP2622A, VT130, VT131, VT330, VT340 et Visual500. Beaucoup de modèles de terminaux plus récents peuvent émuler le mode par blocs. Les modes par blocs peuvent comprendre une possibilité de formulaires où l'ordinateur hôte envoie un formulaire au terminal. L'utilisateur le remplit alors et envoie la touche envoi qui ne renvoie que les données du formulaire à l'ordinateur hôte. Le formulaire lui-même (pas les données) est affiché à l'écran dans des champs protégés qui ne sont pas transmis à l'hôte. Efficacité Les modes par blocs enlèvent une bonne partie de la charge sur l'ordinateur hôte, surtout si le matériel de l'ordinateur hôte est fait pour les modes par blocs (comme c'est/c'était le cas sur les minis IBM). En mode caractère, chaque caractère tapé est envoyé immédiatement sur le port série et en général génère une interruption sur l'ordinateur hôte. L'hôte qui reçoit l'octet doit arrêter tout ce qu'il fait et va chercher ce caractère depuis le matériel du port. Même avec des UART qui possèdent des tampons matériels FIFO, le délai matériel ne représente normalement que le temps de transmission de 3 octets, donc une interruption est générée à chaque caractère tapé. En vrai mode par blocs, un bloc de caractères long est reçu en n'utilisant qu'une interruption. Si on utilise le mode par blocs avec des ports série FIFO asynchrones, une interruption n'est nécessaire que tous les 14 octets puisqu'ils ont des tampons matériels de 16 octets. Ainsi la plus grande partie de la charge et du coût de la gestion des interruptions est éliminée et l'ordinateur a plus de temps à consacrer à d'autres tâches quand on utilise le mode par blocs. On fait des économies significatives en mode par blocs si le terminal est relié à son hôte par l'intermédiaire d'un réseau. Sans le mode par blocs, chaque caractère (octet) tapé est envoyé dans son propre paquet avec tous les octets d'enveloppe (40 dans un paquet TCP/IP comme ceux utilisés sur l'Internet). En mode par blocs, un grand nombre de caractères est envoyé dans un seul paquet. 21.8 Livres sur EIA-232 (RS-232) (Note : le premier couvre bien plus que EIA-232 uniquement.) * Black, Uyless D.: Physical Layer Interfaces & Protocols, IEEE Computer Society Press, Los Alamitos, CA, 1996. * Campbell, Joe: The RS-232 Solution, 2nd ed., Sybex, 1982. * Putnam, Byron W.: RS-232 Simplified, Prentice Hall, 1987. * Seyer, Martin D.: RS-232 Made Easy, 2nd ed., Prentice Hall, 1991. 21.9 Logiciels série Voyez logiciels série pour les logiciels Linux sur les ports série avec getty et les moniteurs de ports. 22. Annexe D : Notes classées par marque Voici des notes classées par marque qui étaient trop spécifiques à un certain terminal pour être mises autre part dans ce HOWTO. Si vous avez des informations à apporter pour un terminal particulier qui n'est pas couvert autre part, elles pourraient se trouver ici. Divers modèles et marques ont souvent beaucoup de choses en commun qu'on ne doit écrire qu'à un endroit. Il serait bien d'avoir, pour chaque modèle de terminal, un grand nombre de liens vers les documentations se rapportant à ce modèle (avec les séquences d'échappement). Il y a tellement de modèles de terminaux qu'une telle tâche serait relativement pénible et moi, David Lawyer (en 1998), n'ai aucunement l'intention de tenter cette aventure. Si les fabricants de terminaux mettaient au moins leurs manuels à disposition sur Internet, alors tout ceci ne serait pas nécessaire. 22.1 CIT Les terminaux CIT ont été fabriqués au Japon dans les années 1980 pour CIE Terminals. On a cessé de les importer à la fin des années 1980. La société, CIE, fabrique encore des imprimantes CItoh (en 1997) mais n'a pas de pièces détachées pour ses terminaux arrêtés. Ernie au (714) 453-9555 à Irvine, Californie, vendait (en 1997) certaines pièces pour les modèles 224, 326, etc. mais n'a rien pour les 80 et 101. (Le document que vous lisez à l'heure actuelle a été principalement écrit sur le 101e.) Pour sauver les paramètres de configuration pressez ^S en mode Set-Up. cit80 : contraste : molette à l'arrière du terminal, cit101e : luminosité : utilisez les touches fléchées haut/bas en mode Set-Up. 22.2 Terminaux IBM Ne confondez pas les terminaux IBM avec les moniteurs IBM PC. Beaucoup de terminaux IBM n'utilisent pas l'ASCII mais à la place un code EBCDIC sur 8 bits. On dit que dans EBCDIC l'ordre de transmission des bits est inversée par rapport à la normale avec le bit de haut rang en premier. Les normes de communication avec les minis IBM sont un type de communication synchrone en mode par blocs (envoie de grands paquets de caractères). Deux normes sont "BISYNC" et "SNA" (qui comprend des normes de réseau). Beaucoup de leurs terminaux sont reliés avec du câble coaxial (RG62A/U) et les personnes naïves peuvent penser que le connecteur "BNC" sur le terminal est pour l'Ethernet (mais ce n'est pas le cas). Alors que ce système IBM est en réalité plus efficace que ce qui est normalement utilisé sous Linux, les terminaux possédant ces caractéristiques IBM ne fonctionneront pas sous Linux. Cependant, certains terminaux IBM sont des terminaux ASCII asynchrones et devraient fonctionner sous Linux sur des PC. Les modèles 31xx peuvent fonctionner à l'exception que 317x et 319x ne sont pas des terminaux ASCII. Avant d'acquérir un terminal IBM, assurez-vous qu'il y a une entrée termcap (ou terminfo) pour celui-ci. S'il n'y en a pas, il ne fonctionnera probablement pas sous Linux. Même s'il y a une entrée terminfo, il peut ne pas fonctionner. Par exemple, il y a une entrée termcap pour les 327x mais le 3270 est un terminal synchrone EBCDIC. Les modèles 3270 comprennent le 3278 (fin des années 1970), le 3279 avec la couleur et les graphiques, et le contrôleur de terminal 3274 (à peu près comme le 3174). On peut les utiliser à la fois pour BISYNC et SNA. Le 3290 a un écran séparé (séparé en quartiers). Les terminaux synchrones IBM ne sont pas directement reliés au mini IBM mais sont reliés à un "contrôleur de terminaux" (qu'on appelle parfois "contrôleur de cluster" ou "contrôleur de communications"). Certains de ces contrôleurs peuvent convertir un signal synchrone en asynchrone et donc dans ce cas on pourrait relier indirectement un terminal synchrone à un ordinateur hôte de type Unix par son port série. Mais il reste un problème majeur qui est la transmission par blocs. Voyez la section mode par blocs. IBM 3153 On dit que le port Aux est DCE et utilise un câble droit. 22.3 Teletypes Ce sont des antiquités et ils représentent les terminaux les plus anciens. Ils ressemblent à des machines à écrire télécommandées mais sont grands et font du bruit. Fabriqués par Teletype Corp., les premiers modèles ont été faits dans les années 1920 et devancent l'ordinateur de plus de 30 ans. Les premiers modèles utilisaient des relais électro-mécaniques et des distributeurs rotatifs au lieu d'électronique. Leur code Baudot n'avait que 5 bits par caractère comparé à l'ASCII sur 7 bits. Voyez le livre "Small Computer Systems Handbook" par Sol Libes, Hayden Books, 1978 : pp. 138-141 ("Teletypes"). 22.4 VT (DEC) Digital Equipment Corporation a fabriqué les modèles VT renommés avec le VT100 couramment émulé. En 1995 ils ont vendu leur partie terminaux à SunRiver qui s'appelle maintenant Boundless Technologies. On trouvera plus d'informations sur le site Web de Shuford. Les informations sur les produits actuels sont disponibles sur le site Web de Boundless. Voyez informations sur Internet. VT220 : certains possèdent un connecteur BNC pour la sortie vidéo (pas pour l'entrée). Parfois les gens croient à tort que c'est pour une liaison Ethernet. VT520 : il supporte le contrôle de flux DTR/DSR complet. 22.5 Wyse Wyse possède certaines FAQ pour les terminaux dont les numéros sont en-dessous de 100 (comme le WY60). Voyez http://www.wyse.com/service/faq/wysetterl.htm. Pour les spécifications de terminaux plus récents voyez http://www.wyse.com/terminal/. Wyse 99-GT Voici les menus de configuration du Wyse99GT (fin des années 1980). Notez que TERM veut dire "terminaison" (caractère) et non "terminal". Configuration du terminal WYSE 99-GT telle qu'utilisée à l'université d'Irvine, Californie par David Lawyer, avril 1990 F1 DISP: COLUMNS=80 LINES=24 CELL SIZE=10 X 13 STATUS LINE=STANDARD BACKGROUND=DARK SCROLL SPEED=JUMP SCREEN SAVER=OFF CURSOR=BLINK BLOCK DISPLAY CURSOR=ON ATTRIBUTE=CHAR END OF LINE WRAP=ON AUTO SCROLL=ON ---------------------------------------------------------------------------- F2 GENERAL: PERSONALITY=VT 100 ENHANCE=ON FONT LOAD=OFF COMM MODE=FULL DUPLEX RCVD CR=CR SEND ACK=ON RESTORE TABS=ON ANSWERBACK MODE=OFF ANSWERBACK CONCEAL=OFF WIDTH CHANGE CLEAR=OFF MONITOR=OFF TEST=OFF ---------------------------------------------------------------------------- F3 KEYBRD: KEYCLICK=OFF KEYLOCK=CAPS KEY REPEAT=ON RETURN=CR ENTER=CR FUNCT KEY=HOLD XMT LIMIT=NONE FKEY XMT LIMIT=NONE BREAK=170MS LANGUAGE=US MARGIN BELL=OFF PRINTER RCV=OFF ---------------------------------------------------------------------------- F4 COMM: DATA/PRINTER=AUX/MODEM MDM RCV BAUD RATE=9600 MDM XMT BAUD RATE=9600 MDM DATA/STOP BITS=8/1 MDM RCV HNDSHAKE=NONE MDM XMT HNDSHAKE=NONE MDM PARITY=NONE AUX BAUD RATE=9600 AUX DATA/STOP BITS=8/1 AUX RCV HNDSHAKE=NONE AUX XMT HNDSHAKE=NONE AUX PARITY=NONE (Il y a un port principal (Modem=MDM) et un port auxiliaire (AUX) ---------------------------------------------------------------------------- F5 MISC 1: WARNING BELL=ON FKEY LOCK=OFF FEATURE LOCK=ON KEYPAD=NUMERIC DEL=DEL/CAN XFER TERM=EOS CURSOR KEYS=NORMAL MARGIN CTRL=0 DEL FOR LOW Y=ON GIN TERM=CR CHAR MODE=MULTINATIONAL ---------------------------------------------------------------------------- F6 MISC 2: LOCAL=OFF SEND=ALL PRINT=NATIONAL PORT=EIA DATA SEND AREA=SCREEN PRINT AREA=SCREEN DISCONNECT=60 MSEC SEND TERM=NONE PRINT TERM=NONE PRINT MODE=NORMAL VT100 ID=VT100 POUND=US ---------------------------------------------------------------------------- F7 TABS: Vous devriez voir plusieurs caractères "T" séparés par 8 points. Sinon, appuyez sur backspace. F8 F/KEYS: Vous ne verrez normalement pas de définition pour les touches de fonction ici (sauf si quelqu'un les a définies et sauvées). Ceci veut dire qu'elles génèreront normalement leurs valeurs par défaut (pas affichées ici). montre la "définition par l'utilisateur" de la touche F5, etc. F9 A/BACK: Normally not defined: ANSWERBACK = F10 EXIT: La sélection de "DEFAULT ALL" rendra les paramètres par défaut définis en usine. Astuces sur l'utilisation du Guide de l'Utilisateur du WY-99GT : Notez qu'on peut trouver une grande partie de ce qui manque dans ce guide dans le Guide du Programmeur WY-99GT. L'émulation (personnalité) VT100 s'appelle ANSI et utilise les codes de touches ANSI comme indiqué à la page A-10 et plus, bien que le clavier soit en ASCII. Un sous-titre sur la page A-13 "clavier ASCII" s'applique aussi au VT100 parce qu'il a un sur-titre "Touches ANSI..." quelques pages avant. Mais tous les titres sur le clavier ASCII ne concernent pas le VT100 puisqu'ils tombent dans un sur-titre de personnalité non ANSI qu'on peut trouver quelques pages auparavant. L'annexe H est le "guide de commandes ANSI" sauf pour la personnalité VT52 (ANSI) qu'on trouve dans l'annexe G. Wyse 150 Quand on sort du menu de configuration avec F12, l'appui sur espace change de "non" à "oui" pour sauver la configuration. La phrase à gauche de ce non/oui parle d'"alignement vertical" et n'a rien à faire avec ce non/oui pour sauver la configuration (interface de menu confuse). Fin du HOWTO Text-Terminal