Extruder

Extruders are used to push plastic filament through a hotend, to achieve the awesome feat of 3D Printing.

This module controls the motor that pushes the filament, it does not take care of the hotend itself, which is the job of TemperatureControl.

Steps Per Millimeter Configuration:

The most important parameter to get your extruder module to work properly is the steps per millimeter setting:

extruder.hotend.steps_per_mm 140
[extruder]
hotend.steps_per_mm = 140

You can create as many Extruder modules as you want (although you may run out of memory and Smoothie will no longer boot), as long as you give them different module names.

You can name those modules whatever you want (as long as you stick to only alphanumerical characters).

NOTE that the default build of Smoothie only supports 2 extruders (5 axis), if you need 3 extruders you need to compile with make AXIS=6.

Configuration

Steps per millimeter

We need to find the number of steps the stepper motor drivers have to generate in order to move the filament 1 millimeter.

This value depends on your stepper motor, the microstepping on your stepper motor drivers, the gear reduction ratio on the extruder assembly if any, and the diameter of your hobbed pulley/bolt.

A very good guide on how to find this value can be found here: Triffid Hunter’s Calibration Guide.

extruder.hotend.steps_per_mm                    140
[extruder]
hotend.steps_per_mm = 140

Filament diameter

This is an optional parameter for those who want to use volumetric extrusion, but are too lazy to do their own math. ;)

Simply enter the machine’s filament diameter here and set your slicer’s filament diameter to 1.128379mm (2*sqrt(1/pi)) and enjoy portable gcode!

Further explanation can be found in Triffid Hunter’s guide, linked above.

In the current edge builds, when a filament diameter is specified either from {::nomarkdown}M200{:/nomarkdown} Dxxx or the config setting Smoothie expects all E values specified to be in mm³, so when you click extrude 10mm in Pronterface Smoothie will actually extrude 10mm³. And E values in a gcode file will all be expected to be mm³.

Note that when firmware retraction is specified via {::nomarkdown}M207{:/nomarkdown} the retraction length is still in mm not mm³, but will be converted to mm³ based on the filament diameter at the time of extrusion.

In the current master builds, only print moves have E specified in mm³, retract or extrude only moves are still in mm. The change in edge is to be more compliant with other firmwares and user expectations.
extruder.hotend.filament_diameter               3.0
[extruder]
hotend.filament_diameter = 3.0

The filament diameter can also be saved at runtime with this M code:

M200 Set E units for volumetric extrusion - D set to 0 to disable volumetric extrusion M200 D3.0

and saved with M500.

Firmware Retract

G10/G11 will cause the filament to retract and unretract, this option can be set in most current slicers.

Note this is optional, you are not obligated to set this up, but it is a nice feature if you want to use it.

The amounts of extrusion and speed can be set with the following M codes:

M207 set retract length S[positive|mm] F[feedrate|mm/min] Z[additional|zlift/hop] Q[zlift|feedrate mm/min] M207 S4 F30 Z1
M208 set retract recover length S[positive|mm surplus to the M207 S*] F[feedrate|mm/min] M208 S0 F8

or can be set in config with the following settings:

extruder.hotend.retract_length                  3       # retract length in mm
extruder.hotend.retract_feedrate                45      # retract feedrate in mm/sec
extruder.hotend.retract_recover_length          0       # additional length for recover
extruder.hotend.retract_recover_feedrate        8       # recover feedrate in mm/sec (should be less than retract feedrate)
extruder.hotend.retract_zlift_length            0       # zlift on retract in mm, 0 disables
extruder.hotend.retract_zlift_feedrate          6000    # zlift feedrate in mm/min (Note mm/min NOT mm/sec)
[extruder]
hotend.retract_length = 3                       # retract length in mm
hotend.retract_feedrate = 45                    # retract feedrate in mm/sec
hotend.retract_recover_length = 0               # additional length for recover
hotend.retract_recover_feedrate = 8             # recover feedrate in mm/sec (should be less than retract feedrate)
hotend.retract_zlift_length = 0                 # zlift on retract in mm, 0 disables
hotend.retract_zlift_feedrate = 6000            # zlift feedrate in mm/min (Note mm/min NOT mm/sec)

These can be set differently for each extruder defined.

Please note the inconsistency here with the config specifying mm/sec and the M206/207 specifying mm/min. Sorry about that.

Pins

As all stepper motors, the extruder stepper motor needs 3 pins to be controlled: step, direction, and enable (See Pin Reference and Pinout):

1st Extruder (delta, or M4)

