Setting Tag Debug Page

This page demonstrates the <setting> custom tags that display Smoothieware configuration options with interactive tooltips showing both v1 and v2 setting names.

Features

  • CSS Fallback: Settings display correctly even without JavaScript
  • Monospace Display: White text on black background for code-like appearance
  • Interactive Tooltips: Hover over any setting to see detailed information
  • v1 ↔ v2 Comparison: Shows both versions side-by-side

Block Settings Examples

Motor Configuration (Alpha Axis)

The setting controls how many steps the motor takes to move 1mm on the X axis.

The setting is about accelerating.

Set the maximum rate with in mm/min.

The motor current is controlled by measured in Amps.

Temperature Control

Configure your hotend thermistor pin using .

The heater pin is set with .

PID tuning factors:

  • P factor:
  • I factor:
  • D factor:

Motion Control

Basic motion settings:

    • Default acceleration in mm/sec²
    • Cornering algorithm parameter
    • Default movement speed
    • Kinematics type (cartesian, delta, etc)

Laser Module

Laser power and control:

    • Enable/disable laser module
    • Maximum laser power (0-1 or percentage)
    • PWM output pin for laser control
    • PWM period in microseconds

Endstops

Endstop configuration for X axis:

    • Pin for minimum X endstop
    • Fast homing speed
    • Slow homing speed
    • Retract distance after hitting endstop

Switch Module (Fan Control)

Fan control using switch module:

    • Enable fan switch
    • G-code to turn on (usually M106)
    • G-code to turn off (usually M107)
    • Output pin for fan
    • Output type (pwm or digital)

Z-Probe/Leveling

Z-probe configuration:

    • Probe input pin
    • Probing speed
    • Z height when probe triggers
    • Enable 3-point leveling

Delta Kinematics

Delta-specific settings:

    • Length of diagonal rods
    • Horizontal radius when effector is centered

Inline Settings in Prose

When configuring a 3D printer, you’ll typically start by setting , , and for your X, Y, and Z axes respectively.

The setting determines whether you’re using cartesian, delta, or another kinematics system.

For heated bed control, configure and .


Mixed Display

Some settings remained unchanged between v1 and v2:

  • Extruder offsets:
  • Retract length:
  • Switch enable:

While others were renamed or restructured:

  • Steps per mm: (moved to [actuator] section)
  • Laser power: (simplified name)
  • Endstops: (more structured naming)

Pin Notation Changes

v1 used port.pin notation like 2.5, while v2 uses STM32-style names:
  • Example: - Alpha step pin
  • Example: - Alpha direction pin
  • Example: - Thermistor 1
  • Example: - Heater/FET output

Note: Pin mappings are board-specific and must be verified against your hardware schematic.


Testing Instructions

  1. Hover Test: Hover your mouse over any setting tag to see the tooltip appear
  2. CSS Fallback Test: Disable JavaScript in your browser - settings should still display with v1/v2 labels
  3. Responsive Test: Resize your browser window - tooltips should remain properly positioned
  4. Scroll Test: Scroll the page while hovering - tooltip should follow the setting

Implementation Notes

  • CSS file: /assets/css/setting-tag.css
  • TypeScript file: /assets/js/setting-tag.js (compiled from src/site/setting-tag.ts)
  • Custom tag format: <setting v1="..." v2="..."></setting>
  • Tooltip content is currently placeholder (lorem ipsum) but can be replaced with real documentation data

Migration Context

These setting tags will be used throughout the documentation to:

  1. Help users migrating from Smoothieware v1 to v2
  2. Provide quick reference for configuration options
  3. Link to detailed documentation pages (future feature)
  4. Show examples of actual usage in context

The tooltip system can be extended to show:

  • Full setting descriptions
  • Valid value ranges
  • Related settings
  • Example configurations
  • Links to relevant documentation sections

Single-Attribute Tags (v1-only or v2-only)

The system supports tags with only one attribute for cases where a setting exists in only one version:

V1-Only Settings

Settings that only exist in Smoothieware v1:

  • Legacy feature:
  • Deprecated option:

V2-Only Settings

Settings that only exist in Smoothieware v2:

  • New feature:
  • Modern option:

Mixed Real Examples

Examples showing settings that actually changed significantly or were removed/added:

  • V1 only (removed in v2):
  • V2 only (new feature):

Complete Settings Reference

This table shows all Smoothieware settings for both v1 and v2, organized by module. Hover over any setting to see detailed information.

