This is an old revision of the document!


If you are a Marlin user moving to a Smoothie system, you might have an existing configuration you want to port over.

Please note it is imperative you read the whole documentation before using Smoothie. Skipping this step will almost certainly result in damage and danger.

Assuming you have read the documentation ( again : do it, do not skip the documentation ), this page is aimed at helping you understand what Marlin options correspond to what Smoothie options.

This guide follows the general structure of the original Marlin documentation

This assumes you start from the default configuration file.

Again, read the whole documentation, do not only rely on this guide.

Baud rate

When talking to your Smoothieboard over USB, the baud rate isn't configurable and it will go as fast as USB allows, any baud rate set in your host software is ignored too.

When talking to your Smoothieboard over the UART port, you have to set the baud rate. In Marlin that is done with : 

#define BAUDRATE 115200

while in Smoothie you change :

uart0.baud_rate                              115200           # Baud rate for the default hardware ( UART ) serial port

Extruders

In Marlin, you define the number of extruders by changing this value :

#define EXTRUDERS 1

in Smoothie, things are very much more modular, and you configure extruders by creating new extruder modules. If you have one extruder, you create one extruder module, if you have three, you create three extruder modules.

For details see Extruder and Multiple extruders.

Single nozzle

If you have multiple extruders but a single nozzle, in Marlin you set the following value : 

#define SINGLENOZZLE

But in Smoothie, you do this by creating multiple Extruder modules but only one Temperaturecontrol module.

Hotend offsets

If you have multiple nozzles, you need to tell your firmware where they are located relative to each other, in Marlin you do : 

//#define HOTEND_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis
//#define HOTEND_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis

Giving a list of offsets in X, then a list of offsets in Y, in order of the extruders.

While in Smoothie you configure the offset of each Extruder module independently, for example : 

# Extruder offset
extruder.hotend.x_offset                        0            # X offset from origin in mm
extruder.hotend.y_offset                        0            # Y offset from origin in mm
extruder.hotend.z_offset                        0            # Z offset from origin in mm

And for the second extruder : 

# Extruder offset
extruder.hotend2.x_offset                       0            # x offset from origin in mm
extruder.hotend2.y_offset                       25.0         # y offset from origin in mm
extruder.hotend2.z_offset                       0            # z offset from origin in mm

Power supply

In Marlin, you tell Marlin you want to control a power supply by doing : 

#define POWER_SUPPLY 1

While in Smoothie you use the Switch module to associate a Gcode with a specific control pin, giving you much more freedom as to how you configure and wire things.

See the Switch module for more details and examples, but here is one possible power supply control configuration :
 

switch.psu.enable                            true             # turn atx on/off
switch.psu.input_on_command                  M80              #
switch.psu.input_off_command                 M81              #
switch.psu.output_pin                        0.25o!           # open drain, inverted
switch.psu.output_type                       digital          # on/off only
switch.psu.fail_safe_set_to                  1                # so the ATX turns off on a system crash
#switch.psu.ignore_on_halt                   true             # so the ATX does not turn off on a HALT condition (like limit trigger)
                                                              # However leave commented or set to false if you want the ATX
                                                              # to turn off for an over heat fault condition

Thermal Settings

In Marlin, you associate the number of a thermistor type with a given thermistor input : 

#define TEMP_SENSOR_0 5
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_BED 3

In Smoothie, you go to a specific Temperaturecontrol module, and edit it's sensor type : 

For example : 

temperature_control.hotend.thermistor        EPCOS100K

See the Temperaturecontrol page for a list of possible values, and for other ways to specify the sensor's properties.

There is no direct match between Marlin's “numbers” and Smoothie's “model numbers”, you need to know the part number of your thermistor in order to configure it.

PID

In Marlin, you set the PID parameters for the hotend this way : 

  #define  DEFAULT_Kp 22.2
  #define  DEFAULT_Ki 1.08
  #define  DEFAULT_Kd 114

While in Smoothie, you instead configure that value for each Temperaturecontrol module, in that module, for example : 

# PID configuration 
# See http://smoothieware.org/temperaturecontrol#pid
temperature_control.hotend.p_factor         13.7             # P ( proportional ) factor
temperature_control.hotend.i_factor         0.097            # I ( integral ) factor
temperature_control.hotend.d_factor         24               # D ( derivative ) factor

Kinematics

In Marlin, you change kinematics by uncommenting one of the following lines : 

//#define COREXY
//#define COREXZ
//#define COREYZ
//#define COREYX
//#define COREZX
//#define COREZY
//#define DELTA
//#define SCARA

While in Smoothie, you change the value of the Arm_solution configuration option.

For example :

arm_solution linear_delta # Selects the linear delta arm solution

You then have to specify the parameters for that arm solution, for example for delta machines you do :

arm_length                                   250.0            # This is the length of an arm from hinge to hinge
arm_radius                                   124.0            # This is the horizontal distance from hinge to hinge when the effector is centered

See the Delta page for more details on setting up a delta machine.

Endstops

In Marlin, you choose which endstops are activated and which are not by changing these values : 

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG
//#define USE_XMAX_PLUG
//#define USE_YMAX_PLUG
//#define USE_ZMAX_PLUG

While in Smoothie you do so by changing the pin for a given endstop from it's normal value ( for example 1.25 ) to Nc, for “un-connected”, for example :

alpha_min_endstop                            nc               # Pin to read min endstop, add a ! to invert if endstop is NO connected to ground
alpha_max_endstop 1.25^ # Pin to read max endstop, uncomment this and comment the above if using max endstops

Has the endstop for the alpha tower ( X axis ) minimum disabled, but the one for the alpha tower ( X axis ) maximum enabled ( as is common for delta machines ).

Endstop pullups

In Marlin you set the pull-up of an endstop by changing :

#define ENDSTOPPULLUPS

#if DISABLED(ENDSTOPPULLUPS)
  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined
  //#define ENDSTOPPULLUP_XMAX
  //#define ENDSTOPPULLUP_YMAX
  //#define ENDSTOPPULLUP_ZMAX
  //#define ENDSTOPPULLUP_XMIN
  //#define ENDSTOPPULLUP_YMIN
  //#define ENDSTOPPULLUP_ZMIN
  //#define ENDSTOPPULLUP_ZMIN_PROBE
#endif

While in Smoothie you do it by changing the pin for a given endstop from for example 1.25 to 1.25^.

Endstop inverting

In Marlin you invert an endstop by changing :

// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.

While in Smoothie you do it by changing the pin for a given endstop from for example 1.25 to 1.25!.

Homing speed

In Marlin, you change the homing speed by modifying