How to Make a CNC Machine From Printer Parts
Old inkjet and laser printers are full of stepper motors, guide rods, and belts that already move with decent repeatability. This guide shows which parts are worth desoldering, what a printer-derived frame can realistically cut, and when the part should go to a machining center instead.

Key takeaways
What a CNC Machine From Printer Parts Can Actually Cut
A used inkjet or laser printer gives you three things that matter: stepper motors, linear guide rods with matching bushings, and a timing belt with pulleys. These parts were designed to position a print head within a fraction of a millimeter, over and over, for years. That is the same job a light CNC axis does.
The limits come from torque and rigidity, not from the control electronics. A typical printer stepper is a NEMA 17 frame, 1.8° per step, holding somewhere around 0.2–0.4 N·m. Belt-driven axes with 20-tooth pulleys give roughly 40 mm of travel per motor revolution. That is plenty for foam and balsa, workable for 3 mm acrylic and PC board, and hopeless for 6061 aluminum.
Be honest about the target. If you want to engrave plywood signs, cut foam molds, or drill PCB holes, a printer-part build is a proven path. If you need a metal bracket that fits a mating part, the tolerance math does not work. That is a job for a real machining center.
- 1Good candidatesFoam, balsa, cork, 3 mm acrylic, FR-4 PCB, engraving on softwood
- 2Marginal6 mm plywood, HDPE, wax, with shallow depth of cut (0.5 mm per pass)
- 3Not suitableAluminum, brass, steel, carbon fiber plate, anything needing ±0.05 mm
Which Printer Parts Are Worth Keeping
Not every component earns its place. Strip the printer down and sort parts into three piles: keep, maybe, and recycle. The keep pile is small and predictable.
Stepper motors are the prize. Look for a label reading 1.8°, 1.5 A to 2.0 A per phase, 4-wire bipolar. Printers with 5-wire unipolar motors are still usable but need a different driver wiring scheme and give less torque per amp. Guide rods matter more than people expect. A 8 mm hardened steel rod with a matching bronze bushing from a laser printer is better than a cheap new rod with a loose ball bearing.
Skip the DC motors, the fuser assembly, the power supply board, and the plastic chassis. The stock power supply rarely gives a clean 24 V at the current a CNC build needs, and the plastic frame flexes under cutting load.
- 1KeepStepper motors, guide rods, bushings, timing belts, pulleys, limit switches
- 2MaybeLead screws (check for backlash), linear rails, timing gears
- 3RecycleDC motors, fuser, plastic chassis, stock PSU, ink cartridges
Frame Material, Control Board, and Drive Choices
The frame decides your accuracy long before the software does. For a work area up to 300 × 300 mm, 18 mm plywood or 2020 aluminum extrusion both work. Extrusion costs more but does not swell with humidity. Bolt the gantry so the two Y rails sit parallel within 0.2 mm over their length. Any twist here shows up as a taper in every cut.
On the control side, an Arduino Uno with a GRBL shield is the standard low-cost route. Three A4988 or DRV8825 drivers cover X, Y, and Z. Set the driver current limit with the potentiometer before you connect the motors. A common mistake is running A4988s at full current and cooking them inside a closed enclosure. Start at 0.8 A and raise it only if the motor skips steps.
Belt tension is the other variable people get wrong. Too loose and you get backlash on direction changes. Too tight and you overload the motor bearings. Aim for a low musical note when you pluck the belt, roughly 5–8 mm of deflection at 100 mm span with light finger pressure.
- 1Frame18 mm plywood or 2020 extrusion, braced diagonally
- 2ControllerArduino Uno + GRBL shield, 3 axes
- 3DriversA4988 or DRV8825, set to 0.8–1.2 A
- 4Power24 V 5 A supply, separate from printer stock PSU
Step by Step: Build the Machine
- 1Strip and sort the printerRemove the covers, then pull the stepper motors, guide rods, belts, and limit switches. Label each motor with its rated current. Test every motor with a multimeter: two coils should read 2–10 Ω each. Discard any motor with an open coil.
- 2Lay out the frameCut the base plate to 400 × 400 mm and the gantry uprights to 250 mm tall. Drill and bolt the Y rails so they are parallel within 0.2 mm over 300 mm. Check with a dial indicator if you have one, or a straightedge and feeler gauge.
- 3Mount the axesInstall the Y carriage on the two Y rails, then the X rail across the gantry. Leave the belt loose until the carriage moves freely by hand. A binding carriage will stall the motor and skip steps.
- 4Install the Z axisUse a short lead screw or a belt-driven Z with a 100 mm travel. For a light spindle, 50 mm of Z travel is enough. Keep the tool overhang short; every extra 10 mm of stick-out multiplies vibration.
- 5Wire the electronicsConnect the steppers to the GRBL shield, keeping coil pairs together. Wire the limit switches to the X, Y, and Z pins with 10 kΩ pull-ups. Set the driver current to 0.8 A as a starting point.
- 6Flash and tune GRBLLoad GRBL 1.1, then set steps/mm. For a 20-tooth pulley and 2 mm pitch belt, that is 80 steps/mm with 1/16 microstepping. Set max travel and homing direction, then run a test move of 100 mm and measure it with calipers.
- 7Install the tool and test cutFit a 3.175 mm end mill or a 0.8 mm PCB bit. Start with 0.5 mm depth of cut, 300 mm/min feed, and 10,000 rpm on a small spindle. Increase feed only after the cut sounds steady.
DIY Printer Build vs Machining Center
Match the process to the part, not to the budget.
| Factor | Printer-part DIY build | Production CNC machining center |
|---|---|---|
| Achievable tolerance | 0.2–0.5 mm | ±0.005 mm |
| Materials | Foam, wood, acrylic, PCB | Aluminum, steel, titanium, PEEK |
| Max part size | About 300 × 300 × 100 mm | Up to 4,000 mm |
| Setup time | 4–8 hours to build | Quotation within 12 hours |
| Repeatability | Drifts with belt wear | 99.99% qualification rate |
| Best for | Learning, signs, foam molds | Functional parts, mating fits |
When to Build and When to Order
Build the printer-part machine if you want to learn CNC and cut soft materials. Order a machined part when the tolerance, material, or fit actually matters.
Common Questions
Can a CNC machine from printer parts cut aluminum?
Not in any useful way. A NEMA 17 stepper with a belt drive cannot push an end mill through aluminum without chattering or stalling. You would need to take 0.1 mm passes at very low feed, and the surface finish would still be poor.
For aluminum brackets or housings, a machining center holds ±0.005 mm and handles the chip load properly.
How much does a printer-part CNC build cost?
The printer itself is often free or under 30 USD used. Budget for a GRBL shield, three drivers, a 24 V power supply, a spindle, and fasteners. The frame material is the variable cost.
The real cost is time. Expect 4–8 hours for the first build if you are learning as you go.
What software controls a GRBL-based DIY CNC?
GRBL runs on the Arduino and reads G-code. On the PC side, Universal Gcode Sender, Candle, or bCNC all work. For CAM, Fusion 360 or FreeCAD generate the toolpaths.
Start with a simple pocket and profile operation so you can verify steps/mm and backlash before running anything complex.
Why does my DIY CNC lose position mid-cut?
Usually the driver current is too low, the belt is too loose, or the depth of cut is too aggressive. Check all three in that order.
Also confirm the stepper coil pairs are wired to the correct driver terminals. A miswired coil produces weak, erratic motion.
What tolerance can I expect from a printer-part build?
Around 0.2–0.5 mm on soft materials with a well-braced frame. Backlash in the belts and flex in the gantry account for most of the error.
That is fine for signs, foam, and PCB work. It is not fine for parts that must mate with a machined component.
Need a Part That Holds Tolerance?
Send us the drawing. We machine aluminum, stainless, titanium, and engineering plastics to ±0.005 mm, from one prototype to 10,000+ parts.
Quotation within 12 hoursNo minimum order quantityNDA on request