Je vous ai déjà expliqué comment relier son Minitel comme terminal Linux, ou alors comment le relier à un Raspberry Pi. Mais s'arrêter là, ce serait oublier que le Minitel est initialement conçu pour consulter des pages Vidéotex avec son modem 1200/75 bauds intégré.

À une époque où le terme « Minitel 2.0 » est utilisé de manière péjorative et où la plupart des terminaux Minitel que l'on trouve sont sur eBay, LeBonCoin, à la déchetterie ou oubliés dans un grenier, quelle idée plus saugrenue que de mettre en place, justement, son propre serveur Minitel ? Après tout, les plus jeunes d'entre nous n'ont pas connu le Minitel. En ayant tenu un stand lors de l'événement « 3615 au revoir », j'ai pu me rendre compte que beaucoup de personnes, même plus âgées que moi, n'ont pas eu l'opportunité de voir fonctionner un Minitel, et de ce fait voir comment on faisait dans les années 80-90 pour réserver un billet de train. Outre le désir de préservation ou de fascination pour les technologies obsolètes, faire cela pour la pure prouesse technique me paraît de surcroît tout à fait justifié.

Schéma de principe pour un montage testable chez soi

Le schéma de principe est celui utilisé pour pouvoir tester facilement le montage chez soi sans avoir à dépenser des montants indécents en factures téléphoniques. L'avantage d'utiliser un PBX maison réside aussi dans le fait de pouvoir utiliser une ligne SIP (comme celles d'OVH ou d'Ippi, au hasard) pour que les utilisateurs puissent appeler directement le numéro. Si on ne tient pas à tester, il suffirait juste de brancher le modem 56k à la ligne téléphonique d'Orange, mais nous partirons ici du principe que nous disposions de tout l'équipement du schéma ci-dessus.

Il nous faut donc plusieurs éléments :

une application (ncurses ou minicurses) exécutée sur le serveur et qui s'occupe de la présentation des informations sur le Minitel de l'utilisateur ;

(ncurses ou minicurses) exécutée sur le serveur et qui s'occupe de la présentation des informations sur le Minitel de l'utilisateur ; un serveur sur laquelle tourne cette application ;

sur laquelle tourne cette application ; un modem 56k (ou tout autre modem qui sache gérer le mode V.23bis) compatible avec le jeu de commandes Hayes, branché en série sur le serveur applicatif. Ce modem servira à recevoir les appels téléphoniques des utilisateurs et le serveur décrochera automatiquement pour établir la liaison de données avec le Minitel appelant ;

(ou tout autre modem qui sache gérer le mode V.23bis) compatible avec le jeu de commandes Hayes, branché en série sur le serveur applicatif. Ce modem servira à recevoir les appels téléphoniques des utilisateurs et le serveur décrochera automatiquement pour établir la liaison de données avec le Minitel appelant ; un commutateur téléphonique (aussi appelé PBX) pour le routage des appels et pour la mise en place d'un plan de numérotation interne, ce qui nous permet de tester tranquillement le montage ;

(aussi appelé PBX) pour le routage des appels et pour la mise en place d'un plan de numérotation interne, ce qui nous permet de tester tranquillement le montage ; un téléphone analogique (oui, analogique) parce que le modem du Minitel ne sait pas numéroter par lui-même (du moins celui des Minitel 1, 1B et 2) ;

(oui, analogique) parce que le modem du Minitel ne sait pas numéroter par lui-même (du moins celui des Minitel 1, 1B et 2) ; enfin, vous l'aurez deviné, un Minitel.

Il n'est pas obligatoire d'avoir deux machines physiquement séparées pour le PBX et le serveur applicatif. On peut utiliser la même machine pour les deux rôles. Cela me permettait juste de rendre le schéma plus intelligible.

En ce qui concerne le PBX, rien de compliqué : une machine munie d'une carte OpenVox A400p et d'Asterisk fait largement l'affaire. Prévoir dans ce cas au moins deux interfaces FXS et la possibilité de faire sonner le modem depuis le téléphone analogique (en lui attribuant son propre numéro, comme par exemple 4001 pour le téléphone et 4002 pour le modem).

Branchements matériels

Câblez le montage de la manière suivante :

Branchez la prise T du téléphone en aval de la prise T du Minitel. Branchez la prise T du Minitel sur le PBX. Il y a de grandes chances que le PBX n'accepte que des prises RJ11 ; on peut alors brancher un câble RJ11 côté PBX sur un adaptateur T vers RJ11 et brancher l'ensemble dessus. C'est certes peu élégant, mais ça marche. Branchez la prise téléphonique du modem 56k sur le PBX et le câble série sur le serveur applicatif.

Branchement du Minitel sur un PBX

Configuration logicielle

De la même manière que lorsqu'on utilise le Minitel comme terminal série, il vous faudra installer mgetty(8).

