1 points par GN⁺ 2024-02-26 | 1 commentaires | Partager sur WhatsApp
  • Des données de boardview ont été publiées à partir de l’extraction de la netlist d’un PCB assemblé de la carte logique Nintendo Switch Lite, combinées aux formes des composants, des pads et à des images de référence des deux faces
  • Le travail s’est appuyé sur un panorama PCB à 6 000 PPI, une interface graphique superposant les données des composants et des pads, ainsi qu’un PCB d’extraction maison capable d’alimenter séquentiellement un grand nombre de broches et d’en lire l’état
  • La procédure complète enchaîne prise de vue et alignement des deux faces, retrait du blindage RF, dessoudage et tri des composants, mesure de continuité vers la masse, regroupement des net-fragments selon les connexions visibles sur les couches externes, puis câblage vers le PCB d’extraction et fusion des fragments
  • Les données publiées peuvent être ouvertes dans OpenBoardView avec Switch Lite Logic Board.bvr et, comme le rendu complexe n’est pas pris en charge actuellement par OBV, une compatibilité avec FlexBV5 est aussi fournie
  • Il faut interpréter les résultats avec prudence en raison de la taille très importante des sources 6 000 PPI, de la contamination du panorama de la face supérieure, du risque de faux positifs lié aux résidus de flux et du manque de mesures des caractéristiques électriques des composants

Données de boardview Switch Lite publiées

  • La publication correspond au résultat de l’extraction de la netlist d’une carte logique Nintendo Switch Lite assemblée
  • Sur un PCB, les composants sont soudés sur des pads de montage exposés, et les couches de cuivre relient les pads entre eux pour former le circuit électrique
  • La liste complète des connexions entre pads et composants constitue la netlist ; en y ajoutant les formes des composants et des pads, on obtient un boardview
  • Les données finales regroupent le boardview avec des images de référence des deux faces du PCB

Ouverture dans OpenBoardView

  • Télécharger la dernière version de OpenBoardView
  • Les données publiées sont disponibles via Torrent ou Download
  • Décompresser l’archive, lire tous les fichiers .txt inclus, puis dans OBV suivre cet ordre
    • Dans View, désactiver Board Fill et Part Fill
    • Dans File, ouvrir Switch Lite Logic Board.bvr
    • Clic gauche pour afficher le net d’un composant ou d’un pad, glisser pour déplacer la vue et molette pour zoomer ou dézoomer
    • Clic du milieu ou touche Espace pour basculer entre les faces du PCB

Ce qui a permis l’extraction de la netlist

  • Une procédure a été utilisée pour produire des images panoramiques d’un PCB assemblé à 6 000 PPI avec une précision géométrique et colorimétrique correcte
  • Une GUI point-and-click permet de dessiner au-dessus du panorama les données de forme des composants et des pads, avec ajout et modification de données arbitraires
  • Le PCB conçu sur mesure peut alimenter un nombre arbitraire de broches une par une et lire l’état de toutes les broches à chaque étape

Flux de travail réel

  • Plusieurs images sont prises afin d’assembler un panorama de la face inférieure
  • La carte est retournée, le blindage RF est dessoudé, puis un panorama de la face supérieure est aussi assemblé
  • Les deux panoramas et d’autres images sont comparés entre eux pour affiner davantage la précision géométrique et colorimétrique
  • Les panoramas finalisés sont importés dans la GUI pour y placer les formes initiales des composants et des pads
  • Tous les composants sont dessoudés un par un puis rangés dans des emplacements de bin distincts pour analyse ultérieure
    • L’emplacement du bin et le reference designator estimé sont consignés dans la GUI
    • Si les formes de pad créées à l’étape 2 diffèrent de la réalité, elles sont corrigées
  • Une fois tous les pads exposés et sans court-circuit, un DMM est utilisé en mode continuité
    • Une pointe de touche est reliée au plan de masse
    • L’autre sert à sonder tous les pads du PCB
    • Les correspondances détectées sont enregistrées dans la GUI et fusionnées dans un même net
  • Les pads restants sont regroupés en net-fragments d’après les connexions visibles sur les couches externes des deux faces
    • En l’absence de connexion visible, ils sont considérés comme des fragments indépendants
  • L’ordre des fils soudés depuis les broches du PCB d’extraction vers les net-fragments du PCB cible est enregistré dans la GUI
  • Lors de l’exécution de l’extracteur, l’alimentation part des broches du PCB d’extraction, passe par les fils vers les net-fragments
    • Elle traverse ensuite les connexions cachées à l’intérieur du PCB pour rejoindre d’autres net-fragments
    • Elle revient enfin au PCB d’extraction par un autre fil, et ce résultat est enregistré
    • Les résultats enregistrés servent à établir la cartographie complète des connexions cachées
  • Les fragments sont fusionnés à partir de cette cartographie afin de produire la netlist finale, puis exportés en fichier boardview

