Utilisation d'un minitel comme terminal UNIX

Un howto simple et rapide pour utiliser un minitel comme terminal UNIX sous Gentoo Linux

A l'heure où le réseau teletel a sombré dans l'oubli au profit de l'internet, nombreux sont ceux qui disposent d'un vieux minitel entreposé dans leur grenier. Celui-ci pourrait avoir une nouvelle utilité : il est possible de s'en servir comme d'un terminal UNIX. Celui-ci serait alors reconnu comme l'une des classiques consoles en framebuffer.

Pourquoi effectuer cette manipulation? Certains avancent que cela peut être utile comme terminal de secours, ou pour un serveur pour lequel on n'a pas d'écran... En réalité, avouons-le : rien n'est plus classe, pour un geek, que les splendides niveaux de gris de la machine et la relative lenteur du terminal en 4800 bauds.

Pourquoi ce HOWTO?

Je sais qu'il existe quelques HOWTO sur le net sur le même sujet, mais ceux-ci sont bien souvent obsolètes ou incomplets, de sorte que j'ai dû configurer mon minitel de façon un peu différente. Comme j'y ai passé un peu de temps, j'espère que cette version économisera de longues heures de recherche à quelques geeks bidouilleurs.

Trouver un minitel

Si vous n'avez pas déjà de minitel, il peut être assez difficile de s'en procurer un de nos jours. Vous pouvez toujours essayer de demander à toutes vos connaissances, voire au laboratoire d'électronique de votre école ou université (c'est ce que j'ai fait :)), ou encore le commander sur eBay. J'en ai vu, assez récemment, vendus pour moins de 10 euros.

Il vous faut un minitel capable de gérer le mode téléinformatique, c'est-à-dire qu'il doit avoir une touche Fnct sur le clavier. Pour ma part, j'ai un minitel 1B Telic, donc je ne garantis rien pour les autres. Cependant, ils devraient fonctionner de la même manière. Notez par ailleurs que j'utilise la connection en 4800 bauds (avec Fnct-P 4) mais qu'avec un minitel 2, il est possible de passer en 9600 bauds (avec Fnct-P 9). Il ne devrait pas être difficile de modifier ma procédure afin d'utiliser un minitel 2 en 9600 bauds.

Relier le minitel au PC

Pour relier le minitel au PC, il existe différents montages qu'on trouve un peu partout sur le net. Le plus courant utilise deux condensateurs et 3 résistances (pas toujours exactement les mêmes). Je ne vous le recommande absolument pas : j'ai passé un temps fou à le réaliser, et ce pour rien, car il ne fonctionnait que dans le sens PC vers minitel. Certains sites préviennent que ça peut être le cas si notre port série est trop sensible, mais pour l'avoir testé sur plusieurs machines et sur une carte série en PCI (16C550), je n'ai jamais réussi à le faire fonctionner dans le sens minitel vers PC. D'autant plus que je l'ai monté plusieurs fois, pour essayer différentes résistances, les schémas n'étant jamais exactement identiques (parfois la résistance de 8.3kΩ devient une 10kΩ, et la résistance de 15kΩ devient une résistance de 17kΩ). J'ai également essayé de remplacer les condensateurs. A chaque essai, la communication ne marchait que dans un sens : du PC vers le minitel.

Je ne vous conseille donc pas d'essayer de concevoir ce schéma, sauf si vous avez du temps à perdre. Le second schéma utilise un MAX232 et de nombreux condensateurs. Il est censé être meilleur. Je n'ai pas essayé de le réaliser : j'avais déjà perdu assez de temps comme ça. Vous pourrez trouver les deux schémas sur http://1100f.free.fr/serie.htm.

Pour ma part, j'ai opté pour un cable série tout fait, permettant de relier le minitel au PC. Il est assez difficile d'en trouver, mais je me suis procuré le mien sur eBay pour 8 euros. Rien de ruineux, donc.

Avant de continuer, je vous conseille de tester la liaison entre le minitel et le PC. Mieux vaut détecter les problèmes à temps. Pour cela, vous pouvez utiliser minicom sous Linux, ou encore Terminate ou Telix sous DOS. Personnellement j'utilise minicom.

Pour tester la connection, passez votre minitel en mode téléinformatique (Fnct-T A), supprimez l'écho local (Fnct-T E) et passez en 4800 bauds (Fnct-P 4). Puis, en tant que root, lancez minicom (en utilisant éventuellement sudo) :

# minicom -s

