One of the really appreciated features of the Smoothie firmware is that it doesn't require editing source code, compiling, or flashing, in order to edit the configuration.

Instead, Smoothie is configured simply by editing a configuration file on its sd-card.

Simply edit the configuration file, unmount/safely eject the sdcard from the host ( in your operating system's menus, not physically ) and reset the board ( press the reset button, unplug the USB cable, or issue the reset command ).

You can find a default config file for 3D printing here in the github repository or by clicking on the big blue button just bellow :

Click here to get the latest configuration file example

The file consists of key and value pairs. Most values are commented to indicate what they mean, but a lot of them are also explained in this documentation.

Example :

default_feed_rate                 4000                 # Default rate ( mm/minute ) for G1/G2/G3 moves

Where default_feed_rate is the configuration option, 4000 is the value ( which you can change ), and everything after # is a comment ( that Smoothie will ignore ).

You can find a complete list of possible configuration options here.


The Smoothie firmware is free and Open-Source software developed by awesome volunteers with the help of the community. If you find this software useful, want to say thanks and encourage development, please consider a donation :

It really helps.

2017/01/25 14:19 · arthur


If you are configuring a delta 3D printer, you will save a lot of time and effort by starting with the delta example file instead of the normal example file.

You can find the delta example file here.


If a line begins with a #, it means it is commented and Smoothie will ignore it. Anything after a # is also ignored ( like the explanations at the end of the lines ).

Some values are commented by default, you need to uncomment them by removing the # at the beginning of the line if you want them to take effect.

For example this line :

#default_feed_rate                 4000                 # Default rate ( mm/minute ) for G1/G2/G3 moves

Will completely be ignored by Smoothie. To make Smoothie take it into account again, remove the # character at the beginning.

Line length

Make sure all your lines are shorter than 132 characters. Lines longer than this can cause issues.

This should not be a problem if you do not add further comments, just be careful if you do.

Smoothie will not work without a valid configuration file on the SD card.

The filename must be config or config.txt


It is not recommended you allow the sdcard to auto mount, and it is highly recommended that the sdcard be unmounted at all times except when files need to be copied or the config file needs to be edited.

“Unmounting” does not refer to a phyisical action, do not confuse it with “removing” the card from the board. “unmounting” just means “telling your computer to stop accessing the card”, which is usually done by clicking menus with your mouse ( on windows this is usually called “safely eject” ).

Concurrent access to the sdcard via the host and the smoothie is not supported. The sdcard must be safely removed or unmounted then smoothie reset after copying or editing files from the host mount point.

This is especially true on Macs which randomly like to read and write the sdcard. If this happens during a print it will cause pauses and other printing problems.

This is optional

Smoothieboard comes with a configuration file already on the SD card. You need to get only a new configuration file if you are making your own board, or if you are upgrading your firmware.


If you are upgrading from a previous version of master or edge check for upgrade notes in the github root directory.

You can find all configuration options on this page : All configuration options

And you can also find the configuration options for each module, in that module's page.

You don't need to put all of your configuration in a single file.

You can have “includes” in your main “config” file.

Here is how it works :

First, make a file with a new name, for example, “myconfig”, containing configuration options :

acceleration 100

Then in your main ( file named “config” ) config file, you can do :

include myconfig

And now, when configuration is read, Smoothie will read both files, and take their options into account as if they were a single file.

If you have a long and complex configuration, this can be helpful to orginize better.

If you make the config file by yourself please save it using ANSI encoding.

Using Unicode can cause problems.

To avoid problems, use the default file on github ( see link above ) as your starting point.


Do not use Notepad++ to edit the configuration file, it thinks it's smarter than everybody and modifies the file in invisible ways that can make it unreadable or confusing to Smoothie.

Looking for a good simple text editor that runs Windows and will edit Smoothie config files no problem ? Try

There are console commands that allow you to edit the configuration file over serial, without having to open the file in a text editor.

These commands are :

config-get sd acceleration

Will return the current acceleration setting from the SD card

config-set sd acceleration 1000

Will set the current acceleration setting to 1000.

You need to reset the board after changing a value for it to be taken into account.

You can find more information at Console Commands.

Many settings in smoothie can be set immediately with M commands, these settings are lost on reset, however they can be saved to a non-volatile storage (similar to EEPROM on other systems). The values in the configuration file will be overridden for those configuration options.

There is a set of M-codes (M50x) documented below that allow you to save all the current settings that have Mxxx commands to set them. This is particularly convenient for parameters that require tuning, as you can use a command to modify them without having to open the file and reset the board.

As these settings can be temporarily overridden with Mxxx commands there is a way to save these settings. Once saved they are reloaded on reset or boot overriding the settings in the config file. If you then edit the config file, make sure the setting you are editing is not being overridden by the override file (M503 will tell you if there is an active override file). This can sometimes explain why editing the config file appears to have no effect.

~ M-code ~ Description ~ Example
M500 Save settings to an override file
M501 load config-override file optionally specifying the extension M501 - loads config+override, M501 test1 - loads config+override.test1
M502 Delete the override file, reverting to config settings at next reset
M503 Display overridden settings if any
M504 Save the settings to an override file with specified extension M504 blue-pla


Do not issue M500 or M504 when printing, or the machine could crash or the SD card become corrupted.
;Steps per unit:
M92 X80.00000 Y80.00000 Z1259.84253
;Acceleration mm/sec^2:
M204 S2000.00000
;X- Junction Deviation, S - Minimum Planner speed:
M205 X0.05000 S0.00000
;Max feedrates in mm/sec, XYZ cartesian, ABC actuator:
M203 X333.00000 Y333.00000 Z3.33330 A333.00000 B333.00000 C3.33330
;E Steps per mm:
M92 E367.0000
;Extruder current:
M907 E1.50000
;PID settings:
M301 S1 P35.5000 I2.5830 D122.0000
;Home offset (mm):
M206 X-15.00 Y15.00 Z5.90

Additionally a delta will save... 
M665/666 is used when you want to make an adjustment during calibration and not have to reboot your Smoothie.
;Trim (mm). Note M666 expect all values to be specified as negative and with a decimal point in mm
;Example M666 X-6.14 Y-0.97 Z-6.05

;M665 allows you to set the diagonal rod length L, the delta_radius R, and Max Z all in mm. The L and R values are optional if you don't want/need to override the config settings. 
;Example: M665 L220.0 R113.8 Z244.0

Do not

Edit the config-override file yourself, only use the commands to edit the values.

A “pin” is an input or output on the Smoothieboard.

In a lot of cases ( step/direction for external stepper motors, button inputs ), you can use any pin for any use.

If other cases, a given pin is tied to a given peripheral on the board.

See Pinout to learn about which pins are where.

You can have a pin's output inverted by adding a “!” after this pin's number in the config line, example :

my_pin_name                      19!

There are other modifiers for pins :

All options

! invert pin
o set pin to open drain
^ set pin to pull up
v set pin to pull down
- to set no pullup
@ to set repeater mode
2017/01/25 14:19 · arthur