Whats in a firmware? (Controller VS Controller)

I have read of many controllers. Some specialized, and some closed source.
What I have not found is any sort of chart that makes easy comparison, as if every one already knew all there was to know. -Save for those of us jumping in the deep end having no idea what is going on… I have done a lot of digging, found some good information, but need to tie it all together now. If you would help me?

I see on the Laser side, Ruida and M2. What else is there? I would like to expand this.

-I have read a post conversation by the Admin where M2 was described as little more than a direct slave. Ruida was described as closed source all in one stand alone complete with image processing and gcode extrapolation. Does this sound about right?

I see on the CNC side there is GRBL, GRBL-LCP, GRBL-DSP, GRBL1.1, and Mach3. What else is there?

-I have read that GRBL, for the most part is like M2 on the laser side, being a slave. Similarly The so called Mach3 controllers are slaves. But what confuses me is how they differ. I understand that Mach3 based are configured for optimal control by Mach3 as a software controller, and in some cases are able to use pendants with Mach3. Yet, Mach3 supports many controller types, including GRBL. Also I have read that Mach3 controllers can be controlled by more than just Mach3… So without having both types in front of me to tinker with I am more than a little confused.
-GRBL seems to come in many versions. I have not found a specific source, a developer home page. I would like to understand better about this firmware before discounting it. Also what exactly is its most advanced form? Some day it doesn’t work on 32bit, and other places I have read it does?

Laser VS CNC:
Would I be mistaken in thinking that Laser based controllers are specialized for use in laser systems only? But that a CNC controller can be reconfigured for used with a laser also, just as it can be reconfigured for use with just about any tool head, spindle or router?

The bigger picture:
Developers like Duet and Marlin seem interested in becoming a jack of all, master of none. Allowing users to operate just about any kind of configuration, be it Laser, Pen, Knife, Spindle, Router, or even multi head 3D tooling:
-I know for sure that the current version of Marlin supports several CNC commands, but how standard is this and would it require much alteration to work with common CNC or laser software?

32bit debate:
Obviously a 32bit controller if set up right can be faster, have massive buffers, and other advanced built in tools. But one that I have not seen much conversation over, the drivers. I guess the old school drivers are enough for most, or maybe the market moves slower in CNC? Meanwhile in 3D printers we have TMC5160, a nice 60V 20A driver that puts most others to shame in term of capability like Silent Step and micro step extrapolation to 128. The catch is that it needs a 32bit controller. I think there are some intrepid users who have done some advanced things with these chips at the hardware level. But most of us aren’t that good.
-So far I only know a handful of controllers that can out support these drivers, and mostly plug and play.
Do you know of any?

The K40 Intro linked from the top bar talks about this a bit. Most CNC controller hardware can be used with a laser, and controllers that can run one of the open source firmwares that speak gcode are released faster than we could maintain a list… But the K40 Intro definitely lists several that are purpose-built for controlling lasers.

There’s more than one admin, but… @Tatarize who wrote Meerk40t has a video that explains the M2 nano in great detail. The M2 takes direct stepper commands. In 3D printing, Klipper has this kind of architecture, and now Marlin also has a direct step mode which can be driven by step-daemon.

Ruida controllers have a proprietary protocol that has been reverse-engineered (by, or partially by, @Tatarize as I understand?). Ruida controllers do not process gcode.

I think that “slave” is being over-used here, and would like to suggest that other terminology might be clearer.

  • M2 Nano has the computer sending direct motion controls to the stepper motor. It’s almost the same as old CNC designs that had the stepper driver controls wired directly to pins on the parallel port (remember those?) but connected via USB and using a very very simple protocol.

  • gcode is a much higher level language for describing movements. It is well over half a century old and is the industry standard for CNC motion control. A gcode interpreter has a lot of leeway to interpret the gcode in a way that matches machine constraints. For example, it might know the maximum acceleration the machine is capable; a machine might be stationary, then be given a command to move to a new location in two or three dimensions at maximum speed, and it might apply acceleration limits separately in each of three dimensions to make the move. Different implementations have different capabilities; for example, early 3D printers used firmware that didn’t implement the G2 and G3 arc commands because all the modeling tools broke shapes down to small straight segments anyway; recently, as fast 32-bit controllers with a lot of processing ability and memory have become common, controllers have implemented G2 and G3 arc commands and slicers have started to use them.

  • Mach 3 is control software that runs on a PC and expects to do direct stepper control. Mach 3 (and 4), as well as the nearly ubiquitous LinuxCNC, interpret gcode and send direct stepper control commands. In the early days this was typically done with the parallel port (see above) but now is often done via USB or ethernet. So this is conceptually similar to M2 Nano but utterly different in implementation and typical purpose. (These controllers are often used to drive industrial milling machines, for instance.)