Dans la section Serial Port Setup, choisissez le bon périphérique (/dev/ttyS0 pour le premier port série, par exemple), et désactivez le Hardware Flow Control et le Software Flow Control. Dans la sous-section Bps/Par/Bits, sélectionnez une connection en 4800 bauds et un codage sur 7 bits avec un stopbit et un bit de parité ("Even"). Sauvez votre configuration en tant que configuration par défaut, et choisissez Exit. A partir de ce moment, tout ce que vous tapez sur le PC devrait apparaitre sur l'écran du minitel et vice et versa. Si ce n'est pas le cas, vous avez un problème de communication entre le minitel et le PC.

Configuration de mgetty

Tous les HOWTO que j'ai consulté utilisent le paquetage getty_ps pour utiliser le minitel comme terminal. Cependant, ce paquetage n'est pas disponible dans le portage Gentoo (ce qui est rarissime), et les instructions de compilation dans la version source de getty_ps datent du noyau 1.4. En particulier, j'ai obtenu de nombreuses erreurs à la compilation, probablement dû au style de code C archaïque utilisé (on croirait lire du Kerigan&Ritche).

J'ai donc décidé d'utiliser le paquetage mgetty, bien plus à jour et présent dans le portage. Cependant, par défaut, celui-ci est compilé sans le support pour le fichier /etc/gettydefs. Il faut donc modifier le fichier policy.h du paquetage, avant de le compiler. Sous Gentoo, vous pourriez modifier l'ebuild, mais j'utilise une méthode bien plus brutale (et bien plus rapide). Commencez par installer mgetty :

# emerge mgetty

Pendant l'installation, attendez que la ligne suivante s'affiche :

>>> Source unpacked.

A ce moment, faites un Ctrl-Z le plus vite possible. La compilation étant interrompue, allez éditer le fichier /var/tmp/portage/net-dialup/mgetty-xxx/work/mgetty-xxx/policy.h (les xxx correspondant à vos numéros de version) et remplacez la ligne :

/* #define USE_GETTYDEFS */

par :

#define USE_GETTYDEFS

Après cela, dans le terminal où vous aviez interrompu la compilation avec Ctrl-Z, tapez :

# fg

Celle-ci reprendra, et mgetty sera compilé correctement. Ce n'est pas très propre, car en cas de mise à jour, getty sera recompilé sans la gestion de /etc/gettydefs. Si vous voulez être propres et délicats, compilez le package à la main hors du portage, ou mieux, créez votre propre ebuild.

Editez maintenant le fichier /etc/inittab et ajoutez la ligne suivante :

s0:2345:respawn:/sbin/mgetty -br ttyS0 4800v23

Bien sûr, vous devez adapter cette ligne à votre port série : nous avons utilisé ttyS0 en supposant qu'il s'agissait du premier port. Ajoutez ceci au fichier /etc/mgetty+sendfax/mgetty.config par :

port ttyS0
 speed 4800
 direct yes
 data-only yes
 toggle-dtr no
 need-dsr yes
 port-owner root
 port-group root
 port-mode 600
 login-prompt @ \P login:\040
 login-time 60
 term minitel1b-80
 gettydefs 4800v23

N'oubliez pas, cette fois encore, d'adapter la première ligne à votre port série. Editez maintenant le fichier /etc/gettydefs et ajoutez y, sur une seule ligne :

4800v23# B4800 CS7 PARENB -PARODD GLOBAL #B4800 ISTRIP CS7 PARENB -PARODD GLOBAL BRKINT IGNPAR ICRNL IXON IXANY OPOST ONLCR CREAD HUPCL ISIG ICANON ECHO ECHOE ECHOK #@S login: #4800v23

Attention, il est vraiment nécessaire d'ajouter tout ceci sur une seule ligne. Créez alors le dossier /etc/terminfo/m/ et enregistrez-y ce fichier : minitel1b-80. Ne modifiez pas son nom.

Tout est désormais configuré. Il ne vous reste qu'à lancer mgetty et configurer le minitel.

Let the magic begin!

Pour forcer le système à relire le fichier /etc/inittab, tapez :

# init q

Passez le minitel en mode téléinformatique, en 4800 bauds (Fnct-T A, Fnct-T E et Fnct-P 4). Attendez quelques secondes puis tapez sur entrée (sur le minitel). Une invite de commande devrait apparaitre. Identifiez-vous, et vous aussi vous parviendrez à ce résultat.

Remerciements, commentaires, suggestions

Dans cet article, j'ai utilisé le fichier /etc/gettydefs de l'article de lea-linux.

J'espère que ce guide vous a été utile. Si vous avez des commentaires ou des suggestions, merci de me contacter à l'adresse e-mail jean-pierre[à]lozi[point]org.

Version du 18 mars 2007, par Jean-Pierre Lozi.