Moving from GRBL to Smoothie
If you are a GRBL user moving to a Smoothie system, you might have an existing configuration you want to port over.
This is not an alternative to reading the documentation
Please note it is imperative you read the whole documentation before using Smoothie. Skipping this step will almost certainly result in damage and danger.
Again, read the whole documentation, do not only rely on this guide.
Assuming you have read the documentation ( again : do it, do not skip the documentation ), this page is aimed at helping you understand what GRBL options correspond to what Smoothie options.
This guide follows the general structure of the original GRBL documentation
This assumes you start from the default configuration file.
Commands
Smoothie and GRBL use different commands. Here is a table showing corresponding ways of talking to the boards on both systems :
GRBL Command | Smoothie alternative | Action |
---|---|---|
$ | Help | Display help |
$$ | Cat /sd/config | Display current configuration |
$# | M114 M114.1 M114.2 | Display current positions |
$I | Version | Display build info |
$X | M999 | Exit alarm mode |
$H | $H | Run homing cycle |
$2 – Step port invert mask:binary
In GRBL, you modify $2 to invert a step pin, while in Smoothie, you add a ! character to the pin for that axis, for example :
beta_step_pin 2.1 # Pin for beta stepper step signal
Becomes :
beta_step_pin 2.1! # Pin for beta stepper step signal
$3 – Direction port invert mask:binary
In GRBL, you modify $3 to invert a direction pin, while in Smoothie, you add a ! character to the pin for that axis, for example :
beta_dir_pin 0.11 # Pin for beta stepper dir signal
Becomes :
beta_dir_pin 0.11! # Pin for beta stepper dir signal
$4 – Enable port invert mask:binary
In GRBL, you modify $4 to invert a direction pin, while in Smoothie, you add a ! character to the pin for that axis, for example :
beta_en_pin 0.10 # Pin for beta stepper en signal
Becomes :
beta_en_pin 0.10! # Pin for beta stepper en signal
$5 – Limit pins invert, bool
In GRBL, you modify $5 to invert an endstop port, while in Smoothie, you add a ! character to the pin for that endstop, for example :
alpha_min_endstop 1.24^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
Becomes :
alpha_min_endstop 1.24!^ # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
$6 – Probe pin invert, bool
In GRBL, you modify $6 to invert the probing port, while in Smoothie, you add a ! character to the pin for the probe, for example :
zprobe.probe_pin 1.28^ # Pin probe is attached to
Becomes :
zprobe.probe_pin 1.28!^ # Pin probe is attached to
$11 - Junction deviation, mm
In GRBL, you set the junction deviation parameter by modifying the $11 option, while in Smoothie you edit :
junction_deviation 0.05 # See http://smoothieware.org/motion-control#junction-deviation
$12 – Arc tolerance, mm
In GRBL, you set the arc tolerance parameter by modifying the $12 option, while in Smoothie you edit :
mm_max_arc_error 0.01 # The maximum error for line segments that divide arcs 0 to disable # note it is invalid for both the above be 0 # if both are used, will use largest segment length based on radius
$21 - Hard limits, bool
In GRBL, you enable hard limit switches by modifying the $21 option, while in Smoothie you uncomment and set to true :
# Optional enable limit switches, actions will stop if any enabled limit switch is triggered (all are set for delta) alpha_limit_enable true # Set to true to enable X min and max limit switches beta_limit_enable true # Set to true to enable Y min and max limit switches gamma_limit_enable true # Set to true to enable Z min and max limit switches
$22 - Homing cycle, bool
In GRBL, you enable homing by modifying the $22 option, while in Smoothie enable the endstops module :
endstops_enable true # The endstop module is enabled by default and can be disabled here
$23 - Homing dir invert mask, int:binary
In GRBL, you set the homing direction for each axis by modifying the $23 option, while in Smoothie instead change :
alpha_homing_direction home_to_min # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
To :
alpha_homing_direction home_to_max # Or set to home_to_max and set alpha_max and uncomment the alpha_max_endstop
$24 - Homing feed, mm/min
In GRBL, you set the slow homing speed by modifying the $24 option, while in Smoothie instead modify :
alpha_slow_homing_rate_mm_s 25 # Alpha/X slow homing feedrate in mm/second
$25 - Homing seek, mm/min
In GRBL, you set the fast homing speed by modifying the $25 option, while in Smoothie instead modify :
alpha_fast_homing_rate_mm_s 50 # Alpha/X fast homing feedrate in mm/second
$26 - Homing debounce, ms
In GRBL, you set the homing debounce by modifying the $26 option, while in Smoothie instead modify :
endstop_debounce_ms 1 # Uncomment if you get noise on your endstops, default is 1 millisecond debounce
$27 - Homing pull-off, mm
In GRBL, you set the homing retract by modifying the $27 option, while in Smoothie instead modify :
alpha_homing_retract_mm 5 # Distance to retract from the endstop after it is hit for alpha/X beta_homing_retract_mm 5 # Distance to retract from the endstop after it is hit for beta/Y gamma_homing_retract_mm 1 # Distance to retract from the endstop after it is hit for gamma/Z
$100, $101 and $102 – [[X,Y,Z|]] steps/mm
In GRBL, you set the steps per millimeter for the primary axes by modifying the $100, $101 and $102 options, while in Smoothie instead modify :
# Arm solution configuration : Cartesian robot. Translates mm positions into stepper positions # See http://smoothieware.org/stepper-motors alpha_steps_per_mm 80 # Steps per mm for alpha ( X ) stepper beta_steps_per_mm 80 # Steps per mm for beta ( Y ) stepper gamma_steps_per_mm 1600 # Steps per mm for gamma ( Z ) stepper
$110, $111 and $112 – [[X,Y,Z|]] Max rate, mm/min
In GRBL, you set the max rates for the primary axes by modifying the $110, $111 and $112 options.
Note the unit is millimeters per minute
In Smoothie, we can specify maximum values for the axes and for the actuators, which allows to more finely respecting the machine's limits.
We change the maximum feed rate for the main axes by changing :
# Cartesian axis speed limits x_axis_max_speed 30000 # Maximum speed in mm/min y_axis_max_speed 30000 # Maximum speed in mm/min z_axis_max_speed 300 # Maximum speed in mm/min
Note the unit is millimeters per minute.
And the maximum feed rates for the main actuators is changed with :
alpha_max_rate 30000.0 # Maximum rate in mm/min beta_max_rate 30000.0 # Maxmimum rate in mm/min gamma_max_rate 300.0 # Maximum rate in mm/min
Note the unit is millimeters per minute.
We can also set the maximum feedrate for each extruder by modifying each extruder's module configuration :
extruder.hotend.max_speed 50 # Maximum speed in mm/s
Note the unit is millimeters per second
$120, $121, $122 – [[X,Y,Z|]] Acceleration, mm/sec^2
In GRBL, you set the acceleration for the primary axes by modifying the $120, $121 and $122 options.
While in Smoothie you modify :
acceleration 3000
To set separate values for each axis, see Motion control.
$130, $131, $132 – [[X,Y,Z|]] Max travel, mm
In GRBL, you set the max travel for the primary axes by modifying the $130, $131 and $132 options.
In Smoothie, there are two separate sets of matching options.
The axis_Max values are useful to set the length of an axis in case it's homing direction is set to homing to max :
alpha_max 200 # This gets loaded as the current position after homing when home_to_max is set beta_max 200 # This gets loaded as the current position after homing when home_to_max is set gamma_max 200 # This gets loaded as the current position after homing when home_to_max is set
While the max_travel options are useful to make sure the axis doesn't move forever if there is a problem with homing missing the endstop for some reason :
alpha_max_travel 500 # Max travel in mm for alpha/X axis when homing beta_max_travel 500 # Max travel in mm for beta/Y axis when homing gamma_max_travel 500 # Max travel in mm for gamma/Z axis when homing