V1 Setting V2 Setting Description
Actuators
Enables real-time checking of TMC driver error status bits including overtemperature, short circuit, and open load conditions. When enabled, the firmw...
Determines whether the system immediately enters HALT state when a TMC driver reports an error condition. When enabled, any driver alarm (overtemperat...
Defines a global enable pin that controls power to all stepper motors simultaneously. This acts as a master enable/disable switch for all motors. When...
X axis: Per-axis acceleration override that allows setting a different acceleration value for this specific actuator, independent of the global defaul...
X axis: Defines the GPIO pin used for controlling the direction signal to the stepper motor driver. This pin determines whether the motor rotates cloc...
X axis: Specifies the stepper driver chip type used for this actuator. This setting determines how the firmware communicates with and controls the mot...
X axis: Defines the individual enable signal output pin for this specific stepper motor driver. When set, this pin controls whether the driver is enab...
X axis: Defines the maximum speed for this actuator in millimeters per minute. This value is converted internally to mm/sec by dividing by 60. The max...
X axis: Sets the microstepping divisor for this stepper driver. Microstepping divides each full motor step into smaller increments for smoother motion...
X axis: Reverses the motor direction by inverting the direction signal without modifying the pin definition. This provides a cleaner and more readable...
X axis: Configures this actuator to be slaved to another axis for dual-motor configurations such as dual Y-axis motors for gantry machines. Only axes...
X axis: Defines the GPIO pin used for sending step pulses to the stepper motor driver for this actuator. Each step pulse advances the motor by one mic...
X axis: Specifies the number of motor steps required to move exactly 1mm on the X axis. This is the most critical calibration parameter for accurate p...
Y axis: Per-axis acceleration override that allows setting a different acceleration value for this specific actuator, independent of the global defaul...
Y axis: Defines the GPIO pin used for controlling the direction signal to the stepper motor driver. This pin determines whether the motor rotates cloc...
Y axis: Specifies the stepper driver chip type used for this actuator. This setting determines how the firmware communicates with and controls the mot...
Y axis: Defines the individual enable signal output pin for this specific stepper motor driver. When set, this pin controls whether the driver is enab...
Y axis: Defines the maximum speed for this actuator in millimeters per minute. This value is converted internally to mm/sec by dividing by 60. The max...
Y axis: Sets the microstepping divisor for this stepper driver. Microstepping divides each full motor step into smaller increments for smoother motion...
Y axis: Reverses the motor direction by inverting the direction signal without modifying the pin definition. This provides a cleaner and more readable...
Y axis: Configures this actuator to be slaved to another axis for dual-motor configurations such as dual Y-axis motors for gantry machines. Only axes...
Y axis: Defines the GPIO pin used for sending step pulses to the stepper motor driver for this actuator. Each step pulse advances the motor by one mic...
Y axis: Specifies the number of motor steps required to move exactly 1mm on the Y axis. This is the most critical calibration parameter for accurate p...
Z axis: Per-axis acceleration override that allows setting a different acceleration value for this specific actuator, independent of the global defaul...
Z axis: Defines the GPIO pin used for controlling the direction signal to the stepper motor driver. This pin determines whether the motor rotates cloc...
Z axis: Specifies the stepper driver chip type used for this actuator. This setting determines how the firmware communicates with and controls the mot...
Z axis: Defines the individual enable signal output pin for this specific stepper motor driver. When set, this pin controls whether the driver is enab...
Z axis: Defines the maximum speed for this actuator in millimeters per minute. This value is converted internally to mm/sec by dividing by 60. The max...
Z axis: Sets the microstepping divisor for this stepper driver. Microstepping divides each full motor step into smaller increments for smoother motion...
Z axis: Reverses the motor direction by inverting the direction signal without modifying the pin definition. This provides a cleaner and more readable...
Z axis: Configures this actuator to be slaved to another axis for dual-motor configurations such as dual Y-axis motors for gantry machines. Only axes...
Z axis: Defines the GPIO pin used for sending step pulses to the stepper motor driver for this actuator. Each step pulse advances the motor by one mic...
Z axis: Specifies the number of motor steps required to move exactly 1mm on the Z axis. This is the most critical calibration parameter for accurate p...
Conveyor
Enables periodic checking of TMC driver error status bits including overtemperature warnings, overtemperature shutdown, short circuit detection, open...
If set to true, any TMC driver error immediately triggers the system to enter ON_HALT state (emergency stop), stopping all motion and disabling motors...
Global enable pin that controls power or enable signal for all motor drivers simultaneously. On the Prime board with TMC drivers, this pin controls VC...
Time delay in milliseconds before the conveyor starts processing queued blocks after the first block enters an empty queue. This delay allows the queu...
X axis: Acceleration and deceleration rate for this specific actuator in mm/s². When set to a positive value, this overrides the global motion control...
X axis: MCU pin that sets the rotation direction for the stepper motor driver. The logic level (high or low) determines whether the motor moves forwar...
X axis: Specifies the stepper driver chip type for this actuator. Prime board has onboard TMC2590 or TMC2660 drivers for the first four axes (alpha/be...
X axis: Optional enable pin for stepper motor driver. On Prime board with TMC2590/TMC2660 drivers, this is typically set to nc (not connected) because...
X axis: Maximum speed this actuator can achieve, specified in mm/min. Limits are enforced during motion planning to prevent missed steps, mechanical d...
Microstepping subdivision setting for the X axis's stepper driver. Microstepping divides each full motor step into smaller sub-steps for smoother moti...
X axis: Software-based reversal of motor direction without modifying hardware pin definitions. This is a cleaner and more readable alternative to addi...
X axis: Configures this actuator to move in sync with another axis for dual-motor configurations. Only A/B/C axes (delta/epsilon/zeta) can be slaved t...
X axis: MCU pin that outputs step pulses to the stepper motor driver. Each rising edge on this pin triggers the driver to advance the motor by one mic...
X axis: Number of motor steps required to move one millimeter on the X axis. This is the most critical calibration setting as it defines the relations...
Y axis: Acceleration and deceleration rate for this specific actuator in mm/s². When set to a positive value, this overrides the global motion control...
Y axis: MCU pin that sets the rotation direction for the stepper motor driver. The logic level (high or low) determines whether the motor moves forwar...
Y axis: Specifies the stepper driver chip type for this actuator. Prime board has onboard TMC2590 or TMC2660 drivers for the first four axes (alpha/be...
Y axis: Optional enable pin for stepper motor driver. On Prime board with TMC2590/TMC2660 drivers, this is typically set to nc (not connected) because...
Y axis: Maximum speed this actuator can achieve, specified in mm/min. Limits are enforced during motion planning to prevent missed steps, mechanical d...
Microstepping subdivision setting for the Y axis's stepper driver. Microstepping divides each full motor step into smaller sub-steps for smoother moti...
Y axis: Software-based reversal of motor direction without modifying hardware pin definitions. This is a cleaner and more readable alternative to addi...
Y axis: Configures this actuator to move in sync with another axis for dual-motor configurations. Only A/B/C axes (delta/epsilon/zeta) can be slaved t...
Y axis: MCU pin that outputs step pulses to the stepper motor driver. Each rising edge on this pin triggers the driver to advance the motor by one mic...
Y axis: Number of motor steps required to move one millimeter on the Y axis. This is the most critical calibration setting as it defines the relations...
Z axis: Acceleration and deceleration rate for this specific actuator in mm/s². When set to a positive value, this overrides the global motion control...
Z axis: MCU pin that sets the rotation direction for the stepper motor driver. The logic level (high or low) determines whether the motor moves forwar...
Z axis: Specifies the stepper driver chip type for this actuator. Prime board has onboard TMC2590 or TMC2660 drivers for the first four axes (alpha/be...
Z axis: Optional enable pin for stepper motor driver. On Prime board with TMC2590/TMC2660 drivers, this is typically set to nc (not connected) because...
Z axis: Maximum speed this actuator can achieve, specified in mm/min. Limits are enforced during motion planning to prevent missed steps, mechanical d...
Microstepping subdivision setting for the Z axis's stepper driver. Microstepping divides each full motor step into smaller sub-steps for smoother moti...
Z axis: Software-based reversal of motor direction without modifying hardware pin definitions. This is a cleaner and more readable alternative to addi...
Z axis: Configures this actuator to move in sync with another axis for dual-motor configurations. Only A/B/C axes (delta/epsilon/zeta) can be slaved t...
Z axis: MCU pin that outputs step pulses to the stepper motor driver. Each rising edge on this pin triggers the driver to advance the motor by one mic...
Z axis: Number of motor steps required to move one millimeter on the Z axis. This is the most critical calibration setting as it defines the relations...
Current Control
Sets the motor current for the alpha axis (X axis in Cartesian machines) in Amperes. This setting controls how much current is delivered to the stepper motor driver. V1 uses digipot control (MCP4451), while V2 uses SPI-controlled TMC2590/TMC2660 drivers on Prime boards or PWM control on BOARD_MINIALPHA.
PWM pin for controlling the alpha axis motor current on boards that use PWM-based current control (specifically BOARD_MINIALPHA). Most Smoothieboard configurations do not use this setting as they rely on SPI-controlled TMC drivers or external drivers with hardware current adjustment.
Sets the motor current for the beta axis (Y axis in Cartesian machines) in Amperes. This setting controls how much current is delivered to the stepper motor driver. V1 uses digipot control (MCP4451), while V2 uses SPI-controlled TMC2590/TMC2660 drivers on Prime boards or PWM control on BOARD_MINIALPHA.
PWM pin for controlling the beta axis motor current on boards that use PWM-based current control (specifically BOARD_MINIALPHA). Most Smoothieboard configurations do not use this setting as they rely on SPI-controlled TMC drivers or external drivers with hardware current adjustment.
Sets the motor current for the gamma axis (Z axis in Cartesian machines) in Amperes. This setting controls how much current is delivered to the stepper motor driver. V1 uses digipot control (MCP4451), while V2 uses SPI-controlled TMC2590/TMC2660 drivers on Prime boards or PWM control on BOARD_MINIALPHA.
PWM pin for controlling the gamma axis motor current on boards that use PWM-based current control (specifically BOARD_MINIALPHA). Most Smoothieboard configurations do not use this setting as they rely on SPI-controlled TMC drivers or external drivers with hardware current adjustment.
Sets the motor current for the delta axis (A axis, typically first extruder E0 on 3D printers, or rotary A axis on CNC machines) in Amperes. This setting controls how much current is delivered to the stepper motor driver. V1 uses digipot control (MCP4451), while V2 uses SPI-controlled TMC2590/TMC2660 drivers on Prime boards or PWM control on BOARD_MINIALPHA.
PWM pin for controlling the delta axis motor current on boards that use PWM-based current control (specifically BOARD_MINIALPHA). Most Smoothieboard configurations do not use this setting as they rely on SPI-controlled TMC drivers or external drivers with hardware current adjustment.
Sets the motor current for the epsilon axis (B axis, typically second extruder E1 on 3D printers, or rotary B axis on CNC machines) in Amperes. V1 default is -1 (disabled) since epsilon is not standard on v1 boards. V2 Prime boards have only first four axes (XYZA) with onboard TMC drivers; epsilon typically uses external driver.
PWM pin for controlling the epsilon axis motor current on boards that use PWM-based current control (specifically BOARD_MINIALPHA). Most Smoothieboard configurations do not use this setting.
Sets the motor current for the zeta axis (C axis, typically third extruder E2 on 3D printers, or rotary C axis on CNC machines) in Amperes. No V1 equivalent. V2 Prime boards have only first four axes (XYZA) with onboard TMC drivers; zeta typically uses external driver.
PWM pin for controlling the zeta axis motor current on boards that use PWM-based current control (specifically BOARD_MINIALPHA). Most Smoothieboard configurations do not use this setting.
Endstops
Fine-tune trim adjustment for the X tower (on deltas) or X axis (on Cartesian machines) to compensate for mechanical variations in tower lengths, carr...
Fine-tune trim adjustment for the Y tower (on deltas) or Y axis (on Cartesian machines) to compensate for mechanical variations. Similar to alpha_trim...
Fine-tune trim adjustment for the Z tower (on deltas) or Z axis (on Cartesian machines) to compensate for mechanical variations. Similar to alpha_trim_mm and beta_trim_mm but applies to the Z/gamma actuator. Essential for achieving bed levelness on delta printers by adjusting effective tower heights.
Enables CoreXY-specific homing behavior where X and Y axes must home sequentially rather than simultaneously due to the crossed-belt kinematics. When...
Enables linear delta-specific homing behavior where all three towers home simultaneously as a single "Z" axis operation due to the delta kinematics. W...
Enables rotary delta-specific homing behavior for delta robots with rotational joints instead of linear carriages. Rotary deltas use angular endstops and theta offset calibration (M306) rather than linear position, requiring different homing calculations and position tracking.
Defines which machine axis this endstop controls. The axis assignment determines which motor(s) stop when the endstop is triggered and which coordinat...
Enables this specific endstop instance. When set to true, the endstop becomes active and will be monitored during homing operations or for limit detec...
Speed for the initial fast approach to the endstop during the first phase of homing. The two-phase homing sequence uses this faster speed to quickly m...
Specifies the direction the axis moves when homing to this endstop. When a homing command (G28) is issued, the firmware moves the axis in the specifie...
Defines the machine coordinate value assigned to the axis when the endstop is triggered during homing. This setting establishes the machine coordinate...
Enables this endstop as a hard limit switch that triggers an emergency stop if hit during normal operation (outside of homing). When enabled, if the e...
Maximum distance the axis will travel during homing before triggering a timeout alarm. This is a safety feature that prevents the machine from moving...
Specifies the GPIO pin connected to the endstop switch signal. The pin is configured as an input and monitored for state changes during homing and lim...
Distance to move away from the endstop after the fast approach triggers it, before performing the slow precision approach. This backoff ensures the en...
Speed for the second-phase precision approach to the endstop after the initial fast approach and retract. This slower speed ensures accurate and repea...
Defines which machine axis this endstop controls. The axis assignment determines which motor(s) stop when the endstop is triggered and which coordinat...
Enables this specific endstop instance. When set to true, the endstop becomes active and will be monitored during homing operations or for limit detec...
Speed for the initial fast approach to the endstop during the first phase of homing. The two-phase homing sequence uses this faster speed to quickly m...
Specifies the direction the axis moves when homing to this endstop. When a homing command (G28) is issued, the firmware moves the axis in the specifie...
Defines the machine coordinate value assigned to the axis when the endstop is triggered during homing. This setting establishes the machine coordinate...
Enables this endstop as a hard limit switch that triggers an emergency stop if hit during normal operation (outside of homing). When enabled, if the e...
Maximum distance the axis will travel during homing before triggering a timeout alarm. This is a safety feature that prevents the machine from moving...
Specifies the GPIO pin connected to the endstop switch signal. The pin is configured as an input and monitored for state changes during homing and lim...
Distance to move away from the endstop after the fast approach triggers it, before performing the slow precision approach. This backoff ensures the en...
Speed for the second-phase precision approach to the endstop after the initial fast approach and retract. This slower speed ensures accurate and repea...
Defines which machine axis this endstop controls. The axis assignment determines which motor(s) stop when the endstop is triggered and which coordinat...
Enables this specific endstop instance. When set to true, the endstop becomes active and will be monitored during homing operations or for limit detec...
Speed for the initial fast approach to the endstop during the first phase of homing. The two-phase homing sequence uses this faster speed to quickly m...
Specifies the direction the axis moves when homing to this endstop. When a homing command (G28) is issued, the firmware moves the axis in the specifie...
Defines the machine coordinate value assigned to the axis when the endstop is triggered during homing. This setting establishes the machine coordinate...
Enables this endstop as a hard limit switch that triggers an emergency stop if hit during normal operation (outside of homing). When enabled, if the e...
Maximum distance the axis will travel during homing before triggering a timeout alarm. This is a safety feature that prevents the machine from moving...
Specifies the GPIO pin connected to the endstop switch signal. The pin is configured as an input and monitored for state changes during homing and lim...
Distance to move away from the endstop after the fast approach triggers it, before performing the slow precision approach. This backoff ensures the en...
Speed for the second-phase precision approach to the endstop after the initial fast approach and retract. This slower speed ensures accurate and repea...
Defines which machine axis this endstop controls. The axis assignment determines which motor(s) stop when the endstop is triggered and which coordinat...
Enables this specific endstop instance. When set to true, the endstop becomes active and will be monitored during homing operations or for limit detec...
Speed for the initial fast approach to the endstop during the first phase of homing. The two-phase homing sequence uses this faster speed to quickly m...
Specifies the direction the axis moves when homing to this endstop. When a homing command (G28) is issued, the firmware moves the axis in the specifie...
Defines the machine coordinate value assigned to the axis when the endstop is triggered during homing. This setting establishes the machine coordinate...
Enables this endstop as a hard limit switch that triggers an emergency stop if hit during normal operation (outside of homing). When enabled, if the e...
Maximum distance the axis will travel during homing before triggering a timeout alarm. This is a safety feature that prevents the machine from moving...
Specifies the GPIO pin connected to the endstop switch signal. The pin is configured as an input and monitored for state changes during homing and lim...
Distance to move away from the endstop after the fast approach triggers it, before performing the slow precision approach. This backoff ensures the en...
Speed for the second-phase precision approach to the endstop after the initial fast approach and retract. This slower speed ensures accurate and repea...
Defines which machine axis this endstop controls. The axis assignment determines which motor(s) stop when the endstop is triggered and which coordinat...
Enables this specific endstop instance. When set to true, the endstop becomes active and will be monitored during homing operations or for limit detec...
Speed for the initial fast approach to the endstop during the first phase of homing. The two-phase homing sequence uses this faster speed to quickly m...
Specifies the direction the axis moves when homing to this endstop. When a homing command (G28) is issued, the firmware moves the axis in the specifie...
Defines the machine coordinate value assigned to the axis when the endstop is triggered during homing. This setting establishes the machine coordinate...
Enables this endstop as a hard limit switch that triggers an emergency stop if hit during normal operation (outside of homing). When enabled, if the e...
Maximum distance the axis will travel during homing before triggering a timeout alarm. This is a safety feature that prevents the machine from moving...
Specifies the GPIO pin connected to the endstop switch signal. The pin is configured as an input and monitored for state changes during homing and lim...
Distance to move away from the endstop after the fast approach triggers it, before performing the slow precision approach. This backoff ensures the en...
Speed for the second-phase precision approach to the endstop after the initial fast approach and retract. This slower speed ensures accurate and repea...
Defines which machine axis this endstop controls. The axis assignment determines which motor(s) stop when the endstop is triggered and which coordinat...
Enables this specific endstop instance. When set to true, the endstop becomes active and will be monitored during homing operations or for limit detec...
Speed for the initial fast approach to the endstop during the first phase of homing. The two-phase homing sequence uses this faster speed to quickly m...
Specifies the direction the axis moves when homing to this endstop. When a homing command (G28) is issued, the firmware moves the axis in the specifie...
Defines the machine coordinate value assigned to the axis when the endstop is triggered during homing. This setting establishes the machine coordinate...
Enables this endstop as a hard limit switch that triggers an emergency stop if hit during normal operation (outside of homing). When enabled, if the e...
Maximum distance the axis will travel during homing before triggering a timeout alarm. This is a safety feature that prevents the machine from moving...
Specifies the GPIO pin connected to the endstop switch signal. The pin is configured as an input and monitored for state changes during homing and lim...
Distance to move away from the endstop after the fast approach triggers it, before performing the slow precision approach. This backoff ensures the en...
Speed for the second-phase precision approach to the endstop after the initial fast approach and retract. This slower speed ensures accurate and repea...
When true, forces Z axis to home before X and Y axes, without requiring full sequential ordering via homing_order. This is a simplified alternative to...
Specifies the order in which axes home when multiple axes are requested. When set, axes home sequentially in the specified order, waiting for each axi...
When true, automatically moves the machine to coordinate position 0,0 (and 0,0,0 for deltas) after homing completes successfully. This provides a cons...
Enables SCARA robot arm-specific homing behavior where the arm homes in actuator space (joint angles) rather than Cartesian space. During homing, the...
Number of consecutive reads required to confirm a limit switch trigger. This provides debouncing for limit switches (not homing endstops). V2 uses time-based debouncing instead.
Master enable switch for the traditional root-level endstop configuration method (Method 1). When set to true, Smoothieware will load endstop configuration from root-level settings. In V2, endstops are always enabled if configured.
If enabled, moves to a predefined park position after homing instead of moving to origin. The park position is set using G28.1. Not documented in V2.
Extruder
Maximum acceleration for the extruder stepper motor in mm/s². Controls how quickly the extruder can change speed during extrusion moves. Higher values...
Pin for the extruder stepper motor driver's direction signal. Controls whether the motor rotates forward (extrude filament) or backward (retract filam...
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...
Whether to activate this extruder instance. All configuration is ignored if false. Each enabled extruder creates a separate extruder module instance t...
Filament diameter in millimeters for volumetric extrusion mode. When set to a value greater than 0.01mm, enables volumetric extrusion where E values i...
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 t...
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...
Amount of filament to retract during firmware retraction in millimeters. Used by G10 (retract) and G11 (unretract) commands. Retraction pulls filament...
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...
Additional length of filament to extrude when recovering (unretract) beyond the retracted amount. Used by G11 command. Total recover distance = retrac...
Speed for Z-axis movement during Z-lift operations in mm/min. Used for both lifting (during G10) and lowering (during G11) moves when retract_zlift_le...
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 retr...
Pin for the extruder stepper motor driver's step signal. Each step pulse moves the motor one microstep according to the driver's microstepping configu...
Number of stepper motor steps required to move one millimeter of filament through the extruder. This critical calibration value depends on your steppe...
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 n...
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 n...
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...
General/System
Optional secondary play LED pin that mirrors the main play LED state. Useful for lighted kill buttons, external status indicators, or remote control panels that need to show when the machine is running (playing G-code from SD card) or idle. The LED turns on when actively executing G-code and turns off when idle or paused. This is in addition to the primary play LED on the board itself.
UART communication speed in bits per second. Must match the baudrate configured on the connected device. Higher baudrates allow faster communication and G-code streaming. V1 setting applies to UART0 (primary serial port), while V2 allows per-UART configuration.
Number of data bits per character transmitted over UART. Standard serial communication uses 8 bits, which can represent 256 different values (0-255) per character. This should match the configuration of the device you're communicating with.
UART hardware channel number to use. Different boards support different numbers of UART channels. Channel 0 is typically the primary debug UART. The Smoothieboard supports multiple UART channels with different pin assignments.
Enables config-override functionality allowing runtime configuration changes to be saved with M500 and loaded automatically on boot. When enabled, settings can be overridden and persisted without modifying the main config.ini file. Unlike v1 where the override file was always active if present, v2 requires explicit enabling of this feature.
Use the UART as a console interface for sending and receiving commands, versus using it for raw data transmission. When true, the UART behaves like the USB serial console, accepting G-code commands and providing response messages.
Enable DFU (Device Firmware Update) mode for developers. When enabled, the board can enter DFU mode for low-level firmware flashing via USB without needing the SD card bootloader. This is primarily for firmware developers and advanced users who need to flash firmware directly to the microcontroller's internal flash memory. Disabled by default for safety to prevent accidental bricking of the board.
Enable UART console for serial communication over hardware UART pins. When enabled, the board can communicate via a dedicated UART channel in addition to USB serial, allowing simultaneous connections or communication with other microcontrollers.
Global enable pin for all FETs (Field Effect Transistors) controlling heaters, fans, and other high-power outputs. This is typically a NOT-enable signal (active low) that controls power to all output FETs. When this pin is high (disabled), all FET outputs are turned off as a safety measure. Both this pin and fets_power_enable_pin must be in the correct state for FETs to operate.
Global power enable pin for FETs. This is typically an active high enable signal that controls the power supply to all FET circuits. On the Prime board, this controls a separate power rail that supplies the FET drivers. Both this pin and fets_enable_pin must be in the correct state for FETs to operate. This dual-control approach provides enhanced safety by requiring two independent signals for high-power output operation.
Automatically flash firmware from flashme.bin file if present on SD card at boot. When enabled, the system checks for a valid flashme.bin file on startup and automatically performs the firmware update if found. The file is renamed to flashme.old after successful flashing. Disable this if you want manual control over firmware updates or if automatic updates interfere with your workflow.
Enables GRBL compatibility mode for CNC applications. When enabled, the firmware responds with GRBL-style status messages and command acknowledgments, making it compatible with GRBL-based software and sender applications like bCNC, Universal G-code Sender, and similar CNC control programs. This mode changes how certain G-codes are interpreted and how responses are formatted to match GRBL's behavior.
Enable Mass Storage Class mode which allows the SD card to be accessed as a USB drive when connected to a computer. When enabled, you can drag and drop files directly to the board's SD card without removing it. NOTE: V1 setting is inverted (msd_disable) and requires special firmware to function, while V2 uses standard msc_enable logic and is enabled by default.
LED that flashes when the board is in Mass Storage Class mode and the SD card is being accessed. Provides visual feedback when the SD card is being read or written via USB, warning you not to disconnect the cable during file operations. The LED flashes rapidly during active transfers and stays off when no transfers are occurring. Only used when msc_enable is true.
Parity checking mode for error detection. "none" means no parity bit is added, maximizing data throughput. "odd" and "even" add an extra bit to make the total number of 1-bits odd or even respectively, allowing detection of single-bit errors. Must match the parity setting of the connected device.
Sets the PWM frequency for hardware PWM timer 1 in Hertz. V2 uses two hardware PWM timers (PWM1 and PWM2), each with 4 channels. All channels on the same timer share the same frequency. Typical values range from 1000Hz (for heaters) to 20000Hz (for fans and motor control).
Sets the PWM frequency for hardware PWM timer 2 in Hertz. V2 uses two hardware PWM timers (PWM1 and PWM2), each with 4 channels. All channels on the same timer share the same frequency. Typical values range from 1000Hz (for heaters) to 20000Hz (for fans and motor control).
Enable a second USB serial console port for simultaneous connections. When enabled, the board presents two USB serial interfaces (composite device), allowing both a host application (like Pronterface) and a terminal to be connected at the same time. Both ports share the same USB connection but appear as separate COM/tty devices to the host operating system.
Maximum step generation frequency in Hertz. This is the theoretical maximum rate at which the firmware can generate step pulses across all motors, based on MCU speed and firmware overhead. The actual achievable speed depends on this frequency, microstepping, and steps per millimeter. V1 default is 100kHz, V2 default is 200kHz (50kHz in debug builds).
Duration of the step pulse sent to stepper drivers in microseconds. This controls how long the STEP signal remains high before returning low. Increase this value if stepper motors are missing steps, behaving erratically, or making unusual noises. Most modern stepper drivers work fine with 1µs pulses, but older drivers may require 2-3µs pulses for reliable operation.
Number of stop bits appended after each character. Stop bits provide synchronization time between characters, allowing the receiver to prepare for the next character. Most modern serial communication uses 1 stop bit, though 2 stop bits can be used for slower or noisier communication links.
Laser Module
Controls whether the laser module is activated in Smoothieware. When set to false, the module is completely unloaded to free system resources. When enabled, the laser module will be loaded and available for G-code control.
Legacy parameter that specifies the pin controlling the laser through PWM (Pulse Width Modulation). This setting has been superseded by `laser_module_pwm_pin` for improved clarity. If this pin is not connected, the system will check `laser_module_pwm_pin` instead. Only specific pins on the Smoothieboard support hardware PWM required for laser control.
The preferred and more descriptive parameter for specifying the PWM control pin for the laser. This pin controls laser power through pulse width modulation with 0-100% duty cycle capability. The firmware validates that the specified pin supports hardware PWM. The pin's PWM period is configured via `laser_module_pwm_period` setting.
Specifies an optional TTL (Transistor-Transistor Logic) control pin that provides a simple on/off signal synchronized with laser firing. This pin switches high when laser is firing and low when off. This provides a secondary digital signal separate from the PWM control, commonly used for controlling laser power supply enable or external safety interlocks.
Sets the PWM period (and thus frequency) for laser control in microseconds. The PWM frequency equals 1,000,000 divided by this period value. This frequency must be appropriate for the connected laser - lasers typically use 10-50 kHz. Note: v2 uses frequency directly in Hz (e.g., 10000 for 10 kHz) while v1 uses period in microseconds (e.g., 100 for 10 kHz).
Sets the maximum PWM duty cycle that will be applied to the laser, acting as both a safety limit and calibration parameter. This value represents the maximum laser power as a duty cycle fraction where 0.0 = 0% and 1.0 = 100%. The actual laser power is scaled by this value, so setting it below 1.0 limits maximum output even when G-code requests full power.
Sets the minimum PWM duty cycle (baseline power) for the laser during travel moves and as a floor for all laser operations. This is particularly useful for certain CO2 lasers that benefit from a small minimum power (e.g., 0.05) to maintain plasma stability and reduce startup delay. Some CO2 lasers benefit from this keepalive power, but most lasers should use 0.
Defines the S-value in G-code that represents maximum laser power (100%). This scaling parameter allows you to use different S-value ranges in your G-code. For example, setting this to 100 means S100 = full power, while setting it to 1.0 means S1.0 = full power, and 255 means S255 = full power. This maps G-code S parameters to laser power percentage.
Default laser power when no S parameter is specified in G-code. When a G1/G2/G3 move is issued without an S parameter, this power level will be used. This value represents the power as a duty cycle fraction where 0.0 = 0% and 1.0 = 100%.
Enables or disables automatic power scaling based on actual instantaneous movement speed. When enabled (default), the laser power is continuously adjusted during acceleration and deceleration proportional to the actual speed vs. requested speed. This ensures constant energy per distance traveled, resulting in more uniform cutting/engraving even through curves and corners where the machine must slow down.
This parameter has been deprecated and replaced by `laser_module_minimum_power`. It originally set a small baseline amount of power to keep the laser "tickled" during operations. This setting will be used as the default value for `laser_module_minimum_power` when that setting is not explicitly specified, but you should migrate to using `laser_module_minimum_power` for all new configurations. Same functionality as `laser_module_minimum_power` - sets baseline laser power.
Invert the PWM signal polarity where high duty cycle means laser off and low duty cycle means laser on. When false (normal operation), higher PWM duty cycle = more laser power. When true (inverted), higher PWM duty cycle = less laser power. This is required for some laser drivers that are active-low. New in v2.
Enable internal pullup resistor on PWM pin. When true, the pin is pulled high by an internal resistor (typically 40-50kΩ). This is useful for ensuring a defined signal level when the pin is not actively driven. Disable if using external pullup or pulldown resistors to avoid conflicts. New in v2.
Configure PWM pin as open-drain output instead of push-pull. In open-drain mode, the pin can pull low but cannot actively drive high (requires external pullup). This is useful for logic level shifting or when controlling external transistor circuits. New in v2.
Spindle
Enables spindle control module. V1: Dedicated spindle module with PID, tachometer feedback, and Modbus VFD support. V2: Simple switch module instance for basic on/off or PWM control (no PID or feedback).
Spindle control mode. V1: pwm (PID with feedback), analog (open-loop PWM for VFDs), or modbus (RS485 VFD control). V2: digital (on/off relay) or pwm (variable speed, open-loop only).
PWM output pin for spindle control. Must be hardware PWM-capable (P2.0-P2.5 on Smoothieboard). Controls spindle directly or through VFD analog input. Can be inverted with ! suffix.
PWM frequency for spindle control. V1: Period in microseconds (default 1000µs = 1kHz). V2: Frequency in Hz via pwm1.frequency or pwm2.frequency settings. Most VFDs use 1-50 kHz.
Maximum PWM duty cycle (0.0-1.0). Acts as safety limit and calibration factor. Some controllers like MC2100 require 0.85 for max speed. Limits maximum spindle speed even when G-code requests full power.
Controls spindle behavior during emergency stop. When false (recommended), spindle stops on halt. When true, spindle continues running during halts (safety risk). Use with extreme caution.
Tachometer input pin for closed-loop RPM control (V1 PWM mode only). Receives pulses from hall sensor or optical encoder. Used with PID controller for precise RPM. Not available in V2.
Number of tachometer pulses per spindle revolution (V1 PWM mode only). Used to calculate actual RPM from feedback. Hall sensors typically 1.0, optical encoders higher. Not available in V2.
Default RPM when M3 is issued without S parameter (V1 PWM mode only). Default 5000 RPM. Not available in V2.
PID proportional term for closed-loop spindle control (V1 PWM mode only). Controls response aggressiveness. Requires tuning for specific spindle. Not available in V2.
PID integral term for closed-loop spindle control (V1 PWM mode only). Eliminates steady-state error. Requires tuning. Not available in V2.
PID derivative term for closed-loop spindle control (V1 PWM mode only). Provides damping to reduce overshoot. Requires tuning. Not available in V2.
Low-pass filter time constant in seconds for tachometer smoothing (V1 PWM mode only). Filters noise from RPM measurement. Default 0.1 seconds. Not available in V2.
Minimum RPM when spindle is on (V1 analog mode only). Prevents stalling. Default 100 RPM. If G-code requests lower, this minimum is used. Not available in V2.
Maximum RPM at 100% PWM (V1 analog mode only). Calibrates PWM to spindle's max speed. Essential for accurate VFD speed control. Default 5000 RPM. Not available in V2.
Optional digital output to enable VFD/power supply (V1 analog mode only). Typically connected to VFD RUN/ENABLE via optocoupler. Goes high with M3, low with M5. Not available in V2 (use separate switch instance).
VFD manufacturer/model for Modbus control (V1 modbus mode only). Currently only "huanyang" supported. Determines Modbus protocol and register mapping. Not available in V2.
RS485 receive pin for Modbus communication (V1 modbus mode only). Requires RS485 transceiver chip (MAX485). Not available in V2.
RS485 transmit pin for Modbus communication (V1 modbus mode only). Requires RS485 transceiver chip. Not available in V2.
RS485 direction control pin (V1 modbus mode only). Switches transceiver between TX/RX modes for half-duplex communication. Connected to DE/RE pins on MAX485. Not available in V2.
G-code command to turn spindle on (V2 only, via switch module). Typically M3 for spindle clockwise. Can be any G-code or M-code.
G-code command to turn spindle off (V2 only, via switch module). Typically M5 for spindle stop. Can be any G-code or M-code.
Miscellaneous/Root Settings
Current setting for the first stepper motor driver (M1), channel 0 of the digipot. On Cartesian machines, this is typically the X axis. Current is spe...
Sets the base frequency of the step ticker in Hz. This is the fundamental rate at which the step generation interrupt runs. All step generation is der...
Current setting for the second stepper motor driver (M2), channel 1 of the digipot. On Cartesian machines, this is typically the Y axis. All current s...
Enables digital control of stepper motor driver currents via digipot chip. When enabled, allows software configuration of motor currents through the d...
Current setting for the fourth stepper motor driver (M4), channel 3 of the digipot. Common assignments: on delta machines this would be one of the tow...
For Linux developers: enables DFU (Device Firmware Update) mode, which allows you to flash new firmware over USB without requiring a physical bootload...
Conversion factor for translating current values (in amperes) to digipot wiper positions (0-255). This is hardware-specific and depends on the sense r...
Maximum current in amperes that can be set for any motor. This is a safety limit that prevents setting currents higher than the hardware can safely ha...
Selects the digipot (digital potentiometer) chip used for current control. Different boards use different digipot chips, and this setting must match y...
Current setting for the fifth stepper motor driver (M5), channel 4 of the digipot. Default value of -1 disables this channel (treated specially at mcp...
Current setting for the seventh stepper motor driver current control, channel 6 of the digipot. Default value of -1 disables this channel. **CRITICAL:...
Current setting for the third stepper motor driver (M3), channel 2 of the digipot. On Cartesian machines, this is typically the Z axis. Z-axis often b...
Enables GRBL compatibility mode. When enabled, the firmware behaves more like GRBL, changing error messages, command handling, and protocol responses ...
Enables the "kill" button functionality for emergency halt operations. When enabled, a physical button can be used to immediately halt all machine ope...
Specifies the GPIO pin to use for the kill button. The button should be wired between this pin and ground. The pin is configured as input with interna...
Disables the 4 flashing status LEDs on the board. When set to true, all status indication LEDs are turned off, which can be useful for reducing visual...
Duration of the step pulse in microseconds. This is the time that the step signal remains high before returning low. Some stepper drivers require a mi...
Disables the MSD (Mass Storage Device) functionality when set to true. This prevents the SD card from appearing as a USB drive when connected to a com...
Controls when "ok" responses are sent. When true (default and recommended), sends "ok" once per line of input. When false, reverts to the old (incorre...
Disables the "play" status LED that indicates when a file is being played from the SD card. When set to true, the LED is turned off. This is separate ...
Enables a second serial port over the USB connection. This allows you to have two independent serial connections simultaneously, useful for having bot...
Current setting for the eighth stepper motor driver current control, channel 7 of the digipot (last channel). Default value of -1 disables this channe...
Baud rate for the default hardware serial port (UART0), labeled "Serial" on the board near the USB connector. This controls the communication speed fo...
Current setting for the sixth stepper motor driver (M6), channel 5 of the digipot. Default value of -1 disables this channel. Available on both MCP445...
Network
Master enable switch for the entire Ethernet network functionality. When disabled, the network module is completely unloaded to free system resources...
Sets a hostname that is sent to the DHCP server during IP address requests. Some DHCP servers register this hostname in local DNS, allowing you to acc...
Configures the IP address assignment method for the Smoothieboard. Can use DHCP for automatic configuration or specify a static IP address. When using...
Defines the subnet mask for static IP configuration. The netmask determines which portion of the IP address identifies the network and which portion i...
Specifies the default gateway (router) IP address for static IP configuration. The gateway is used for routing traffic outside the local network. Only...
Allows manual override of the Ethernet MAC (Media Access Control) address. By default, Smoothieboard auto-generates a unique MAC address based on the...
Enables the built-in HTTP web server on port 80. The web server provides a browser-based control interface for sending commands, monitoring status, up...
Enables the telnet server on port 23. The telnet service provides a network-based command-line interface that behaves identically to the USB serial co...
Enables the Plan9 network filesystem server on port 564. Plan9 (9P protocol) allows mounting the Smoothieboard's SD card filesystem directly on your c...
Specifies the DNS (Domain Name System) server IP address for hostname resolution. DNS is required when using hostname-based addresses in commands like...
Enables the FTP (File Transfer Protocol) server on TCP port 21, allowing remote file transfer access to the SD card filesystem. When enabled, users ca...
Enables the NTP (Network Time Protocol) client to automatically synchronize the Real-Time Clock (RTC) from an NTP server during network startup. When...
Specifies the NTP server hostname or IP address for time synchronization. The firmware contacts this server when ntp_enable is true to fetch the curre...
Specifies the timezone offset from GMT/UTC in hours, which is applied to the time fetched from the NTP server to set the local RTC time. The offset in...
Specifies the base URL for firmware updates used by the update command. The command automatically appends the board-specific firmware filename to this...
Panel/Display
Enables the panel interface module. Panels provide a screen, an encoder wheel and/or a set of buttons, used to control your machine without requiring...
Specifies the type of panel connected to the Smoothieboard. Each panel has a specific interface and driver requirements, so the correct panel type mus...
Selects which SPI channel to use for panel communication. The Smoothieboard has two SPI channels with different pin assignments. Channel selection aff...
Specifies the CS (Chip Select) pin used to select the panel device on the SPI bus. CS allows multiple devices to share the same SPI port by activating...
Sets the SPI communication frequency in Hertz for the panel interface. Higher frequencies allow faster screen updates and more responsive display refr...
Sets the display contrast value for panels that support contrast adjustment (Viki2, Mini Viki2, ST7565_glcd, and OLED displays). Higher values increas...
When set to true, reverses the screen display by rotating it 180 degrees. This setting is useful when the panel is physically mounted upside down or w...
Configures the number of lines to offset the menu lines by on screen, effectively controlling how many encoder clicks are required to move one menu po...
Specifies the A pin for the rotary encoder wheel. Encoders have two output pins (A and B) that generate quadrature signals as the encoder is rotated....
Specifies the B pin for the rotary encoder wheel. Encoders have two output pins (A and B) that generate quadrature signals 90 degrees out of phase as...
Specifies the number of pulses the encoder emits per physical detent (click position). This value is used to convert raw encoder pulse counts into mea...
Specifies the pin for the click ("enter" or "select") button on the panel. This button is typically pressed to select menu items, confirm actions, and...
Specifies the pin for the back ("escape" or "cancel") button on the panel. This button returns to the previous menu level or cancels the current opera...
Specifies the pin for the up button which moves up in menus or increments values. This button is typically found on panels without rotary encoders (bu...
Specifies the pin for the down button which moves down in menus or decrements values. This button is typically found on panels without rotary encoders...
Specifies the pin for the pause button which immediately pauses print jobs when pressed. This button provides emergency pause functionality directly f...
Specifies the delay in milliseconds before a button press is considered a "long press" rather than a normal press. When set to 0, long press detection...
Specifies the pin for the buzzer which provides audible feedback when buttons are clicked and for system alerts. The buzzer produces short beeps to co...
Specifies the pin for the red LED indicator used on Viki2 panels to indicate heating status. The red LED turns on when the hotend is actively heating,...
Specifies the pin for the blue LED indicator used on Viki2 panels to indicate normal operation status. The blue LED turns on when the system is ready...
Specifies the A0 (also called C/D for Command/Data or D/C for Data/Command) pin required for Viki2 and SSD1306 OLED displays. This pin selects between...
Specifies the RST (reset) pin required for some OLED displays (SSD1306, SH1106). This pin is connected to the display's hardware reset input and is us...
Specifies the busy pin used only with the Universal Adapter panel type. This pin can be connected to the adapter to query its busy status before sendi...
Specifies the X axis (alpha motor) jogging feedrate in millimeters per minute when using the panel's manual control menu. This speed is used when manu...
Specifies the Y axis (beta motor) jogging feedrate in millimeters per minute when using the panel's manual control menu. This speed is used when manua...
Specifies the Z axis (gamma motor) jogging feedrate in millimeters per minute when using the panel's manual control menu. This speed is used when manu...
Specifies the temperature preset in degrees Celsius to set the hotend to when using the pre-heating menu item on the panel. This provides a quick-acce...
Specifies the temperature preset in degrees Celsius to set the heated bed to when using the pre-heating menu item on the panel. This provides a quick-...
When set to true, enables support for an external SD card slot on the panel or a second SD card slot connected to one of Smoothieboard's SPI ports. Th...
Selects which SPI channel to use for the external SD card. The external SD card can share the same SPI channel as the panel if they use different CS p...
Specifies the CS (Chip Select) pin for the external SD card. This pin selects the external SD card device on the SPI bus. The CS pin allows the extern...
Specifies the SD card detect signal pin for the external SD card slot. When connected, the system automatically mounts the SD card at `/ext` when the...
When set to true, the watch screen (main status screen) displays extruder position and temperature information in addition to bed and hotend temperatu...
When set to true, creates a new custom menu entry for the panel with the identifier `<menu_name>`. You can create any number of custom menu entries as...
Specifies the display name that will appear in the panel's menus for this custom menu entry. Underscores (`_`) in the name are automatically converted...
Specifies the G-code command or command sequence that will be executed when the custom menu entry is selected and clicked on the panel. Underscores (`...
Planner
Maximum allowed deviation from the true path at direction change junctions during cornering. This replaces traditional jerk-based cornering algorithms with a more sophisticated approach. Lower values produce slower, more precise corners that follow the intended path more closely. Higher values allow faster cornering but introduce more deviation from the theoretical path, potentially causing rounding at sharp corners.
Separate junction deviation setting specifically for Z-axis moves. When set to a valid number, allows different cornering behavior for moves involving Z-axis motion. In v1 default is NAN (uses global junction_deviation), in v2 default is -1 (uses global junction_deviation). Commonly set to 0.0 to force full stops at layer changes in 3D printing to eliminate Z-seam artifacts, or set higher to allow faster Z movements without affecting XY print quality.
Minimum speed the planner will allow for any move. When set to 0 (default), the planner can slow moves down to a complete stop if needed for proper acceleration/deceleration. When set to a positive value, moves will never slow below this speed, which can prevent extrusion problems in 3D printing or stepper stalls on machines with poor low-speed torque, but may cause jerky motion at tight corners.
Number of motion blocks (movements) held in the planner queue for lookahead optimization. The planner performs forward and reverse passes across the entire queue to calculate optimal entry/exit speeds for each movement. Larger values (default 32) allow better motion planning and smoother acceleration by looking further ahead in the move sequence, but consume more RAM (~100-150 bytes per block). Smaller values reduce memory usage but may result in stuttering on complex paths with many short segments.
Motion Control
Default acceleration for all axes in mm/s². This is the rate at which the machine accelerates and decelerates during moves. Higher acceleration values...
Per-actuator acceleration override for alpha motor. When set to a valid number, overrides the global default acceleration setting for moves involving...
Rotation angle in degrees for rotatable_cartesian and experimental_delta arm solutions. Rotates the entire coordinate plane by this angle around the Z...
Alpha motor maximum speed: Maximum speed this individual actuator/motor can achieve in mm/min. This limits the motor speed regardless of commanded fee...
Alpha axis (X axis in Cartesian machines): Number of motor steps required to move exactly 1mm along the alpha axis. This is the most critical calibrat...
Number of arc segments before applying geometric correction. When drawing arcs with many small segments, numerical errors can accumulate causing the a...
For linear delta robots only. Physical length of the diagonal connecting rod from the upper carriage hinge point to the lower effector hinge point. Th...
For linear delta robots only. Horizontal distance from center of bed to the center of each tower's linear rail when the effector is centered at build...
Specifies the kinematics solution that converts Cartesian coordinates (X, Y, Z) from G-code into actuator motor positions for your machine type. This...
For Morgan SCARA arm solution only. Length of the first arm segment from the base hinge to the elbow hinge. This is the inner arm of the SCARA robotic...
For Morgan SCARA arm solution only. Length of the second arm segment from the elbow hinge to the end effector. This is the outer arm of the SCARA robo...
Per-actuator acceleration override for beta motor. When set to a valid number, overrides the global default acceleration setting for moves involving t...
Beta motor maximum speed: Maximum speed this individual actuator/motor can achieve in mm/min. Identical in function to alpha_max_rate but applies to t...
For experimental delta arm solution only. Defines the relative angular position of the beta tower (tower 2). Standard deltas have three towers positio...
Beta axis (Y axis in Cartesian machines): Number of motor steps required to move exactly 1mm along the beta axis. This is the most critical calibratio...
Default feed rate for G1 moves when no F parameter is specified. This is the speed at which the machine moves during normal operations (cutting, extru...
Default rate for G0 rapid moves. This is the speed for rapid positioning moves when the tool is not active (not cutting, extruding, or engraving). G0...
Per-actuator acceleration override for delta motor. When set to a valid number, overrides the global default acceleration setting for the delta actuat...
For rotary delta arm solution only. End effector triangle side length - the distance between ball joints on the effector platform. In rotary delta des...
For rotary delta arm solution only. Distance from the ball joint plane to the bottom of the end effector surface - essentially the thickness of the ef...
For rotary delta arm solution only. Base triangle side length - the distance between servo pivot points on the stationary base. In rotary delta design...
For delta robots (both linear and rotary), controls whether motion halts when kinematic calculation fails due to unreachable position. When true (defa...
Delta motor maximum speed: Maximum speed for the delta actuator motor in mm/min (or degrees/min for rotary). For extruders, this limits the linear spe...
For rotary delta arm solution only. Mirror (flip) the XY coordinate system. This is useful for correcting coordinate system orientation without making...
For rotary delta arm solution only. Carbon rod length - the length of the connecting rods (parallelogram links) between the servo horn and the effecto...
For rotary delta arm solution only. Servo horn length - the distance from the servo pivot point (motor shaft) to the rod connection point on the servo...
For delta robots, an alternative way to specify segmentation based on time rather than distance. When set to a non-zero value, overrides mm_per_line_s...
Delta axis (A axis): Number of motor steps required to move exactly 1mm (or 1 degree for rotary axes) along the delta axis. In 3D printers, this is ty...
For rotary delta arm solution only. Distance between the effector ball joint plane and the tool tip (nozzle, gripper, etc.). This accounts for how far...
Angular offset correction for tower 1 position (alpha tower, front-left at nominal 210°). Used during delta calibration to correct for manufacturing t...
Radial offset correction for tower 1 position. Positive values move the tower away from the bed center, negative values move it toward center. Used du...
Angular offset correction for tower 2 position (beta tower, front-right at nominal 330°). Used during delta calibration to correct for manufacturing t...
Radial offset correction for tower 2 position. Positive values move the tower away from the bed center, negative values move it toward center. Used du...
Angular offset correction for tower 3 position (gamma tower, back-center at nominal 90°). Used during delta calibration to correct for manufacturing t...
Radial offset correction for tower 3 position. Positive values move the tower away from the bed center, negative values move it toward center. Used du...
For rotary delta arm solution only. Vertical distance from the servo pivot plane (the plane where all three servo shafts are located) to the bed surfa...
Per-actuator acceleration override for epsilon motor. When set to a valid number, overrides the global default acceleration setting for the epsilon ac...
Epsilon motor maximum speed: Maximum speed for the epsilon actuator motor in mm/min. For second extruder in dual-extrusion setups, configure same as d...
Epsilon axis (B axis): Number of motor steps required to move exactly 1mm (or 1 degree for rotary axes) along the epsilon axis. In 3D printers with du...
Per-actuator acceleration override for gamma motor. When set to a valid number, overrides the global default acceleration setting for moves involving...
Gamma motor maximum speed: Maximum speed this individual actuator/motor can achieve in mm/min. For Cartesian machines with leadscrew Z-axis, this is o...
For experimental delta arm solution only. Defines the relative angular position of the gamma tower (tower 3). Standard deltas have three towers positi...
Gamma axis (Z axis in Cartesian machines): Number of motor steps required to move exactly 1mm along the gamma axis. For Cartesian/CoreXY machines, thi...
Junction deviation controls cornering speed by defining how much the tool path can deviate from a perfect corner. This replaces traditional "jerk" set...
Default S value for laser operations when no S parameter is specified in G-code. Represents laser power as a fraction from 0.0 (off) to 1.0 (full powe...
Global maximum speed limit applied to all moves. When set to a positive value, limits the combined speed of all axes (the magnitude of the velocity ve...
Minimum speed the planner will allow for any move. Prevents extremely slow movements that could cause stepper stalls or uneven extrusion in 3D printin...
Maximum allowable deviation from true arc when mm_per_arc_segment is 0. This controls arc segmentation quality versus performance using adaptive segme...
Length of arc segments for G2/G3 circular interpolation moves. When 0 (default), the firmware uses mm_max_arc_error to automatically determine appropr...
Maximum length of line segments before splitting into smaller segments. When non-zero, long straight moves are automatically split into segments of th...
For Morgan SCARA arm solution only. X-axis offset of the bed zero position (work origin) from the SCARA tower center (base pivot point). SCARA robots...
For Morgan SCARA arm solution only. Y-axis offset of the bed zero position (work origin) from the SCARA tower center (base pivot point). SCARA robots...
For Morgan SCARA arm solution only. Final calibration scaling factor for X axis movement. Used to fine-tune dimensions after mechanical calibration, a...
For Morgan SCARA arm solution only. Final calibration scaling factor for Y axis movement. Used to fine-tune dimensions after mechanical calibration, a...
For Morgan SCARA arm solution only. Ratio defining where SCARA position becomes kinematically undefined when the end effector reaches maximum extensio...
For Morgan SCARA arm solution only. Ratio defining where SCARA position becomes kinematically undefined when the end effector approaches too close to...
Number of blocks in the planner queue. The planner queue holds upcoming moves and optimizes acceleration/deceleration across them for smooth motion. L...
Milliseconds to wait when the planner queue is full before checking again. This prevents the CPU from spinning in a tight loop when the queue is full...
For Morgan SCARA arm solution only. Enables real SCARA mode versus Morgan mode, which affects the kinematic calculations. The Morgan SCARA implementat...
Save G54-G59 work coordinate systems to config-override with M500. When true, all work coordinate system offsets (G54, G55, G56, G57, G58, G59) will b...
Save G92 coordinate offsets to config-override with M500 command. When true, any G92 offset currently in effect will be written to the config-override...
Whether to apply line segmentation to Z-only moves. When true (default), pure Z-axis moves are segmented according to mm_per_line_segment like XY move...
Set a fixed G92 offset at startup in format "x,y,z". This allows defining a permanent coordinate offset that is applied automatically on boot. Useful...
Enable software endstops that prevent moves beyond configured minimum and maximum boundaries. When enabled, firmware checks every move against the sof...
Controls machine behavior when soft endstop limit is triggered. When true (default), the machine enters HALT state when attempting to move beyond soft...
Maximum allowed X position for soft endstop enforcement. When set to a valid number, prevents X-axis moves above this value. When set to NAN (not-a-nu...
Minimum allowed X position for soft endstop enforcement. When set to a valid number, prevents X-axis moves below this value. When set to NAN (not-a-nu...
Maximum allowed Y position for soft endstop enforcement. When set to a valid number, prevents Y-axis moves above this value. When set to NAN (not-a-nu...
Minimum allowed Y position for soft endstop enforcement. When set to a valid number, prevents Y-axis moves below this value. When set to NAN (not-a-nu...
Maximum allowed Z position for soft endstop enforcement. When set to a valid number, prevents Z-axis moves above this value. When set to NAN (not-a-nu...
Minimum allowed Z position for soft endstop enforcement. When set to a valid number, prevents Z-axis moves below this value. When set to NAN (not-a-nu...
Maximum allowable speed for the X axis. Smoothie will never exceed this value for X axis movement regardless of requested feed rate. This is a hard li...
For CoreXZ kinematics only. Reduction factor for the X axis component in the CoreXZ transformation matrix. Controls how much the X motor contributes t...
Maximum allowable speed for the Y axis. Smoothie will never exceed this value for Y axis movement regardless of requested feed rate. This is a hard li...
Specific acceleration for Z axis movements. When set to a valid number, overrides the default acceleration setting for Z axis only. When set to NAN (n...
Maximum allowable speed for the Z axis. Smoothie will never exceed this value for Z axis movement regardless of requested feed rate. Typically much sl...
Separate junction deviation for Z axis. When set to a valid number, allows different cornering behavior for moves involving Z-axis motion. When set to...
For CoreXZ kinematics only. Reduction factor for the Z axis component in the CoreXZ transformation matrix. Controls how much the Z motor contributes t...
Per-actuator acceleration override for zeta motor. When set to a valid number, overrides the global default acceleration setting for the zeta actuator...
Zeta motor maximum speed: Maximum speed for the zeta actuator motor in mm/min. For third extruder in triple-extrusion setups, configure same as delta/...
Zeta axis (C axis): Number of motor steps required to move exactly 1mm (or 1 degree for rotary axes) along the zeta axis. In 3D printers with triple e...
Switch
Creates and enables a new Switch module instance. When set to `true`, the switch module is active and will respond to configured inputs and control outputs. Set to `false` to disable the switch instance without removing its configuration.
Specifies a GPIO pin that controls the switch state through hardware input. When configured, the pin's state determines the switch's ON/OFF state according to `input_pin_behavior`.
Defines how the input pin controls the switch state. In momentary mode, the switch state tracks the pin state directly. In toggle mode, pin state transitions trigger switch state toggles.
Specifies a G-code or M-code command that sets the switch to the ON state. The command is matched against incoming G-code, and when received, the switch is activated.
Specifies a G-code or M-code command that sets the switch to the OFF state. The command is matched against incoming G-code, and when received, the switch is deactivated.
Specifies a subcode for input command matching. Allows multiple switch instances to respond to different subcodes of the same base command (e.g., `M106.1`, `M106.2`).
Specifies the GPIO pin that is controlled by the switch. The pin's behavior depends on `output_type` (digital on/off, PWM, hardware PWM, or software PWM).
Defines the output pin control method. Determines whether the output is simple digital on/off, sigma-delta PWM (software PWM using bit-banging), hardware PWM, or software PWM out.
Specifies a G-code command to execute when the switch transitions to the ON state. The command is sent to the G-code parser and executed. Underscores in the command are replaced with spaces.
Specifies a G-code command to execute when the switch transitions to the OFF state. The command is sent to the G-code parser and executed. Underscores in the command are replaced with spaces.
Sets the initial state of the switch when the system boots. When `true`, the switch starts in the ON state. When `false`, the switch starts in the OFF state.
Sets the PWM value when the switch is in the OFF state (or at startup if `startup_state` is `false`). For SIGMADELTA PWM, this is the 0-255 value. For hardware/software PWM, this is the duty cycle percentage.
Sets the PWM duty cycle percentage when the switch is turned ON (without an explicit `S` parameter). Only applies to hardware PWM and software PWM output types.
Sets the maximum PWM value for sigma-delta PWM output. Allows limiting the maximum output power/speed when using PWM mode. The `S` parameter in commands is clamped to this value.
Sets the PWM period in milliseconds for hardware PWM and software PWM outputs. This determines the PWM frequency. For servo control, typical value is 20ms (50Hz). In v2, this is configured via the `pwm1.frequency` setting instead.
Defines the pin state to set during a crash, watchdog reset, or debug halt condition. This is a safety feature to ensure outputs are in a safe state when the system encounters a critical failure.
Defines the switch state to set during a HALT condition (typically triggered by M112 emergency stop or system halt). When a halt occurs, the switch is set to this state immediately.
When set to `true`, prevents the switch from changing state during HALT conditions (M112 emergency stop). Useful for switches that should maintain their current state during emergency stops.
Temperature Control
Switches from PID control to simple bang-bang (hysteresis) control. In bang-bang mode, the heater is fully on when below target temperature minus hyst...
The beta coefficient characterizes the thermistor's resistance-temperature relationship. It's used in the simplified Steinhart-Hart equation (beta equ...
Specifies which pin is used as the chip select (CS) signal for the MAX31855 thermocouple-to-digital converter. Allows multiple MAX31855 devices to sha...
The three coefficients (c1, c2, c3) of the Steinhart-Hart equation, which provides very accurate temperature calculation across the full operating ran...
The derivative term of the PID controller. Responds to the rate of temperature change to reduce overshoot and improve stability. Internally scaled by...
The letter/identifier that prefixes this module's temperature in M105 responses. Allows host software to identify which heater each temperature readin...
Specifies which ADC pin reads the analog voltage from the E3D PT100 amplifier. The amplifier converts PT100 RTD resistance to a voltage that can be re...
Enables or disables the temperature control module instance. You can create as many temperature control modules as needed by giving each a unique name...
Specifies which M-code reports the current temperature for this module. M105 is standard for temperature reporting and returns data for all temperatur...
Specifies the output pin used to drive the heater element. This pin controls either an onboard MOSFET or an external Solid State Relay (SSR). Set to `...
Defines the temperature band around the target temperature for bang-bang control. Heater turns on when temperature drops below (target - hysteresis) a...
The integral term of the PID controller. Eliminates steady-state error by accumulating error over time. Internally scaled by `readings_per_second` (PI...
Limits the integral accumulator to prevent integral windup. When the heater is at full power (max_pwm) for extended periods, the integral term would o...
Limits the maximum power delivered to the heater by capping the PWM duty cycle. Useful when running a 12V heater from 24V supply, or to limit maximum...
Hard upper limit for temperature. If the sensor reads above this value, the system immediately halts and turns off all heaters. Critical safety featur...
Hard lower limit for temperature. If the sensor reads below this value, the system halts. Primarily used to detect disconnected or failed thermistors,...
The proportional term of the PID controller. Determines how aggressively the controller responds to the current temperature error. Higher values produ...
Allows setting a common temperature with a shortcut. When you set temperature to `1.0`, the controller uses this preset value instead. Useful for quic...
Second preset temperature slot. When you set temperature to `2.0`, the controller uses this preset value instead.
Frequency at which the heater output switches on and off. High frequencies (kHz range) are suitable for MOSFETs. Low frequencies (10-40 Hz) are requir...
The nominal resistance of the thermistor at the reference temperature (usually 25°C). This is a fundamental property of the thermistor, typically spec...
Value of resistor in series with the thermistor, if present. Most Smoothieboard configurations use only a pullup resistor (r2) with no series resistor...
Value of the pullup resistor connected between the thermistor and VCC. Smoothieboard has built-in 4.7kΩ pullup resistors on thermistor inputs TH1-TH4.
How many times per second the temperature sensor is read and the PID control loop is executed. Higher values provide faster response but increase CPU...
Specify three temperature/resistance pairs from the thermistor datasheet, and Smoothie will automatically calculate Steinhart-Hart coefficients. Best...
Maximum time allowed to cool down to target temperature when reducing temperature. If temperature doesn't reach target within this time, the system ha...
Defines how close the actual temperature must be to the target to be considered "reached." Used by runaway detection to determine when heating/cooling...
Maximum time allowed from when heating starts until target temperature is reached. If the temperature doesn't reach target within this time, the syste...
Once the target temperature is reached, monitors for temperature divergence. If actual temperature deviates from target by more than this amount for >...
Selects the temperature sensor implementation. Different sensors use different physical principles and require different configuration parameters.
Specifies which M-code sets the target temperature and waits until that temperature is reached before continuing execution. Blocking command.
Specifies which M-code sets the target temperature without waiting. Execution continues immediately after setting the temperature.
Selects which hardware SPI peripheral is used to communicate with the MAX31855. Smoothieboard has two SPI channels with different pin assignments.
The temperature at which the thermistor has resistance R0. Almost always 25°C for commercial thermistors, as this is the industry standard reference p...
Selects a pre-calibrated thermistor from the built-in database, automatically setting Steinhart-Hart coefficients or beta values. This simplifies conf...
Specifies which ADC (Analog-to-Digital Converter) pin is connected to the temperature sensor. Smoothieboard provides dedicated thermistor inputs TH1 t...
Tool number for M-code addressing and tool selection. Determines which temperature controller is addressed by T commands and whether the controller re...
When using a predefined thermistor, force the use of the legacy beta table values instead of the more accurate Steinhart-Hart coefficients. Provided f...
Use Proportional on Measurement instead of Proportional on Error. PonM mode reduces overshoot when changing setpoint by applying the P term to measure...
When enabled, the integral term only accumulates when the output is not saturated (not at 0 or max_pwm). This alternative anti-windup strategy prevent...
Temperature Switch
Creates and enables a new TemperatureSwitch module instance. When set to true, this module will monitor temperature from a specified TemperatureControl module and automatically control a Switch module based on configured thresholds and trigger conditions.
Specifies which TemperatureControl module to monitor by matching its designator character. The temperature switch reads the current temperature from the temperature control module with this designator and uses it to determine when to trigger the switch. If multiple temperature control modules share the same designator, the highest temperature among them is used for comparison.
Specifies the name of the Switch module to be controlled by this temperature switch. When temperature conditions are met, this switch will be toggled on or off according to the configured trigger mode and inversion settings. The switch must be configured and enabled in the switch module settings before it can be controlled.
Legacy parameter name for specifying the switch module to control. This parameter has been replaced by `temperatureswitch.switch` but is still supported for backward compatibility with older configurations. New configurations should use the `switch` parameter instead.
Sets the temperature threshold in degrees Celsius at which the switch state changes. The exact behavior depends on the trigger mode: in "level" mode, the switch turns on above this temperature and off below it; in "rising" mode, the switch triggers when crossing upward through this threshold; in "falling" mode, the switch triggers when crossing downward through this threshold.
Defines the polling interval in seconds when the system is in the LOW_TEMP state (below threshold temperature). This controls how frequently the temperature is checked while heating up. A shorter interval provides faster response when temperature rises toward the threshold, but increases system overhead. The polling occurs on the second tick event, so actual timing may vary by ±1 second.
Defines the polling interval in seconds when the system is in the HIGH_TEMP state (at or above threshold temperature). This controls how frequently the temperature is checked while at operating temperature or cooling down. A longer interval reduces system overhead during stable high-temperature operation, while still monitoring for temperature drops that should trigger switch state changes.
Determines the triggering behavior mode of the temperature switch. This setting controls whether the switch responds to sustained temperature levels, rising temperature edges, or falling temperature edges. The mode fundamentally changes how temperature threshold crossings are interpreted and affects the arming behavior.
Reverses the normal switch control logic. When enabled, the switch turns off when temperature exceeds the threshold (instead of turning on), and turns on when temperature drops below the threshold (instead of turning off). This is useful for controlling heating elements that should activate when temperature is too low, rather than cooling elements that activate when temperature is too high.
Defines a custom M-code command that must be executed to arm the temperature switch before it can trigger. This provides manual control over when the switch can activate, allowing integration with print job workflows or manual safety controls. When set to 0, the switch is always armed and operates automatically.
ZProbe
G-code command(s) to run after each probe point. Used for deployable probes like BLTouch that need to retract after probing....
G-code command(s) to run before each probe point. Used for deployable probes like BLTouch that need to extend before probing....
Selects which calibration strategy to enable. Used specifically for delta printer calibration to automatically adjust endstop trim values and delta radius. In v1, enable the strategy directly. In v2, use zprobe.calibration to select "delta".
Probe signal debounce time in milliseconds. The probe signal must remain continuously triggered for this duration before being considered a valid trig...
Time to wait before starting each probe move. Allows mechanical settling after XY positioning and before Z probe begins....
Enables the Z-probe module. When set to true, the probe module is loaded and all probing features become available....
Travel speed between probe points and for initial rapid approach moves. Does not affect probing accuracy but reduces total time for multi-point bed le...



Selects which bed leveling strategy to enable. In v1, each strategy has its own enable setting. In v2, use a single setting to select the strategy by name. Only one leveling strategy should be active at a time....
Enables manual probe attachment mode for removable probes....
Maximum distance the probe will travel downward before giving up on a probe attempt. Safety feature to prevent crashes....
Position in machine coordinates where the machine moves and waits for manual probe attachment when m_attach is enabled....
Height above the bed to position the probe before starting each probing move....
Defines the GPIO pin connected to the probe signal....
Speed when retracting from a probe point. When set to 0, automatically calculates as slow_feedrate * 2....
Probe in +Z direction instead of -Z direction. Used for specialized machine setups....
Speed at which the probe approaches the bed during actual probing moves. Slower speeds improve accuracy....
Three-Point Leveling Strategy
Automatically home X and Y axes before running G32 leveling. Ensures consistent and known starting position before probing begins....
First probe point coordinates in machine coordinate system, specified as comma-separated X and Y values....
Second probe point coordinates in machine coordinate system....
Third probe point coordinates in machine coordinate system....
Offset of the probe trigger point from the nozzle tip in X, Y, and Z axes....
Enable saving the calculated plane equation with M500 and restoring it with M561 ABCD parameters....
If the three probe points differ by less than this amount, the bed is considered flat and no compensation is applied....
Delta Calibration Strategy
Height to descend to after homing before starting calibration probe. Must account for probe extension distance below effector....
Radius from center to probe points during calibration. Should be large enough to show tower positioning errors....
Target tolerance for calibration completion. Calibration iterates until probe height differences are within this value....
Delta Grid Leveling Strategy
Home before probing grid. Ensures consistent starting position for repeatable results....
Starting height for initial bed probe. Should be high enough that probe won't hit bed during initial move to center after homing....
Probe offset from effector in X, Y, Z format....
Radius of circular probing area from bed center. Should be at least as large as maximum printing radius....
When true, M500 saves M375 command to config-override, causing grid to auto-load from /sd/delta.grid on boot....
Grid size (number of points in each direction). Must be an odd number....
Probe tolerance for validation. Used for quality reporting....
Cartesian Grid Leveling Strategy
Z height where bed compensation begins to reduce linearly. Between dampening_start and height_limit, compensation is scaled from 100% down to 0%....
Automatically home all axes before probing grid with G32 command. Ensures consistent starting position for repeatable grid probing....
Number of probe points in X direction. Must be an odd number for proper grid symmetry....
Number of probe points in Y direction. Must be an odd number....
Z height where bed compensation stops completely. Above this height, no compensation is applied....
Display grid as a formatted table with XY coordinates when using M375.1 instead of raw floating-point values....
Height above bed to begin initial probe search. Must be high enough that probe won't crash during initial positioning to start of grid....
**DEPRECATED** - This setting is no longer supported and will produce an error if used....
When true, requires G32 to specify XYAB parameters defining the grid area instead of using configured x_size/y_size....
Probe offset from nozzle tip in X, Y, and Z. Accounts for probe position relative to nozzle during grid probing....
When true, M500 will save an M375 command to config-override, causing the grid to be automatically loaded from /sd/cartesian.grid on boot....
Default grid size for both X and Y dimensions if grid_x_size and grid_y_size are not explicitly specified....
Probe tolerance threshold. Currently used for validation reporting....
Width of the rectangular probing area in millimeters. Defines the X dimension of the bed area to probe and compensate....
Length of the rectangular probing area in millimeters. Defines the Y dimension of the bed area to probe and compensate....

Total settings: 624 rows from 22 modules

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