How to Reverse Engineer A PCB Board?

It’s rare when small manufacturers DIY create PCB designs. They just replicate the successful products of their competitors and make minor adjustments. Reverse engineering a schematic from a circuit board is this very process for retrieving a design and putting it into use. 

Designing a high-quality PCB is a complex, technologically advanced technique. So, it’s hardly possible to replicate a schematic successfully without having instructions. 

Step 1: Prepare Tools and Equipment

To begin with, you need some helpful instruments besides the chosen PCB itself. Here are the suggested tools, materials, and equipment:
  • A good camera for taking photos.
  • A ring flash or any other lighting.
  • A computer.
  • Internet access.
  • A millimeter.
  • Magnifying glass for checking details that leave invisible under the camera.
  • A photo editing program like Gimp (a free-to-use software) and a vector program like Inkscape.
  • A program for converting a photo into a vector line-drawing like AutoTrace (highly recommended). 
  • A program to draw manipulated diagrams like Dia.

Having plenty of time and patience will be an extra benefit.

Step 2: Take Photos of Schematic Diagram

Before proceeding with photos, you should prepare a PCB board to be filmed. Clean it with a paintbrush to remove specks of dirt, dust, hairs, etc., as they will reduce the quality of images taken.

Then, adjust the lighting. It should not cause reflections. Besides, select a plain and contrasting background. It will be easier to separate a PCB board from it.

Then, take photos in a way there is no perspective, and the frame is completely filled. Take pictures of both sides of the board (component, and pattern sides). The most important nuance is that the tracks are in focus. Probably, you may consider taking photos of a board’s sections instead.

Step 3: Clean up the Images

It does not seem to be complicated. But here are the tips to consider. 

Flip the solder side of the board so it matches the component side. Then, set up a vertical or a horizontal guide and rotate images so the board (ground plane) is aligned all the way down. 

Then, get rid of all the unnecessary elements in the photo like projecting connectors, blurs, and artifacts. Use rectangle and ellipse selection and delete tools/brushes or clone tools. Eventually, you should obtain a clear picture. Finally, save it in .png format for other software to properly read it.

Step 4: Retrieve the Pattern of Holes

The first thing you need to be retrieved in the digital format is the picture of holes/solder pads. This will help you to align the images taken and eliminate holes from the images late for the sake of traces. 

As an option, you may create a topmost layer in your image editor, and turn off the green and blue channels. In case this did not help to make holes and pads visible, reduce the saturation (hue level). Then just paint the holes with a brush tool. 

Once you are finished with painting holes and pads you may delete the layer below (one with the image of a PCB), so you have clear images of holes (in the form of dots) available. 

You may need to experiment with settings, brush tools, layers, etc. In any case, you should receive an accurate vector image of holes and pads. Then, save it in .png format once again. You should receive something similar to the image below. 

Retrieve the Pattern of Holes

Step 5: Circle the Ground Plane Holes and Mark Free Holes

Run Autotrace and open your ground plane image. Turn on the center-line mode. In this mode, Autotrace makes PCB track pads into little loops. We need to delete the ground layer, for which connective pads need to be determined and marked. Here’s the manual way to do this in Autotrace software:

  • Create a new brush. Use: File – New – height 64 width 64 – advanced options – fill with transparency).
  • Choose the ellipse tool and set a 1:1 fixed aspect ratio.
  • Draw a circle in the new image, so it perfectly fits the box (touches all the sides).
  • Shrink the circle, so it’s 5 pixels in size.
  • Stroke the circle. Use: Edit – Stroke Selection – use a line of 7 pixels.
  • Save the file in .gbr extension format.
  • Repeat the same procedure to create “+” and “x” brushes (or something else to mark other elements as described below).

Then, open the file with the same ground plane and create a topmost layer. Use the round brush to dot a circle around every hole (ones that are plated through the ground plane). Copy the alignment marks to the layer, remove the visibility, and save this copy to a new .png file. 

You should receive something similar to the image below. 