grbl is canonical for grbl and was the origin of many open source firmware implementations; some were just porting it to new hardware, like @cprezzi’s grbl-lpc and Bart Dring’s Grbl_ESP32, and others have gone on to live a life of their own, like the Marlin firmware primarily used on 3D printers.

Relatively recently, grblHAL seems to be the “2.0” of grbl development that is unifying support for many hardware architectures in one source code base. This includes 16-bit and 32-bit architectures.

That’s a good start. There’s overlap; you can have a CNC controller with labeling covering use for laser and other domains.

It’s clear that Marlin development is primarily driven by 3D printing. That said, laser control is much simpler than 3D printing control.

32bit isn’t really a debate any more… :smiley:

The TMC controllers have taken the world by storm, it is clear. The connection to 32-bit is tenuous, probably it’s just calculations to take advantage of 128-way microstepping… But that hardly matters because there is very little reason to get a 16-bit controller at this point. 32-bit controllers are cheap now.

“these drivers” meaning TMC? There are lots and lots of controllers, and at least many of the TMC chips can still be driven by step/dir/enable signals and were even produced to be pin-compatible with some prior chips, but they also enable a serial protocol connection that requires explicit firmware control, and plenty of firmware supports that.

1 Like

Ruida is designed for laser. The code is pretty reasonable and compact and the functions only have laser-relevant functions. Ruida - EduTech Wiki will give you a pretty reasonable example of the code base in that you can skim it and see it has everything reverse engineered or all the commands at least.

GRBL is for 3d printing. There’s a special mode within GRBL which is “Laser Mode” it does a bunch of pre-processing and the Gcode being run is a lot to parse and some pretty hefty code.

There’s some other boards like TopWisdom and Leetro ( see the complete breakdown of the commands for Leetro (me again) here, Leetro - EduTech Wiki) these are some Ruida like controllers.

I think you’re overusing “slave” and not just because of the historically problematic overtones but because all hardware just does what you tell it to do. The primary distinction here is that all these controllers like Moshiboard (I’ve also reverse engineered that one) and Ruida and GRBL is that they are computers on a card. Basically they are fully fledged Von Neumann machines. They have the memory and the processor and they take in this information and they run their little firmware and they use their processor to implement the code.

The real exception to this whole affair is M2 Nano. The Lhystudios boards are different. They don’t process anything at all. They can’t so much as draw a line. Like everybody would implement Bresenham’s algorithm to draw lines and every card would have that most obvious of functions. Not Lhystudios, it doesn’t even have memory on the card. It takes a steady stream of ascii bytes that are treated like ascii command code that implement switches. One code sends a signal to change the stepper motor from forward to backwards, a different one sets it the other way. Lowercase ascii which is literally just the low nibble adds values to a simple register that governs how many time the board will tick. It’s not a computer on a card. It’s hardware switches at the level of reading ascii characters.

A weird thing as to why people buy $300 GRBL boards for their system. Rather than the cheaper ones is that a lot of time they need that higher power processor so they can raster as fast as the 30 dollar M2 Nano.

As a weird thing you could just hook up a daughter card by hacking directly into the M2 Nano leads and hook those wires up to whatever fancy stepper motor chip you want. Modern stepper motor chips have more processing power than the M2 itself. They don’t have plugs unless you want to drill a board’s leads but if you hook them up with the fancy stepper chips they are good. The signal they get isn’t 32 bit. It’s on/off and setting a couple states. The impressive stuff there is in the stepper chip, which is part of the controller board but it’s a bit like getting a fancier supped up video card for your computer, it makes a big difference on those things that the board isn’t really doing.

You could certainly compare the regular boards and the Lhystudios boards but some categories like how much memory is on the board will be amusing for the Lhystudios. Since neither memory nor processing power matters a jot to that board, it is entirely because of how it’s designed those thing have little bearing on real metrics like how fast can it effectively raster.


I have actually not seen any in the 300 range, maybe I just don’t shop at the right places. Most are clones, typical in the 30-50 range, and often seem to be the entry level stuff included to a get a user started, if at all.

Other than have read of the M2 nano, I have not actually seen it disclosed as being used on any product I have looked at.

I have seen at least a handful of Ruida driven K40 boxes.

Now this is news to me. I have never read that GRBL is 3D printer. While I consider the lump, of hardware (laser, router, 3D printers) to be all common family. I have read nothing to say that any one could or should use GRBL on a 3D printer.

