1 Punkte von GN⁺ 2024-02-26 | 1 Kommentare | Auf WhatsApp teilen
  • Es wurden Boardview-Daten veröffentlicht, die durch Extraktion einer Netlist aus der bestückten PCB des Nintendo Switch Lite Logic Boards und durch Kombination mit Bauteil-, Pad-Formen sowie Referenzbildern beider Seiten erstellt wurden
  • Für die Arbeit kamen ein 6.000-PPI-PCB-Panorama, eine GUI zum Überlagern von Bauteil- und Pad-Daten sowie eine eigens entwickelte Extraktions-PCB zum Einsatz, die viele Pins nacheinander ansteuert und ihren Status ausliest
  • Der gesamte Ablauf umfasst die Aufnahme und Ausrichtung beider Seiten, das Entfernen des RF Shield, das Entlöten und Sortieren der Bauteile, die Messung der GND-Durchgängigkeit, die Gruppierung von Net-Fragmenten anhand sichtbarer Verbindungen der Außenlagen sowie die Verdrahtung zur Extraktions-PCB und das Zusammenführen der Fragmente
  • Die veröffentlichten Daten lassen sich in OpenBoardView als Switch Lite Logic Board.bvr öffnen; da komplexes Rendering derzeit in OBV nicht unterstützt wird, wird zusätzlich Kompatibilität mit FlexBV5 bereitgestellt
  • Bei der Interpretation der Ergebnisse ist Vorsicht geboten: wegen der großen Datenmenge der 6.000-PPI-Originale, Verunreinigungen im Panorama der Oberseite, möglicher False Positives durch Flux-Rückstände und fehlender Messdaten zu elektrischen Bauteileigenschaften

Veröffentlichtes Switch Lite-Boardview-Datenmaterial

  • Die Veröffentlichung ist das Ergebnis der Extraktion einer Netlist aus einem bestückten Nintendo Switch Lite Logic Board
  • Auf einer PCB werden Bauteile auf freiliegende Mounting Pads gelötet, und Kupferschichten verbinden die Pads zu elektrischen Schaltungen
  • Die vollständige Liste aller Verbindungen zwischen Pads und Bauteilen ist die Netlist; kombiniert man sie mit den Formen von Bauteilen und Pads, entsteht ein Boardview
  • Die finalen Daten bündeln das Boardview zusammen mit Referenzbildern beider PCB-Seiten

Öffnen in OpenBoardView

  • Die aktuelle Version von OpenBoardView herunterladen
  • Die veröffentlichten Daten können per Torrent oder Download bezogen werden
  • Das Archiv entpacken, alle enthaltenen .txt-Dateien lesen und dann in OBV wie folgt vorgehen
    • Unter View Board Fill und Part Fill deaktivieren
    • Unter File Switch Lite Logic Board.bvr öffnen
    • Mit Linksklick das Net von Bauteilen und Pads prüfen, per Drag verschieben und mit dem Mausrad ein- und auszoomen
    • Mit Mittelklick oder Space die Board-Seite wechseln

Faktoren, die die Netlist-Extraktion ermöglichten

  • Es wurde ein Verfahren verwendet, um Panorama-Bilder einer bestückten PCB mit geometrisch und farblich präziser Wiedergabe bei 6.000 PPI zu erzeugen
  • Verwendet wird eine Point-and-Click-GUI, die Bauteil- und Pad-Formdaten über das Panorama legt und auch das Hinzufügen und Bearbeiten beliebiger Daten unterstützt
  • Eine selbst entwickelte PCB kann beliebig viele Pins nacheinander mit Spannung versorgen und bei jedem Schritt den Status aller Pins auslesen

