I’ve been working behind the scenes on some ambitious projects, and struggling to find machinists who are not only willing to work on one-off designs, but prepared to challenge what they believe to be possible in terms of precision. The struggle to find machinists has been a steeper hill to climb than learning CAD modelling, with no summit in sight.
I have wanted to learn CNC for some time. In its simplest form, CNC (computer numerical control) is a method of automating machine tools via programmed commands, which dictate the precise movement of a tool in relation to a workpiece. Arguably the most common form for hobbyists and makers is the CNC router, whereby a spindle is mounted to a gantry that moves along three axes (X, Y, and Z) to machine a workpiece secured to the machine bed.
I reached out to SainSmart to ask if they’d be interested in collaborating with me on this journey, and they responded with great enthusiasm. So much so that just days later, my first ever CNC machine, a Genmitsu 3020-Pro Max V2, landed on my doorstep.

There are no resources out there for blind traditional machinists, let alone CNC machinists. As I embark on ever-more ambitious projects, I decided that it was time to set about learning CNC, and in the process, make it more accessible to all.
Software Barriers: CAD and CAM
This isn’t without significant challenges. CNC machining relies heavily on CAD (computer-aided design) software, which is highly visual in nature and thus inherently inaccessible to me, but it doesn’t have to be so. I recently wrote about overcoming this barrier using OpenSCAD and CadQuery to create 3D models in code. Frameworks like OpenSCAD, CadQuery, and Build123d allow for the creation of precise, parametric 3D models using pure Python or custom scripting languages.
Once a part is designed, it must run through a CAM (Computer-Aided Manufacturing) process to generate G-code—the actual language of coordinates and machine instructions that a CNC machine understands. Most CAM software is heavily integrated into visual CAD packages, relying on drag-and-drop tool path generation. A more accessible approach is to use script-based CAM tools, such as ocp-freecad-cam, which allow tool paths and machining operations to be generated programmatically right alongside the initial code-based design.
The generated G-code is meaningless without a machine controller to interpret it. The “brain” of most desktop CNC machines is the firmware running on its microcontroller.
GRBL is the most prevalent open-source firmware for this purpose. It is responsible for translating G-code commands into the exact electrical step and direction pulses required to move the stepper motors driving the router, to switch and control the router itself, and to orient the machine in relation to the workpiece. It is reliable, lightweight, and strictly handles motion control.
Other firmware options exist, such as RepRapFirmware (often used on Duet boards), which includes a native web interface (Duet Web Control) for operation, or LinuxCNC, which bypasses the microchip approach entirely and uses a dedicated PC to calculate motor movements in real-time.
Most machines used by hobbyists and makers use a GRBL controller. To get the G-code to a GRBL-based controller, you need an application called a G-code sender.
An alternative is an offline controller—essentially a small hardware device that reads G-code from a file and streams it directly to the machine controller without PC intervention.
There are plenty of software-based G-code senders out there, but most are inaccessible to screen-reader users. While elements like part visualisers are naturally visual, the primary limitation is incredibly poor user interface design. Unlabelled buttons, non-standard controls, and graphical icons without text are common. It seems that in the cross-platform world, standards compliance has been all but forgotten.
Overcoming Barriers
Before i could machine anything, I first had to overcome the software UI problem. One of the best CNC control programs and G-code senders is CNCjs, a cross-platform application using the Electron framework with a user interface written in React. As of version 1.10.8, it was largely inaccessible. Thankfully it is open source, so I forked the repository and set about implementing accessibility fixes across the entire user interface. These have now been contributed back to the official CNCJS project, and hopefully developers will continue that work going forward. I have also made contributions to gSender. The goal is to increase the number of options available to anyone, regardless of the software they wish to use.
That said, I am not a fan of cross-platform, web-based electron apps. They’re big, bloated and buggy. Keeping dependencies updated is a challenge, so they’re often packing legacy code with performance bottlenecks or security vulnerabilities.
I am a Mac user exclusively having left Windows behind for greender pastures more than a decade ago. It occurred to me that there are no native MacOS CNC control applications, at least nothing that I’ve found, so I have set about developing one. It is in the early alpha stages and i have been testing it with this machine with great results. I must apologise to SainSmart who have been extremely patient with me. Having to write a complete G-Code sender from scratch naturally caused a significant delay in my being able to use the machine, and therefore to publish this promised article.
I will begin distributing the app to testers in the coming months with an app store release to follow thereafter. If you’re interested in testing it and providing feedback, do get in touch.
The Machine
The Genmitsu 3020-Pro Max V2 is a mid-range machine in the Sainsmart lineup with a 300 mm (X-axis) x 200 mm (Y-axis) work area and a z-axis machining height of 78 mm ((11.81” x 8.07” x 3.07”)). The Z-axis features an upgraded C-mount which support s robust spindle clamp, and can be further upgraded with additional clamps to take a 65 mm (Makita and clones) or 69 mm (Dewalt) router. SainSmart make their own 65 mm spindle which will also fit, or you can use a Katsu or any of the Makita clones.

