My big issue with GRBL is simply that we’ve reached 100% of what it can do, and what it can ever do. GRBL is tightly tied to the ATmega 328P microcontroller, and GRBL uses every single byte of EEPROM, every single pin (multiple times over), and more or less 100% of the RAM. There’s no way to expand it at all, even slightly, without removing features.
So: no 4th axis. No feedback from closed-loop encoders. No tool changing. No useful error reporting beyond what we have today. No persistent tool length probing. And, in general, no way to add custom logic of any sort in the controller.
It’s really impressive what GRBL can accomplish with the tiny little controller that it uses (roughly similar to a Commodore 64), but that doesn’t change the fact that you can buy 100x the microcontroller today for basically the same cost. Optimizing things to run on a tiny, underpowered CPU doesn’t save any money for anyone.
There are a handful of open-source projects that aim to build something a bit bigger than GRBL but still similar in spirit. Look at CNCjs for a reasonable list of them. Unfortunately, from what I can see, none of them are actually useful yet, because you can’t buy boards to run them on.
Unfortunately, pretty much every reasonable microcontroller larger than the 328P has moved to 3.3V logic instead of 5V logic, so you end up needing glue chips when talking to stepper drivers, limit switches, and so forth. This means that you can’t really just use an off-the-shelf microcontroller board to drive a CNC with anything bigger than GRBL. You need to design a board explicitly for driving steppers, etc. That’s not a huge deal–almost no one uses GRBL with an Arduino Uno board, although you could–but it means that you’ll either need to be able to build your own PCBs or buy someone else’s. And from what I can see, no one is actually selling anything useful. There are a bunch of options with webpages showing their designs, but no actual products that anyone can buy.
I’m kind of grumpy about software controller options for GRBL, too. I want to like CNCjs, but its UI has a few horrific issues that have cost me at least $100 in carbide. For example, Z+, Z-, and Z0 are right next to each other. I’ve had times when I’ve been fine-tuning my Z height before zeroing it, adjusting 0.1mm at a time, and then missed Z- and hit Z0, which has attempted to move the Z axis down 20mm. Snap. X and Y aren’t much better. It’s fixable, but it annoys me.
Fundamentally, I’ve reached the point where I don’t really think that running a CNC from a microcontroller actually makes a lot of sense for people who are willing to build (and modify) their own CNC. It’s great if you’re building a packaged product like a Shapeoko, but as soon as you start go expand at all, the microcontroller options just fall apart, while the computer options just look better and better.
Realistically speaking, you can’t use any modern CNC without a computer and a monitor attached. Either your CNC controller is a computer with a monitor, or you have a CNC controller plus a computer sitting right there. Saying “no computer required” doesn’t actually save anyone any money. I’m increasingly thinking that something like LinuxCNC running on a Raspberry Pi 4 with an Ethernet breakout board (like a Mesa 7i76e) is flat out a better option for most people. The biggest problem is that setting it up is non-trivial. However, it doesn’t really need to be. There’s no reason someone couldn’t make a Raspberry Pi SD card image that provides a pre-configured 3 or 4 axis CNC with UI. Just plug it in, wire up the Ethernet, connect stepper drivers, limit switches, and the spindle to the Mesa board, and then plug in an HDMI monitor and USB keyboard. If you already have external stepper drivers and a 24V power supply, then this really only costs $250 or so, which isn’t a ton more than a CNC XPro. It’s dramatically more flexible, expandable, etc. But it’s also more of a pain to maintain over time. There will be software upgrades, bug fixes, backups, etc. But, there will also be bad bearings, broken wires, shorts caused by stray chunks of aluminum, broken collets–CNCs aren’t really maintenance-free devices. Needing a bit of software TLC shouldn’t be a deal breaker.