Tatsächlicher Arbeitsablauf

  • Mehrere Bilder aufnehmen und zu einem Panorama der Unterseite zusammenstitchen
  • Das Board umdrehen, das RF Shield entlöten und auch für die Oberseite ein Panorama zusammenstitchen
  • Die beiden Panoramen und weitere Bilder gegenseitig abgleichen, um die geometrische und farbliche Präzision weiter zu verfeinern
  • Das fertige Panorama in die GUI importieren und initiale Bauteil- und Pad-Formen platzieren
  • Alle Bauteile einzeln entlöten und für die spätere Analyse an eindeutigen Bin-Positionen ablegen
    • Bin-Positionen und vermutete Reference Designators in der GUI erfassen
    • Unterschiede zu den in Schritt 2 erstellten Pad-Formen bei Bedarf korrigieren
  • Wenn alle Pads freiliegen und keine Shorts vorhanden sind, ein DMM im Durchgangsmodus verwenden
    • Eine Messleitung an die Ground Plane anschließen
    • Mit der anderen Messleitung alle Pads der PCB sondieren
    • Treffer in der GUI erfassen und zu einem Net zusammenführen
  • Die verbleibenden Pads anhand sichtbarer Verbindungen auf beiden Außenlagen zu Net-Fragmenten gruppieren
    • Wenn keine sichtbare Verbindung vorhanden ist, als unabhängiges Fragment behandeln
  • Die Reihenfolge der an Net-Fragmente der Ziel-PCB gelöteten Drähte von den Pins der Extraktions-PCB in der GUI erfassen
  • Beim Ausführen des Extraktors gelangt die Versorgung von den Pins der Extraktions-PCB über die Drähte in die Net-Fragmente
    • Sie durchläuft verborgene Verbindungen innerhalb der PCB und gelangt zu anderen Net-Fragmenten
    • Anschließend kehrt sie über Drähte zur Extraktions-PCB zurück, und dieses Ergebnis wird aufgezeichnet
    • Die aufgezeichneten Ergebnisse dienen dazu, eine vollständige Abbildung aller verborgenen Verbindungen zu erstellen
  • Auf Basis dieses Extraktor-Mappings werden Fragmente zusammengeführt, eine vollständige Netlist erzeugt und als Boardview-Datei exportiert

Einschränkungen von Daten und Werkzeugen

  • Die ursprünglichen 6.000-PPI-Panoramen haben jeweils einen Umfang von 0,5 Gigapixel, was verschiedene Probleme verursacht
  • Die 6.000-PPI-Panoramen werden per Torrent oder Download bereitgestellt
  • Die Panoramen der Oberseite und Unterseite lassen sich in ZoomHub ansehen
  • Die Outlines von Bauteilen und Pads können vereinfacht erscheinen

Fehlende Verfahrensschritte und Qualitätsgrenzen

  • Nach dem Entfernen des RF Shield und vor der Extraktion wäre eine Ultraschallreinigung wünschenswert
  • Das Entfernen des RF Shield ohne low-melt bismuth solder erfordert mehrere Kniffe
  • Da kein Ultraschallreiniger vorhanden war, ist das Panorama der Oberseite schmutziger als das der Unterseite
  • Wenn Flux-Rückstände vor der Extraktion ausreichend leitfähig sind, können False-Positive-Verbindungen zwischen Net-Fragmenten entstehen
  • Zwischen Schritt 8 und 9 fehlt ein Schritt, bei dem die in Bins abgelegten Bauteile entnommen und ihre elektrischen Eigenschaften gemessen werden
    • Das vorhandene Gerät ist ein einfacher und ungenauer LCR Meter
    • Eine Messung zum jetzigen Zeitpunkt würde daher relativ minderwertige und unvollständige Daten liefern

