Ressuscitez le Minitel

Cet article datait de 2019, mais il a été actualisé en mai 2022 pour être publié dans le magazine Programmez!

Qu’est ce que c’est qu’un Minitel ?

Du début des années 1980 à la fin du service en 2012, l’ère du Minitel aura quand même duré 30 ans. Pour simplifier (pour les plus jeunes), disons que le Minitel était l’ancêtre d’internet. C’était un petit terminal en noir et blanc qui permettait d’accéder à des services payants (Annuaire, Chat, Journaux et bien sûr les fameuses messageries roses). Pour les personnes qui l’ont connu, le minitel reste un engin mythique. Alors pourquoi ne pas essayer de s’amuser en lui donnant une seconde vie ?

Choisir son Minitel

Le moins que l’on puisse dire, c’est que le Minitel est robuste. Au départ, il était prêté ou loué aux utilisateurs, il n’était donc pas du tout rentable qu’il tombe souvent en panne. Résultat, un Minitel de 35 ans qui prend la poussière au fond d’un grenier a toujours de grandes chances de s’allumer comme au 1er jour (après un petit coup de chiffon). Il y très peu de chances que nos smartphones connaissent le même destin…

Cet engin était si répandu en France qu’on le trouve encore très facilement sur internet ou dans les brocantes pour quelques dizaines d’euro seulement (assurez vous qu’il s’allume et que toutes les touches fonctionnent). Mais n’achetez pas n’importe quel modèle. Seuls les Minitels bistandards (1B et 2) peuvent être facilement transformés en terminal. Pour les reconnaître, c’est facile, ils possèdent (sur le clavier) une touche « Fnct » qui permet de changer la configuration du minitel. Mais aussi (à l’arrière), la fameuse prise DIN à 5 broches qui assurera la communication avec le Raspberry Pi.

Jpeg

Installation du Rasberry Pi

Pour cela, vous n’avez besoin ni d’écran, ni de clavier (ou de souris).

Préparation de la carte SD

Malheureusement, je n’ai pas réussi à faire fonctionner le Minitel avec la dernière version de Raspberry OS. Il existe certainement une solution, mais je ne la connais pas. Alors si vous la trouvez, n’hésitez pas à me contacter et je la publierai sur mon blog.

En attendant, je vous propose d’utiliser la dernière version qui fonctionne (à l’heure où j’écris ces lignes). Et si vous rencontrez quand même des difficultés, jetez un coup d’œil dans les commentaires (en bas de l’article).

Téléchargez donc la version Buster de Raspberry Pi OS Lite, que vous trouverez à l’adresse suivante : https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-05-28/

Décompressez le fichier zip et copiez l’image sur votre carte micro SD (le plus simple est certainement d’utiliser Raspberry Pi Imager). Cliquez sur CHOISISSEZ L’OS, puis sur Utiliser image personnalisée et sélectionnez l’image téléchargée.

Cliquez sur le petit engrenage pour activer le SSH, modifier le mot de passe et indiquer éventuellement vos paramètres WiFi.

Sélectionnez la carte SD (dans Stockage) et lancez la copie en cliquant sur ECRIRE.

Contrôle du Raspberry Pi (en SSH)

Insérez la carte dans le Raspberry Pi et allumez le.

Pour accéder au Raspberry Pi par SSH (depuis votre ordinateur), utilisez un émulateur de terminal (comme par exemple PuTTY).
Si vous connaissez l’adresse IP du Raspberry, vous pouvez l’indiquer, mais il est également possible d’indiquer le nom d’hôte : « raspberrypi » . Profitez-en pour enregistrer vos paramètres de connexion (pour la prochaine fois).

La 1ère connexion est un peu plus longue et PuTTY vous demandera certainement de valider la clé en cliquant sur « Accept« .

Par défaut le nom d’utilisateur est « pi » (et le mot de passe est celui que vous avez choisi).

Ensuite, vous pouvez mettre à jour Raspberry OS :

sudo apt update
sudo apt upgrade

Et redémarrez en tapant :

sudo reboot

Connexion du Minitel au Raspberry

Fabrication du câble