extruder.hotend.step_pin                        2.3
extruder.hotend.dir_pin                         0.22
extruder.hotend.en_pin                          0.21
These pins are for the delta (4th) driver on a Smoothieboard V1. This is what is most commonly used, but in another board or setup, you may have to use other pins.
[extruder]
hotend.step_pin = PD3
hotend.dir_pin = PD4
hotend.en_pin = PD5
These pins are for the delta (4th) driver on a Smoothieboard V2 Prime. Pin assignments vary by board variant.

2nd Extruder (epsilon, or M5)

extruder.hotend2.step_pin                       2.8
extruder.hotend2.dir_pin                        2.13
extruder.hotend2.en_pin                         4.29
These pins are for the epsilon (5th) driver on a Smoothieboard V1. This is what is most commonly used, but in another board or setup, you may have to use other pins.
Smoothieboard V2 Prime has 4 onboard stepper drivers. For a 5th driver, use an external driver connected via a Gadgeteer expansion header. See the V2 documentation for details.
You can do special things to Smoothie pins, for example, you can invert them, which is useful to revert the direction of your extruder if it is wired the wrong way around on your board, see Pin Configuration.

You can make your extruder module use any other stepper motor driver, or even an external stepper motor driver, simply by providing the adequate pins for that driver, see Pinout.

Current

On boards which feature current control of the stepper motor drivers (Smoothieboard or 4pi), you have to set that value for the extruder too.

This is handled by the Currentcontrol module, but usually, the line for the configuration of a given stepper motor is written along with its pins, for clarity.

delta_current                                   1.5
[tmc2660]
delta.current = 1500                            # Current in milliamps (mA), not Amps
V2 Note: Current is specified in milliamps (mA) in V2, not Amps. So 1.5A becomes 1500mA. The setting is configured in the [tmc2660] or [tmc2590] section depending on your driver type.

Set the value to the exact value your stepper motor is rated for (or less, for less noise, but less torque).

Setting the current to a value higher than the recommended one causes overheating, and skipped steps.

Example

Here is an example of a common configuration and wiring of an extruder with a Smoothieboard.

This example setup is of an extruder (stepper motor) connected to the M4 stepper motor driver.

If your machine has multiple extruders, you also want to look at multiple-extruders.

Configuration

The default Smoothie configuration example contains an example extruder section, this means you do not need to create a new one, but you can just re-use the sample one.

The configuration looks like this:

## Extruder module configuration
# See /extruder
extruder.hotend.enable                          true    # Whether to activate the extruder module at all. All configuration is ignored if false
extruder.hotend.steps_per_mm                    140     # Steps per mm for extruder stepper
extruder.hotend.acceleration                    500     # Acceleration for the stepper motor mm/sec²
extruder.hotend.max_speed                       50      # Maximum speed in mm/s

extruder.hotend.step_pin                        2.3     # Pin for extruder step signal
extruder.hotend.dir_pin                         0.22    # Pin for extruder dir signal (add '!' to reverse direction)
extruder.hotend.en_pin                          0.21    # Pin for extruder enable signal

delta_current                                   1.5     # Current setting in Amperes for this motor driver
## Extruder module configuration
# See /extruder
[extruder]
hotend.enable = true                            # Whether to activate the extruder module at all
hotend.steps_per_mm = 140                       # Steps per mm for extruder stepper
hotend.step_pin = PD3                           # Pin for extruder step signal
hotend.dir_pin = PD4                            # Pin for extruder dir signal (add '!' to reverse direction)
hotend.en_pin = PD5                             # Pin for extruder enable signal

[actuator delta]
acceleration = 500                              # Acceleration for the stepper motor mm/sec²

[motion control]
max_speed = 50                                  # Maximum speed in mm/s

[tmc2660]
delta.current = 1500                            # Current setting in milliamps for this motor driver

Now that your extruder is configured, you can wire it:

Wiring

Wiring your extruder stepper motor is very similar to how you wire your X, Y, and Z stepper motors (see adequate documentation):

you just wire the 4 wires of the stepper motor, to the output connector of the M4 stepper motor driver.

All options

All of the options currently supported by the Extruder module:

