PCB RevEng - Software zum Reverse-engineeren von Platinen

Ich bastel seit einer weile über claude code eine software die im browser läuft um platinen in netlists umzuwandeln, damit man daraus ein schaltplan ableiten kann.

besser als mit stift und papier war der plan.

Die software läuft lokal im browser, man muss nix runterladen, keine abhängigkeiten, keine cloud, nichts. einfach die html öffnen oder auf die git seite gehen und da ist er der editor. gespeichert wird lokal im browser, man kann die datei aber auch herunterladen.

Wie funktioniert das ganze?

Man erstellt ein neues projekt und lädt Bilder von seiner platine hoch, idealerweise in hoher auflösung und allen lagen die man analysieren will. ggf. sogar ein röntgenbild wenn man will.

im dropdown legt man fest welches bild was ist, top, bottom, inner1 xray etc.

Dann richtet man bild 1 über die taste Deskew aus falls man bilder hat die nicht perfekt gerade sind. man wählt zwei parallele linien aus (board kante zb.) und er gleicht automatisch perspektivische verzerrung aus.

schritt 2, ausrichten der bilder. jede lage hat man idealerweise schon vorher ausgerichtet bevor man sie importiert, falls nicht. kann man über 4 ausgewählte punkte die lagen mit anderen ausrichten. auf die reihenfolge achten, dadurch kann man auch drehen und spiegeln!

schritt 3, maße kalibrieren. man nimmt das calibration werkzeug oben links und zieht eine linie von kante zu kante von der man in echt die maße genommen hat, dann gibt man diese ein.

fertig, es kann losgehen.

(hotkeys sind alle einstellbar)

mit W legt man leiterbahnen

mit V setzt man vias

doppelklick öffnet ein menü zum Net-namen festlegen, tasten 1 bis 0 für quick-net namen wie GND +5V VCC etc.

wenn man punkte miteinander verbindet erstellt es automatisch ein neues Net, wenn man zwei nets miteinander verbindet wird daraus eins.

man kann mit ctrl Z rückgängig machen, ctrl y wiederholen und oben auf der Uhr eine timeline auswählen um aktionen rückgängig zu machen die schon weiter hinten liegen.

Mit Mask wird eine rote maske über die platine gelegt damit man sieht wo man noch nicht war, hilft etwas falls man leiterbahnen vergisst.

mit D kann man zwischen vorder und rückseite umschalten.

mit den tasten 1..0 und shift+ 1..0 kann man zwischen den lagenbildern links hinundherschalten.

mit C öffnet man das komponentenmenü um bauteil-symbole zu setzen. falls eins nicht dabei ist, gibt es das freestyle symbol. man gibt die größe an und klickt danach einmal drauf, rechts im menü kann man dann Add pins klicken.

wenn man ein IC auswählt, oder jegliches bauteil, hat man rechts ein menü in dem man pins benennen kann, net-name eintragen, etc.

die netzliste links in der leiste hebt das jeweilig ausgewählte netz blinkend hervor.

man kann auch die farbe dazu ändern.

Gespeichert wird im browser-cache alle 2.5s, aber nur nach einer änderung. Manuell speichern geht auch, dann lädt der eine json datei runter. das klappt auch gut mit großen bildern. zb. habe ich eins mit 250mb größe ohne ladezeiten.

wenn man fertig ist kann man das ganze als kicad netlist oder schaltplan exportieren. (auch als csv)
am schaltplan bastel ich noch, aktuell nutzt er nur net-labels und es kann sein dass komponenten fehlen falls der package-name falsch gewählt ist. kicad meckert dann gern beim import.

leider kann man in kicad keine netlist in den schaltplan editor importieren als “vorgabe”, so dass man nur noch die bauteile hin, herschieben und verbinden muss wie im PCB editor. da überleg ich mir noch was.

Man kann komponenten ein wert geben, zb. 10R 100uF 74HC14 etc.

bei widerständen kann man auch den code eingeben zb. 01C und er macht automatisch 10k daraus. ebenso über die farbbänder im Ohm menü machbar

Ich reize täglich mein limit bei claude aus weil mir ständig neue dinge einfallen oder kleine bugs auftauchen. sobald ich wieder tokens frei habe, werden die sofort abgearbeitet.

Vielleicht kann ja jemand von euch mit der software was anfangen.

normalerweise behalt ich solche spielereien für mich aber die hat ein gewissen allgemeinnutzen dachte ich mir.

Ein beispielprojekt was ihr reinladen könnt ist zb. dieses hier

(.json datei, nix verschlüsselt alles plain text. layer-bilder sind in base64 darin encoded daher so groß.)

das bau ich sobald es wieder rennt direkt als standart ein, so dass man falls man noch kein projekt im cache hat “neu” oder “load sample project” auswählen kann.

Wer noch Target3001 kennt, der kennt diese reverse engineering funktion, nur hab ich kein bock für eine mit sponsoring und werbung vollgemüllte software die am ende dann weniger kann hunderte euro zu zahlen.

Ideen?

ich hätte da

  1. evtl ein BOM editor wo man eine liste aller komponenten hat, wo man genauer eintragen kann was wie und wo.
  2. Machine vision, um automatisch widerstandsmarkierungen zu erkennen und in werte umzuwandeln… das kann halt schnell schief gehen.
3 „Gefällt mir“

Wow. Das ist wirklich mal eine tolle Sache. Gerade vorletzte Woche hätte ich so etwas gebraucht, als ich meinen Gitarrenverstärker modernisiert habe. Und heute quäle ich mich auch gerade mit KICAD und Estlcam herum, weil ich eine kleine Platine mal fräsen will.