Circle the Ground Plane Holes and Mark Free Holes

After that, you need to mark “free holes.” These are pads that do not seem to be connected with anything. Probably, they just terminate the plating going from the opposite board side. Mark holes with “+” or “x” brushes.

Repeat the procedure for ground-plane holes with the brush left unused. The center of any mark will show where the holes go. After you finished, copy the alignment marks to the layer, and save the combined copy with round, “x” and “+” symbols into a new .png file. 

Step 6: Remove Ground Planes

In case you’re dealing with a single-layer board, there is not much difference between a ground plane and the substrate. You can remove marked free holes and ground-plane holes directly.

However, if you need to replicate a 4 layer board, there are internal layers as well. They are likely to be ground and power planes. In such a case, you will need the help of a continuity tester to track the hidden traces and remove ground planes properly further.

Use the fuzzy select tool or any other instrument and select the ground plan area. Grow the selection by 2 pixels. Use: Select – Grow, and save the selection made to a new channel. Make sure you did not look at a bit of a trace.

You should receive something similar to the image below. 

Step 7: Clean the Traces

Now, you need those tracks to have clean edges and a smooth color to help the AutoTrace program proceed with these correctly. Follow these steps:

  • Trace the image using Inkscape. 
  • Smooth out the fine detail with the help of the blur tool. Use: Filters – Blur – Selective Gaussian Blur. 
  • Set a radius of 30 pixels and a max delta of 29 (you may find other settings sufficient). The big idea is that details are blurred while the contrast traces are kept.
  • Use the eyedropper tool and pick the color of the substrate. 
  • Use the received color as foreground color and fill a newly created layer with it. 
  • Move the background layer below the older one, with the substrate.
  • Create a new layer from visible.
  • Pint the track hole in the track color.
  • Manually do other cleaning up so traces have even color, and they are contrast. No unnecessary details should be preserved.

Step 8: Reverse and Burn Out

After all is done, you probably have light gray tracks on a dark background. But AutoTrace needs a direct opposite. Follow these steps to fix it:

  • Desaturate the image. Use: Colors – Desaturate – Luminosity, or anything that works best.
  • Then, invert the image. Use: Colors – Value Invert.
  • You may end this stage if you received an evenly lit, well-focused picture with contrast traces. If not, read other steps.

You need to burn out unnecessary background details that are too gray and darken the details on the tracks that are too light. Follow these steps:

  • Determine areas that are different from others. Use: Select – Feather – 50-100 pixels. Then, work on those areas so they are no different from desired ones.
  • Choose the level dialogue. Use: Colors – levels. Use eyedropper buttons with three options available. 
  • Click the dropper for the white level and click an area of the original substrate. This way it will become completely white.
  • Click the dropper for the black level and click an area of track (it should be lighter than the rest). 

Eventually, the entire background must be all white and traces all black. If there are any artifacts, just paint them white or black respectively with a brush tool.

You should receive something similar to the image below.  

Reverse and Burn Out

Step 9: Smooth the Edges

Your traces are now quite rough. So, you need to smooth them. For this, you need to trace the image in a vector editor program (Inkscape). Follow these steps:

  • Open the tracing dialogue. Use: Path – Trace Bitmap. Play with settings.
  • You need a bitmap image to work with. Use: File – Export Bitmap. Save directory and file name and then click Export.” 
  • Open the end file in the Gimp program and examine it. If you see spots merged together and so on, you need to manually fix it using the brushes available. 

Step 10: AutoTace

Here is the most essential step of the entire process. Use AutoTrace to convert fixed lines into moveable and connectible lines. For the exact sequence of actions, you should read manuals from the program developers themselves. 

Some general tips are to run conversion several times as the tracing tool may proceed exactly the same time differently. 

After you receive the desired attempt (you may check how good it is by uploading it in Inkscape) you should add the layer to the drawing. Then, merge it into the picture of the holes (the one received in the early steps). Use break apart and snap tools to fix broken sections and save the end file. 