Looked up grblHAL and found it does seem to be developing pretty quickly. Nothing I use is listed as supported. But my guess is that will change in not too long. Possibly even many of these off the shelf controllers will be supported as well. I will keep an eye on the project. Thank you.

I am not sure if slave or tool, is the best way to describe the M2 nano. However, as the term slave in technology, is used to describe a device that does not generate its own instructions, this seems to fit.

I remember parallel port and have had to order the PCI cards for more than one PC that did not have one built in. But that a local shop wanted a new PC to run their machines, or they had a old copy of AutoCad that used Rainbow Systems Parallel port security key for licensing control.

So far, this system reminds me of the GlowForge integrated cut management system.

But I am not sure Ruida is what I would want and for certain I do not want M2. But rather a hybred is appropriate. The system must be able to take direct uploads of vector graphics for on screen manipulation, or direct control such as line by line gcode over usb/serial. These systems should be one and the same, neither master nor slave. Simply a system ready to accept work regardless of the need.

Thank you both @mcdanlj and @Tatarize for taking a moment to reply. I will continue to process the links and points made. Hopefull have more questions soon. My digging continues.

I’m also confused by “GRBL is for 3d printing” — I think GRBL has typically been used for machining, and several 3D printing firmware implementations have been built on top of GRBL.

“Initiator” and “target” have a long historical practice and are clearer.

1 Like

“slave” has been used to mean a bunch of stuff like 2nd hard-drive in a chain. It’s not really a good term to use and is more and more being phased out. In part because it’s not accurate.

A Ruida controller is really nice, if you wanted to buy a machine with a nice controller that’d be one to get.

I suppose Coheasion3D is down to a mere $200 now. Which is down a bit from the $300 days.

I dunno why the hate for the M2.

I offer no hatred of anything. I see the value of both Ruida and M2.

However what may be the primary drawback of M2 is that you need a strong controller on the PC that can do what you are needing. That is, does the software support the ability to adjust a layout or cut in real time? Does it allow to quickly drop in a object and adjust scale and position to match a scrap under the laser?

Where systems like Glow Forge and Ruida are gaining ground I think, is that the system does not require the use of multiple pieces of software and can get the job done. These machines, I think are most attractive to casual users and those who need access to simple predictable tools. That they are not subject to a lost job due to interruption of USB is also desirable.

I think where M2 is most attractive is to engineers who have dedicated development chains and controller PCs on a UPS. This is likely utilized where work is fixed and repetitive rather than dynamic.

Also, the key sticking point, ebing in the system being able to function without a dedicated USB link. In the 3D printer world, there is a strong stigma against USB. Idea that the link is unstable. This is pervasive in both users and developers. So much so that developers for CURA slicer even took steps to remove the ability to connect to USB. I fought that war for a moment as everyone kept pushing CURA but I knew its USB function to be unstable. This has fortunately changed, and CURA has fixed up it’s USB component. However you will see that many still PUSH additional hardware like Octo Print, and directly bash any sort of direct control. This is also a selling point for a small few who now offer network driven control where the Controller is typically virtual, and loss of connection to the PC will not interrupt a process.

However what may be the primary drawback of M2 is that you need a strong controller on the PC that can do what you are needing. That is, does the software support the ability to adjust a layout or cut in real time? Does it allow to quickly drop in a object and adjust scale and position to match a scrap under the laser?

Yes. As the author of MeerK40t that does exactly that. I can say yes it does.

I suppose this could be setup to just stick a rPi in there if you wanted to send all the data there and say you finished the job. Usb is lossless, it resends bad packets. I get why some other boards might be weary of that, because losing the USB connection can mean your job is destroyed but the M2 Nano can be randomly unplugged for a day in the middle of a job and it will still be fine.


I have used just about every controller in my laser/CNC/3D printing hobbies. There are advantages and disadvantages to them all.

I will strongly disagree with your statement about Glowforge gaining ground. The product and business model is poor and the software is even worse. They are trying to maintain their business with a subscription model that is way over priced for what is offered. I will be surprised if they last much longer or sell off the business.

The bottom line is how competent you are with the hardware/software side of things and what you want to accomplish. If you are a hobbyist, you will purchase what you can afford and tinker. If you are going to start a business, you will purchase an industrial machine that has support so when you have problems, they can be rectified from the seller.

I have not really seen any breakout innovations in the controller market in the last 5 years or so except LightBurn software. It is a swiss army knife of design and control software for just about every controller and it just works!

1 Like