Limites des données et des outils

  • Les panoramas 6 000 PPI d’origine représentent chacun environ 0,5 gigapixel, ce qui entraîne plusieurs problèmes
  • Les panoramas 6 000 PPI sont fournis via Torrent ou Download
  • Les panoramas top-side et bottom-side peuvent être consultés sur ZoomHub
  • Les contours des composants et des pads peuvent paraître simplifiés

Étapes manquantes du procédé et limites de qualité

  • Après le retrait du blindage RF et avant l’extraction, un nettoyage par ultrasons serait souhaitable
  • Retirer le blindage RF sans soudure basse fusion au bismuth demande plusieurs astuces
  • Faute de nettoyeur ultrasonique, le panorama de la face supérieure est plus sale que celui de la face inférieure
  • Si les résidus de flux sont suffisamment conducteurs avant l’extraction, des connexions faussement positives peuvent apparaître entre net-fragments
  • Entre les étapes 8 et 9, il manque une phase de retrait des composants stockés dans les bins pour mesurer leurs caractéristiques électriques
    • L’équipement disponible se limite à un LCR Meter basique et peu précis
    • Mesurer maintenant produirait probablement des données incomplètes de qualité relativement faible

Objectif du projet et appel au soutien

  • Le créateur indique avoir plus de dix ans d’expérience dans l’Electronics Contract Manufacturing pour les secteurs médical, aérospatial, militaire et industriel
  • Plus de la moitié de cette expérience a été acquise comme SMT Process Technician, avec des droits d’accès en lecture et en écriture sur des équipements coûteux
  • Ce projet est présenté comme une expérimentation mêlant freelancing internet en télétravail et savoir-faire avancé en soudure électrique
  • Exploiter un atelier de réparation, courir après les algorithmes de revenus publicitaires, promouvoir des liens d’affiliation ou revendre des outils de faible qualité ne correspond pas au type de travail de soudure visé
  • Si les données publiées sont utiles ou si vous souhaitez en voir davantage, un don est proposé
    • Ce soutien doit permettre d’ajouter davantage d’appareils, de réduire les cycle times, d’améliorer la qualité et de publier plus de données
    • L’objectif est aussi de rendre l’ensemble du processus reproductible par optimisation des coûts, documentation et open source