Ich könnte mir eine Checkfunktion vorstellen, die überprüft, ob Leitungen ins Leere laufen, oder Kurzschlüsse zwischen Netzen entstehen.

wenn man eine leiterbahn über eine andere zieht (auf der selben lage) dann meckert der, ob das so gewollt ist und ob man es ignorieren, rückgängig machen oder die beiden netze miteinander verbinden soll

unverbundene netze kann man links mit dem “check” knopf sehen

nur eine liste mit leiterbahnen ohne endpunkt, das fehlt noch^^ die bahnen sind nicht ein teil, sondern eher eine visuelle darstellung. jedes segment wäre demnach ohne abschluss

Wow….. Hut ab, bin beeindruckt.

Ich habe gerade ein wenig mit herumgespielt. Wirkt schon ganz gut.
Mit dem Align bin ich jetzt etwas am hadern. Meine zwei Bilder wurde aligned, aber die Leiterbahnen, die ich schon gezeichnet hatte wurden nicht mitvergrößert.
Dazu wäre es vielleicht gut so eine Art Unter-Layer zu haben.
Ich weiß ja nicht wie es programmiert ist, also die Leiterbahnen als Objekte der Layerklasse oder so?

darum direkt bevor man auf einem layer arbeitet ausrichten, nicht erst nachträglich^^

muss ich noch etwas klarer einbauen. zb. nur align knöpfe auf layer 2+ nicht auf 1.

deskew und calibrate mit warnung falls man schon leiterbahnen gesetzt hat

idealerweise hat man die bilder schon so vorbereitet dass sie orthografisch sind und perfekt gerade und miteinander ausgerichtet sind, dann muss man nur die größe kalibrieren.

daher der workflow:

bild für Front einfügt, direkt “deskew und calibrate”.

bild für Back eingefügt, direkt Align, dann auf layer Front wechseln und wieder 4 punkte setzen. dann wird back auf front ausgerichtet.

die größe von leiterbahnen und vias (optisch) kannst in den einstellungen ändern

Wow! Bin auch sehr beeindruckt. Sieht schon recht mächtig aus - könnte mir gut vorstellen, das mal einzusetzen, wenn ich es brauche. Claude habe ich noch nicht benutzt, bin eher bei Gemini - aber das sind wohl andere Welten.

Respekt! Das war früher immer mein Traum, da habe ich viel rev-enged. Ich nutze Claude Code (m.E. das bislange stärkste Modell im Bereich Coding) auch, habe die 20€/Monat Variante und laufe auch ständig and Limit. Meist kommt man recht weit im ersten Schuss, braucht dann aber gefühlt ewig um ihm kleine Bugs auszutreiben.

So hab mal weiter gemacht, jeden tag, alle limits voll. die hassen mich wenn ich da 1500€ in api tokens für n 20er im monat verballer

An der UI hat sich ein bisschen was geändert:

Es gibt nun ein schaltplan editor der den export erleichtert, keine random würfel mehr mit net-labels

Projekte werden nun in OPFS gespeichert (browser dateisystem), man kann mehrere haben, sie per dpaste (pastebin) teilen und versionen davon erstellen

Ein viel schnellerer weg, bauteile hinzuzufügen:

man gibt einfach schlüsselworte ein, daraus zieht er sich den footprint und die werte.
oder klassisch über den alten Footprint browser indem man shift hält während man drückt.

AIAIAIAIAI

was sonst, hat ja jetzt jeder drinn. muss man aber erst in experimental einschalten, wird einem nicht aufgezungen.

3 features gibt es bisher, footprint generator, automatische pinbelegung und verteilen der blöcke im schaltplan, nix davon funtzt so richtig gut, vielleicht habe ich auch einfach das falsche modell dafür probiert.

man benötigt ein api key von den üblichen verdächtigen damit das läuft

Der import von kicad_mod footprints ist nun möglich, die werden pro projekt auch gespeichert damit man sie mehrfach platzieren kann ohne neu hochladen zu müssen.

und natürlich AI footprint generator was sonst, ist aber standartmäßig aus und braucht eh ein api key. erzeugt in 90% der fälle eh käse, kann man nicht fixen sonder nur auf ein anderes modell ausweichen.

Automatische pinout funktion mit AI

braucht manchmal 1..2 anläufe und genug details, immer gegenprüfen.

Split modus damit man vorn und hinten gleichzeitig im auge hat, man kann die layer auch umschalten mit 1 bis 9 links bzw. shift 1 bis 9 für rechts oder im dropdown.

der cursor ist synchron damit man sieht wo man ist, zu jeder zeit.

viele neue hotkey möglichkeiten

und jeder knopf hat wenn man rechtsklick macht die option direkt ein hotkey zuzuweisen

Ein BOM editor mit csv export zum schnellen ändern von bauteilwerten, teilenamen und footprints

mehr export möglichkeiten

Ein Nets tab in dem man jedes netz sieht und auch, welche vias traces usw. dazugehören

geht ebenfalls im kleinen nets bereich

und viel mehr wo ich schonwieder vergessen hab

wird solangsam brauchbar!

als nächstes.. multiplayer über WebRTC? :DD
Machine vision zur autoerkennung von bauteilen und beschriftungen… aber dafür muss man gescheite bilder für hochladen damit das einigermaßen funtzt. Und ohne externe libs (was ich ja verhindern will) müsst man im prinzip ein Opencv in js komplett von null basteln

@bobaFET
am besten verballert man seine limits in dem man für jeden käse ein neuen chat eröffnet, die files reinladen und 20 features einbauen ist oft günsitger als ein chat mit 5..6 nachrichten noch mit einer weiteren zu ergänzen

aber ja die kleinen bugs…

1 „Gefällt mir“