La configuration de mgetty(8) fait que ce sera a priori impossible d'utiliser en même temps une application depuis le modem sur un Minitel, ou comme console série comme précédemment. Il vous faudra choisir, ou alors faire ces manipulations sur une autre machine.

Dans cette section, subsituez le nom de votre port série à /dev/ttyUSB0 (j'ai fait mes tests en branchant mon modem sur un convertisseur USB-série).

Dans /etc/mgetty+sendfax/mgetty.config, ajouter une section comme celle-ci :

port ttyUSB0 speed 1200 direct no data-only yes toggle-dtr yes need-dsr yes port-owner root port-group wheel port-mode 0660 login-prompt '' login-time 60 term minitel1b-80 login-env-ttyprompt-hack yes init-chat "" "ATM0E0B2\r" "OK" gettydefs 1200v23

Le init-chat est probablement à adapter selon vos besoins et selon votre modem. Renseignez-vous dans la documentation de votre modem. Mon Olitec Self Memory Pro nécessite ATB2 pour forcer la vitesse de ligne à 1200/75 baud. Ajouter également E0 pour désactiver l'écho local et M0 pour désactiver le haut-parleur et expérimenter en silence.

Dans /etc/mgetty+sendfax/login.config, remplacez la dernière ligne par :

* toto toto /chemin/vers/application

où la deuxième colonne représente l'utilisateur sous lequel est exécuté l'application, et la troisième colonne représente l'entrée à ajouter dans utmp(5) (la laisser égale à la deuxième colonne marche bien aussi).

Dans /etc/gettydefs, ajouter (oui, toujours en une seule ligne) :

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

Dans /etc/inittab, ajouter :

s0:12345:respawn:/sbin/mgetty -D ttyUSB0 1200v23

Configuration du PBX

Je ne vais pas vous apprendre comment configurer un plan de numérotation sur Asterisk, mais vous aurez seulement besoin d'une configuration qui permette de faire "sonner" le modem. En d'autres termes, il faut brancher le modem sur une des interfaces FXS de votre PBX, attribuer un numéro de téléphone à ce port (par exemple 4002) et faire en sorte de pouvoir composer ce numéro depuis un autre téléphone branché sur ce même commutateur. C'est vraiment pas plus compliqué que ça !

Lorsque votre modem "sonne", il réagira sûrement en faisant clignoter une ou deux LEDs. Pour en être sûr, connectez-vous directement sur le modem via le port série et vérifiez que le modem envoie des messages RING sur le terminal lorsque vous l'appelez.

Exemple d'application

En guise d'application, n'importe quel programme qui écrit du texte sur stdout et lit des frappes de touches sur stdin fait l'affaire.

#!/bin/bash stty 1200 istrip cs7 parenb -parodd brkint \ ignpar icrnl ixon ixany opost onlcr cread hupcl -isig icanon \ echo echoe echok # vider l'écran echo printf "\x0c" # mettez le chemin vers votre binaire ici, ou rédigez votre programme # en shell ci-dessous # écrire du lorem ipsum à l'écran # (sans oublier qu'on n'a que 40 caractères par ligne) echo "Lorem ipsum dolor sit amet, consec- tetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur." sleep 10

Libre à vous d'utiliser autre chose qu'un script shell, bien entendu. Il faut juste penser à faire le stty(1) correspondant afin de forcer l'observation du bit de parité paire (dans le cas contraire, la moitié des caractères seront remplacés par des carrés blancs).

L'instant de vérité

Après avoir ajouté la configuration qui va bien dans /etc/inittab, n'oubliez pas un petit init q pour qu'init tienne compte de votre configuration.

Allumez votre Minitel. Composez le numéro correspondant au modem. Si tout se passe bien, vous entendrez peut-être quelques bruits (bips), puis, le plus important, une tonalité aiguë continue (2 100 Hz, plus exactement) que vous reconnaîtrez sûrement si vous avez déjà utilisé un Minitel avant.

Au moment où vous entendez le 2 100 Hz, appuyez sur la touche Connexion/Fin de votre terminal. Le F en haut à droite est alors remplacé par un C clignotant, qui devient fixe au bout de quelques secondes. Enfin, si tout est bien configuré, votre Minitel affiche votre Lorem Ipsum (ou toute autre application que vous y aurez mise à la place). Et c'est exactement comme ça que cela se passait en 1982.

Conclusion

Étant donné que le service Minitel n'existe désormais plus, c'est une partie du patrimoine français qui est en voie de disparition si nous ne trouvons pas le moyen d'archiver, voire reproduire, ce que l'on pouvait faire sur Minitel entre 1982 et 2012.

Mettre en place un serveur Minitel reste donc bien entendu une idée saugrenue, mais le challenge technique derrière reste particulièrement intéressant. Je salue particulièrement ceux qui, dans les années 80 et 90, ont mis en place leur propre serveur privé, sachant qu'ils disposaient à l'époque de machines beaucoup moins puissantes.