Grehack 2015, Minitel Revival : le making-of

Pourquoi ?

Logo2015

Pour les plus jeunes un Minitel est un objet déco vintage qu’ils n’ont jamais vu fonctionner, pour les plus anciens un objet révolu faisant partie de l’histoire. Offrir les sensations de l’affichage noir et blanc à la vitesse fulgurante de 1200 bauds et le doux clac-clac-clac des touches à ceux qui n’ont jamais connu ça n’a pas de prix. Et le petit coup de nostalgie procuré aux anciens non plus. L’idée de le remettre en route pour une soirée est donc venue naturellement sans vraiment initialement savoir comment réaliser ça.

IMG_20151123_233355

Le hardware

Le minitel se connecte normalement au réseau Transpac via un modem RTC V23. Il n’est donc pas raisonnable de s’engager sur cette voix (mais pas impossible !). Il dispose également d’une prise « péri-informatique », attention le terme, au format DIN 5 broches. Sur cette prise on trouve une bonne vieille liaison série full duplex 7 bits à parité paire, ce qui nous donne un lien à 1200 7E1. Par cette prise, moyennent quelques initialisations, il est possible de piloter complètement le minitel et de s’en servir en somme comme un simple terminal. La sortie (TX) est particulière, elle est à collecteur ouvert, ce qui signifie l’usage obligatoire d’une résistance de pull-up pour lire correctement les bits à ‘1’. Les voltages sont du bon vieux TTL (5V) et non pas du RS232 -12V +12V, ce qui nous arrange bien.

IMG_20151123_233442 - Copie

Coté serveur pour connecter les minitels, au vu la puissance de calcul nécessaire qui tend vers zéro, un Raspberry Pi 2 fait plus que l’affaire. En fait n’importe quoi d’autre pourrait faire l’affaire.

IMG_20151124_222518

Comme le RPi est dépourvu de port série et possède uniquement des ports USB, il faut donc passer par des modules USB <- ->série TTL. Les chips FTDI ne donnant pas de résultats stables, en gros perte d’octets aléatoire sur le lien série (allez savoir pourquoi ?!?!?), ce sont des modules Prolific PL2303 qui sont utilisés. Le driver du PL2303 étant présent depuis longtemps sous le kernel Linux et à moins de 3€ pièce la Chinoiserie sur Ebay, pas la peine de chercher plus loin.

IMG_20151123_234107

 

IMG_20151124_183837

Un peu de soudure plus tard, ça donne quelque chose d’à peut prêt fini. Cinq câbles seront fabriqués pour le jour J.

IMG_20151123_234046

Le dev

Afin de gérer virtuellement autant de Minitels qu’on le souhaite, une applie multithread est obligatoire. Du bon vieux C de base suffit bien pour cet exercice. Une thread principale créer autant de threads filles que de Minitel et reste en boucle infinie pour tuer et recréer à la demande les threads qui se terminent. A chaque appui sur Cnx/Fin la thread fille est donc tuée et puis recréée. Chaque thread dispose en mémoire globale d’un espace qui lui est propre et ne se marche donc pas dessus avec ses congénères. Le module « annonces » étant partagé entre toutes les threads et les données étant écrites en parallèles sur la SDCard, l’utilisation d’un sémaphore assure l’intégrité des données.
Coté affichage il a fallu faire un peu d’internet afin de récupérer les docs encore disponibles sur l’engin. Internet ayant bonne mémoire, dans ce cas-ci c’est bien utile. Partir from scratch pour créer un serveur télématique en 2015 n’est malgré tout pas chose aisée. A la lecture des divers modes de fonctionnement du Minitel c’est le mode « videotext » qui doit être choisi pour mettre à l’écran des caractères ASCII classiques et des graphiques en simultanés. Le mode graphique est d’ailleurs très sommaire, il se compose en fait d’un jeu de caractère spécifique de 2×3 pixels avec exclusivement 2 niveaux de gris sur 8 disponibles par caractère. Bonjour l’angoisse pour dessiner quelque chose à l’écran !
Pour la partie graphique des tas de convertisseurs image -> vidéotext existent sur le NET. Ils permettent de passer d’une image à une suite de caractères vidéotext pour obtenir une résolution max de 80×72 en huit niveaux de gris. Attention les yeux, ça déchire !

Videotext
Le clavier atypique est assez marrant à gérer. Suivant les touches appuyées on récupère de 1 à 3 octets. Il suffit de les tester une fois et de faire sa propre table de conversion, pas de difficulté notable à ce niveau.

ClavierMinitel
D’un point de technique, rien de bien complexe, mais une somme de choses à savoir ou tester avant de commencer à tracer le premier écran. Le ticket d’entrée est quand même assez élevé. Ce qui n’était pas trop prévu c’est le côté chronophage du dev’. Ainsi que la taille du source qui enflait d’idées en idées à implémenter… pour finir dans un seul et unique fichier de plus de 1800 lignes.

Les sources et tout le nécessaire pour refaire fonctionner le projet :

https://github.com/Phil242/Grehack-2015-Minitel-Revival

Ça donne quoi alors ?

Coté épreuve, voilà ce que donne l’installation improvisée lors du CTF :

IMG_20151120_210610

Le résultat est l’illusion totale d’avoir à faire à un vrai réseau Transpac. Lenteur limite supportable de nos jours, page de connexion du 3615 fidèle à l’originale avec ces moult tarifs, tout y est et fleure bon le vintage bien poussiéreux ! Le scénario choisi est d’ailleurs composé de clichés de l’époque comme par exemple le mot de passe BND2 pour le premier challenge ou le service nommé gRe-TEL en hommage à R-TEL.

Une vidéo lors de l’événement avec les compétiteurs qui s’acharnent :

 

Remerciements à l’association ACONIT pour le prêt de 4 Minitels.

Site de Grehack 2015 : http://www.grehack.fr/

5 commentaires

    • Salut. Durant la préparation de tout ça j’ai essayé de me connecter plusieurs fois sur ETDA, mais sans succès. Ça sera avec plaisir de découvrir le service. Merci d’être passé et de ton commentaire. Phil

      • Slt! Oui, EDTA était probablement arrêté (cf. le lien ^) … il y a plusieurs moyens pour se connecter avec ou sans minitel (+linux ou raspberry), avec ou sans émulateur vidéotex (timtel sous Windows au plus simple)… un simple Telnet en 80 colonnes (putty ou shell linux) suffit même mais dans ce cas point de caractères semi-graphiques !
        A noter qu’il s’agit d’une image (back-up) de 1992 … donc rien n’a bougé depuis… enfin je veux dire je n’avais pas de backup plus récent 😀
        Alex. – telnet://edta.hd.free.fr:1808/ (mode texte) – voila il est allumé la !

    • Et 5 voies c’est parce-que je n’ai soudé que 5 câbles. C’est une infinité dans les faits (plus exactement la limite kernel du nombre de port séries), le serveur est vraiment multi-threadé et il y a du semaphore pour la synchro. Ça laisse rêveur par rapport à ce que l’on faisait avec nos Atari ou autres ordinosaures …

Laisser un commentaire