Show HN: Reverse-Engineering a Switch Lite with 1,917 wires (usoldering.com)
Most public boardviews are almost entirely the result of industrial espionage, other than a few encrypted subscription based software platforms that provide extensive access. The process output is released as donationware, as my main concern is that even released as a low-cost purchase, there is a very strong culture to share this type of information at no cost. I would like to have a more sophisticated suggested donation system adaptive to user country, but I wasn't able to find a good solution.
In terms of 'good startup ideas', I don't think this is one of them. The very high level of soldering skill required makes it difficult to scale, and the prevailing piracy culture makes it challenging to monetize. My main advantage is that costs are very low now that I have the entire thing working. Other than forge ahead at a loss and hope for the best, or to pivot hard leveraging the imaging technology, I'm not sure what other options I have. It feels too complicated and repetitive for shoft-form video content. If you have any feedback, questions, suggestions, etc., I'd love to hear them.
115 comments
[ 2.9 ms ] story [ 210 ms ] threadi've been reverse engineering PCBs (mostly 2-4 layers) for a few years now and this is a part of the problem that i've been thinking about how to solve. best i can think of is a flying probe station cobbled together from 3d printers. basically you'd 1) scan the top and bottom of the board 2) generate a list of test points and pads 3) feed the coordinates into the flying probe system to generate the netlist
the other way to handle multilayer boards (and the most accurate, imo, because it captures exact ground plane designs, guard traces, and structures like that) is the scan-sand-scan approach. you'll get exact artwork--unfortunately the dust it generates is pretty nasty stuff.
It doesn't seem like this problem requires anything crazy, just traditional computer vision, but of course the devil is in the details.
PCBs can warp to various amounts post reflow, which can cause all sorts of problems with parallelism between your PCB and sanding surface. You would also be able to mitigate this type of attack by filling vias with conductive epoxy and plating over them, which is a well established process option in PCB fabrication.
Might another way to resolve issues with the PCB dishing be to photograph the layers at a fraction of a layer height? So that in that way you have a lot more slices to work with, and you can digitally "flatten" the PCB?
1. align the image stack. not trivial, but a common task.
2. take several cross-sections, in both dimensions, and have a human draw a line along a specific layer line
3. linearly interpolate these lines into a surface.
4. for each pixel in each output layer, set the value to layers[l + offset][x][y], where the offset was calculated in step 3.
I did not think of a die-bond machine (I suppose it bonds a wire to each pad instead of you doing it by hand?), but of course that also makes sense. And at least the motion system is much simpler.
A first step/experiment could be to automate creation of the gnd net. For that you only need a single tool head, meaning you can repurpose mostly any 3D printer motion system; for small increments, this could (later) happen during the die-bond process or become a precursor to a flying probe tool head. Of course I can not judge if that's a worthy investment of your time, or if you would enjoy building something like this ;)
Anyway, the effort, skill and dexterity are amazing! Spending 3 weeks soldering 1917 tiny leads seems to be just the icing on the cake :)
[0] https://balika011.hu/switch/lite/
[1] https://www.youtube.com/watch?v=LMnS7yfu3Qk (not for the faint of heart)
Lmao.
The problem is that for a lot of chips there aren't any datasheets available. Sure, something like a memory bus is trivial to trace, but how are you going to reason about Unknown Pin #464 coming from Unlabeled IC #4 which seems to randomly have a 500ms pulse on bootup and every few minutes afterwards?
Or are you maybe aware of other images of depopulated boards?
I am okay at programming, but slow. I think it's definitely possible, but processing of computer vision is still magic to me.
It's not really clear to me what your goal is here. It seems like this would make for a great open source project. Even if you want to make money from it, I think you can generate a lot of value from the process rather than the tools (which only you can really use anyway).
You mentioned in a comment below automating the process further like a bonding machine. There's been a ton of work in this general space in a mechanical sense for 3D printers. I bet you could fairly easily adapt it for probing.
I think most of the value is in the imaging technology, and could easily be offered as a mail-in service. I can also bulk manufacture the extractor PCBs and sell them at a small markup, while open sourcing the rest.
This model would be similar to the notorious Denuvo DRM cracker Empress, who is essentially the only person who can break this gaming anticheat. https://en.m.wikipedia.org/wiki/Empress_(cracker) . I will warn they have quite some drama about them, but the financials seem to be working.
I would also consider what your work could be useful for / value proposition for others. The trimmed-down Wii consoles come to mind. Perhaps a small group of people would heavily value a netlist of their favorite circuit that they could recreate even smaller with more layers/modern techniques.
We've grown up. We got solid, well paying developer jobs. I do not want to even risk violating some law. It's been a hoot 1987-2004 but I have not opened IDA in two decades. That book is closed. I doubt I am alone.
Once... so long ago... I could disassemble Z80 in my head. Today? C9 was RET. The rest I forgot.
A couple weeks ago I played around with a piece of software for my personal usage, and I certainly won’t release anything at all.
Not worth the trouble with the law, I’m not underage anymore and a day job gets in the way of keeping the required mental state/context for RE.
Ah, the simpler times at the University when I had the time and energy.
Well, yeah, there was a time for that.
But, I can guess I can openly say this twenty years later, I was helping out one of the admins of the one of the largest warez sites in Central Europe and when that was raided (Operation Fastlink) -- police only found the proxies and couldn't find the owner so no one ever got indicted over this site -- I had a little chat with myself and, as I said above, closed that chapter of my life.
That server was really something else: imagine a normal mid tower chassis PC of the era but stuffed with IDE cards and next to it several piles of hard drives separated by little pieces of wood so they didn't overheat from touching. By the end, if memory serves, it was multiple terabytes.
It's extremely tedious for a human, and the pay-off is relatively low, as hinted by the parent (what recent DRMed games are even any good?). I do wonder whether anyone has tried setting a well trained AI on the problem though.
That was exactly my thought, if it is just brute force understanding debugging/assembly code a LLM could help.
I'm not an expert on it but my understand is that one part is basically have a VM with custom opcodes, and every opcode is randomized and the set of opcodes used is a subset of a larger pool. Then the code running in the VM is autogenerated from normal code using these confusing and randomly selected made up opcodes. And that is only 1 piece.
Or did you think that it was some sort of wild coincidence that the vast majority of software piracy groups are Russian?
There are plenty of projects where a new PCB for an old device would be desirable:
* The vintage computers prone to capacitor/battery damage. There are a few Mac replacements, for example, but these are obviously hand-done labours of love.
* Classic Hi-Fi involves a lot of 40 year old boards with failing materials (for example, early two-sided PCBs where the second layer was literally painted on) An accurate netlist might also help improve quality of schematic info that's sometimes ancient service manual scans that are nearly illegible.
I’d take a handful of automated probes in a 3D printer chassis, and some vision/registration/classical computer vision algorithms.
This type of thing already exists but I’d rather have an open source one.
Is it possible to make an open-source X-ray machine to do this kind of CT scan?
It really seems like it ought to be, but I don't know enough about the source and the CCD detectors to think about how to assemble it.
The big question is how to get an X-ray source with enough energy to penetrate metals and a detector with enough resolution.
Everything else can be cheap.
Edit: found it ( http://www.rtftechnologies.org/physics/faxitron-DX50-CT-scan... )
These machines are good for up to 8-10 layers of 1-oz copper.
Famous last words: how hard could it be?
I am guessing one of these is a "no", probably the later.
If I am wrong, please tell me the secret
If the painful part is the soldering, and the novel part is the imaging, there is definitely opportunity here. Seems like an opportunity to create a dirt cheap flying probe based off an ender3 3D printer. This is possibly a perfect situation where smart software can make up for the shortcomings of cheap hardware.
You can get something similar-ish done quite cheaply in China: a digital copy of a 2-layer board is only $150[0], and turning that into a netlist shouldn't be too difficult. I expect multi-layer boards to be quite a bit more expensive, but still nothing like this process.
Heck, even for a plain netlist it'd probably be orders of magnitude easier to DIY your own flying-probe machine. All the hardware for 3D printers is widely available, after all.
[0]: https://dirtypcbs.com/store/pcbclone
Rossmann is the RMS of the right to repair movement. A lot of ideas that align with the overall goal but a terrible figurehead because he has a fairly myopic view of right-to-repair scene at this point, coupled with some Yikes opinions outside of it. He has actively held back some RtR folks simply because of his crass comments about women & minorities, but also because he doesn't think the issue extends to some things (like dishwashers, which he's said a few times on stream are "simple shit nobody needs boardview for").
Similarly like RMS, he's made comments (like the one I alluded to before) where he has explained (while very drunk on a live stream) that he has some beliefs that don't... always align well with the status quo in terms of basic human decency.
I’m happy that people are doing good work even if they have shitty opinions or are even shitty humans. I will appreciate what they have done for humanity.
If you want to live in a world built by perfect people, you won’t have a house or music or new or movies or companies.
I’m not defending shitty behaviour, I’m not throwing out the baby with the bath water.
Perhaps there are people/bots who are paid to assassinate his character because of his right to repair work?
Someone, long ago, once told me: “There’s always going to be someone on your side that you wish was on the other side.”
I didn’t realize how true that would become until years later.
B) just know about his right to repair work
C) don’t know anything negative about him, nor has anyone provided any evidence he is a bad person and just attacked his character.
See how those people work? now they are assigned themselves the moral high ground, and you have to justify yourself.
Dont do it. You did nothing wrong, those guys are bullys.
There is a guy on "my side" who acts as if people like me are extreme radicals from the "other side" and you sound like you want to ride this slope downhill as hard as possible. At some point you will only focus on the bad things these people have done, after all you're not watching his videos, just hearing it from biased third parties and you no longer care if it has any semblance of truth to it or not.
I do not worship this guy. I don't even watch his videos. I probably don't even remember what he looks like.
Maybe because we listen those guys for the useful information and we don't think with our reptile brain that "give us the creeps"
Others will definitely have views on topics which aren't always going to agree with your own.
The more you know somebody, the more likely you'll find a difference of opinions that annoys you somewhat. This is highly likely to happen with views on politics or religion.
The average person, however, can live with having differences just fine. Only those with severe mental issues such as narcissism will make it an actual problem, for themselves and others.
It's a pretty big smear, so you should substantiate it.
This is exactly the kind of people that I want to listen on a live stream. And not boring moralizing status-quo defenders.
In particular something like [1] might just have enough resolution. The 'probes' now are just pads on the sensing PCB. This converts it from a mechanical problem to a crazy high density PCB layout problem, which sounds like it'd be up your alley!
Heat cure for the anisotropic layer is annoying, and might make it a single-use solution (but that's not bad if you're selling the boards!)
Another 'just dumb enough to work' concept would be to take the board scans, and print a custom PCB of the same pad layout mirrored, and you can directly mount the two boards face-to-face. Basically a board level breakout, either to make the wire soldering easier, or better, again directly incorporate the netlisting hardware.
[1] https://www.3m.com/3M/en_US/p/d/b5005076018/
Seems like you could largely automate a workflow for identifying pads in the scan and generating the mirror layout, with simple routing to some kind of standardized interface for the probe lines.
Modern portable devices often have BGA packages with 0.5mm spacing. At this resolution, a relatively small 5x5 cm board would require at least 100x100 = 10k probes per side. Count increases quadratically with board size.
Far easier is a "flying probe" machine [1] with a handful of probes that can be moved quickly. This option is mentioned in the article, but dismissed due to up-front cost.
[1] https://en.wikipedia.org/wiki/Flying_probe
Full resolution on mobile phone without the need for downloadning 124MB JPG. The image consist of layer with different resolution, and a lot of tiny pictures (+ 45.000). Enjoy.
That way I believe you can host it.
Had to make some adjustments because of the size of the original image.
Top: https://zoomhub.net/NV9XO
Bottom: https://zoomhub.net/ZxkyW
Share more images here https://zoomhub.net/ and let me know what you think :)
My background in process engineering made me lean towards a figuring out very manual process that could be automated, instead of figuring out a highly automated process.
There are Chinese outfits offering this service at really low prices, we are talking hundreds of dollars per pcb.
https://www.pcb-hero.com/blogs/lilycolumn/pcb-reverse-engine...
https://www.chinapcbcopy.com/pcb-clone-service/
https://www.pcbtok.com/pcb-reverse-engineering/
Oh boy