V1 Setting V2 Setting Description
Whether to activate this extruder instance. All configuration is ignored if false. Each enabled extruder creates a separate extruder module instance that can be controlled with tool change commands (T0, T1, etc.). When false, all other settings for this extruder are completely ignored. Use the pattern to create multiple extruder instances (e.g., extruder.hotend.enable, extruder.hotend2.enable).
Number of stepper motor steps required to move one millimeter of filament through the extruder. This critical calibration value depends on your stepper motor steps/revolution (typically 200 for 1.8° motors), microstepping setting (common values: 16x = 3200 steps/rev), and your extruder gear ratio/hobbed bolt diameter. Calculate as: (motor_steps_per_rev × microstepping) / (hobbed_bolt_circumference × gear_ratio). Example: (200 × 16) / (3.14159 × 7mm × 1) ≈ 145 steps/mm. Fine-tune by extruding a known length and measuring actual extrusion. Can be adjusted at runtime with M92 E<value> and saved with M500. [Learn more](extruder.md#steps_per_millimeter)
Filament diameter in millimeters for volumetric extrusion mode. When set to a value greater than 0.01mm, enables volumetric extrusion where E values in G-code are interpreted as cubic millimeters of filament volume instead of linear millimeters. Standard values: 1.75mm or 3.0mm (2.85mm). Set to 0 to disable volumetric extrusion and use standard linear E values. Can be changed at runtime with M200 D<diameter> (e.g., M200 D1.75) or disabled with M200 D0. Volumetric mode is useful when switching between different filament sizes or when your slicer outputs volumetric E values. [Learn more](extruder.md#filament-diameter)
Maximum acceleration for the extruder stepper motor in mm/s². Controls how quickly the extruder can change speed during extrusion moves. Higher values allow faster speed changes but may cause filament grinding or skipped steps if too aggressive. Lower values produce smoother extrusion but may cause artifacts during rapid direction changes. Typical values: 500-3000 mm/s². This setting affects extruder-only moves (retractions) and the E-axis component of combined moves. Adjust based on your extruder's mechanical capabilities and filament characteristics. Can be changed at runtime with M204 E<value>.
Maximum allowable speed for the extruder stepper motor in mm/s. This is the absolute speed limit for filament movement. The firmware will never move the extruder faster than this value, regardless of what speeds are requested in G-code or calculated during motion planning. Typical values: 50-200 mm/s depending on extruder type and hotend capabilities. Direct drive extruders can typically handle higher speeds than Bowden extruders. Too high values may cause grinding or skipped steps; too low limits print speed. This affects both printing moves and retractions. Can be set per-extruder for multi-extruder setups.
Pin for the extruder stepper motor driver's step signal. Each step pulse moves the motor one microstep according to the driver's microstepping configuration. The step pin toggles high/low for each step, creating the pulse train that drives the motor. Typical pins on Smoothieboard: 2.3 (E0/delta axis), 2.8 (E1/epsilon axis). Pin can be inverted by appending ! (e.g., 2.3!). The step frequency equals speed_mm_s × steps_per_mm, so a 100mm/s move with 145 steps/mm produces 14,500 steps/second. Ensure your controller can handle the step frequency at maximum speed.
Pin for the extruder stepper motor driver's direction signal. Controls whether the motor rotates forward (extrude filament) or backward (retract filament). The direction pin must be set before step pulses are sent. Typical pins on Smoothieboard: 0.22 (E0/delta axis), 2.13 (E1/epsilon axis). If your extruder moves in the wrong direction (retracting when it should extrude), invert this pin by appending ! (e.g., 0.22!). Test direction by sending G1 E10 F100 and verify filament extrudes forward out of the nozzle.
Pin for the extruder stepper motor driver's enable signal. When active, the motor driver is powered and holds position with full torque. When inactive, the driver is disabled and the motor freewheels (no holding torque). Typical pins on Smoothieboard: 0.21 (E0/delta axis), 0.10 (E1/epsilon axis). Most drivers are active-low (enabled when pin is LOW), but some are active-high. Append ! to invert if needed (e.g., 0.21!). The motor automatically enables before moves and can disable after a timeout (see ). Manual control: M17 enables, M18/M84 disables.
X-axis offset of this extruder's nozzle from the primary extruder (T0) in millimeters. Used only in multi-extruder setups to compensate for physical nozzle position differences. When switching tools with T1, T2, etc., the firmware automatically applies these offsets to maintain correct positioning. Positive values mean this extruder's nozzle is to the right of T0. Measure the offset by homing, moving to a reference point with T0, switching to this tool, and measuring the distance needed to return to the same point. The primary extruder (T0) should always have offsets of 0,0,0. Only set offsets for secondary extruders (T1, T2, etc.).
Y-axis offset of this extruder's nozzle from the primary extruder (T0) in millimeters. Used only in multi-extruder setups to compensate for physical nozzle position differences. Positive values mean this extruder's nozzle is toward the back (away from Y=0) compared to T0. See for calibration procedure and usage details. Must be accurately calibrated for proper layer alignment when switching between extruders during multi-material or multi-color prints.
Z-axis offset of this extruder's nozzle from the primary extruder (T0) in millimeters. Used only in multi-extruder setups to compensate for different nozzle heights. Positive values mean this extruder's nozzle is higher (further from the bed) than T0. Critical for proper first layer when switching extruders. Calibrate by homing Z, moving to a known position with T0, switching to this tool, and measuring the height difference. Even small differences (0.05mm) can cause first layer problems. Some slicers can compensate for Z-offset in G-code, but it's best to configure it in firmware for consistent behavior across all print jobs.
Amount of filament to retract during firmware retraction in millimeters. Used by G10 (retract) and G11 (unretract) commands. Retraction pulls filament back to relieve nozzle pressure and prevent oozing/stringing during travel moves. Typical values: 0.5-2mm for direct drive, 4-7mm for Bowden. Too little retraction causes stringing; too much can cause clogs or air gaps. The total retract amount includes this length plus (if negative). Can be changed at runtime with M207 S<length> (e.g., M207 S1.5). Many slicers can use firmware retraction instead of generating explicit E moves. [Learn more about retraction](extruder.md#retract)
Speed at which filament is retracted during firmware retraction in mm/s. Used by G10 command. This is stored and used internally in mm/s, but the M207 command expects mm/min (multiply by 60). Typical values: 25-60 mm/s (1500-3600 mm/min). Faster retractions reduce stringing but may cause grinding or skipped steps if too fast. Direct drive can typically handle faster retractions than Bowden. The retraction speed should be fast enough to quickly relieve pressure but not so fast that it damages filament or causes extruder jamming. Can be changed at runtime with M207 F<mm_per_min>.
Additional length of filament to extrude when recovering (unretract) beyond the retracted amount. Used by G11 command. Total recover distance = + this value. Typical values: -0.2 to +0.2mm. Positive values prime the nozzle (useful after long travels), negative values recover slightly less than retracted (can help with oozy materials). Set to 0 to recover exactly the retracted amount. This setting compensates for material properties, oozing during travel, or pressure changes in the melt zone. Fine-tune to eliminate blobs (reduce value) or gaps (increase value) after travel moves. Can be changed at runtime with M208 S<length>.
Speed at which filament is recovered (unretracted) during firmware unretraction in mm/s. Used by G11 command. This is stored and used internally in mm/s, but the M208 command expects mm/min (multiply by 60). Typical values: 10-40 mm/s (600-2400 mm/min), usually slower than retract speed. Slower recovery speeds help prevent blobs and allow time for the pressure in the nozzle to build back up smoothly. Too fast can cause blobs; too slow can cause gaps at the start of extrusion. Should generally be less than . Can be changed at runtime with M208 F<mm_per_min>.
Amount to lift the Z-axis during retraction in millimeters (Z-hop or Z-lift feature). When G10 is executed, the nozzle lifts by this amount after retracting filament. During G11, the nozzle lowers back to the original height after unretraction. Typical values: 0.2-1.0mm. Set to 0 to disable Z-lift. Z-hop reduces the chance of the nozzle dragging through or knocking over printed parts during travel moves, especially useful for: tall thin features, parts with significant Z-variation, materials prone to warping. Trade-off: increases print time due to extra Z movements. Can be changed at runtime with M207 Z<length>.
Speed for Z-axis movement during Z-lift operations in mm/min. Used for both lifting (during G10) and lowering (during G11) moves when is greater than zero. Note: This is specified in mm/min (not mm/s like most other extruder speeds). Typical values: 3000-9000 mm/min (50-150 mm/s). Faster Z-lift reduces travel time overhead but may cause ringing or mechanical stress on Z-axis components. Should not exceed the Z-axis maximum speed. Can be changed at runtime with M207 Q<mm_per_min>.
This is the new format which allows multiple extruders. The old format is deprecated. The old "one-extruder-only" configuration options will still be valid for backward compatibility, but it is recommended not to use them.

For example where before you used `extruder_steps_per_mm` you must now use .

Version-Specific Configuration

Smoothieware V1 and V2 use different configuration file formats. Understanding these differences is important when setting up your extruder.

Configuration File Format Differences

Smoothieware V1: Flat Format

V1 uses a flat configuration format where all settings are on one line with spaces separating the key and value:

# Basic extruder configuration
extruder.hotend.enable                          true
extruder.hotend.steps_per_mm                    140
extruder.hotend.acceleration                    500
extruder.hotend.max_speed                       50

# Pin assignments
extruder.hotend.step_pin                        2.3
extruder.hotend.dir_pin                         0.22
extruder.hotend.en_pin                          0.21

# Firmware retraction settings
extruder.hotend.retract_length                  3
extruder.hotend.retract_feedrate                45
extruder.hotend.retract_recover_length          0
extruder.hotend.retract_recover_feedrate        8

Key characteristics:

  • Dot-separated hierarchical naming
  • Values separated from keys by whitespace
  • Comments start with #
  • No section headers
  • All settings in a single flat namespace

Smoothieware V2: INI Format

V2 uses an INI-style configuration format with section headers and equals signs:

# Basic extruder configuration
[extruder]
hotend.enable = true
hotend.steps_per_mm = 140

[actuator delta]
acceleration = 500

[motion control]
max_speed = 50

# Pin assignments
[extruder]
hotend.step_pin = 2.3
hotend.dir_pin = 0.22
hotend.en_pin = 0.21

# Firmware retraction settings
[extruder]
hotend.retract_length = 3
hotend.retract_feedrate = 45
hotend.retract_recover_length = 0
hotend.retract_recover_feedrate = 8

Key characteristics:

  • INI-style section headers [section name]
  • Settings use key = value format
  • Comments start with #
  • Settings organized by logical sections
  • Some settings moved to different sections (e.g., acceleration to [actuator delta])

Hotend/Extruder Naming and Enable Flags

When configuring multiple extruders, V1 and V2 handle naming and enable flags differently:

V1 Extruder Naming:

In V1, each extruder is configured by choosing a unique name (like hotend, hotend2, extruder1, etc.) and using that name consistently across all settings:

# First extruder (uses delta/M4 driver)
extruder.hotend.enable                          true
extruder.hotend.steps_per_mm                    140
extruder.hotend.step_pin                        2.3
extruder.hotend.dir_pin                         0.22
extruder.hotend.en_pin                          0.21

# Second extruder (uses epsilon/M5 driver)
extruder.hotend2.enable                         true
extruder.hotend2.steps_per_mm                   140
extruder.hotend2.step_pin                       2.8
extruder.hotend2.dir_pin                        2.13
extruder.hotend2.en_pin                         4.29
extruder.hotend2.x_offset                       25.0
extruder.hotend2.y_offset                       0.0
extruder.hotend2.z_offset                       0.0

Important V1 details:

  • The name you choose (e.g., hotend, hotend2) is arbitrary but must be unique
  • Each extruder must have extruder.<name>.enable true to be activated
  • The order of definition determines tool number (first = T0, second = T1)
  • Common naming conventions: hotend/hotend2, extruder/extruder2, e0/e1
  • All settings for one extruder share the same name: extruder.<name>.*

V2 Extruder Naming:

In V2, extruders are configured within [extruder] sections, and the naming follows the INI format:

# First extruder (uses delta/M4 driver)
[extruder]
hotend.enable = true
hotend.steps_per_mm = 140
hotend.step_pin = 2.3
hotend.dir_pin = 0.22
hotend.en_pin = 0.21

# Second extruder (uses epsilon/M5 driver)
[extruder]
hotend2.enable = true
hotend2.steps_per_mm = 140
hotend2.step_pin = 2.8
hotend2.dir_pin = 2.13
hotend2.en_pin = 4.29
hotend2.x_offset = 25.0
hotend2.y_offset = 0.0
hotend2.z_offset = 0.0

Important V2 details:

  • All extruders are configured under [extruder] section headers
  • Each extruder instance uses a unique name (e.g., hotend, hotend2)
  • The enable flag pattern is <name>.enable = true
  • Some settings may be in different sections (acceleration in [actuator delta], max_speed in [motion control])
  • The section-based organization groups related settings together

Complete Single Extruder Example

Here’s a complete basic configuration for a single extruder in both formats:

# Extruder module configuration (V1)
extruder.hotend.enable                          true
extruder.hotend.steps_per_mm                    140
extruder.hotend.acceleration                    500
extruder.hotend.max_speed                       50
extruder.hotend.step_pin                        2.3
extruder.hotend.dir_pin                         0.22
extruder.hotend.en_pin                          0.21

# Current control for delta driver (M4)
delta_current                                   1.5
# Extruder module configuration (V2)
[extruder]
hotend.enable = true
hotend.steps_per_mm = 140
hotend.step_pin = 2.3
hotend.dir_pin = 0.22
hotend.en_pin = 0.21

[actuator delta]
acceleration = 500

[motion control]
max_speed = 50

[current control]
delta = 1.5

Complete Dual Extruder Example

For dual extruder setups, here’s how to configure both extruders:

# First extruder (T0) on delta/M4 driver
extruder.hotend.enable                          true
extruder.hotend.steps_per_mm                    140
extruder.hotend.acceleration                    500
extruder.hotend.max_speed                       50
extruder.hotend.step_pin                        2.3
extruder.hotend.dir_pin                         0.22
extruder.hotend.en_pin                          0.21

# Second extruder (T1) on epsilon/M5 driver
extruder.hotend2.enable                         true
extruder.hotend2.steps_per_mm                   140
extruder.hotend2.acceleration                   500
extruder.hotend2.max_speed                      50
extruder.hotend2.step_pin                       2.8
extruder.hotend2.dir_pin                        2.13
extruder.hotend2.en_pin                         4.29
extruder.hotend2.x_offset                       25.0
extruder.hotend2.y_offset                       0.0
extruder.hotend2.z_offset                       0.0

# Current control
delta_current                                   1.5
epsilon_current                                 1.5
# First extruder (T0) on delta/M4 driver
[extruder]
hotend.enable = true
hotend.steps_per_mm = 140
hotend.step_pin = 2.3
hotend.dir_pin = 0.22
hotend.en_pin = 0.21

# Second extruder (T1) on epsilon/M5 driver
[extruder]
hotend2.enable = true
hotend2.steps_per_mm = 140
hotend2.step_pin = 2.8
hotend2.dir_pin = 2.13
hotend2.en_pin = 4.29
hotend2.x_offset = 25.0
hotend2.y_offset = 0.0
hotend2.z_offset = 0.0

[actuator delta]
acceleration = 500

[actuator epsilon]
acceleration = 500

[motion control]
max_speed = 50

[current control]
delta = 1.5
epsilon = 1.5
When migrating from V1 to V2, pay special attention to settings that have moved to different sections. The most common are acceleration (moved to [actuator] sections) and max_speed (moved to [motion control]). Refer to the options table above for the exact V2 location of each setting.

G-code

Here are the G-code commands currently supported by the Extruder module:

Code Description
G0/G1 Move to the given coordinates. The F parameter defines speed and is remembered by subsequent commands (specified in millimetres/minute) (command is modal)
G10 Do firmware extruder retract
G11 Do firmware extruder un-retract
G90 Absolute mode (default): passed coordinates will be considered absolute (command is modal)
G91 Relative mode: passed coordinates will be considered relative to the current point (command is modal). Make sure you use G92 E0 to reset the extruder position every layer.
G92 Set current position to specified coordinates (example: G92 E0)
M17 Turn the active stepper motor driver's off
M18 Turn the active stepper motor driver's on
M82 Set absolute mode for extruder only
M83 Set relative mode for extruder only
M84 Turn off stepper motor drivers
M92 Set this axis' steps per millimetre. For example M92 E100 to set for the currently active Extruder, or T1 M92 E100 to set for the second extruder.
M114 Displays XYZ position, as well as the E position of the currently active Extruder
M200 Set E units for volumetric extrusion - D<filament diameter> set to 0 to disable volumetric extrusion, for example: M200 D3.0 to set for the currently active Extruder, and M200 D3.0 P3 to set for the third Extruder.
M203 Set maximum rate for axis, set E for Extruder axis or V for volumetric extrusion limit, for example: M203 V10 will limit extrusion moves to no faster than 10mm³/s. M203 V0 disables.
M204 Set acceleration in mm/sec², E<nnn> sets extruder only move acceleration, for example: M204 E500. P selects the extruder, uses the currently active extruder if omitted.
M207 Set retract length S<positive|mm> F<feedrate|mm/min> Z<additional|zlift/hop> Q<zlift|feedrate mm/min>, for example: M207 S4 F30 Z1
M208 Set retract recover length S<positive|mm surplus to the M207 S*> F<feedrate|mm/min>, for example: M208 S0 F8
M221 S<flow rate factor in percent>: Set flow rate factor override percentage for current extruder
M500 Save volatile settings to an override file
M503 Display volatile settings
If you want to learn more about this module, or are curious how it works, Smoothie is Open-Source and you can simply go look at the code, here.

External resources

This is a wiki! If you'd like to improve this page, you can edit it on GitHub.