Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 50 million developers.Sign up
This release fixes minor bugs and includes a new optional dual motor support for self-squaring gantry homing.
[OPTIONAL] Dual motor support for self-squaring gantry homing.
NOTE: Default build remains the same! Dual motor support can only be enabled in config.h.
New dual motor support feature for gantry CNC machines. An axis motor is efficiently mirrored to a dedicated set of step and direction pins (D12/D13 or A3/A4) with no detectable loss of performance. Primarily used to independently home both sides of a dual-motor gantry with a pair of limit switches (second shared with Z-axis limit pin). When the limit switches are setup correctly, Grbl will self-square the gantry (and stay square if $1=255 is programmed). Beware use at your own risk! Grbl is not responsible for any damage to any machines.
Dual axis motors is only supported on the X-axis or Y-axis. And deletes the spindle direction(D13) and optional coolant mist (A4) features to make room for the dual motor step and direction pins.
Dual axis homing will automatically abort homing if one limit switch triggers and travels more than 5% (default) of the non-dual axis max travel setting. For example, if the X-axis has dual motors and one X-axis triggers during homing, Grbl will abort 5% of the Y-axis max travel and the other X-axis limit fails to trigger. This will help keep any misconfigurations or failed limit switches from damaging the machine, but not completely eliminate this risk. Please take all precautions and test thouroughly before using this.
Dual axis motors supports two configurations:
Support for Arduino CNC shield clones. For these, step/dir on pins D12/D13, and spindle enable is moved to A3 (old coolant enable), while coolant enable is moved to A4 (SDA pin). Variable spindle/laser mode option is NOT supported for this shield.
Support for Protoneer CNC Shield v3.51. Step/dir on pins A3/A4, and coolant enable is moved to D13 (old spindle direction pin). Variable spindle/laser mode option IS supported for this shield.
[new] Altered the way default settings are stored and restored. Saved about 300 bytes(!) of flashed size. Should free up enough for certain configurations of CoreXY machines.
[fix] Added a build info feedback mechanism for enabling the safety door input pin.
[fix] Correct control pin state checking within pin change interrupt. Improper if-else statements could lead to missed signal.
[fix] If statement bug fix related to jog motion modal group error checking.
[fix] Spindle/coolant rare bug fixes.
[fix] When the optional M7 mist coolant IO was enabled, coolant overrides was not disabling correctly.
[fix] Coolant override states was not restored correctly after a parking motion in certain situations. It would restore programmed state, rather than current overridden state.
[fix] Now allow coolant overrides to operate during jogging motion.
[fix] Invert control pin mask typo.
[fix] Fix apparent error in restore masking that causes the call to coolant_set_state to not re-enable the mist (M7) output if it was previously enabled.
[update] Added Bob's CNC E3 and E4 CNC machine defaults.
[update] Updated instructions in fit_nonlinear_spindle.py. Repl.it has changed since the last time fit_nonlinear_spindle.py was tested.
This release includes a critical bug fix (rare) and some other minor bug fixes, updates and new non-critical features.
[fix] A very rare bug would cause Grbl to crash in a very special and very rare set of circumstances. It would occur only when actively lowering feed/rapid overrides and the programmed move and settings aligned perfectly. Re-factored the problem code to eliminate the potential issue.
[new] A nonlinear spindle speed/PWM output option via a piecewise linear fit model. Enabled through config.h and solved by a Python script in /doc/script.
[new] fit_nonlinear_spindle.py. A solver script that can be run on http://repl.it for free. No Python install necessary. All instructions are available in the script file comments.
[new] stream.py has been updated to include status reports feedback at 1 second interval.
[new] The stream.py streaming script now has a check-mode option, where it will place Grbl in $C check mode automatically and then stream the g-code program. It's a very fast way to check if the g-code program has any errors.
[fix] stream.py bug fix with verbose mode disabled.
[fix] When in M3 constant laser power mode, a change from G0 to G1 would not set the laser on, if G1 was passed with a coincident target. Motion controller now checks for a coincident target situation and will force a spindle sync when detected.
[fix] Restrict M3 forced updates when there is a motion block with a coincident target. Force syncing of the spindle state can lead to some pauses during a job that has coincident targets. That’s not particularly desirable. This ensures M4 dynamic mode is not effected by this force-sync.
[fix] The build info options of “two switches on an axis” and “homing init lock” shared the same letter ‘L’. The former is now ’T’.
[fix] When M7 and M8 are both enabled, $G report would show
M78, rather than
M7 M8. This only effects systems that enable M7 mist coolant in config.h. Not the default build.
[fix] When trying to enable laser mode with $32=1 and VARIABLE_SPINDLE is disabled, the error code shown was improperly stating it was a homing failure. Added an new error code specifically for the laser mode being disabled without VARIABLE_SPINDLE.
[fix] The debug variable was not initialized if the debug option was enabled in config.h
[fix] Updated error_codes CSV file to the same format as the others.
[update] Added PocketNC FR4 defaults. Needs some additional work though to be compatible.
This release contains some minor tweaks to the streaming interface, new features, and bug fixes:
$I build info output now shows two additional values separated by commas
[OPT:VL,15,128]. The first value is the total number of usable planner buffer blocks, and the other value is the total number of serial RX buffer bytes available. This information is primarily for GUI handshaking. NOTE: There is always one unusable planner block (not part of the shown value) that is used for internal system purposes.
$I build info includes 5 more character codes to identify various build options. See documentation for details.
[new] Parking motion override control via a new
M56 P0 and
M56 P1command, which disables and enables the parking motion, respectively. A default override may be configured in config.h. This new feature requires both
ENABLE_PARKING_OVERRIDE_CONTROL enabled in config.h. Primarily for OEMs.
M56 now appears in the
$G g-code parser state print out when parking override is enabled in g-code , when the
ENABLE_PARKING_OVERRIDE_CONTROL option is enabled.
[new] Spindle enable pin configuration option to alter its behavior based on how certain lasers work. By default, Grbl treats the enable pin separately and leaves it on when S is 0. The new option turns the
enable pin on and off with S>0 and S=0. This only is in effect when a user enables the
[fix] M4 was not allowed to work when USE_SPINDLE_DIR_AS_ENABLE_PIN is enabled. This was problematic for laser folks using the M4 command.
[fix] Fixed an issue when in inverse time mode and G0’s would require a F word.
[fix] Added a note in the defaults.h file that MAX_TRAVEL values must be positive. Some users were setting this negative and it was causing issues.
[fix] EXTREMELY RARE bug. When AMASS is intentionally disabled and sent a motion command that is one step in length, Grbl would not actuate the step due to numerical round-off. Applied a fix to prevent the round-off issue.
- Fixes an issue where tool number values were not tracked and reported in the g-code parser state.
- Added a new error code (38) to indicate an invalid tool number sent to the parser.
- Contains a critical bug fix for alarm handling. A recent change to internal alarm codes were not handled correctly and would occasionally show the wrong code and enter an infinite loop.
- Re-installed optional software debouncing for hard limit switches.
- Documentation updates.
After a lengthy beta-testing cycle, v1.1 is ready for master release! All new realtime override command set to dial in a job, new officially supported laser mode with a nice dynamic laser power mode to produce consistent cuts, all new GUI interface to include a ton more real-time feedback, and a lot more! Please let us know if you run into any problems! Enjoy!