J'en parlais récemment, j'ai profité de mon temps libre de ces dernières semaines pour apporter la touche finale à mon Super Minitel. Le résultat est plutôt probant, bien qu'il y ait des améliorations à apporter, à mon humble avis.
Ajout d'un support pour Raspberry Pi
J'ai ressorti mon bon vieux OpenScad afin de concevoir un support pour tenir le Raspberry Pi et sa carte d'adaptation vidéo/clavier dans le Minitel. J'ai opté pour une fixation par collage sur le Minitel, avec un espace pour laisser passer le connecteur de clavier. Le Raspberry Pi est fixé avec un vis, tandis qu'un ergot vient se loger dans le second emplacement de vis et empêcher tout mouvement.
Je l'ai ensuite imprimé sur ma Prusa i3, puis testé à blanc avec le Raspberry Pi. J'ai enfin monté le tout dans le Minitel, en prenant soin de maintenir l'ensemble avec des pinces serrantes. C'est franchement pratique ces pinces, j'ai découvert leur utilité grâce à Babozor et ses conseils de la Grotte du Barbu !
Après une nuit de séchage, j'ai pu fixer le Raspberry Pi dessus et tester le bon fonctionnement du clavier rétractable (qui passe du coup en dessous du Rasp).
Intégration du son
Après avoir commandé tout un lot de composants pour ajouter un ampli audio dans le minitel et les avoir soudé, j'ai pu tester le rendu. C'est pas trop mal, mais il y a un shhh de fond qui est plutôt gênant, ça doit être du au fait que mon ampli n'intègre pas de filtre ... Ceci dit en ajustant correctement le volume, on ne l'entend quasimment plus.
Pour la fixation, même recette que précédemment: j'ai conçu un support adapté au PCB (avec une seule vis pour la fixation, j'ai été radin), je l'ai imprimé et collé dans le Minitel.
Le rendu son n'est pas merveilleux, mais ça donne un bon vieux son old school, j'aime bien :). Pour terminer, j'ai conçu et imprimé un guide de perçage afin de faire des petits trous sur le côté du Minitel à l'endroit où se trouve le haut-parleur afin de laisser le son se diffuser.
Je l'ai imprimé, et je m'en suis servi de guide pour percer les trous sur le Minitel. Le rendu est très propre, et n'a nécessité aucun tracé particulier, juste la fixation du guide avec une pince auto-serrante.
Déco finale
S'il y a bien un domaine dans lequel je suis une quiche, c'est la déco. Je suis une bille en peinture, pochoirs, dessin, etc. Mais je ne voyais qu'une seule manière de décorer ce super Minitel: repeindre la carcasse en blanc cassé, et peindre un sigle «Super Minitel» au pochoir.
J'ai donc commencé par concevoir un pochoir sur Inkscape. En reprenant des polices de Nintendo et en bidouillant un peu, j'ai réussi à imprimer un motif noir sur blanc sur du papier photo. Après un petit tour chez Cultura pour acheter de la peinture en bombe et à pochoir, quelques babioles et de la colle repositionnable en spray, j'ai entamé à la main la découpe des caractères. Un bon gros fail. Peu de précision malgré l'utilisation d'un cutter très fin, et l'encre bavait sur mes mains. Il fallait trouver autre chose.
Je me suis rabattu sur l'impression 3D: en effet, quoi de mieux que d'imprimer un pochoir en 3D et de s'en servir pour peindre le motif ! C'était sans compter deux éléments importants pour des pochoirs. Le premier, c'est que lorsque l'on crée des pochoirs, on ne peut pas raisonnablement réaliser de belles lettres possédant des vides, comme les lettres P ou R. On est obligé de laisser une liaison pour que la partie masquant l'intérieur "tienne". Le rendu en est forcément moins bon. Second point, il doit être assez fin pour masquer et tenir correctement sur le support. Avec l'imprimante 3D, imprimer fin c'est imprimer pour rien. Lorsque l'on décolle le motif imprimé, il se plie et généralement cette déformation reste. C'est du plastique (PLA dans mon cas), donc assez difficile à reformer, et la colle repositionnable n'y a rien fait. Il ne me restait qu'à tester mon pochoir épais (1mm) afin de voir si le rendu serait correct.
Ma dernière erreur avec les pochoirs a été de penser que la colle repositionnable c'était LA solution. En réalité, elle a créé des petits points de colle sous le pochoir, et l'encre s'est enfournée sous le pochoir à cause de l'irrégularité de celui-ci et de l'espace vacant laissé par la colle en spray. Merci les tutos Youtube, mais cette fois-ci ça ne m'a pas aidé. heureusement que j'avais fait des tests sur carton et papier avant de me lancer sur le Minitel...
J'étais pas loin d'abandonner quand j'ai eu une idée toute simple: pourquoi ne pas imprimer les lettres avec l'imprimante 3D et les coller de façon jolie sur la carcasse du Minitel ? De cette façon, on obtient un effet de relief et un beau contraste blanc cassé/noir qui est du plus bel effet (enfin je crois). J'ai donc modélisé les lettres en convertissant le modèle SVG en SCAD (merci paths2openscad !) et les ai imprimé à l'envers pour que le côté lisse corresponde à la partie visible (de face) et donne un rendu moins "imprimante 3D". Le résultat est très probant je trouve.
j'ai ensuite placé les lettres, les ai collé et ai attendu que cela sèche. J'ai fait l'erreur de marquer l'alignement au crayon papier, et cela se voit encore un peu de très près, c'est dommage. Je prendrais une équerre pour le prochain exemplaire et ne tracerai aucun trait, cela sera plus propre.
Résultat final
Au final, j'ai un Super Minitel qui ressemble exactement à ce que je voulais, qui accepte jusqu'à deux manettes Super NES en USB (pratique pour Street Fighter, mais on peut aussi jouer grâce au clavier), et qui attire la curiosité avec son aspect "presque" Super Nintendo.
Je vais le beta-tester à la maison afin de déceler de potentiels défauts de conception avant de le donner à un généreux soutien du projet OpenIt, et d'en faire deux autres pour les deux autres soutiens ayant choisi cette récompense.
Il me reste encore quelques Minitels un brin différents à la maison, certainement l'occasion de me faire la main sur la soudure CMS à air chaud ;). Il me faut absolument un exemplaire à la maison, et les minis-moi auront obligation d'y jouer (vous en conviendrez: Super Mario World, Street Fighter II, Bomberman 3 et Worms sont des jeux formidables o/).
Ah et si vous voulez tenter de reproduire ce hack, j'ai mis des ressources à disposition (majoritairement les PCBs, les fichiers de conception 3D ainsi que le software permettant d'interfacer le clavier). Il manque encore des éléments (comme la liste des composants pour les PCBs, mais ça viendra -- il y aura peut-être des modifications suite au beta-test).
Cela fait bientôt 3 ans que ce projet de Super Minitel Entertainement System traîne (enfin, surtout la prise en charge du clavier), et que je dois fournir 3 exemplaires aux soutiens du projet OpenIt. La conception a été laborieuse, mais est sur le point d'aboutir au premier exemplaire.
Des erreurs à la chaîne
La conception de la version 3 du circuit électronique d'adaptation pour Raspberry Pi a pris plus de temps que prévu, et ce à cause d'erreurs successives lors de la phase de prototypage et de réalisation.
Le circuit de départ qui m'a servi à la rédaction de l'article sur le Super Minitel Entertainement System a permis de valider le montage réalisant la conversion du signal vidéo produit en sortie par le Raspberry PI (S-Video) vers les signaux attendus par la carte vidéo du Minitel. La conception de ce circuit m'a permis de reprendre en main les outils de conception électronique assisté par ordinateur, et a été réalisée avec EagleCAD. L'outil n'est pas libre mais gratuit, et le résultat rudimentaire: le circuit était imposant, mono-couche et coûteux. Le coût de fabrication d'un circuit imprimé dépend du nombre de couches et de sa surface (grosso-modo). Le délai entre la commande d'un circuit imprimé et la réception dudit circuit dans ma boîte aux lettres est d'environ trois semaines, au mieux. Gardez cela en tête pour la suite.
Lorsque j'ai démarré la conception de la version suivante, j'ai décidé d'y intégrer le support du clavier du Minitel. J'ai choisi de supporter le clavier via un driver logiciel et un interfaçage I2C, ce qui évite d'avoir un micro-contrôleur et la phase de programmation qui va avec. J'ai donc intégré le tout sur le circuit intégré, grâce à des composants permettant d'étendre le nombre de GPIOs du Raspberry Pi, et ait fait en sorte que le circuit puisse se brancher sur le port d'extension du Raspberry en respectant les dimensions. Autrement dit, j'ai du tout serrer pour que cela rentre dans l'espace requis. Et j'ai envoyé en fabrication. La conception n'a pas été réalisée avec EagleCAD mais avec gEDA, une suite de conception électronique libre et opensource.
A la réception du premier circuit, je soude l'ensemble des composants sur celui-ci (il faut compter une bonne heure de concentration afin de limiter les erreurs), et le teste en conditions réelles sur le Minitel. Echec lamentable, le rendu est désastreux. Il s'avère que les empreintes des transistors utilisées pour concevoir le circuit imprimé n'étaient pas correctes (merci gEDA), et ceux-ci étaient montés à l'envers ! De plus, plusieurs pistes n'étaient pas correctement placées (on parle alors d'erreur de routage), et il m'a fallu en couper certaines et en ajouter d'autres à l'aide de fils ("straps"). Enfin, les trous pour placer le connecteur du clavier du Minitel étaient trop petits. Bref, deux ou trois jours de débogage de circuit et de nuits passées à identifier la cause de problèmes, pour enfin arriver à une version fonctionnelle. Victoire !
Je reporte ensuite les corrections sur le logiciel de conception, et envoi en fabrication une version normalement corrigée. Sauf que non, les trous du connecteur de clavier sont encore trop petits (mauvaise mesure), et quelques corrections n'ont pas été transposées correctement. Je corrige le tout sur le logiciel, et repasse commande. Je reçois la dernière version des circuits et en suis fier: le connecteur de clavier entre parfaitement en place, et tout se soude sans encombre.
Saleté de condensateur
Cependant, malgré tous mes efforts, le rendu est encore moyen. En particulier, des "bavures" apparaissent en fin de ligne ou de caractères affichés, ce qui n'est pas trop dérangeant lorsque l'on joue mais agaçant lors de lecture de texte. Il me fallait trouver l'origine du problème.
Encore une fois, une erreur était à la source de ce problème: le marquage de polarité du condensateur indiqué sur le circuit était inversé (encore une fois à cause d'une mauvaise empreinte), et en changeant de sens le condensateur l'image finale est bien plus belle. Je ne m'en étais pas rendu compte sur le prototype intermédiaire car le condensateur que j'utilisais était prévu pour 100 Volts, et ne bronchait pas trop lorsqu'il était alimenté en inverse. Mes derniers tests ayant été réalisés avec un condensateur prévu pour 50 Volts, le comportement de celui-ci en était sévèrement altéré. Merci les composants en stock.
L'erreur de marquage est toujours présente sur le circuit imprimé, mais est bien moins grave qu'une erreur de piste ou de placement de composant. J'ai tout de même eu de la chance que le condensateur n'explose pas, les dommages pouvant être importants dans ce cas de figure.
Ce qu'il me reste à faire
Le circuit d'adaptation final fonctionne à merveille, tout comme le support du clavier via un pilote écrit en Python. Je dois encore ajouter l'audio (j'ai conçu et fait fabriquer un petit circuit complémentaire d'amplification audio, histoire d'avoir du son) et concevoir via de l'impression 3D un support pour fixer le Raspberry Pi, le circuit audio annexe ainsi qu'un haut-parleur. L'ajout d'un ventilateur pourrait être un plus si l'ensemble chauffe trop, à voir à l'usage.
Viendra ensuite la décoration, à l'aide de bombes de peinture et de pochoirs faits maison. Je ne suis pas un pro en ce qui concerne cette partie, mais je compte trouver de bons conseils auprès de personnes ayant l'habitude de ce genre de choses.
L'amplification audio devrait être terminée en fin de semaine, il faut juste que je commande les composants et que je prenne le temps de les souder. Je pourrais bientôt fournir les exemplaires (trois pour être précis) à leurs destinataires, et publier les fichiers de conception bien sûr.
La quatorzieme édition de la Nuit du Hack vient tout juste de s'achever, et je dois avouer que c'était juste magique. Magique non pas parce que l'évènement était de retour au pays de Mickey, mais par son organisation, ses contenus et les rencontres que l'on y fait. Petit retour à chaud de cette Nuit du Hack 2016.
Les coulisses du vendredi
Je suis arrivé sur place vendredi soir et j'ai rejoint le staff Hackerzvoice qui s'activait pour tout finir de préparer (badges, tours de cou, etc ...). En tant que conférencier, j'ai passé plus de temps sur le polissage de planches comme on dit à l'ANSSI plutôt que sur les derniers préparatifs, ainsi que sur mes démos bancales. En effet, certaines d'entre elles devaient être testées en conditions réelles, et cela m'a pris quelques heures afin de tout régler (un grand merci à Jonathan pour le coup de main). A 2h30, j'étais couché et fin prêt pour ma présentation.
Enfin, je pensais l'être.
Le Jour J
Samedi matin, après avoir avalé un petit-déjeuner, je me rends au New York Hotel afin de m'imprégner de l'atmosphère du lieu et saluer les premiers arrivés (staff et participants).
C'est l'occasion de se ballader un peu, de découvrir les surprises de l'édition 2016, mais aussi de se poser à nouveau au calme pour repenser un peu les slides. Car après une nuit de réflexion, quelques modifications m'ont semblé utiles. J'apporte ainsi les dernières corrections et boucle la version finale de la présentation.
Je commence à suivre les conférences, bien qu'ayant loupé la keynote de Louis Pouzin. Le talk de Thomas Aubin et Paul Hernault sur la sécurité de Windows 10 et les aspects protection de la vie privée était sympa, avec en prime la démonstration d'une preuve de concept nommée CortaSpoof permettant de limiter la capacité de Microsoft à profiler les utilisateurs de la dernière version de son système d'exploitation. J'ai suivi celui d'Antonio Blanchi sur la participation de l'équipe Shellphish aux différents CTFs d'assez loin, mais les quelques bribes que j'ai pu comprendre m'ont semblé plutôt intéressantes: stratégies de CTF et outils dédiés étaient au programme. Puis ce fut au tour de mon collègue Renaud Lifchitz de démontrer la faiblesse des télécommandes radio employées sur une Set-Top-Box: très instructif et les possibilités offertes sont originales !
Je n'ai pas pu assister à la présentation sur Ethereum, par contre celle sur le piratage des interphones était intéressante: Sébastien Dudek a ainsi démontré que l'on pouvait prendre le contrôle de ceux-ci en abusant du GSM à l'aide de SDR et de fausse station GSM. Les démonstrations sous forme de vidéo étaient funs et démontraient bien les risques encourus. Toutefois, les bons vieux passes PTT ou le vieillissant système Vigik peuvent être des vecteurs d'intrusion tout aussi efficace, et nécessitant moins de moyens.
La conférence suivante consacrée au crochetage improvisé était tout bonnement impressionnante: c'est exactement ce que j'attendais de celle-ci. Ouverture de cadenas avec des shims fait maison (à la MacGyver), forçage de porte au ceintre, les moyens rudimentaires y étaient et ça fait plaisir de voir une approche pragmatique de l'ouverture de portes et serrures ! C'est la dernière conférence que j'ai pu voir, car je suis allé manger assez tôt afin de terminer les préparatifs matériels de ma présentation (prévue à 21h15). Celle-ci s'est déroulée sans encombre, et j'ai eu plusieurs retours positifs ce qui fait toujours plaisir.
Les workshops
J'ai enchainé rapidement mon talk avec un workshop intitulé "Pimp My Badge", présentant le badge électronique de l'année dernière (à défaut d'en avoir un cette année) et les moyens de le bidouiller. Ca a été l'occasion de mettre un peu à jour la bibliothèque standard et d'ajouter quelques exemples.
Comme chaque année, l'atelier de crochetage de serrures a rencontré un franc succès et nombreux étaient ceux voulant s'y essayer. Didier Stevens, l'auteur de OleDump notamment, animait un workshop sur l'analyse de documents malveillants à l'aide (certainement) de ses outils. Je n'ai pas pu le suivre malheureusement, mais il semblait très intéressant.
La NDH Kids
Contrairement aux années précédentes, je n'ai pas animé d'atelier durant la NDH Kids. Mais j'en ai eu de très bons échos: des collègues et amis ayant participé ou ayant des enfants qui y ont participé en sont revenus ravis. Les ateliers étaient diversifiés: initiation à la cryptographie, programmation de Lego Mindstorms, Initiation à l'électronique et à la soudure électronique, architecture d'un ordinateur, ... Avec en plus des bean bags et une borne d'arcade !
Un grand merci
J'ai passé un excellent moment, à la fois en tant que participant mais aussi en tant que conférencier. Il est bon de retrouver une organisation comme celle de cette édition, fluide et sans accrocs, malgré la paranoia sécuritaire que l'on a pu observer lors de l'arrivée (scans aux rayons X, détecteurs de métaux, fouille de sacs). Et il y avait du Club Mate ! Bref, on remet ça l'année prochaine, et il y aura du lourd, du très très lourd (© Michel & Michel)