Reproducing a PCB from scanned image (BMP, JPG, etc.)

Hi everyone. I am looking to reproduce an old PCB that is no longer produced. It’s fairly simple (to me). It has an edge connector to plug into a motherboard, 9x surface mount ICs, 9x decoupling capacitors and a few resistors. It’s only 2 layers, and a few vias.

It’s a basically a proprietary cache module. I have a ‘donor’ module that I have removed all components from and produced high resolution scans from. What is the best way to use KiCad to clone this? Ideally I’d like to be able to ‘import’ the drawing somehow and ‘trace’ over it drawing the connections, etc.


Kicad has layers that you could probably use to import the board too. I’d say the first thing to do is use a program that will let you scale it properly. I’ve used Inkscape to import logos from. You’ll probably get better answers shortly.

Thanks hermit! That’s perfect for me getting it to the correct scale/dimensions I need.

Edit: What should be the format I save these as?

One can only “import” black and white images. To do that you would need to convert them to a footprint using the bitmap2combonent tool found in the kicad main window. (This would create drawings on some kicad layer with your image data)

I would guess that creating the image such that you can convert it to a footprint would nearly be the same amount of work as recreating the pcb from scratch.

1 Like

Thanks Rene_Poschl,

so let me rephrase the question. How would I go about recreating the PCB from scratch?


If you have a simple PCB, and no SCH, you could use this nifty WireIT plugin

You add parts manually, and then use WireIT to click-add nets, which you then route.
Or, you could manually create a netlist, and then import that. Or draw a SCH…
Depends on the how complex the PCB design is.

I’d try and get the XYR info from the scaled scan you have, to at least place the parts in the same places,as that makes later compare much easier.

Manual netlist snippet:
(net (code 1) (name “Net-(C1-Pad2)”)
(node (ref C1) (pin 2))
(node (ref J1) (pin 10)))
(net (code 2) (name “Net-(J2-Pad5)”)
(node (ref U1) (pin 2))
(node (ref J2) (pin 9))
(node (ref J2) (pin 5)))
(net (code 3) (name “Net-(J2-Pad10)”)
(node (ref J2) (pin 10))
(node (ref U1) (pin 4)))

Draw the schematic and create the pcb like any other pcb. That way you can use all tools that protect you from harm. You can still be inspired by the part placement of the original. (Finding a good part placement is quite a large part of the workload)

1 Like

I don’t have step by step information for you.

If I were to undertake the task, as you mention, I might think to attempt to get a scan imported on one of the user layers; this would allow you to “trace over” that layer onto a production layer.

In reality, starting with an “on-grid” Edge Cuts layer and moving parts from a corner of that should get you close enough.

This attempt is going around the normal KiCad workflow to have a schematic that passes ERC.

Good luck!

As mentioned above, the ‘Bitmap to Component Converter’ can import image files, and below is a screen grab
I took of a PDF waveform (easy way to get a polyline of width), saved as .PNG, and that imports as a polyline you can measure.
The import BITMAP image tool seems to accept fractional DPI values, (& differing for X,Y) so a few iterations on scale of that should give you good actual-size mapping, and then you have an image as a trace-over reference.
Manually place footprints, and add connections, or import a netlist.

If the scan is good enough, you might be able to leave the polylines as traces…, but probably best to create real traces and nets, as you can then check that.

This is the saved converted footprint, after load into Footprint Editor.

Thanks everyone, this gives me a lot of info to at least get started and ponder over. I appreciate it. I will try to update this as I proceed and if I run into questions.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.