Sorry, this is not what I meant. I mean that Glow Forge and products like it are gaining ground. Products that are intended for idiots to use and are all in one solutions. Since it’s launch, I have seen many changes in the home targeted laser market that simply did not exist or were hard to find. I have also seen a strait up Chinese knock off, that even reshot some of their promotional video with their own set and logo. No points for originality but if imitation is flattery, and theft is proof of having something desirable… No idea what system controller it uses, if that too is a clone or something more standard like Ruida. Also in not so long several more devices are coming to market, one is this dual laser thing from wainlux, though it looks nothing like a Glow Forge, products like it, really did not exist until after Glow Forge hit the market. -Really this is like Apple and the iPhone. Because of Apple we have the Android Smart Phones. Before then, we had, flip phones and or PDA/Pager hybreds. Black Berry knock offs.

As for a subscription model. No idea. I know they use a online component that was supposed to help offset limitations of local hardware, and further enhance PC-less operation. But thats about it.
-My opinion is, I don’t mind a product having expanded functions available over the cloud, just so long as I am not bound to that. I am very unlikely to buy a product that requires a pay wall monthly subscription and this specifically includes software as many developers now charge the same prices, only monthly or yearly with mandatory updates… ugg.
-But if a developer can offer me a core, with alacarte augments or DLC. That I am interested in.

I have seen the LightBurn and it looks as though it is one of teh most common. Not sure if that is largely just marketing or if it is the best solution. I have been compiling a list of software paid and free for laser, CNC and hybred machines.

Looking at using a product SKR PRO and TMC5160 drivers. But I fully expected that idea to be challenged as I researched the controllers and existing systems, researched the various firmware. -Instead I am feeling I really need to play with them all to get a more solid feel for their abilities and limitations. I most certainly cannot afford that.

My employers have tasked me with choosing some new hardware for doing PCB milling. I think I will submit a order for a GRBL1.1 based 3018 type desktop CNC, and also a GRBL1.1f based open layout 5.5W laser with 32bit controller. The CNC can be upgraded in just about every possible way. The laser system can take new lasers… Most open lasers come with either a custom 32 bit controller or an Arduino with A4988 drivers… I don’t think I have seen one that uses M2 nano yet. I have seen and bookmarked, one K40 that came with Ruida.
-The goal is to have a system that can allow us to quickly make proto PCB before having them sent to a shop for bulk production. But the resulting hardware will also be used for anything else we can make it to do.

I will keep an eye open for M2 nano as well. I am not sure that I have seen it yet on anything. If I did, I have not realized it.

I am still intent on building a relational table of features and how they relate to the various products, open to all. Though, I am not sure that can be built within the forums as the structure does not seem to support tables.

Likely it will be build of google and shared via link, or PDF. Though i like links as the document is live and can be updated as I discover new things.

It does support tables. It also supports making posts into wikis that others can edit. I did both for Controller boards with integrated TMC drivers which can be a template for this. :relaxed:

Also, if you cut and paste a table from any program that handles pasting as HTML, including browsers but probably also other programs, it will magically turn into a markdown table. The format is something like this:

| Column | Header | Names |
| --- | --- | --- |
| A | 1 | i |
| B | 2 | ii |
| C | 3 | iii |

The header appears to be a required part of the table, which makes me a little sad. The text above renders as the table below:

Column Header Names
A 1 i
B 2 ii
C 3 iii

Hope that helps!


I am not sure what your budget is but there are some nice industrial prototyping PCB machines available that can do a lot right out of the box without having to reinvent the wheel.

Have a budget of 1000.

Open to suggestions, but the two machine plan seem to provide the most flexibility. The K40 types seem nice, and powerful but still cannot burn the copper. So it looks that milling or positive exposure with chemical wash are the best options as quick solution. Plus being able to use both mini mill, and laser is very tempting.

I am also giving consideration to the Mini Mills (so called 3018) that have Mach3, since they use Mach3 as a soft controller much as I run my 3D printers with Simplify3D as a soft controller for Marlin. The reason of consideration is the USB based jog controllers. This matters as GRBL isn’t compatible with everything (controllers and pendants) and often the pendants are tied to a particular controller.

I don’t need a pendant, but the option to use one is very enticing, far more than a generic offline controller. I would rather the pendant plug into the controller, but I have to make sure it’s jack, communications and firmware are all in hand shake. Mach3 accessories seem to have the advantage where they are all just USB given the PC is the controller, also meaning I don’t have to worry about compatibility. However I have sent a email to NewFangled Solutions about this and hope to hear back from them regarding limitations in controllers and pendants, maybe the options are greater than I think.

