Intro to Reverse Engineering Hardware
If you’re interested in 3D printing, CNC milling, or really any kind of fabrication, then duplicating an existing part or interfacing with an existing part is probably on your to-do list. The ability to print replacement parts when something breaks is often one of the top selling points in 3D printer marketing materials. Of course, to do that you need to be able to make an accurate 3D model of the replacement part. That’s fairly straightforward if the part has simple geometry made up of a primitive solid or two. But what about more complicated parts?
That’s what I’m going to teach you in this post. Recently I worked for a medical device company whose purpose was to duplicate popular out-of-patent medical products, in order to lower medical costs. This meant that my entire job was reverse engineering complex precision-made devices as accurately as possible. The goal was to make a final product indistinguishable from the original.
Now, we were reverse engineering parts with features that were essentially too small to be seen by the human eye, so we had some fancy equipment like high-magnification comparators. But for the parts most hobbyists want to make, all you’ll need is a set of digital calipers, like these ones made by Hornady and available on Amazon for less than $30.
Why are calipers all that you need? Well, the human brain is very bad at estimating lengths with any kind of accuracy. “About 5 inches?” is the best most of us are capable of. So you need a way to get accurate measurements for “reference features.” However, the human brain is very good at two things: making relative judgments, and making inferences.
Relative Judgments: This is why you can look at an analog clock without numbers, and still guess the time with pretty good accuracy. It’s why you can look at a glass and say “yup, that’s about half full.” In reverse engineering, it’s why you can look at the picture below and deduce that X is probably 2″ and Y is probably 1″.
Inference: This is actually the most important skill you need to develop for successful reverse engineering. It’s all about making logical deductions from your measurements, based on the fact that the original part was designed by another human. For instance, if the measurement above came out to 3.98″ instead of 4.00″, you can probably assume that the person who designed it made it 4.00″. The 0.02″ difference was probably a result of manufacturing tolerances, or a slight error in measurement.
As humans, we like to use nice even numbers when we design parts. Lengths, diameters, and radii are usually round numbers in the design phase. Angles are usually even divisions of 90 degrees (almost always 0, 15, 30, 45, 60, 75, or 90). Of course, the caveats here are measurements that either the designer didn’t explicitly specify (like the length of the hypotenuse of triangle), or when the designer has to use a specific measurement to interface with another part or has a similar design constraint (like with an injection molded part, when you need a draft angle of 1 or 2 degrees).
When making inferences, you’ll also need to take into account whether the designer was working with metric units or standard units. If you take a measurement with your calipers and it comes out to 0.197″, you might assume it’s due to manufacturing and round it to 0.200″. When, in reality your calipers were actually rounding 0.19685″, which is exactly 5mm. What system of units are being used is one of the first determinations you need to make. Take into account country of origin, industry, and experiment with finding nice round numbers on what appears to be a primary feature.
This is a good workflow for reverse engineering a part. Like when you’re designing a part from scratch, you should start with a rough shape and add features to make it more detailed.
Step 1: Determine units
Start by asking yourself where the part was made, and more specifically where it was designed. A part originating outside of the United States is probably metric, but what if it was designed by an American company and simply manufactured overseas? Alternatively, what if it’s a part designed overseas, but with the purpose of interfacing with an American part?
Let’s take a look at headphone jacks to illustrate the complexity of this problem. The original standard jack was an American design and the specifications call for a diameter of 1/4″ (6.35mm) on the main part of the plug. The mini headphone jack, which became popular later and is probably what you have now, is exactly 3.5mm (0.137795″). I can’t find solid information on this, but I assume that’s because it was designed for international standards.
Once you have a hunch about the units being used, try taking some measurements in inches and millimeters on some major features, like the length, width, or diameter of the main body. See which (inches or millimeters) are closer to nice round numbers, but still keep in mind that manufacturing is never perfect, and they probably won’t be dead on.
Step 2: Important primitives
Start by taking measurements of the main features of the part, and modeling those. It’s best to start with features that would be primitive solids, in order to get an accurate base. You also want your most accurate measurements (which are usually the first ones) to be the “important” features. These are features which affect the functionality of the part, like where it’ll fit with another part.
Using the headphone jack as an example again, you can see that the actual plug is very important to the functionality of the part. It’s what actually interfaces with the other device, and so it’s important to get those measurements as accurate as possible. The body of the jack is used for two things: to house the wire connections, and to provide a gripping surface. Neither of those things is especially dependent on accurate dimensions. Therefore, you should start with designing the plug, specifically by beginning with a cylinder based on the overall length of the plug and the diameter.
Step 3: Unimportant Primitives
Next, it’s a good idea to go ahead and model the rest of the primitives that aren’t as important. The reason you want to do this before getting to the details of the important parts is simply a matter of logistics. It can sometimes be difficult to add major features without a nice “clean” primitive to reference. There are ways around that of course, but it’s usually best to have a complete “rough-in” of your part before you begin with the detail work.
Step 4: Important Details
Now that you’ve got your rough part, it’s time to start adding the important details. This is the most difficult part of the entire process, as these details are both hard to measure and important to the functionality of the part.
For this jack, you need to get measurements for each of the two revolved cuts into our primary cylinder that you created previously. To do this, you need their diameters (5 and 6), as well as information on their positions (1 and 3) and their widths (the difference between 2 and 1, and the difference between 4 and 3). Why did I measure from the tip, instead of from the other end? Because the tip is what actually fits into the female jack, so the distance of those features from the tip is more important than the distance from the grippy end. You need to be careful not to stack tolerances. Each measurement you take will have a margin of error, so keep that in mind when you choose your references for measurements.
The tip is next, which presents a problem: how do you measure the angle of the tip? One way would be to measure the distance from the end to where the angle first starts. But that will give you accuracy issues caused by the rounded tip and the beveled (fillet) edge at the start of the angled tip. There aren’t any “hard” edges to measure from. Instead, a better way (in my opinion) is to make some inferences on the angle and the choices the original designer made.
Right away, we can see that the angle between the center axis (blue line) and tip slope (green line) looks pretty darn close to 45 degrees. That’s about as round of a number as you can get, and it’s probably safe to assume that was the original design intent. But did you notice that another problem has come up? The intersection of blue and green lines isn’t at the end of the tip (orange line). This is because instead of having a sharp tip, it was made with a blunt rounded tip. That means that when modeling the tip, you can’t easily use the green/blue intersection as a reference point for the revolved cut.
Instead, I would make my reference the intersection of the green and yellow lines. Now, this is also an “imaginary point”, as there is no hard edge there. The fillet makes it impossible to get a perfect measurement with calipers. But, it should be a little easier than the imaginary point that the tip would present. Making a 45 degree revolved cut from there would leave you with a flat tip, which would then be rounded with an edge fillet (the fillet radius matching the radius of the circle of the flat tip).
For the rest of the fillets on the plug, you’re going to have to guess and make inferences. Try some different radii until they match those of the part. Getting this right takes some practice and experience, but it shouldn’t be too hard to get it close. Luckily, the radii of bevels (fillets) and dimensions of cut off edges (chamfers) are rarely integral to the functionality of part, as long as you’re close.
Step 5: Unimportant Details
This last step is pretty easy, because it’s not essential that you get it exactly right. On our headphone jack, the “grip” area could be completely different than the original part, and it would still work just fine as long as the wire connections inside fit. You can make it look like the original part, or you could take some artistic liberties (like knurling the entire area for better grip).
Now, I’ve obviously simplified the modeling of this particular part (the headphone jack). In reality, it’s actually an assembly made up of a few parts to allow internal wire connections, and an electrical connection to the female jack. If you were actually trying to reproduce this jack (a TRS connector specifically), you would have to take it apart and model each part individually. But hopefully this has given you an idea of the process you would need to use.
What if you don’t have access to the original physical part?
This is a challenge you might approach if you were trying to reproduce the likeness of a product, or if you’re modeling for purely aesthetic reasons. Maybe you want to 3D print a prop from a movie, or you want to make a reproduction of a rare product you can’t get your hands on. The latter was the case for me when I modeled this Braun SK2 radio:
All I had for reference was this photo I found on Google:
So how did I approach this? Well, most importantly it wasn’t necessary for it to be exactly right. I wasn’t planning on actually making a physical radio, and even if I was it wouldn’t have needed to interface with any existing parts. All that mattered was that it looked right.
Of course, my goal was still to make it as close as I possibly could with only a photo for reference. So I started with what I knew: this was a radio designed by Dieter Rams during in his heyday at Braun. At that time especially, Rams was obsessed with simple design, and so I knew he would have approached this radio with straight forward proportions and only non-frivolous features. Furthermore, Rams is German, so I could safely assume he was using the metric system.
I could get a basic sense of scale by looking at the dial and controls in the photo. The dial needs to be readable (probably from arm’s reach), so that gives a minimum size for the radio. The knobs are obviously supposed to be manipulated with your fingers, so it’s easy to make some inferences on their size based on that. They couldn’t be too large, so that gives a maximum for the size of the radio.
With a good idea of the general size of the radio in mind, I could come up with the proportions of the body. The height appears to be about 1/2 of the length, or at most 2/3. The width appears to be between 1/3 and 1/2 of the length. The dial and controls take up 1/2 of the face/speaker grill. Of that half, the dial takes up about 3/4 and and knobs take up 1/4. The holes in the grill are in a square pattern, and so that’s a simple matter of counting how many rows and columns there are. The spaces are close to the same size as the holes, so that tells us the diameter of the holes.
And from there, it was mostly just about making the details look right. It takes a little bit of experimentation to get it right. It might not be perfect (you may notice that I got the proportion of the center plastic in the dial wrong), but the idea is make it visually accurate. At the beginning of this article, I mentioned that the human brain is terrible at guessing exact measurements, but good at relative judgments. That’s why it’s best to focus on getting the proportions right.
Working that way should allow you to make convincing reproductions without taking measurements. The more references you can find visually, the more accurate you can make the reproduction. If you were trying to reproduce a movie prop, you could use the actor’s hands as a reference, or a pen on a table, or really any familiar object that you can use for scale. Take advantage of any other items in the frame to get a better idea of the size of the object you’re trying to model.
I hope this has been helpful, and that it allows you make your future projects even better!
Serial Hobbyism is a blog dedicated to teaching you how to start new hobbies, and for all of the awesome stuff that goes along with that. Follow Serial Hobbyism on Twitter, like the Facebook page, or subscribe via email (on the left sidebar) for updates on new articles!