Ziel des Projekts und Bitte um Unterstützung

  • Der Ersteller hat mehr als zehn Jahre Erfahrung in Electronics Contract Manufacturing in den Bereichen Medizin, Luft- und Raumfahrt, Militär und Industrie
  • Mehr als die Hälfte dieser Zeit arbeitete er als SMT Process Technician und hatte Lese- und Schreibzugriff auf hochpreisige Anlagen
  • Dieses Projekt ist ein Experiment, das Work-From-Home-Internet-Freelancing mit qualifizierten elektrischen Lötarbeiten verbindet
  • Der Betrieb eines Reparaturshops, die Anpassung an Werbealgorithmen, die Bewerbung von Affiliate Links oder der Weiterverkauf minderwertiger Werkzeuge passen nicht zu der Lötarbeit, die hier angestrebt wird
  • Wenn die veröffentlichten Daten nützlich sind oder man mehr davon sehen möchte, wird um Spenden gebeten
    • Mit Unterstützung sollen mehr Geräte hinzugefügt, die Cycle Time verkürzt, die Qualität verbessert und mehr Daten bereitgestellt werden
    • Ziel ist es, den gesamten Ablauf durch Kostenoptimierung, Dokumentation und Open-Source-Veröffentlichung reproduzierbar zu machen