Le branchement n’est pas très compliqué, il suffit d’un transistor, de quelques résistances, mais surtout un convertisseur USB vers TTL série basé sur la puce PL2303HX.

Il est également possible d’intégrer les composants à l’intérieur du minitel et de faire seulement ressortir la prise USB à la place du câble téléphonique (désormais inutile).

Ensuite, vous pouvez brancher le minitel au Raspberry Pi.

Préparation du minitel

Le minitel est malheureusement incapable de mémoriser les informations de connexion. Il faudra donc chaque fois que vous l’allumerez, refaire la manipulation suivante :

  • Fnct+Sommaire (pour que le Minitel 2 passe du mode répertoire au mode terminal)
  • Fnct+T (en même temps), relâcher et A (passage en mode périphérique)
  • Fnct+T, (en même temps) et E (désactivation de l’echo du terminal)
  • Fnct+P, (en même temps), et 4 (connexion à 4800 bauds)

Avec le minitel 2, vous pouvez même vous connecter à 9600 bauds en tapant Fnct+P, (en même temps), et 9 (à la place de 4), mais il faudra aussi modifier les paramètres du Raspberry Pi (ci-dessous).

Test de communication

Branchez le minitel sur la prise USB du Raspberry Pi et allumez les. Connectez vous au Raspberry (avec PuTTY ou le client SSH de Windows).

Copiez ces 3 lignes en même temps dans votre client SSH :

stty -F /dev/ttyUSB0 4800 istrip cs7 parenb -parodd brkint \
ignpar icrnl ixon ixany opost onlcr cread hupcl isig icanon \
echo echoe echok

puis :

echo 'Hello World' > /dev/ttyUSB0
Jpeg

Nous allons maintenant tester la communication dans l’autre sens, tapez :

cat /dev/ttyUSB0

Sur le minitel, vous pouvez taper le texte que vous voulez (suivi de la touche entrée). Le texte devrait s’afficher dans le client SSH (tapez CTRL+C, pour quitter).

Pour la suite, je me suis surtout inspiré de l’excellent tuto de Maxime Vinzio : http://sta6502.blogspot.com/2016/02/utiliser-un-minitel-comme-terminal-sur.html