The upside of the Mach3 plan is that I really need to get my boss and the Autocad/CNC guy to move on from Next Wave where its very limited and out into open waters where we can service and upgrade as needed. But the best controller I know is the SKR PRO with TMC5160. I have the same set up at home on my biggest machine, but it is currently only a 3D printer.

The drawback of the Mach3 plan is that, I may be limited in the controllers and drivers I can use. The ones I want to use may not even be an option. This may also be true of many other configurations especially laser. Where firmware may well be written that serves the function more optimally.

1 Like

Another one to add to the pile. EtherCAT.

Also, while FoxAlien and SainSmart are for the most part selling the same exact consumer grade products, does either one have any advantage in the controller? or is all thats shinny, just cosmetic?

Hoped to get some info about what ELSE can and and cannot control a Mach3 designated controller as well as what is needed to designate a controller as Mach3. Unfortunately, NewFangledSolutions has not responded to the question. I am sure it is written someplace, I just haven’t noticed it yet.

Also looking into what the simplest setup that work EtherCat. Is it all just industrial, or can some of the consumer grade desktop stuff run it too?

I know that Marlin2.x can be used for CNC but specifics seem to be lack luster. I am still fishing.

As stated above. It would be nice to produce some kind of Mach3 functional blend with something that can also utilize TMC5160. I do see that some EtherCAT products use Trinamic in their closed loop controllers. So, thats something.

While digging to see if there is any such thing as a closed loop TMC5160. (Just to avoid the egg on my face that i am saying how much i would like to play with one and find out, it isn’t mythological. ) I noticed the drivers seem to be separated into several specific categories. ie EtherCat, UART, RS232, Step, and CANopen. So there is yet another to toss on the pile.

I will build a chart here, but I have a feeling the kind of chart I am going to need, wont work at all other than as a graphic… I am thinking one of those 5D relational arrays from the puzzle books. The brain is telling me I starting to take on more data than I can process without putting pen to paper.

While building the chart, I have noticed that LightBurn says they do NOT support K40 lasers but some retailers bundle LightBurn with their K40. I am assuming their non GRBL1.1f can still accept instructions even if it cannot use the M4 command?

No lies I did this in open office spreadsheet, it was way faster than trying to type it out as text.
As far as making this into a Wiki. That would be nice. If we can display all the data. This thing is growing fast, and I only started populating it over night.

FIRMWARE (includes any built in software)

GRBL GRBL1.1c GRBL1.1f M2nano Ruida Marlin2.x Duet Smoothie Mach3 EtherCAT CANopen
M4 no yes
CODE: gCode gCode gCode gCode gCode gCode
Controller: Candle Candle Candle MeerK40t Pronterface Pronterface
Mastercam Mastercam Mastercam S3D S3D OctoPrint
Fusion360 Fusion360 Fusion360 Cura Cura bCNC
Mach3 Mach3 Mach3 Smoopi
LaserGRBL LaserGRBL LightBurn Fusion360
Hardware: Arduino Arduino Arduino Licensed? Arduino Custom Custom
ATMega328 ATMega328 ATMega328 STM LPC1769
Many Others
Drivers: A4988 A4988 A4988

SOFTWARE BASED CONTROLLER (sends code to machine firmware)

Candle bCNC UGS LightBurn Mach3 Ruida LaserGRBL MeerK40t K40 Whisperer LinuxCNC Fusion360
Win/Mac/Lunix? Windows Java Script Windows Windows Windows Ubuntu
Mac Debian
Universal NO
Self Only yes
GRBL1.1c yes possible
GRBL1.1f yes yes yes YES
M2 nano no YES
Epilogue no
K40 no
Trocen no
Smoothieware yes yes
GRBL1.1f yes
Shapeko yes
X-carve yes
Ruida yes
Laser: yes
Dithering: yes
topographical: no
greyscale: yes
3D: no
Router: no
Lathe: no
Axis: 3 9
Servo: YES
Stepper: YES

SLICER (regarding ability to generate code, and what flavor)

Candle bCNC UGS LightBurn Mach3 Ruida LaserGRBL MeerK40t K40 Whisperer LinuxCNC Fusion360 FreeCAD Ventric S3D CURA
Win/Mac/Lunix? Windows Windows Windows Windows Ubuntu
Mac Debian
Axis: 9
Servo: YES
Stepper: YES
1 Like

It’s curious I have come across a couple controllers now that run dual firmware.

Also software like Mach3 and LinuxCNC are great about selling what they can do, but they don’t really say what they don’t work on, or even really what they do work on. I might be looking in the wrong places but they seem a bit intentional vague in the specific department. Both seem to be great tools and support a lot of hardware.