{"id":425,"date":"2013-10-11T22:24:35","date_gmt":"2013-10-11T20:24:35","guid":{"rendered":"http:\/\/pila.fr\/wordpress\/?p=425"},"modified":"2018-05-29T11:36:00","modified_gmt":"2018-05-29T09:36:00","slug":"un-minitel-comme-terminal-linux-usb-partie-2-software-raspberry-pi","status":"publish","type":"post","link":"https:\/\/pila.fr\/wordpress\/archives\/425","title":{"rendered":"Un minitel comme terminal linux USB. Partie 2 : Software Raspberry Pi"},"content":{"rendered":"<p>Cet article d\u00e9crit la mise en place du software permettant l&rsquo;utilisation d&rsquo;un minitel comme terminal sur un Raspberry Pi, avec l&rsquo;interface USB d\u00e9crite dans l&rsquo;article pr\u00e9c\u00e9dent <a title=\"Un minitel comme terminal linux USB. Partie 1 : Hardware\" href=\"http:\/\/pila.fr\/wordpress\/?p=361\" target=\"_blank\">Un minitel comme terminal linux USB. Partie 1 : Hardware<\/a>.<\/p>\n<div style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pila.fr\/content\/interface_usb_minitel\/itWorks_resized.png\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\" \" src=\"http:\/\/pila.fr\/content\/interface_usb_minitel\/itWorks_resized.png\" alt=\"exemple\" width=\"500\" height=\"281\" \/><\/a><p class=\"wp-caption-text\">Un minitel servant de terminal pour mon Raspberry Pi<\/p><\/div>\n<p style=\"text-align: justify;\">Je consid\u00e8re ici que votre Raspbian est install\u00e9 et fonctionnel sur votre Raspberry. D\u00e8s lors, il y a 2 m\u00e9thodes possibles, menant quasiment au m\u00eame r\u00e9sultat : un terminal fonctionnel tout \u00e0 fait exploitable.<\/p>\n<p style=\"text-align: justify;\">EDIT : Bien que les informations contenues dans cet article soient toujours justes, la partie concernant la configuration de getty au d\u00e9marrage dans le fichier inittab n&rsquo;est plus d&rsquo;actualit\u00e9 depuis la migration des principales distributions Linux vers le gestionnaire de d\u00e9marrage systemd. Pour plus d&rsquo;informations sur la configuration de systemd, c&rsquo;est <a href=\"http:\/\/pila.fr\/wordpress\/?p=1145\" target=\"_blank\">ici<\/a>.<\/p>\n<p style=\"text-align: justify;\"><!--more--><\/p>\n<h3 style=\"text-align: justify;\">La m\u00e9thode rapide et efficace &#8230; (conseill\u00e9e)<\/h3>\n<p>&#8230;mais avec un prompt de login tr\u00e8s moche&#8230;.<\/p>\n<p>Celle-ci consiste \u00e0 utiliser le gestionnaire de terminaux AGetty, pr\u00e9-install\u00e9 avec Raspbian. Il suffit d&rsquo;ajouter la ligne suivante \u00e0 la fin du fichier \/etc\/inittab :<\/p>\n<blockquote><p>T1:23:respawn:\/sbin\/getty -L -i -I \u00ab\u00a0\\033\\143\u00a0\u00bb ttyUSB0 4800 minitel1b-80<\/p><\/blockquote>\n<p>Cette ligne permet de d\u00e9marrer un nouveau terminal (T1) sur le port ttyUSB0, de vitesse 4800 bauds ( vitesse max du Minitel), de type minitel1b-80 (r\u00e9f\u00e9rence aux fichiers Terminfo), avec les options suivante :<\/p>\n<ul>\n<li>-L : le terminal est en local, pas besoin de passer par un modem.<\/li>\n<li>-i : ne pas afficher le contenu du fichier \/etc\/issue, qui s&rsquo;affiche normalement avant le prompt de login. Je reviendrai l\u00e0 dessus plus tard.<\/li>\n<li>-I \u00ab\u00a0\\033\\143 \u00a0\u00bb : envoi la commande d&rsquo;effacement de l&rsquo;\u00e9cran avant le prompt de login. Ainsi, lorsqu&rsquo;on se d\u00e9connecte, seul le prompt de login est affich\u00e9.<\/li>\n<\/ul>\n<p>Une fois le fichier \/etc\/inittab modifi\u00e9, il suffit de rebooter ou d&rsquo;ex\u00e9cuter la commande <em>sudo init q<\/em> pour prendre en compte les modifications.<\/p>\n<p>Il suffit maintenant d&rsquo;allumer le minitel, et de la param\u00e9trer gr\u00e2ce aux combinaisons de touches suivantes :<\/p>\n<ol>\n<li>Fnct + T, puis A : passage en mode p\u00e9ri-informatique (80 colonnes).<\/li>\n<li>Fnct + T, puis E : d\u00e9sactivation de l&rsquo;\u00e9cho local.<\/li>\n<li>Fnct + P, puis 4 : r\u00e9glage de la vitesse de transmission \u00e0 4800 bauds.<\/li>\n<\/ol>\n<p>Si la premi\u00e8re ligne du Minitel affiche quelque chose, c&rsquo;est bon signe. Essayez de taper votre identifiant sur le Minitel, il devrait s&rsquo;afficher. Sinon, r\u00e9essayer apr\u00e8s avoir red\u00e9marrer le Raspberry.<\/p>\n<p>Si tout va bien, voil\u00e0 ce qu&rsquo;on peut faire avec :<br \/>\n<iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/M5CltdZktlw\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p style=\"text-align: justify;\">Le principal inconv\u00e9nient de cette m\u00e9thode par rapport \u00e0 l&rsquo;autre, c&rsquo;est le prompt de login tr\u00e8s moche. En effet, il n&rsquo;est pas possible de pr\u00e9ciser \u00e0 AGetty les informations sur la liaison, telle que la parit\u00e9. AGetty d\u00e9duit ces informations des caract\u00e8res envoy\u00e9s par le terminal lorsque l&rsquo;utilisateur saisi son identifiant, et c&rsquo;est donc seulement \u00e0 partir de ce moment l\u00e0 que AGetty communique correctement avec le Minitel, et que les caract\u00e8res transmis deviennent lisibles. C&rsquo;est la raison de la pr\u00e9sence de l&rsquo;option -i au lancement de AGetty : comme tout ce qui s&rsquo;affiche avant le login n&rsquo;est pas envoy\u00e9 avec le protocole appropri\u00e9, il n&rsquo;en r\u00e9sulte que du texte incoh\u00e9rent, inutile donc d&rsquo;afficher le contenu fichier \/etc\/issue\/, qui se transformerait en une suite de caract\u00e8res incoh\u00e9rents. C&rsquo;est \u00e9galement pour cette raison que l&rsquo;argument de la commande -I est \u00e9crit en octal, pour \u00e9viter que AGetty ne transmette au Minitel ces caract\u00e8res avec le mauvais protocole.<\/p>\n<h3>La m\u00e9thode plus longue&#8230;<\/h3>\n<p>&#8230;suppos\u00e9ment meilleure mais en pratique pas tant que \u00e7a. Laiss\u00e9e ici pour informations car quelqu&rsquo;un d&rsquo;autre pourra peut \u00eatre en tirer de meilleurs r\u00e9sultats.<\/p>\n<p style=\"text-align: justify;\">Contrairement au programme AGetty utilis\u00e9 dans la premi\u00e8re m\u00e9thode, qui d\u00e9tecte le type de liaison \u00e0 partir des caract\u00e8res re\u00e7us, il existe d&rsquo;autres variantes, comme MGetty, qui tire ces informations d&rsquo;un fichier initul\u00e9 <em>gettydefs<\/em>. Une fois ce fichier correctement rempli par l&rsquo;utilisateur, MGetty est capable de dialoguer correctement avec le Minitel, sans devoir attendre le premier caract\u00e8re re\u00e7u, ce qui devrait permettre d&rsquo;avoir un prompt de login propre.<\/p>\n<h5>T\u00e9l\u00e9chargement des sources de MGetty<\/h5>\n<p style=\"text-align: justify;\">Tout d&rsquo;abord, il faut dire \u00e0 apt-get, l&rsquo;utilitaire charg\u00e9 de la r\u00e9cup\u00e9ration et de l&rsquo;installation des programmes, o\u00f9 il peut trouver les sources des-dits programmes. Pour cela, ajouter la ligne suivante dans le fichier <em>\/etc\/apt\/sources.list<\/em> :<\/p>\n<blockquote><p>deb-src http:\/\/mirrordirector.raspbian.org\/raspbian\/ wheezy main contrib rpi<\/p><\/blockquote>\n<p>Il faut alors ex\u00e9cuter la commande suivante pour mettre \u00e0 jour les listes des paquets disponibles :<\/p>\n<blockquote><p>sudo apt-get update<\/p><\/blockquote>\n<p style=\"text-align: justify;\">Cr\u00e9er ensuite un nouveau dossier, que j&rsquo;appellerai ici <em>sources<\/em>, et y t\u00e9l\u00e9charger les sources de MGetty gr\u00e2ce \u00e0 la commande :<\/p>\n<blockquote><p>apt-get source mgetty<\/p><\/blockquote>\n<p>Le t\u00e9l\u00e9chargement devrait alors prendre quelques instants.<\/p>\n<h5>Modification des param\u00e8tres de compilation<\/h5>\n<p>Une fois celui-ci termin\u00e9, \u00e9diter le fichier<em> sources\/mgetty-1.1.36\/debian\/policy.h<\/em><\/p>\n<p>Effectuer ensuite les modifications suivantes :<\/p>\n<ul>\n<li>remplacer <em>#define FIDO<\/em> (ligne 59) par <em>\/* #define FIDO *\/<\/em><\/li>\n<li>remplacer <em>#define AUTO_PPP<\/em> (ligne 68) par <em>\/* #define AUTO_PPP *\/<\/em><\/li>\n<li>remplacer <em>\/* #define USE_GETTYDEFS *\/<\/em> (ligne 95) par<em> #define USE_GETTYDEFS<br \/>\n<\/em><\/li>\n<\/ul>\n<p>Sauvegarder le fichier (\u00e9craser le fichier existant si demand\u00e9).<\/p>\n<p>La derni\u00e8re modification permettra au MGetty compil\u00e9 de prendre en charge le fichier <em>gettydefs. <\/em>Les 2 autres modifications sont n\u00e9cessaires au bon fonctionnement de Mgetty avec le minitel. Je ne saurais pas dire pourquoi, mais sans celles-ci MGetty se bloque sur le prompt de login.<\/p>\n<h5>Compilation de MGetty<\/h5>\n<p>Avant de lancer la compilation, il faut d\u00e9j\u00e0 installer les d\u00e9pendances qui seront n\u00e9cessaires. Pour cela :<\/p>\n<blockquote><p>sudo apt-get build-dep mgetty<\/p><\/blockquote>\n<p>Ce qui risque de prendre un petit moment. Une fois cette op\u00e9ration termin\u00e9e, la compilation peut d\u00e9marrer. Pour cela, on se place dans le r\u00e9pertoire <em>source\/mgetty-1.1.36<\/em>, et on y lance la commande suivante :<\/p>\n<blockquote><p>dpkg-buildpackage -rfakeroot -uc -b<\/p><\/blockquote>\n<p>Si la commande pr\u00e9c\u00e9dente avait dur\u00e9e un petit moment, celle-ci en durera un grand&#8230;.<\/p>\n<p>Apr\u00e8s un bon quart d&rsquo;heure, l&rsquo;op\u00e9ration devrait toucher \u00e0 sa fin. De nouveaux fichier se trouveront dans le r\u00e9pertoire <em>sources<\/em>. Parmi eux, un certain<em> mgetty_1.1.36-1.6_armhf.deb, <\/em>est en fait le paquet r\u00e9sultant de la compilation de MGetty.<\/p>\n<p>Il faut alors l&rsquo;installer :<\/p>\n<blockquote><p>sudo dpkg -i mgetty_1.1.36-1.6_armhf.deb<\/p><\/blockquote>\n<p>D\u00e8s lors, MGetty est install\u00e9 sur votre Raspberry, mais il reste encore du travail :<\/p>\n<h5>Cr\u00e9ation \/ \u00e9dition des fichiers de configuration de MGetty<\/h5>\n<p>Il faut tout d&rsquo;abord ajouter \u00e0 la fin du fichier <em>\/etc\/mgetty\/mgetty.config<\/em> les param\u00e8tres concernant le port utilis\u00e9 :<\/p>\n<blockquote><p>port ttyUSB0<br \/>\nspeed 4800<br \/>\ndirect yes<br \/>\ndata-only yes<br \/>\ntoggle-dtr no<br \/>\nneed-dsr no<br \/>\nport-owner root<br \/>\nport-group root<br \/>\nport-mode 0600<br \/>\nlogin-prompt @ \\P login:\\040<br \/>\nlogin-time 60<br \/>\nterm minitel1b-80<br \/>\ngettydefs 4800v23<\/p><\/blockquote>\n<p>Cr\u00e9er ensuite le fichier <em>\/etc\/gettydefs<\/em> qui contiendra les informations sur le terminal utilis\u00e9 :<\/p>\n<blockquote><p>4800v23# B4800 CS7 PARENB -PARODD GLOBAL #B4800 ISTRIP CS7 PARENB<br \/>\n-PARODD GLOBAL BRKINT IGNPAR ICRNL IXON IXANY OPOST ONLCR CREAD HUPCL<br \/>\nISIG ICANON ECHO ECHOE ECHOK #@S login: #4800v23<\/p><\/blockquote>\n<p>Il reste maintenant \u00e0 ajouter la ligne suivante au fichier <em>\/etc\/inittab<\/em> pour lancer automatiquement MGetty au d\u00e9marrage :<\/p>\n<blockquote><p><code>s0:12345:respawn:\/sbin\/mgetty -br ttyUSB0 4800v23<\/code><\/p><\/blockquote>\n<p>Pour appliquer les changements, red\u00e9marrer le raspberry ou ex\u00e9cuter la commande <em>sudo init q<\/em>.<\/p>\n<p>Comme dans la premi\u00e8re m\u00e9thode,il faut maintenant d&rsquo;allumer le minitel, et la param\u00e9trer gr\u00e2ce aux combinaisons de touches suivantes :<\/p>\n<ol>\n<li>Fnct + T, puis A : passage en mode p\u00e9ri-informatique (80 colonnes).<\/li>\n<li>Fnct + T, puis E : d\u00e9sactivation de l&rsquo;\u00e9cho local.<\/li>\n<li>Fnct + P, puis 4 : r\u00e9glage de la vitesse de transmission \u00e0 4800 bauds.<\/li>\n<\/ol>\n<p>(manipulation \u00e0 r\u00e9p\u00e9ter apr\u00e8s chaque mise sous tension du Minitel)<\/p>\n<p style=\"text-align: justify;\">Le r\u00e9sultat est quasiment identique \u00e0 celui de la m\u00e9thode 1, sauf le prompt de login. Celui-ci s&rsquo;affiche presque correctement, mais pr\u00e9c\u00e9d\u00e9 et suivi de plusieurs carr\u00e9s blanc, dont MGetty tient compte lorsque l&rsquo;on rentre son login :<\/p>\n<div style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pila.fr\/content\/interface_usb_minitel\/mgetty_login.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/pila.fr\/content\/interface_usb_minitel\/mgetty_login_redux.jpg\" alt=\"\" width=\"500\" height=\"375\" \/><\/a><p class=\"wp-caption-text\">Prompt de login avec MGetty. Les carr\u00e9s blancs sont interpr\u00e9t\u00e9s comme faisant partie du login.<\/p><\/div>\n<p style=\"text-align: justify;\">Il faut alors effacer les-dits caract\u00e8res avant de saisir son login, ce qui est assez r\u00e9dhibitoire, surtout depuis un Minitel. C&rsquo;est pour cette raison que je conseille plut\u00f4t d&rsquo;utiliser AGetty, malgr\u00e9 la laideur du prompt de login.<\/p>\n<h3>Limites et probl\u00e8mes<\/h3>\n<p>Certains probl\u00e8mes se posent quelque soit la m\u00e9thode utilis\u00e9e :<\/p>\n<ul>\n<li>parfois, lorsque le Raspberry est d\u00e9j\u00e0 en fonctionnement lorsqu&rsquo;on allume le Minitel, une ligne de caract\u00e8res illisibles (surtout des fl\u00e8ches verticales et des carr\u00e9s blanc) remplacent le prompt de login, rendant le login impossible. Le probl\u00e8me semble venir de la puce PL2303HX incluse dans mon adaptateur USB\/UART. J&rsquo;ai en effet rencontr\u00e9 un probl\u00e8me similaire avec la m\u00eame puce dans une tout autre situation (dialogue avec un modem depuis un PC sous windows, sympt\u00f4mes similaires )<\/li>\n<\/ul>\n<p><strong><span style=\"color: #339966;\">SOLUTION : Il suffit en fait de faire quelques Ctrl+C pour retrouver le prompt de login !<\/span><\/strong><span style=\"color: #339966;\">Un seul Ctrl+C suffit quand j&rsquo;utilise le Minitel depuis mon pc portable sous Linux Mint, mais il peut en falloir jusqu&rsquo;\u00e0 10 depuis mon raspberry !<\/span><strong><span style=\"color: #339966;\"><br \/>\n<\/span><\/strong><\/p>\n<ul>\n<li>Pas de symbole | sur le clavier du Minitel. Je pense qu&rsquo;il est possible d&rsquo;y rem\u00e9dier, mais je n&rsquo;ai pas cherch\u00e9.<\/li>\n<\/ul>\n<p><strong><span style=\"color: #339966;\">SOLUTION : Il est possible de saisir un pipe | avec la combinaison de touches Ctrl + 2, tandis Ctrl + 6 donne acc\u00e8s \u00e0 l&rsquo;underscore. ( merci \u00e0 <em>Roptat<\/em> pour cet info)<\/span><\/strong><\/p>\n<ul>\n<li>Impossible d&rsquo;utiliser apt-get : tout commence bien, puis des caract\u00e8res illisibles apparaissent, et apt-get cesse de fonctionner :<\/li>\n<\/ul>\n<div style=\"width: 500px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pila.fr\/content\/interface_usb_minitel\/apt-get.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/pila.fr\/content\/interface_usb_minitel\/apt-get_redux.jpg\" alt=\"\" width=\"500\" height=\"375\" \/><\/a><p class=\"wp-caption-text\">Perte de contr\u00f4le d&rsquo;apt-get<\/p><\/div>\n<p><strong><span style=\"color: #339966;\">SOLUTION : Il semble possible de se sortir de cette situation avec un Ctrl + L, qui a pour effet de rafraichir l&rsquo;affichage ( Merci \u00e9galement \u00e0 <em>Roptat<\/em> )<\/span><\/strong><\/p>\n<h3>Conclusion<\/h3>\n<p style=\"text-align: justify;\">Globalement, ce projet est la preuve qu&rsquo;il est tout \u00e0 fait possible d&rsquo;utiliser un Minitel en tant que terminal sur un Raspberry, cela pourrait m\u00eame aider certains, notamment lorsque qu&rsquo;une manipulation malencontreuse vient \u00e0 interrompre la connexion r\u00e9seau, et interdire ainsi tout acc\u00e8s par SSH. J&rsquo;avais toutefois une certaine r\u00e9serve \u00e0 utiliser le Minitel \u00e0 cause des probl\u00e8mes cit\u00e9s pr\u00e9c\u00e9demment, mais \u00e9tant maintenant tous r\u00e9solus ou contourn\u00e9s, le Minitel s&rsquo;av\u00e8re plut\u00f4t bon dans son r\u00f4le de terminal de secours !<\/p>\n<p style=\"text-align: justify;\">Petite note de fin : il faut a tout prix \u00e9viter de laisser son t\u00e9l\u00e9phone mobile \u00e0 proximit\u00e9 d&rsquo;un Minitel, celui-ci ayant \u00e9t\u00e9 con\u00e7u \u00e0 une \u00e9poque o\u00f9 les ondes mobiles n&rsquo;\u00e9taient pas un probl\u00e8me, il n&rsquo;appr\u00e9cie gu\u00e8re !<\/p>\n<p>Si vous avez des remarques, question ou tout autre id\u00e9e d&rsquo;am\u00e9lioration, etc&#8230; n&rsquo;h\u00e9sitez pas \u00e0 laisser un commentaire =)<\/p>\n<h3>Liens utiles :<\/h3>\n<p><a href=\"http:\/\/pila.fr\/content\/interface_usb_minitel\/specifications%20techniques%20d%27utilisation%20du%20minitel.pdf\" target=\"_blank\">Documentation officielle du Minitel<\/a> (STUM, attention PDF de 56Mo !!)<\/p>\n<p><a href=\"http:\/\/x0r.fr\/blog\/5\" target=\"_blank\">Article de Furrtek<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article d\u00e9crit la mise en place du software permettant l&rsquo;utilisation d&rsquo;un minitel comme terminal sur un Raspberry Pi, avec l&rsquo;interface USB d\u00e9crite dans l&rsquo;article pr\u00e9c\u00e9dent Un minitel comme terminal linux USB. Partie 1 : Hardware. Je consid\u00e8re ici que votre Raspbian est install\u00e9 et fonctionnel sur votre Raspberry. D\u00e8s lors, il y a 2 &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/pila.fr\/wordpress\/archives\/425\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69,151],"tags":[52,66,63,65,64,67],"class_list":["post-425","post","type-post","status-publish","format-standard","hentry","category-linux-2","category-raspberry","tag-interface","tag-linux","tag-minitel","tag-terminal","tag-usb","tag-vintage","item-wrap"],"_links":{"self":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/425","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=425"}],"version-history":[{"count":94,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/425\/revisions"}],"predecessor-version":[{"id":1159,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/425\/revisions\/1159"}],"wp:attachment":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=425"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=425"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=425"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}