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!