Téléchargez le fichier mntl.ti d’Alexandre MONTARON (http://canal.chez.com/terminfo.htm).

wget http://canal.chez.com/mntl.ti

Et compilez-le :

tic mntl.ti -o /etc/terminfo

Pour que le fichier soit utilisé par agetty, tapez :

agetty -c ttyUSB0 4800 minitel1b-80

Créez le fichier de configuration

sudo nano /etc/systemd/system/serial-getty\@.service

Copiez/Coller le texte suivant dans le fichier de configuration (clic droit) :

# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License,
# or (at your option) any later version.

[Unit]
Description=Serial Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
BindsTo=dev-%i.device
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service
# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes
[Service]
ExecStart=-/sbin/agetty -L -i -I “\033\143” 4800 %I minitel1b-80
Type=idle
Restart=always
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes
[Install]
WantedBy=getty.target

Enregistrez le fichier (CTRL+x, y et Entrée)

Activez le service au démarrage, copiez les lignes en même temps dans votre client SSH :

sudo ln -s /etc/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyUSB0.service

Lancez le service

sudo systemctl daemon-reload
sudo systemctl start serial-getty@ttyUSB0.service

Ou redémarrez (pour vérifier qu’il se lance automatiquement)

sudo reboot

Les 2 premières lignes sont un peu bizarres (avec des gros carrés blancs) mais après avoir tapé le nom d’utilisateur (pi) et validé, l’affichage devient normal et vous disposez d’un terminal fonctionnel.

Maintenant, vous pouvez même piloter votre cafetière par Minitel…

Sources de l’article :

Cet article a aussi été publié dans le numéro 253 du magazine Programmez! (été 2022)


46 réflexions sur “Ressuscitez le Minitel

  1. Bjr – Vous êtes bien certain d’avoir utilisé « juste » un connecteur USB « nu » dans votre montage comme l’indique votre dessin ? Il me semble qu’il faut insérer un convertisseur USB/TTL (5v ou 3.3v) pour que ça fonctionne. Ou alors, il faut utiliser les I/O prévues pour le terminal série sur le connecteur 40 pts du RasPi….

    Aimé par 1 personne

    1. Bonjour,
      Vous avez tout à fait raison, ça fait quelques années que j’ai fait la modification du minitel et en reprenant mes notes, j’ai effectivement oublié ce « détail ».
      Le schéma est maintenant corrigé, merci beaucoup pour votre intervention.

      J’aime

  2. Puisque vous semblez utiliser un Minitel 2 (et non un Minitel 1B), vous pouvez utiliser TERM=minitel2-80 (ou m2-x80 de mntl.ti) a la place… Ainsi vous aurez les filets vt100 … a voir dans mc (midnight commander) ou d’autres logiciels … Alexandre.

    Aimé par 1 personne

  3. C’est vrai que le Minitel 2 offre plus de possibilités (comme par exemple une vitesse de 9600 bauds) mais j’ai choisi de faire un tuto compatible avec le Minitels 1B.

    J’aime

    1. Oui, j’ai la même chose (voir l’avant dernière photo). Tapez simplement l’identifiant (pi, par défaut) et validez et ensuite les caractères devraient être normaux (il demande le mot de passe etc…)

      J’aime

      1. le soucis c’est que même quand je me connecte tout est caractères randoms et la je sais pas d’ou ça peut provenir

        J’aime

      2. Vous avez peut être raté une étape, essayez de recommander le tuto depuis le début avec une version « vierge » de Raspbian, on a vite fait de se tromper et moi aussi j’ai un peu galéré avant d’arriver à avoir quelque chose qui fonctionne, sinon regardez dans les liens sités en source, vous trouvez peut être des paramètres qui correspondent mieux à votre configuration.

        J’aime

      3. Bonjour,
        Après quelques temps de bon fonctionnement j’ai le minitel qui rencontre une problematique.
        Voilà les touches envoi suite correction… ne repondent plus cependant quand je fais un caractère qu’il lui est associé elles fonctionnent mais je ne peut pas valider ou corriger. C’est un minitel 1
        Quelqu’un aurait il une idée ?

        J’aime

      4. Bonjour Pauline,
        Il y a certainement un faux contact quelque part, j’en profiterais pour ouvrir le boitier et nettoyer un peu l’intérieur, mais fait bien attention avec l’écran, il y a un risque de recevoir une très grosse décharge électrique (alors renseigne toi avant sur la procédure).

        J’aime

  4. le problème est disons plus problématique quand je rentre dans aucune Fonction mon clavier (minitel) fonctionne normalement quand je fait Fnct+ T ect le clavier ne correspond plus a rien est un coup il écrit et 2 secondes plus tard il écrit plus rien

    J’aime

    1. Vous êtes sûr que vous faites correctement les combinaisons de touches, dans l’ordre et en relâchant les boutons au bon moment, par exemple, vous appuyez sur Fnct+T (en même temps), vous relâchez et ensuite vous appuyez sur A (et ainsi de suite pour les autres séquences de touches). Autrement, le test de communication (depuis le Raspberry connecté en SSH) fonctionne ?

      J’aime

    1. bonjour Alexandre
      je me casse un peu la tête sur le système, mon câble fonctionne je l’ai testé dans les deux sens, par contre des caractères blanc quand je veux utiliser en mode terminal, j’ai un prompt login je met pi mais je n’ai pas le prompt suivant de password en faisant « entree » ou autre touche, si votre fichier corrige cela comment le mettre dans le fichier @.service ? j’ai mise ça chez moi mais euh comment dire…

      ExecStart=-/sbin/agetty -L -i -I « \033\143 » -f /etc/issue.minitelG %i 4800 minitel1b-80

      merci
      Jean-Philippe

      J’aime

      1. Bonjour Jean-Philippe,
        Je ne suis pas non plus un expert en ce domaine. Comme je l’indique dans l’article je me suis surtout contenté de faire une synthèse de différents tuto pour obtenir un résultat qui fonctionne.
        Mais, vous avez tout à fait raison, c’est bien une erreur. C’est certainement pour cette raison que j’ai ajouté un reboot (qui règle le problème en rendant cette ligne inutile).
        Je vous remercie beaucoup pour votre vigilance et corrige cela immédiatement.
        Amicalement
        JC

        Aimé par 1 personne

  5. merci pour la réponse rapide JC 🙂
    j’ai un souci, peut-être pas le seul à l’avoir: sur 3 minitels de récup, j’ai au démarrage l’affichage d’une sorte d’annuaire mais je n’arrive pas à faire comme sur mon minitel 1 (séquence FCT+T et A puis E puis passage en 80 col avec FCT+Pet 4)
    le curseur en haut à droit ne change pas et .. je tourne en rond, help 🙂
    merci
    Jean-Philippe

    J’aime

      1. super j’ai déjà pu basculer dans le mode terminal, j’ai ces fichus carrés blanc sans retour de commande vers le Pi comme avec l’autre minitel mais je creuse… merci 🙂

        J’aime

  6. Les carrès blancs c’est du au fait que les getty d’aujourd’hui démarrent en 8bits sans parité et passent en 7bits parité impaire (voir paire) dès qu’il reçoit des erreurs de parité justement… Tu peux qd mm te logguer malgré les carrès blanc il disparaitront après. Le fichier issue.minitelG que je te proposais fait disparaitre les carrès blanc dès le début sauf pour le login ou c’est comme sur la photo http://canal.chez.com/term_prompt.htm ). Alex.

    J’aime

  7. Au passage, je vois que vous utilisez Putty…
    export TERM=putty-m1 donne un rendu Minitel 1 Couleur a putty
    export TERM=putty-m1b donne un rendu Minitel 1b gris (genre 80 colonnes)
    export TERM=putty-m2 donne un rendu Minitel 2 vert avec les filets vt100
    $ tput init <- a ne pas oublier juste après export TERM.
    Alex.
    PS: Tu peux aussi les retrouver ici: http://canal.chez.com/linux.ti

    J’aime

  8. Bonjour Jean-Christophe,

    J’ai relevé une petite erreur dans votre excellent tutoriel : pour passer un Minitel 2 en 9600 bauds, il faut faire Fnct P puis 9 (et pas 8 comment indiqué). J’ai trouvé l’info ici : http://minitel.cquest.org/musee/minitel/documentation-utilisateurs/Mode%20d%27emploi%20Minitel%202%20philips.pdf
    J’ai vérifié sur le Minitel 2 Philips que je viens tout juste de récupérer et cela fonctionne.
    Un *très* grand merci à vous pour votre tutoriel !!! J’ai pu faire revivre 2 Minitel et découvert les breadboards pour faire le petit montage électronique.

    Lionel

    Aimé par 1 personne

  9. Bonsoir, j’ai récupéré un minitel et lorsque je l’allume et je me mais à taper sur le clavier, les touches qui se situent à gauche ne répondent pas mais celle de droite fonctionne correctement. Est-ce que quelqu’un saurait m’aider ?

    J’aime

  10. Bonjour, merci pour votre super tuto !
    J’ai pour ma part un petit soucis :
    La communication fonctionne très bien dans les 2 sens mais quand je lance le fichier cafe.py, j’ai des caractères blancs qui s’affichent sur une ligne puis le minitel (2) est bloqué. J’ai essayé avec un autre fichier python contenant juste un print (« coucou ») mais le résultat est le même…
    Auriez vous une idée ?
    Merci d’avance

    J’aime

  11. Après test, si je « sors » toute la partie code concernant l’arduino, l’affichage du coup sur le minitel fonctionne correctement. Je précise que j’ai alimenté aussi ma carte arduino en externe comme conseillé dans votre article

    J’aime

  12. Bonjour à tous j’ai besoin d’aide. J’ai bien réussi à faire fonctionner le minitel genial ! Oui mais voilà depuis quelques jours je n’ai plus rien sur le minitel … je n’arrive plus à avoir l’affichage annuaire… par contre quand je tape sur le minitel j’ai bien les caractère et la recherche qui s’affiche sur le pc (relié au raspberry) une personne pourrait avoir la gentillesse de m’aider ?

    J’aime

  13. Bonjour, j’ai une erreur avec mon Minitel que je ne comprends pas. J’avais tout bien fait. Si bien que ça marchait très bien. En voulant réinstaller les commandes, la phase finale ne marche plus.

    En effet, j’arrive à envoyer des messages sur le terminal du Minitel. Et a envoyer des messages au rpi avec le cat.

    Néanmoins, à la dernière étape, quand je reboot avec le .service, on me demande le login. Je mets pi (ou n’importe quoi) puis entrée. Puis le curseur retourne au début de la ligne sans ne rien faire.

    Une idée de où cela peut il venir ?

    Très cordialement,
    Calvin

    J’aime

    1. Bonjour Calvin,
      Tu utilises bien la version Buster de Raspberry Pi OS Lite ?
      Tu arrives toujours à te connecter en SSH depuis un ordinateur ?
      Tu utilises bien la flèche en bas à droite (et pas la touche Envoi) ?

      J’aime

  14. Bonjour,
    lorsque j’appuie sur fnct+sommaire, j’ai le bip décris comme une erreur de commande par le manuel du minitel. Avez vous aussi ce bip ? Je soupçonne que ce problème soit la cause de mon incapacité à faire apparaitre le « Hello world » sur le minitel.
    Merci d’avance pour vos retours 🙂

    J’aime

    1. Bonjour,
      En fait, ça dépend des modèles de Minitel. Je viens de vérifier et effectivement cette étape n’est utile qu’avec le Minitel 2 autrement ça fait un bip d’erreur avec un 1B, mais ça n’empêche pas ensuite le « Hello World »

      J’aime

  15. Bonjour, je reviens vous demander de l’aide car je bloque au moment d’entrer les identifiants avec le minitel. Celui-ci affiche bien la première ligne pour entrer le nom d’utilisateur mais après avoir appuyé sur la touche entrée, il ne se passe plus rien et je ne peux plus rien faire jusqu’à ce qu’il redemande le nom. J’ai tenté d’écrire quand même le mot de passe mais rien ne se passe. J’ai aussi réinstallé l’os et refais les étapes. Tout se passe bien jusqu’à cette dernière étape qui bloque. Auriez vous une idée d’où pourrais venir le problème ?
    Merci

    J’aime

      1. J’ai bien utilisé cette version. J’ai refais une tentative en réinstallant l’os et en sautant la commande sudo apt upgrade mais j’ai toujours le même résultat.

        J’aime

  16. Bonjour, j’ai réussi après beaucoup de tâtonnements et de recherches à régler le problème en installant la version jessie de raspbian. Cependant, cette version n’est plus supportée et ne permet pas tel quel de faire des updates ou d’installer des packages.
    Pour résoudre ce soucis, il faut choisir un des liens proposé ici:
    https://www.raspbian.org/RaspbianMirrors/
    puis entrer dans la console:
    nano /etc/apt/sources.list

    Il faut mettre en commentaire la première ligne et ajouter la ligne:
    deb « le lien que vous avez choisi sans les guillemets » oldoldstable main contrib non-free rpi

    Je suppose qu’il y a de meilleurs manières de faire mais j’espère que ça pourra dépanner ceux qui se trouveront dans le même cas que moi.

    J’aime

  17. Bonjour,
    Je travaille sur un projet Minitel 1 avec le Raspberry Pico. Je cherche à connaitre la liste des caractères spéciaux reconnus par le minitel. J’ai lancé des ser.write(chr(i)) avec i de 0 à 1000 …
    A partir de 200, le minitel affiche un B ou C avec le texte, voire il émet des bips.
    Existe-t-il un tableau de référence ? Je cherche par exemple à écrire une lettre sur fond blanc.

    J’aime

  18. La communication marche dans les deux sens, l’écran du login s’affiche mais en tapant mon nom d’utilisateur il ne se passe rien, j’ai essayé de faire entrée, envoi… Mais je reste bloqué sur l’écran de login.
    Merci d’avance pour votre aide !

    J’aime

Laisser un commentaire