1 Kommentare

 
GN⁺ 2024-02-26
Hacker-News-Kommentare
  • Ich habe keine direkte Erfahrung damit, aber beim Finanzierungsmodell scheint die Sorge zu sein, dass nach der Veröffentlichung der Arbeit wegen Raubkopien kaum noch Einnahmen bleiben. Man könnte stattdessen überlegen, das Geld zunächst per Crowdfunding einzusammeln; das hätte auch den Effekt, dass die Leute ganz natürlich für die Projekte abstimmen, die sie am meisten wollen.
    Dieses Modell ähnelt Empress, der berüchtigten Denuvo-DRM-Crackerin. Sie gilt praktisch als die einzige Person, die diesen Game-Anti-Cheat knacken kann: https://en.m.wikipedia.org/wiki/Empress_(cracker)
    Es gibt zwar reichlich Kontroversen um sie, aber finanziell scheint es zu funktionieren. Außerdem lohnt es sich, darüber nachzudenken, wofür diese Arbeit nützlich ist und welches Wertversprechen sie für andere hat. Für eine kleine Gruppe von Leuten könnte es zum Beispiel enorm wertvoll sein, die Netlist einer Lieblingsschaltung zu bekommen, um sie — wie bei verkleinert umgebauten Wii-Konsolen — in kleinerem Formfaktor, mit mehr Layern und modernen Verfahren nachzubauen.

    • Viele der Leute, die Denuvo knacken könnten, haben vermutlich einfach keine Lust dazu.
      Alle sind älter geworden und haben stabile, gut bezahlte Entwicklerjobs. Nicht einmal das Risiko, gegen das Gesetz zu verstoßen, wollen sie eingehen. 1987 bis 2004 waren wirklich spaßig, aber ich habe seit 20 Jahren IDA nicht mehr geöffnet. Dieses Kapitel ist abgeschlossen, und ich vermute, ich bin damit nicht allein.
      Früher konnte ich Z80 im Kopf disassemblieren. Heute weiß ich nur noch, dass C9 RET war, den Rest habe ich vergessen.
    • Crowdfunding im Stil von Kopfgeldjägern wäre wahrscheinlich ideal. Eine Forensoftware, bei der jeder Thread eine eigene Crowdfunding-Kampagne ist, ließe sich wohl irgendwie zusammenschustern.
    • Ich stimme dem Vorgehen zu, gezielt für bestimmte Schaltungen Crowdfunding zu machen.
      Es gibt viele Projekte, bei denen neue PCBs für alte Geräte sinnvoll wären. Zum Beispiel Vintage-Computer, die anfällig für Schäden durch Kondensatoren oder Batterien sind; es gibt auch einige Mac-Ersatzboards, aber das sind eindeutig liebevoll von Hand gemachte Arbeiten.
      Auch klassisches Hi-Fi hat viele 40 Jahre alte Boards und Materialien, die altern. Frühe doppelseitige PCBs wurden zum Beispiel teilweise so hergestellt, dass die zweite Lage buchstäblich aufgemalt wurde. Eine genaue Netlist könnte auch helfen, die Qualität der Schaltplaninformationen zu verbessern, die oft nur als kaum lesbare Scans alter Servicehandbücher vorliegen.
  • Großartiges Projekt. Ich habe es vor ein paar Tagen gesehen, und die Anzahl der Drähte war beeindruckend.
    Ich mache seit einigen Jahren Reverse Engineering von PCBs und habe es meist mit 2- bis 4-Layer-Boards zu tun; das hier ist ein Teil des Problems, über dessen Lösung ich nachgedacht habe. Die beste Idee, die mir einfällt, ist ein aus einem 3D-Drucker zusammengestückeltes Flying-Probe-System. Im Grunde würde man 1) Ober- und Unterseite des Boards scannen, 2) eine Liste von Testpunkten und Pads erstellen und 3) die Koordinaten in das Flying-Probe-System einspeisen, um eine Netlist zu erzeugen.
    Eine andere Methode für Multilayer-Boards ist Scan–Schleifen–Scan. Ich halte sie persönlich für die genaueste, weil sie Strukturen wie Masseflächen-Designs und Guard Traces präzise erfasst. Man bekommt exakte Artwork-Daten, aber der dabei entstehende Staub ist ziemlich gesundheitsschädlich.

    • Wenn man Image→CAD-Daten hat, könnte man vermutlich etwas bauen, das einem Die-Bonding-Gerät ähnelt, um den Prozess zu automatisieren. Ein Flying-Probe-System bräuchte zwei Köpfe auf beiden Seiten, um die gesamte Kontinuität abzudecken, und zudem einen Algorithmus, der bei leicht versetztem oder schlechtem Kontakt mehrfach mit kleinen Offsets ansticht.
      Man könnte auch Änderungen der Kapazität am Probe-Kopf überwachen, um die Kontaktqualität abzuleiten.
    • Was kann man mit per Reverse Engineering gewonnenen PCB-Daten anfangen? Hat man ein funktionierendes Board, rekonstruiert es und kann es am Ende selbst herstellen?
    • Warum betreibt man Reverse Engineering an PCBs? Mich würde auch interessieren, welche Unterlagen man zu Beginn herangezogen hat.
    • Gibt es ein Tool, das aus gescannten PCB-Layern automatisch eine Netlist generiert?
  • Ich habe die PCB aus dem Artikel schnell in einen Openseadragon-Viewer gepackt: https://ha-norge.no/images/pcb_highres/highres_pcb.html
    Man kann sie auf dem Smartphone in voller Auflösung ansehen, ohne das 124-MB-JPG herunterzuladen. Das Bild besteht aus Layern in unterschiedlichen Auflösungen und sehr vielen kleinen Bildern, mehr als 45.000.

    • Vielen Dank für die Bandbreite. Ich würde dieses Verfahren künftig gern für Board-Scans verwenden, habe aber keine Hosting-Infrastruktur. Ich weiß, dass OSD Overlays unterstützt, und es wäre großartig, wenn man OpenBoardView-Funktionen als Web-App anbieten könnte.
  • Stimmt schon, aber ich hätte keine Lust, 2.000 Drähte zu löten. Als ich zuletzt „professionell“ ein Board reverse-engineert habe, habe ich es extern CT-scannen lassen und bekam ein eigenständiges Programm mit Point-Cloud-Daten, Oberflächenextraktion und einem Interface, mit dem man per Histogramm-Anpassung Merkmale sichtbar machen konnte.
    Ich würde ein paar automatische Probes an ein 3D-Drucker-Chassis montieren und Vision/Alignment/klassische Computer-Vision-Algorithmen kombinieren.
    Solche Geräte gibt es bereits, aber ich wünschte, es gäbe eine Open-Source-Version.

    • Wäre es möglich, ein Open-Source-Röntgengerät zu bauen, das solche CT-Scans machen kann?
      Es wirkt so, als müsste es möglich sein, aber ich weiß nicht genug über die Quelle und CCD-Detektoren, um eine Vorstellung davon zu haben, wie man so etwas zusammenbauen könnte.
  • Der hier nötige Lötaufwand ist völlig irre. Es gibt industrielle Flying-Probe-Systeme, die dieselbe Arbeit komplett automatisch ohne Löten erledigen, aber typisches chinesisches Reverse Engineering funktioniert so, dass das Board Schicht für Schicht abgeschliffen wird: https://www.chinapcbcopy.com/pcb-reverse-engineering/
    Chinesische Anbieter bieten diesen Service zu sehr niedrigen Preisen an, im Bereich von ein paar Hundert Dollar pro 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/

    • „PCB-Reverse-Engineering ist eine Reverse-Research-Technologie, die eine Reihe von Reverse-Research-Techniken verwendet“ — meine Güte.
  • So etwas wäre wirklich großartig gewesen. In den letzten Monaten habe ich versucht, das Stromversorgungs-Interface eines Dell-Server-Mainboards und den PCI-E-Riser eines Lenovo-ThinkCentre-Mainboards per Reverse Engineering zu verstehen, aber von Hand war das so schmerzhaft, dass ich nur ein paar grundlegende Verbindungen herausgefunden und dann fast aufgegeben habe.
    Ich weiß nicht genau, was das Ziel ist. Das scheint ein hervorragendes Open-Source-Projekt zu sein. Selbst wenn man Geld verdienen will, würde ich sagen, dass im Prozess viel mehr Wert steckt als im Tool selbst. Das Tool wird am Ende ohnehin praktisch nur von einem selbst richtig nutzbar sein.
    In den Kommentaren unten wurde darüber gesprochen, den Prozess stärker zu automatisieren, etwa mit Bonding-Equipment; in diesem allgemeinen Bereich ist mechanisch durch 3D-Drucker bereits viel Arbeit geleistet worden. Das ließe sich vermutlich relativ leicht fürs Probing anpassen.

    • Das ursprüngliche Ziel war, eine Idee, die ich für machbar hielt, tatsächlich bis zum Ende auszuarbeiten. Das aktuelle Ziel ist eher, sie zu verbessern und zu iterieren und zu sehen, wie groß das Marktinteresse an so etwas wirklich ist.
      Ich denke, der größte Wert liegt in der Imaging-Technik, und das ließe sich leicht als Einsende-Service anbieten. Die Extractor-PCBs könnte man ebenfalls in Stückzahlen fertigen, mit etwas Marge verkaufen und den Rest als Open Source veröffentlichen.
  • Ich frage mich, ob man ein Bed-of-Nails-Verfahren verwenden könnte, um die mechanischen Schwierigkeiten einer Flying Probe zu vermeiden. Man würde Tausende von Probes in einem Raster mit bestimmter Auflösung anordnen und sie an ein Switch-Matrix-Backend anschließen, das dem, was man bereits hat, ziemlich ähnlich ist.
    Insbesondere etwas wie [1] könnte eine ausreichende Auflösung haben. Die „Probes“ wären dann nur noch Pads auf der Sensor-PCB. Damit wird aus dem mechanischen Problem ein wahnsinnig dichtes PCB-Layout-Problem, und das klingt eher nach einem Bereich, der gut dazu passt.
    Das thermische Aushärten der anisotropen Schicht ist lästig und kann eine Einweglösung ergeben, aber wenn man die Boards verkauft, ist das nicht schlecht.
    Ein weiteres „dummes, aber vielleicht funktionierendes“ Konzept wäre, den Board-Scan zu nutzen, um eine kundenspezifische PCB mit spiegelbildlich gleichem Pad-Layout zu fertigen und die beiden Boards direkt einander gegenüber zu montieren. Eine Art Breakout auf Board-Ebene, um das Anlöten von Drähten zu erleichtern oder sogar die Netlist-Extraktionshardware direkt zu integrieren.
    [1] https://www.3m.com/3M/en_US/p/d/b5005076018/

    • Dieser Ansatz skaliert nicht.
      Moderne Mobilgeräte verwenden häufig BGA-Packages mit 0,5 mm Pitch. Bei dieser Auflösung bräuchte selbst ein relativ kleines 5×5-cm-Board mindestens 100×100, also 10.000 Probes pro Seite. Wenn die Boardgröße wächst, steigt die Anzahl quadratisch.
      Ein viel einfacherer Weg ist ein Flying-Probe-Gerät mit wenigen Probes, die sich schnell bewegen können [1]. Der Artikel erwähnt diese Option ebenfalls, schließt sie aber wegen der anfänglichen Kosten aus.
      [1] https://en.wikipedia.org/wiki/Flying_probe
    • Die letzte Idee gefällt mir, aber wie verbindet man die Boards miteinander? Lötbälle? Einfach Druck?
    • Beim Lesen hatte ich denselben Gedanken. Das Probing ließe sich vermutlich ziemlich weit automatisieren.
  • Der Brute-Force-Ansatz, um versteckte Verbindungen zu finden, ist simpel, aber großartig. Ich weiß, dass ein großer Teil der heutigen Hobby-Reverse-Engineering-Arbeit viel weiter gehen muss, destruktiv ist und ein schichtweises Abschleifen erfordert. Das Ergebnis ist dann keine einfache Boardview, sondern eine 1:1-Rekonstruktion; aber je mehr PCB-Layer es gibt, desto schwieriger wird das offensichtlich, besonders bei modernsten Consumer-Geräten.

  • Wirklich beeindruckend. Besonders das Handlöten ist bemerkenswert; ich mag dieses Genre von „Das ist unmöglich, das müsste man tausendmal machen“ – „Also haben wir es tausendmal gemacht“.
    Allerdings werden Homebrew-Pick-and-Place-Maschinen heute zunehmend machbar, daher frage ich mich, ob es eine praktische Möglichkeit gäbe, sie dafür zu nutzen. Eine Pick-and-Place-Spitze ähnlich einem Wire-Wrap-Tool wirkt irgendwie plausibel. Oder ist das eher näher an den Bond-Drähten eines Chips und braucht eine Größenordnung mehr Präzision?

    • Die kleinsten Ziele auf dieser PCB haben einen Durchmesser von etwa 0,2 mm. Aus Sicht der Präzisionsrobotik ist das durchaus beherrschbar. Mit einem Roboter-Lötkolben oder Laserlötsystem samt Drahtzuführung und Schneidevorrichtung könnte man eine Art einfachen Die-Bonder bauen, der Drähte auf die richtigen Pads lötet.
      Wegen meines Hintergrunds im Process Engineering tendierte ich dazu, zuerst einen sehr manuellen Prozess zu finden, der automatisierbar ist, statt von Anfang an einen stark automatisierten Prozess zu entwerfen.
  • Es wäre gut, Louis Rossmann auf YouTube zu Themen wie dem Recht auf Reparatur um ein Interview zu bitten.

    • Ich bin nicht der Autor des Originalbeitrags, aber je weniger ich mit Louis „ich sollte mein Kind schlagen dürfen“ Rossmann zu tun habe, desto besser ist mein Leben geworden.
      Rossmann ist so etwas wie der RMS der Right-to-Repair-Bewegung. Er hat viele Ansichten, die zum Gesamtziel passen, sieht die Right-to-Repair-Szene inzwischen aber ziemlich eng, und außerhalb davon hat er ziemlich gefährliche Ansichten, weshalb er als Aushängeschild denkbar ungeeignet ist. Wegen seiner groben Äußerungen über Frauen und Minderheiten ist er für einige Right-to-Repair-Aktivisten tatsächlich zum Hindernis geworden, und er erkennt auch nicht an, auf welche Bereiche sich der Problemumfang ausweitet. Zum Beispiel hat er in Streams mehrfach gesagt, Geschirrspüler seien „einfache Dinge, für die niemand eine Boardview braucht“.
      Ähnlich wie RMS hat er, wie die oben angedeutete Aussage zeigt, in Livestreams auch schon stark betrunken Überzeugungen erläutert, die nicht gut zu üblichen Standards grundlegender menschlicher Anständigkeit passen.