You should receive something similar to the image below.

Step 11: Proceed with the Component Side

Actually, you may perform exactly the same stages as described for this side as well. But here is one more layer of complexity that should be detailed. 

The details here are too fine. So the manipulation of the entire image is unlikely to bring sufficient results. So, you need to have an actual board, magnifying glass, and continuity tester. Then, follow these steps:

  • Open the image for the component side and save it in a .xcf format. 
  • Open a picture with all the holes (for the previous layer) as an image layer.
  • Use the set of tools, selections, and actions to scale, rotate and adjust perspective. The big idea is that the previously detailed holes matched the holes on the component side (since these are one and the same holes).
  • Create a picture of the component, a picture of tracks (as described above) and identify any “special hole” (use brushes or mark them in any other method).

Step 12: Fill in the Substrate

Once you have cleared all traces once again and your background is completely white, and the components are countered, you may go to the next stage. In case there are some issues and artifacts, read to the end of this section:

  • Use any selection tool of your choosing to select an area of substrates with pads and one or several components. Then, deselect components, pads, and tracks. 
  • Then, perform autofilling with the bucket fill tool (fill the entire selected section ) with black. 

You may paint the background (substrate with any brush tool if you find your accuracy to be appropriate (or if components cannot be deselected properly if they are too complex and small). You should save the selection (the filled substrate) to another level to always be able to edit it.

Step 13: Isolate the Components

Eventually, all the components will be replaced with appropriate symbols. But now, you just need to isolate them from the background. You may use rectangle or circle select tools. Perform the complete selection and copy and paste it into a new transparent layer. 

It should not be much of a problem as you previously filled the background with black. And now, the selection tool can properly distinguish components themselves. 

  • Save it as a new .png file. 
  • Try to figure out where tracks are hidden by the components and repaint them using the same color as visible tracks have. Use a continuity tester to guide you.
  • Create a black layer and place it behind a component layer so it fills the spaces where the cut components were.
  • Use the detailed above techniques to turn all the tracks on this layer into white. 

You should receive something similar to the image below. 

Isolate the Components

Step 14: Combine the Sides

Launch Inkscape one more time, and open the .png image of components. Create a new layer, open the tracing made for the solder side, and copper it to that layer. Create a new layer, and copy onto it the picture of holes.

Repeat the same procedure for ground plane holes and circles and free-hole marks. You may also need to add the image of solder layer tracing to confirm the correct arranging of the digital PCB.

After all the detail is done, reorder the layers so the original photo is on the very bottom, then components, the component side tracks, holes, and finally tracking. Use the scaling arrows, so all the images are properly aligned (matches the sizes, angles, and perspectives of each other). Then, perform the following steps:

  • Adjust the transparency of layers so you clearly see the image showing what is connected there.
  • Trace a line for each track using the bezier tool. Don’t forget to check the sanity of your tracing on and off.
  • Combine two tracing. Use: Edit – Select All in All Layers – Path – Combine.
  • Use the edit tool to snap together the ends of lines. You should do so with every case when a track on the top of the board connects through to the bottom of the board. These intersections should have nodes on the end when selected. 
  • After you finish, delete all the layers except tracing. Save the file in .ps format. 

Step 15: Add Components Symbols and Rearrange

Use DIa program to open the newly made file. Choose the “Circuit” category of shapes. Then, using the image of components as a guide, snap the replacing symbols over the tracing layer. This way, you will make your work more like a professional engineering schematic. 

A quick tip: You may visit the Dia website to download libraries of extra symbols. 

You may also attach text to a snape. It’s useful for an indication of connections and components. Add values and identifiers this way as well. 

Finally, you should have a vector drawing of all the tracks with added symbols indicating components. Just arrange the components, so they look more like a conventional schematic. Replace lines there they are sloppy. Put additional effort into what seems to need reworking. 

Study the power routing throughout the circuit to see if the received schematic makes any sense. Remember, if there are any peculiarities, there is probably a connection hidden from you.