An embedded, high-performance G-code parser and CNC milling controller for Arduino that replaces parallel-port motion control.
Grbl is an open-source firmware that acts as a high-performance G-code parser and CNC milling controller, designed to run on Arduino boards with Atmega 328 microcontrollers. It solves the problem of expensive parallel-port-based motion control by providing a low-cost, embedded alternative that delivers precise timing and stable control for CNC machines. It interprets standard G-code commands to control milling operations with features like acceleration management and look-ahead planning.
DIY CNC enthusiasts, makers, and professionals building or retrofitting CNC milling machines who need reliable, low-cost motion control firmware. It's also for developers working on embedded systems for precision manufacturing or robotics.
Developers choose Grbl for its no-compromise performance on affordable hardware, offering jitter-free control up to 30kHz and full G-code compliance without the cost of proprietary solutions. Its optimized C code and active community support make it a robust, open-source alternative for CNC motion control.
An open source, embedded, high performance g-code-parser and CNC milling controller written in optimized C that will run on a straight Arduino
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Delivers up to 30kHz of stable, jitter-free control pulses through highly optimized C code, leveraging AVR-chip features for precise timing on low-cost Arduino hardware.
Accepts and executes standard G-code commands including arcs, circles, and helical motion, with compatibility tested against output from various CAM tools.
Implements look-ahead acceleration management for up to 18 motions, enabling smooth velocity transitions and jerk-free cornering in CNC operations.
Offers extensive configurability with soft limits, probing, dynamic tool offsets, and compile-time features, allowing customization for specific CNC setups.
Does not support macro functions, variables, or most canned cycles, relying on external GUIs for translation, which may limit complex machining workflows.
Designed specifically for Atmega 328 microcontrollers on Arduino boards, restricting compatibility with newer or more powerful embedded systems.
Version upgrades like v0.9 require hardware rewiring and baudrate changes, as noted in the README, posing challenges for non-technical users.