This new machine features dual steel X-axis rails with an added backplate for strength and a robust Y-axis frame supported by 4040 extrusions and dual 12 mm Y-axis linear rails. All axes are lead screw driven, with a running accuracy, and repositioning accuracy of ±0.1 mm and a maximum speed of 2000 mm / min.
The included spoil board is a 10 mm thick machined aluminium plate with printed measurement scale and a 6 x 5 grid of mounting holes for clamps, fixtures and other accessories. A set of basic plate and screw clamps are included in the box, though I’d imagine most users will opt to add a secondary spoil board and use t-slot tracks, or double-sided tape to hold workpieces.

The machine has a locking emergency stop button and limit switches at both ends of all axes. It uses NEMA17 stepper motors and runs from a 48-volt, 8.3A (400W) power supply. The power supply is universal in voltage but not auto ranging, so it is imperative that you check the voltage switch on the top is set correctly before you power on the machine.

It is supplied with a 300W 49 mm spindle, which takes ER11 collets. A 1/8 inch collet is included with a 10-pack of 20-degree d-shaft V bits for engraving. The spindle will actually take bits up to 7 mm with a suitable collet, though with a maximum speed of 10,000 RPM its utility with traditional router bits is quite limited. I purchased a matching Genmitsu collet set from Amazon.
The Controller
The controller is based on the open-source GRBL V1.1 protocol and uses 32-bit, Toshiba TB6S109 drivers. It supports a Z-probe (included) and has a three-pin laser port, as well as an air assistance pump port and MPG (Manual Pulse Generator) port. Computer connection is via a USB B port.

Furthermore it supports an offline controller, which is included with the machine, and control via USB or serial. The offline controller is inherently inaccessible to me with a user interface based on a tiny display. However i have tested it briefly and it is responsive and easy to use and provides enough basic functionality to control the machine and run any machining job for which you have a G-Code program. I’m unsure how it handles advanced features such as program pauses and tool changes, though I suspect anyone running a job that might require either is doing so from a computer.
I’d certainly be interested in a controller capable of adding basic network support to the machine, either via Wi-Fi or ethernet if SainSmart saw fit to introduce such a thing. I haven’t yet cracked open the offline controller to see how hackable it is. I did briefly entertaining the idea of creating some custom firmware with added speech synthesis, or a series of piezo beeps to non-visually indicate the selected option. Variable pitch beeps or tones might provide an easy path to make the existing controller accessible with only a small firmware addition.

Assembly and Setup
Setup was simplicity itself. The machine comes well packed and mostly assembled. You need only mount the assembly holding the eX and Z axes to the Y-axis base frame with 16 hex-head head bolts, and install 4 rubber feet to the base frame. You fit the spindle and clamp, and connect the spindle using the included Wago connector.
The latter is the only barrier to assembly for a totally blind user, as it necessitates colour-matching the spindle connectors. No issue if you’re equipped with a smartphone and one of the many AI assistant apps we have at our disposal, or some sighted help. But a tiny bit of tactile heat shrink on the red cable which negate this issue.
Everything you need is included in a small organiser box with the machine, including spindle spanners, hex keys, spare screws, a USB drive containing software and manuals, some basic plate clamps with associated hardware.