1 commentaires

 
GN⁺ 2024-02-26
Commentaires sur Hacker News
  • Je n’ai pas d’expérience directe, mais j’ai l’impression que, côté modèle de financement, l’inquiétude est qu’après publication du travail, les copies illégales empêchent presque toute rentabilité. On pourrait plutôt envisager de lever l’argent d’abord via le crowdfunding, ce qui aurait aussi pour effet que les gens votent naturellement pour les projets qu’ils veulent le plus
    Ce modèle ressemble à celui d’Empress, la célèbre crackeuse du DRM Denuvo. Elle est connue comme étant pratiquement la seule personne capable de casser cet anti-triche de jeu : https://en.m.wikipedia.org/wiki/Empress_(cracker)
    Il y a pas mal de controverses autour d’elle, mais financièrement, cela semble fonctionner. Cela vaut aussi la peine de réfléchir à l’utilité concrète de ce travail et à la proposition de valeur qu’il représente pour d’autres. Par exemple, comme pour les consoles Wii miniaturisées et modifiées, un petit nombre de personnes pourraient y voir une grande valeur en obtenant la netlist d’un circuit qu’elles aiment afin de le recréer dans un format plus compact, avec davantage de couches et des techniques modernes

    • Une bonne partie des gens capables de casser Denuvo n’en ont probablement tout simplement pas envie
      Tout le monde a vieilli et a désormais un travail de développeur stable et bien payé. Personne ne veut prendre le risque d’enfreindre la loi. La période 1987~2004 était vraiment amusante, mais cela fait 20 ans que je n’ai pas ouvert IDA. Ce chapitre est clos, et je doute être le seul dans ce cas
      À une époque, je pouvais désassembler du Z80 mentalement. Aujourd’hui, je me souviens seulement que C9 était RET, le reste s’est effacé
    • Un crowdfunding façon prime à la capture serait probablement idéal. On pourrait sans doute bricoler un logiciel de forum où chaque fil deviendrait une campagne de crowdfunding différente
    • Je suis d’accord avec l’idée d’une procédure de crowdfunding ciblée sur un circuit précis
      Il y a beaucoup de projets qui bénéficieraient de nouveaux PCB pour de vieux appareils. Par exemple, certains ordinateurs vintage sont vulnérables aux dégâts causés par les condensateurs ou les batteries, et il existe quelques cartes de remplacement pour Mac, mais ce sont clairement des réalisations artisanales faites avec passion
      Le Hi-Fi classique aussi contient beaucoup de cartes vieilles de 40 ans et de matériaux qui se dégradent. Par exemple, sur certains premiers PCB double face, la seconde couche était littéralement peinte. Une netlist exacte pourrait aussi aider à améliorer la qualité des informations de schéma, qui se limitent souvent à d’anciens scans de manuels de maintenance difficiles à lire
  • Excellent projet. Je l’ai vu il y a quelques jours, et le nombre de fils m’a impressionné
    Cela fait quelques années que je fais de la rétro-ingénierie de PCB, principalement sur des cartes 2 à 4 couches, et cela touche à une partie du problème que je me demandais justement comment résoudre. La meilleure idée qui me vient serait un équipement de flying probe bricolé à partir d’une imprimante 3D. En gros : 1) scanner le dessus et le dessous de la carte, 2) établir une liste des points de test et des pastilles, puis 3) injecter les coordonnées dans le système de flying probe pour générer une netlist
    Une autre méthode pour traiter les cartes multicouches consiste à alterner scan-ponçage-scan. Personnellement, je pense que c’est la plus précise, car elle permet de capturer fidèlement des structures comme les plans de masse et les guard traces. On peut obtenir un artwork exact, mais l’inconvénient est que la poussière produite est assez nocive

    • Avec des données Image→CAD, on pourrait sans doute bricoler quelque chose de proche d’une machine de die bonding pour automatiser le processus. Un système de flying probe aurait besoin de deux têtes, une de chaque côté, pour couvrir toute la continuité, et il lui faudrait aussi un algorithme qui pique plusieurs fois avec de très légers décalages afin de gérer les contacts imparfaits ou ratés
      On pourrait aussi surveiller les variations de capacité de la tête de sonde pour déduire la qualité du contact
    • Que peut-on faire avec des données PCB rétroconçues ? Si on a une carte fonctionnelle, qu’on la rétroconçoit, est-ce qu’on finit par pouvoir la refabriquer soi-même ?
    • Pourquoi faire de la rétro-ingénierie de PCB ? Je serais aussi curieux de savoir sur quelles ressources on s’est appuyé au départ
    • Existe-t-il un outil pour générer automatiquement une netlist à partir de couches de PCB scannées ?
  • J’ai rapidement transformé le PCB de l’article en visualiseur Openseadragon : https://ha-norge.no/images/pcb_highres/highres_pcb.html
    On peut le consulter sur téléphone en pleine résolution sans télécharger le JPG de 124 Mo. L’image est composée de couches à différentes résolutions et d’un très grand nombre de petites images, plus de 45 000

    • Un immense merci pour l’économie de bande passante. J’aimerais utiliser cette approche pour les scans de cartes à l’avenir, mais je n’ai pas l’infrastructure d’hébergement. Je sais qu’OSD prend en charge les overlays, et ce serait génial de pouvoir proposer les fonctions d’OpenBoardView sous forme de web app
  • C’est vrai, mais je n’ai pas envie de souder 2 000 fils. La dernière fois que j’ai fait de la rétro-ingénierie de carte de façon « professionnelle », je l’ai envoyée à l’extérieur pour un scan CT, et j’ai reçu un exécutable autonome avec les données de nuage de points, l’extraction de surface et une interface permettant de faire varier l’histogramme pour faire ressortir les détails
    À ma place, j’ajouterais quelques sondes automatiques sur un châssis d’imprimante 3D et je combinerais vision, alignement et algorithmes classiques de computer vision
    Ce genre de matériel existe déjà, mais j’aimerais qu’il en existe une version open source

    • Serait-il possible de construire du matériel à rayons X open source capable de faire ce type de scan CT ?
      On dirait bien que cela devrait l’être, mais je ne connais pas assez bien la source et les détecteurs CCD pour voir comment assembler quelque chose de viable
  • La quantité de travail de soudure nécessaire ici est folle. Il existe des équipements industriels de flying probe qui font exactement la même chose de manière totalement automatisée et sans soudure, mais la rétro-ingénierie « à la chinoise » consiste généralement à meuler la carte couche par couche : https://www.chinapcbcopy.com/pcb-reverse-engineering/
    Des entreprises chinoises proposent ce service à des prix très bas, de l’ordre de quelques centaines de dollars par PCB
    https://www.pcb-hero.com/blogs/lilycolumn/pcb-reverse-engineering-1
    https://www.chinapcbcopy.com/pcb-clone-service/
    https://www.pcbtok.com/pcb-reverse-engineering/

    • « La rétro-ingénierie de PCB est une technique de rétro-recherche qui utilise une série de méthodes de rétro-recherche »… mon Dieu
  • J’aurais vraiment aimé que ça existe. Ces derniers mois, j’ai essayé de faire la rétro-ingénierie de l’interface d’alimentation d’une carte mère de serveur Dell et du riser PCI-E d’une carte mère Lenovo ThinkCentre, mais le faire à la main était tellement pénible que je n’ai identifié que quelques connexions de base avant d’abandonner presque complètement.
    Je ne vois pas très bien quel est l’objectif final. Ça ferait un excellent projet open source. Même si l’idée est d’en tirer de l’argent, je pense qu’il y a bien plus de valeur dans le procédé que dans l’outil lui-même. De toute façon, en pratique, il n’y aura probablement que son auteur qui saura vraiment bien l’utiliser.
    Quelqu’un parlait dans les commentaires d’automatiser davantage le procédé, comme avec un équipement de bonding, mais dans ce domaine général, le monde de l’impression 3D a déjà beaucoup avancé sur le plan mécanique. Ça semble relativement facile à adapter au probing.

    • L’objectif initial était surtout d’aller jusqu’au bout pour comprendre comment exécuter concrètement une idée que je pensais faisable. L’objectif actuel est plutôt de l’améliorer et de l’itérer, tout en voyant quel niveau d’intérêt du marché il peut réellement y avoir pour ce genre de chose.
      Je pense que l’essentiel de la valeur se trouve dans la technologie d’imagerie, qui pourrait être proposée facilement via un service de réception par courrier. On pourrait aussi faire produire en volume les PCB extracteurs et les vendre avec une petite marge, puis publier le reste en open source.
  • Je me demande s’il serait possible d’utiliser une approche en lit de clous pour éliminer les difficultés mécaniques du flying probe. L’idée serait de disposer des milliers de sondes sur une grille d’une certaine résolution, puis de les connecter à un backend de matrice de commutation très proche de ce qui existe déjà.
    En particulier, quelque chose comme [1] pourrait peut-être offrir une résolution suffisante. Dans ce cas, la « sonde » ne serait plus qu’un pad sur le PCB de détection. Le problème mécanique se transformerait alors en un problème de layout PCB ultra-dense, ce qui semble au contraire être un domaine bien plus adapté.
    La thermodurcification d’une couche anisotrope serait pénible et donnerait une solution à usage unique, mais si l’on vend les cartes, ce n’est peut-être pas si mauvais.
    Une autre idée « stupide mais potentiellement viable » serait d’utiliser un scan de la carte pour imprimer un PCB sur mesure ayant le même agencement de pads en miroir, puis de monter directement les deux cartes face à face. Une sorte de breakout au niveau carte, pour faciliter la soudure de fils ou, mieux encore, intégrer directement le matériel d’extraction de netlist.
    [1] https://www.3m.com/3M/en_US/p/d/b5005076018/

    • Cette approche n’est pas scalable.
      Les appareils mobiles modernes utilisent souvent des boîtiers BGA au pas de 0,5 mm. À cette résolution, même une carte relativement petite de 5×5 cm nécessiterait au minimum 100×100, soit 10 000 sondes par face. Et le nombre augmente au carré avec la taille de la carte.
      Une méthode bien plus simple consiste à utiliser un équipement de flying probe avec un petit nombre de sondes pouvant se déplacer rapidement [1]. Le texte mentionne d’ailleurs cette option, mais l’écarte à cause du coût initial.
      [1] https://en.wikipedia.org/wiki/Flying_probe
    • J’aime bien la dernière idée, mais comment relier les cartes entre elles ? Avec des billes de soudure ? Juste par pression ?
    • C’est exactement ce que je me suis dit en lisant l’article. On devrait pouvoir automatiser une bonne partie du probing.
  • L’approche par force brute pour trouver les connexions cachées est simple, mais excellente. Je sais déjà qu’une grande partie des travaux de rétro-ingénierie hobby actuels doit aller beaucoup plus loin, être destructrice et nécessiter un meulage couche par couche. Le résultat n’est alors plus une simple boardview mais une reconstruction 1:1 ; pourtant, à mesure que le nombre de couches PCB augmente, surtout dans les appareils grand public de pointe, cela va clairement devenir de plus en plus difficile.

  • C’est vraiment impressionnant. La soudure à la main en particulier l’est énormément, et j’aime bien ce genre de projet qui répond à « c’est impossible, il faudrait faire ça des milliers de fois » par « donc je l’ai fait des milliers de fois ».
    Cela dit, comme les pick-and-place homebrew deviennent de plus en plus réalistes aujourd’hui, je me demande s’il n’y aurait pas un moyen pratique d’en tirer parti. Une pointe de pick-and-place comparable à un outil de wire-wrap pourrait sembler plausible. Ou bien est-ce plus proche des bond wires d’une puce, au point d’exiger un ordre de grandeur de précision supplémentaire ?

    • La plus petite cible sur ce PCB fait environ 0,2 mm de diamètre. Du point de vue de la robotique de précision, c’est tout à fait gérable. Avec un fer à souder robotisé ou un système de soudure laser muni d’un alimentateur et d’un coupe-fil, on pourrait fabriquer une sorte de die bonder basique capable de souder un fil sur le bon pad.
      De par mon parcours en ingénierie des procédés, j’avais plutôt tendance à chercher d’abord un procédé très manuel mais automatisable, plutôt qu’un procédé hautement automatisé dès le départ.
  • Ce serait peut-être une bonne idée de demander une interview à Louis Rossmann sur YouTube, autour de thèmes comme le droit à la réparation.

    • Je ne suis pas l’auteur du post d’origine, mais moins je vois Louis « je devrais pouvoir frapper mon enfant » Rossmann, mieux ma vie se porte.
      Rossmann est une sorte de RMS du mouvement pour le droit à la réparation. Il partage beaucoup d’idées alignées avec l’objectif global, mais aujourd’hui il a une vision assez étroite de la scène du droit à la réparation, et il défend aussi hors de ce cadre des opinions assez dangereuses, ce qui en fait une très mauvaise figure de proue. Ses remarques agressives sur les femmes et les minorités ont réellement nui à certains militants du droit à la réparation, et il refuse aussi de reconnaître jusqu’où s’étend le problème. Par exemple, il a dit plusieurs fois en stream qu’un lave-vaisselle est « un objet simple dont personne n’a besoin d’une boardview ».
      Un peu comme RMS, il lui est aussi arrivé, comme le laissait entendre la remarque précédente, d’expliquer en live, alors qu’il était très ivre, des convictions difficilement compatibles avec les standards habituels de décence humaine élémentaire.