In Operation
I wasn’t sure what to expect. Iv’e heard horror stories over the years about the quality of basic CNC machines of far-eastern origin. While there are certainly a plethora of no-name machines out there I wouldn’t touch, Genmitsu are an established name with a reputation for quality and it shows. But this is still a basic, budget-oriented machine, so I expected a few rough edges.
But I’m pleasantly surprised. I’ve found the machine to be extremely smooth, quiet, refined and, most importantly of all, accurate. I was surprised at the quality of the linear bearings for a relatively inexpensive machine. There is no play in any of the axes, and all travel accurately at any speed. The machine is durable too. While I was developing my MacOS GRBL control app, I slammed the machine into its limit switches on more than 1 occasion and there has been no damage to any of its components, and the machine is as accurate as it was out of the box.
Speaking of accuracy, the machine manages impressive positional accuracy of 0.008 mm on the X and Y axes, and 0.006 mm on the Z-axis in my testing. The machine also needed no calibration to produce accurate stepping, though I was able to use software calibration to achieve minor performance gains. However I would be quite happy with the accuracy out of the box unless I were attempting to work to microscopic levels. Realistically, if you’re using a 3020 machine with the stock spindle, you’re not working to such tolerances.

The machine is quiet too. The steppers have a pleasing whir in operation at rapid speeds and are whisper quiet in machining. The spindle isn’t noisy at all and has very little vibration.
I will upgrade the machine to a trim router very soon, as the factory spindle has limited utility for me, but it has so far proven itself with a range of bits from drill bits to surfacing bits, and straight cutters. My primary use for the machine to date has been cutting out veneers for inlays, or drilling holes precisely to make jigs and templates.
The machine had no issues producing a circle jig in MDF for an upcoming speaker project. This involved cutting a 30 mm pocket for a router guide bush, and a series of precisely placed 6 mm holes with top recesses for a bolt head.

The jig was made entirely with a 5 mm, 1/4 inch shank router bit in the stock spindle running at its maximum speed. Yes, it took a while and no, the spindle is not optimal for the bit or the task, but it certainly got the job done. The jig was used to cut recesses and cutouts for the drivers in the speaker baffle, and the results were accurate to the point where the drivers are effectively a press fit with no gaps.
Another feature I really like is the z-probe. It offers a usefully large contact surface and is itself a solid chunk of aluminium. It would be nice if there was a dedicated spot on the machine to store it when it’s not in use, perhaps a magnet on the side frame. It registers instantly on contact and has made setting the z0 height very easy.

Wrapping Up
This is the first CNC machine I’ve ever had hands on, and the bug has bitten. I’ve been farming out machining jobs for years without ever truly understanding what the process involves. Learning CNC, even as the beginner that I am, has given me a true appreciation for the skills possessed by an established machinists.
I’m also astounded by the value on offer. For a little over £400, this machine gives you a lot for the money. Solid slabs of aluminium, chunky linear bearings and lead screws, quality motors, a top-notch controller and a spindle that is better than it has any right to be. The Genmitsu 3020 PRO package is more than a great introduction to CNC. It’s a quality machine in its own right, able to take on tasks and projects that I’m yet to dream up. If you can dream it up, and fit it within the machine confines, you can make it, and that excites me.
In closing I’d like to take a moment to thank SainSmart. Firstly, as mentioned earlier, for their patience. Secondly for their support, and their commitment to accessibility.
Let me tell you from years of experience, not every company will supply a blind man with tools. Some companies are actively against the idea – perish the thought a disabled person might act in a way that is perceived to be dangerous. God forbid that person promote inclucivity and independence in a hobby or craft where one might require a modicum of assumed common sense to be safe.
Some go as far as to actively discourage my discussing or showcasing my use of their tools publicly in these pages. Unfortunately for them, my tools are purchased with my own money, and I will do with them as I please.
I’m heartened by those who not only understand why I’m trying to achieve in these pages, but actively support my work. I’d also like to thank James Dean of James Dean Designs for his help and kind words of encouragement. Check out his Youtube channel for tons of great CNC content including in-depth, honest reviews of many machines. There will be more cnc content to come from me, so do subscribe if you like what you see. Until then…

Share Your Thoughts