# This file serves as documentation for config parameters of
# additional devices that may be configured on a printer. The snippets
# in this file may be copied into the main printer.cfg file. See the
# "example.cfg" file for description of common config parameters.
#
# Note, where an extra config section creates additional pins, the
# section defining the pins must be listed in the config file before
# any sections using those pins.


# Z height probe. One may define this section to enable Z height
# probing hardware. When this section is enabled, PROBE and
# QUERY_PROBE extended g-code commands become available. The probe
# section also creates a virtual "probe:z_virtual_endstop" pin. One
# may set the stepper_z endstop_pin to this virtual pin on cartesian
# style printers that use the probe in place of a z endstop. If using
# "probe:z_virtual_endstop" then do not define a position_endstop in
# the stepper_z config section.
#[probe]
#pin: ar15
#   Probe detection pin. This parameter must be provided.
#x_offset: 0.0
#   The distance (in mm) between the probe and the nozzle along the
#   x-axis. The default is 0.
#y_offset: 0.0
#   The distance (in mm) between the probe and the nozzle along the
#   y-axis. The default is 0.
#z_offset:
#   The distance (in mm) between the bed and the nozzle when the probe
#   triggers. This parameter must be provided.
#speed: 5.0
#   Speed (in mm/s) of the Z axis when probing. The default is 5mm/s.
#activate_gcode:
#   A list of G-Code commands (one per line; subsequent lines
#   indented) to execute prior to each probe attempt. This may be
#   useful if the probe needs to be activated in some way. Do not
#   issue any commands here that move the toolhead (eg, G1). The
#   default is to not run any special G-Code commands on activation.
#deactivate_gcode:
#   A list of G-Code commands (one per line; subsequent lines
#   indented) to execute after each probe attempt completes. Do not
#   issue any commands here that move the toolhead. The default is to
#   not run any special G-Code commands on deactivation.


# BLTouch probe. One may define this section (instead of a probe
# section) to enable a BLTouch probe. (Note! This bltouch module may
# not work correctly with some BLTouch "clones"!) A virtual
# "probe:z_virtual_endstop" pin is also created (see the "probe"
# section above for the details).
#[bltouch]
#sensor_pin:
#   Pin connected to the BLTouch sensor pin. This parameter must be
#   provided.
#control_pin:
#   Pin connected to the BLTouch control pin. This parameter must be
#   provided.
#pin_move_time: 0.200
#   The amount of time (in seconds) that it takes the BLTouch pin to
#   move up or down. The default is 0.200 seconds.
#x_offset:
#y_offset:
#z_offset:
#speed:
#   See the "probe" section for information on these parameters.


# Bed tilt compensation. One may define a [bed_tilt] config section to
# enable move transformations that account for a tilted bed.
#[bed_tilt]
#x_adjust: 0
#   The amount to add to each move's Z height for each mm on the X
#   axis. The default is 0.
#y_adjust: 0
#   The amount to add to each move's Z height for each mm on the Y
#   axis. The default is 0.
#z_adjust: 0
#   The amount to add to the Z height when the nozzle is nominally at
#   0,0. The default is 0.
# The remaining parameters control a BED_TILT_CALIBRATE extended
# g-code command that may be used to calibrate appropriate x and y
# adjustment parameters.
#points:
#   A list of X,Y coordinates (one per line; subsequent lines
#   indented) that should be probed during a BED_TILT_CALIBRATE
#   command. Specify coordinates of the nozzle and be sure the probe
#   is above the bed at the given nozzle coordinates. The default is
#   to not enable the command.
#speed: 50
#   The speed (in mm/s) of non-probing moves during the
#   calibration. The default is 50.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5.
#samples: 1
#   The number of times to probe each point.  The probed z-values
#   will be averaged.  The default is to probe 1 time.
#sample_retract_dist: 2.0
#   The distance (in mm) to retract between each sample if
#   sampling more than once.  Default is 2mm.


# Mesh Bed Leveling. One may define a [bed_mesh] config section
# to enable move transformations that offset the z axis based
# on a mesh generated from probed points. Note that bed_mesh
# and bed_tilt are incompatible, both cannot be defined.  When
# using a probe to home the z-axis, it is recommended to define
# a [homing_override] section in printer.cfg to home toward the
# center of the print area.
#[bed_mesh]
#speed: 50
#   The speed (in mm/s) of non-probing moves during the
#   calibration. The default is 50.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5.
#samples: 1
#   The number of times to probe each point.  The probed z-values
#   will be averaged.  The default is to probe 1 time.
#sample_retract_dist: 2.0
#   The distance (in mm) to retract between each sample if
#   sampling more than once.  Default is 2mm.
#min_point:
#   An X,Y point defining the minimum coordinate to probe on
#   the bed. Note that this refers to the nozzle position,
#   and take care that you do not define a point that will move
#   the probe off of the bed. This parameter must be provided.
#max_point:
#   An X,Y point defining the maximum coordinate to probe on
#   the bed. Follow the same precautions as listed in min_point.
#   Also note that this does not necessarily define the last point
#   probed, only the maximum coordinate. This parameter must be provided.
#probe_count: 3,3
#   A comma separated pair of integer values (X,Y) defining the number
#   of points to probe along each axis. A single value is also valid,
#   in which case that value will be for both axes. Default is 3,3
#   which probes a 3x3 grid.
#fade_start: 1.0
#   The gcode z position in which to start phasing out z-adjustment
#   when fade is enabled.  Default is 1.0.
#fade_end: 0.0
#   The gcode z position in which phasing out completes.  When set
#   to a value below fade_start, fade is disabled. It should be
#   noted that fade may add unwanted scaling along the z-axis of a
#   print.  If a user wishes to enable fade, a value of 10.0 is
#   recommended. Default is 0.0, which disables fade.
#fade_target:
#   The z position in which fade should converge. When this value is set
#   to a non-zero value it must be within the range of z-values in the mesh.
#   Users that wish to converge to the z homing position should set this to 0.
#   Default is the average z value of the mesh.
#split_delta_z: .025
#   The amount of Z difference (in mm) along a move that will
#   trigger a split. Default is .025.
#move_check_distance: 5.0
#   The distance (in mm) along a move to check for split_delta_z.
#   This is also the minimum length that a move can be split. Default
#   is 5.0.
#mesh_pps: 2,2
#   A comma separated pair of integers (X,Y) defining the number of
#   points per segment to interpolate in the mesh along each axis. A
#   "segment" can be defined as the space between each probed
#   point. The user may enter a single value which will be applied
#   to both axes.  Default is 2,2.
#algorithm: lagrange
#   The interpolation algorithm to use. May be either "lagrange"
#   or "bicubic". This option will not affect 3x3 grids, which
#   are forced to use lagrange sampling.  Default is lagrange.
#bicubic_tension: .2
#   When using the bicubic algorithm the tension parameter above
#   may be applied to change the amount of slope interpolated.
#   Larger numbers will increase the amount of slope, which
#   results in more curvature in the mesh. Default is .2.


# Multiple Z stepper tilt adjustment. This feature enables independent
# adjustment of multiple z steppers (see stepper_z1 section below) to
# adjust for tilt. If this section is present then a Z_TILT_ADJUST
# extended G-Code command becomes available.
#[z_tilt]
#z_positions:
#   A list of X,Y coordinates (one per line; subsequent lines
#   indented) describing the location of each Z stepper. The first
#   entry corresponds to stepper_z, the second to stepper_z1, the
#   third to stepper_z2, etc. This parameter must be provided.
#points:
#   A list of X,Y coordinates (one per line; subsequent lines
#   indented) that should be probed during a Z_TILT_ADJUST command.
#   Specify coordinates of the nozzle and be sure the probe is above
#   the bed at the given nozzle coordinates. This parameter must be
#   provided.
#speed: 50
#   The speed (in mm/s) of non-probing moves during the calibration.
#   The default is 50.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5.
#samples: 1
#   The number of times to probe each point.  The probed z-values
#   will be averaged.  The default is to probe 1 time.
#sample_retract_dist: 2.0
#   The distance (in mm) to retract between each sample if
#   sampling more than once.  Default is 2mm.


# Moving gantry leveling using 4 independently controlled Z motors.
# Corrects hyperbolic parabola effects (potato chip) on moving gantry
# which is more flexible.
# WARNING: Using this on a moving bed may lead to undesirable results.
# If this section is present then a QUAD_GANTRY_LEVEL extended G-Code
# command becomes available. This routine assumes the following Z motor
# configuration:
# ----------------
# |Z1          Z2|
# |  ---------   |
# |  |       |   |
# |  |       |   |
# |  x--------   |
# |Z           Z3|
# ----------------
# Where x is the (0,0) point on the bed
#[quad_gantry_level]
#gantry_corners:
#   A newline separated list of X,Y coordinates describing the
#   two opposing corners of the gantry. The first entry corresponds to
#   Z, the second to Z2.
#   This parameter must be provided.
#points:
#   A newline separated list of four X,Y points that should be probed
#   during a QUAD_GANTRY_LEVEL command.
#   Order of the locations is important, and should correspond to Z,Z1
#   Z2, and Z3 location in order.
#   This parameter must be provided.
#   For maximum accuracy, ensure your probe offsets are configured.
#speed: 50
#   The speed (in mm/s) of non-probing moves during the calibration.
#   The default is 50.
#horizontal_move_z: 5
#   The height (in mm) that the head should be commanded to move to
#   just prior to starting a probe operation. The default is 5
#samples: 1
#   Number of probe samples per point. The defaut is 1
#sample_retract_dist: 2.0
#   Distance in mm to retract the probe between samples. Default is 2.


# In a multi-extruder printer add an additional extruder section for
# each additional extruder. The additional extruder sections should be
# named "extruder1", "extruder2", "extruder3", and so on. See the
# "extruder" section in example.cfg for a description of available
# parameters.
#[extruder1]
#step_pin: ar36
#dir_pin: ar34
#...
#shared_heater:
#   If this extruder uses the same heater already defined for another
#   extruder then place the name of that extruder here.  For example,
#   should extruder3 and extruder4 share a heater then the extruder3
#   config section should define the heater and the extruder4 section
#   should specify "shared_heater: extruder3". The default is to not
#   reuse an existing heater.
#deactivate_gcode:
#   A list of G-Code commands (one per line; subsequent lines
#   indented) to execute on a G-Code tool change command (eg, "T1")
#   that deactivates this extruder and activates some other
#   extruder. It only makes sense to define this section on
#   multi-extruder printers. The default is to not run any special
#   G-Code commands on deactivation.
#activate_gcode:
#   A list of G-Code commands (one per line; subsequent lines
#   indented) to execute on a G-Code tool change command (eg, "T0")
#   that activates this extruder. It only makes sense to define this
#   section on multi-extruder printers. The default is to not run any
#   special G-Code commands on activation.


# Support for cartesian printers with dual carriages on a single
# axis. The active carriage is set via the SET_DUAL_CARRIAGE extended
# g-code command. The "SET_DUAL_CARRIAGE CARRIAGE=1" command will
# activate the carriage defined in this section (CARRIAGE=0 will
# return activation to the primary carriage). Dual carriage support is
# typically combined with extra extruders - use the SET_DUAL_CARRIAGE
# command in the activate_gcode / deactivate_gcode section of the
# appropriate extruder. Be sure to also use that mechanism to park the
# carriages during deactivation.
#[dual_carriage]
#axis:
#   The axis this extra carriage is on (either x or y). This parameter
#   must be provided.
#step_pin:
#dir_pin:
#enable_pin:
#step_distance:
#endstop_pin:
#position_endstop:
#position_min:
#position_max:
#   See the example.cfg for the definition of the above parameters.


# Heater and temperature sensor verification. Heater verification is
# automatically enabled for each heater that is configured on the
# printer. Use verify_heater sections to change the default settings.
#[verify_heater heater_config_name]
#heating_gain: 2
#   The minimum temperature (in Celsius) that the heater must increase
#   by when approaching a new target temperature. The default is 2.
#check_gain_time:
#   The amount of time (in seconds) that the heating_gain must be met
#   in before an error is raised. The default is 20 seconds for
#   extruders and 60 seconds for heater_bed.
#hysteresis: 5
#   The difference between the target temperature and the current
#   temperature for the heater to be considered within range of the
#   target temperature. The default is 5.
#max_error: 120
#   The maximum temperature difference a heater that falls outside the
#   target temperature range may accumulate before an error is
#   raised. For example, if the target temperature is 200, the
#   hysteresis is 5, the max_error is 120, and the temperature is
#   reported at 185 degrees for 12 seconds then an error would be
#   raised (or 24 seconds at 190, or 120 seconds at 194, etc.). The
#   default is 120.


# Idle timeout. An idle timeout is automatically enabled - add an
# explicit idle_timeout config section to change the default settings.
#[idle_timeout]
#gcode:
#   A list of G-Code commands (one per line; subsequent lines
#   indented) to execute on an idle timeout. The default is to run
#   "TURN_OFF_HEATERS" and "M84".
#timeout: 600
#   Idle time (in seconds) to wait before running the above G-Code
#   commands. The default is 600 seconds.


# Multi-stepper axes. On a cartesian style printer, the stepper
# controlling a given axis may have additional config blocks defining
# steppers that should be stepped in concert with the primary
# stepper. One may define any number of sections with a numeric suffix
# starting at 1 (for example, "stepper_z1", "stepper_z2", etc.).
#[stepper_z1]
#step_pin: ar36
#dir_pin: ar34
#enable_pin: !ar30
#step_distance: .005
#   See the example.cfg for the definition of the above parameters.
#endstop_pin: ^ar19
#   If an endstop_pin is defined for the additional stepper then the
#   stepper will home until the endstop is triggered. Otherwise, the
#   stepper will home until the endstop on the primary stepper for the
#   axis is triggered.


# Stepper phase adjusted endstops. To use this feature, define a
# config section with an "endstop_phase" prefix followed by the name
# of the corresponding stepper config section (for example,
# "[endstop_phase stepper_z]"). This feature can improve the accuracy
# of endstop switches. Add a bare "[endstop_phase]" declaration to
# enable the ENDSTOP_PHASE_CALIBRATE command.
#[endstop_phase stepper_z]
#phases:
#   This specifies the number of phases of the given stepper motor
#   driver (which is the number of micro-steps multiplied by four).
#   This setting is automatically determined if one uses TMC2130,
#   TMC2208, TMC2224 or TMC2660 drivers with run-time configuration.
#   Otherwise, this parameter must be provided.
#endstop_accuracy: 0.200
#   Sets the expected accuracy (in mm) of the endstop. This represents
#   the maximum error distance the endstop may trigger (eg, if an
#   endstop may occasionally trigger 100um early or up to 100um late
#   then set this to 0.200 for 200um). The default is
#   phases*step_distance.
#endstop_phase:
#   This specifies the phase of the stepper motor driver to expect
#   when hitting the endstop. Only set this value if one is sure the
#   stepper motor driver is reset every time the mcu is reset. If this
#   is not set, then the stepper phase will be detected on the first
#   home and that phase will be used on all subsequent homes.
#endstop_align_zero: False
#   If true then the position_endstop of the axis will effectively be
#   modified so that the zero position for the axis occurs at a full
#   step on the stepper motor. (If used on the Z axis and the print
#   layer height is a multiple of a full step distance then every
#   layer will occur on a full step.) The default is False.


# Heater cooling fans (one may define any number of sections with a
# "heater_fan" prefix). A "heater fan" is a fan that will be enabled
# whenever its associated heater is active. By default, a heater_fan
# has a shutdown_speed equal to max_power.
#[heater_fan my_nozzle_fan]
#pin:
#max_power:
#shutdown_speed:
#cycle_time:
#hardware_pwm:
#kick_start_time:
#   See the "fan" section in example.cfg for a description of the
#   above parameters.
#heater: extruder
#   Name of the config section defining the heater that this fan is
#   associated with. If a comma separated list of heater names is
#   provided here, then the fan will be enabled when any of the given
#   heaters are enabled. The default is "extruder".
#heater_temp: 50.0
#   A temperature (in Celsius) that the heater must drop below before
#   the fan is disabled. The default is 50 Celsius.
#fan_speed: 1.0
#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan
#   will be set to when its associated heater is enabled. The default
#   is 1.0


# Temperature-triggered cooling fans (one may define any number of
# sections with a "temperature_fan" prefix). A "temperature fan" is a
# fan that will be enabled whenever its associated sensor is above a
# set temperature. By default, a temperature_fan has a shutdown_speed
# equal to max_power.
#[temperature_fan my_temp_fan]
#pin:
#max_power:
#shutdown_speed:
#cycle_time:
#hardware_pwm:
#kick_start_time:
#   See the "fan" section in example.cfg for a description of the
#   above parameters.
#sensor_type: EPCOS 100K B57560G104F
#sensor_pin: analog13
#   See the "heater" section for details about the sensor_type and
#   sensor_pin parameters.
#min_temp: 0
#max_temp: 100
#   The maximum range of valid temperatures (in Celsius) that the
#   sensor must remain within. This controls a safety feature
#   implemented in the micro-controller code - should the measured
#   temperature ever fall outside this range then the micro-controller
#   will go into a shutdown state. Set this range just wide enough so
#   that reasonable temperatures do not result in an error. These
#   parameters must be provided.
#target_temp: 40.0
#   A temperature (in Celsius) that will be the target temperature.
#   The default is 40 degrees.
#max_speed: 1.0
#   The fan speed (expressed as a value from 0.0 to 1.0) that the fan
#   will be set to when the sensor temperature exceeds the set value.
#   The default is 1.0.
#min_speed: 0.3
#   The minimum fan speed (expressed as a value from 0.0 to 1.0) that
#   the fan will be set to when the sensor temperature is the set
#   value.  The default is 0.3.
#control: watermark
#   Control algorithm (either watermark or pid). This parameter must
#   be provided.
#pid_Kp: 40
#   Kp is the "proportional" constant for the pid. This parameter must
#   be provided for PID heaters.
#pid_Ki: 0.2
#   Ki is the "integral" constant for the pid. This parameter must be
#   provided for PID heaters.
#pid_Kd: 0.1
#   Kd is the "derivative" constant for the pid. This parameter must
#   be provided for PID heaters.
#pid_deriv_time: 2.0
#   A time value (in seconds) over which the derivative in the pid
#   will be smoothed to reduce the impact of measurement noise. The
#   default is 2 seconds.
#pid_integral_max:
#   The maximum "windup" the integral term may accumulate. The default
#   is to use the same value as max_power.


# Additional micro-controllers (one may define any number of sections
# with an "mcu" prefix). Additional micro-controllers introduce
# additional pins that may be configured as heaters, steppers, fans,
# etc.. For example, if an "[mcu extra_mcu]" section is introduced,
# then pins such as "extra_mcu:ar9" may then be used elsewhere in the
# config (where "ar9" is a hardware pin name or alias name on the
# given mcu).
#[mcu my_extra_mcu]
# See the "mcu" section in example.cfg for configuration parameters.


# Servos (one may define any number of sections with a "servo"
# prefix). The servos may be controlled using the SET_SERVO g-code
# command. For example: SET_SERVO SERVO=my_servo ANGLE=180
#[servo my_servo]
#pin: ar7
#   PWM output pin controlling the servo. This parameter must be
#   provided.
#maximum_servo_angle: 180
#   The maximum angle (in degrees) that this servo can be set to. The
#   default is 180 degrees.
#minimum_pulse_width: 0.001
#   The minimum pulse width time (in seconds). This should correspond
#   with an angle of 0 degrees. The default is 0.001 seconds.
#maximum_pulse_width: 0.002
#   The maximum pulse width time (in seconds). This should correspond
#   with an angle of maximum_servo_angle. The default is 0.002
#   seconds.
#initial_angle: 70
#   Initial angle to set the servo to when the mcu resets.  Must be between
#   0 and maximum_servo_angle  This parameter is optional.  If both
#   initial_angle and initial_pulse_width are set initial_angle will be used.
#initial_pulse_width: 0.0015
#   Initial pulse width time (in seconds) to set the servo to when
#   the mcu resets.  Must be between minimum_pulse_width and maximum_pulse_width.
#   This parameter is optional.  If both initial_angle and initial_pulse_width
#   are set initial_angle will be used
#enable: True
#   Enable or disable servo. It can be enabled or disabled later using
#   SET_SERVO SERVO=my_servo ENABLE=<0|1> g-command. The default is True (=enabled)

# Statically configured digital output pins (one may define any number
# of sections with a "static_digital_output" prefix). Pins configured
# here will be setup as a GPIO output during MCU configuration. They
# can not be changed at run-time.
#[static_digital_output my_output_pins]
#pins:
#   A comma separated list of pins to be set as GPIO output pins. The
#   pin will be set to a high level unless the pin name is prefaced
#   with "!". This parameter must be provided.


# Run-time configurable output pins (one may define any number of
# sections with an "output_pin" prefix). Pins configured here will be
# setup as output pins and one may modify them at run-time using
# "SET_PIN PIN=my_pin VALUE=.1" type extended g-code commands.
#[output_pin my_pin]
#pin:
#   The pin to configure as an output. This parameter must be
#   provided.
#pwm: False
#   Set if the output pin should be capable of pulse-width-modulation.
#   If this is true, the value fields should be between 0 and 1; if it
#   is false the value fields should be either 0 or 1. The default is
#   False.
#static_value:
#   If this is set, then the pin is assigned to this value at startup
#   and the pin can not be changed during runtime. A static pin uses
#   slightly less ram in the micro-controller. The default is to use
#   runtime configuration of pins.
#value:
#   The value to initially set the pin to during MCU configuration.
#   The default is 0 (for low voltage).
#shutdown_value:
#   The value to set the pin to on an MCU shutdown event. The default
#   is 0 (for low voltage).
#cycle_time: 0.100
#   The amount of time (in seconds) per PWM cycle. It is recommended
#   this be 10 milliseconds or greater when using software based
#   PWM. The default is 0.100 seconds for pwm pins.
#hardware_pwm: False
#   Enable this to use hardware PWM instead of software PWM. The
#   default is False.
#scale:
#   This parameter can be used to alter how the 'value' and
#   'shutdown_value' parameters are interpreted for pwm pins. If
#   provided, then the 'value' parameter should be between 0.0 and
#   'scale'. This may be useful when configuring a PWM pin that
#   controls a stepper voltage reference. The 'scale' can be set to
#   the equivalent stepper amperage if the PWM were fully enabled, and
#   then the 'value' parameter can be specified using the desired
#   amperage for the stepper. The default is to not scale the 'value'
#   parameter.


# Multiple pin outputs (one may define any number of sections with a
# "multi_pin" prefix). A multi_pin output creates an internal pin
# alias that can modify multiple output pins each time the alias pin
# is set. For example, one could define a "[multi_pin my_fan]" object
# containing two pins and then set "pin=multi_pin:my_fan" in the
# "[fan]" section - on each fan change both output pins would be
# updated. These aliases may not be used with stepper motor pins.
#[multi_pin my_multi_pin]
#pins:
#   A comma separated list of pins associated with this alias. This
#   parameter must be provided.


# Statically configured AD5206 digipots connected via SPI bus (one may
# define any number of sections with an "ad5206" prefix).
#[ad5206 my_digipot]
#enable_pin:
#   The pin corresponding to the AD5206 chip select line. This pin
#   will be set to low at the start of SPI messages and raised to high
#   after the message completes. This parameter must be provided.
#channel_1:
#channel_2:
#channel_3:
#channel_4:
#channel_5:
#channel_6:
#   The value to statically set the given AD5206 channel to. This is
#   typically set to a number between 0.0 and 1.0 with 1.0 being the
#   highest resistance and 0.0 being the lowest resistance. However,
#   the range may be changed with the 'scale' parameter (see below).
#   If a channel is not specified then it is left unconfigured.
#scale:
#   This parameter can be used to alter how the 'channel_x' parameters
#   are interpreted. If provided, then the 'channel_x' parameters
#   should be between 0.0 and 'scale'. This may be useful when the
#   AD5206 is used to set stepper voltage references. The 'scale' can
#   be set to the equivalent stepper amperage if the AD5206 were at
#   its highest resistance, and then the 'channel_x' parameters can be
#   specified using the desired amperage value for the stepper. The
#   default is to not scale the 'channel_x' parameters.


# Statically configured MCP4451 digipot connected via I2C bus (one may
# define any number of sections with an "mcp4451" prefix).
#[mcp4451 my_digipot]
#i2c_mcu: mcu
#   The name of the micro-controller that the MCP4451 chip is
#   connected to. The default is "mcu".
#i2c_address:
#   The i2c address that the chip is using on the i2c bus. This
#   parameter must be provided.
#wiper_0:
#wiper_1:
#wiper_2:
#wiper_3:
#   The value to statically set the given MCP4451 "wiper" to. This is
#   typically set to a number between 0.0 and 1.0 with 1.0 being the
#   highest resistance and 0.0 being the lowest resistance. However,
#   the range may be changed with the 'scale' parameter (see
#   below). If a wiper is not specified then it is left unconfigured.
#scale:
#   This parameter can be used to alter how the 'wiper_x' parameters
#   are interpreted. If provided, then the 'wiper_x' parameters should
#   be between 0.0 and 'scale'. This may be useful when the MCP4451 is
#   used to set stepper voltage references. The 'scale' can be set to
#   the equivalent stepper amperage if the MCP4451 were at its highest
#   resistance, and then the 'wiper_x' parameters can be specified
#   using the desired amperage value for the stepper. The default is
#   to not scale the 'wiper_x' parameters.


# Statically configured MCP4728 digital-to-analog converter connected
# via I2C bus (one may define any number of sections with an "mcp4728"
# prefix).
#[mcp4728 my_dac]
#i2c_mcu: mcu
#   The name of the micro-controller that the MCP4451 chip is
#   connected to. The default is "mcu".
#i2c_address:
#   The i2c address that the chip is using on the i2c bus. The default
#   is zero.
#channel_a:
#channel_b:
#channel_c:
#channel_d:
#   The value to statically set the given MCP4728 channel to. This is
#   typically set to a number between 0.0 and 1.0 with 1.0 being the
#   highest voltage and 0.0 being the lowest voltage. However, the
#   range may be changed with the 'scale' parameter (see below). If a
#   channel is not specified then it is left unconfigured.
#scale:
#   This parameter can be used to alter how the 'channel_x' parameters
#   are interpreted. If provided, then the 'channel_x' parameters
#   should be between 0.0 and 'scale'. This may be useful when the
#   MCP4728 is used to set stepper voltage references. The 'scale' can
#   be set to the equivalent stepper amperage if the MCP4728 were at
#   its highest voltage, and then the 'channel_x' parameters can be
#   specified using the desired amperage value for the stepper. The
#   default is to not scale the 'channel_x' parameters.


# Configure an SX1509 I2C to GPIO expander. Due to the delay incurred
# by I2C communication you should NOT use SX1509 pins as stepper enable,
# step or dir pins or any other pin that requires fast bit-banging. They
# are best used as static or gcode controlled digital outputs or hardware-pwm
# pins for e.g. fans. One may define any number of sections with an "sx1509"
# prefix. Each expander provides a set of 16 pins (sx1509_my_sx1509:PIN_0 to
# sx1509_my_sx1509:PIN_15) which can be used in the printer configuration.
#[sx1509 my_sx1509]
#address:
#   I2C address used by this expander. Depending on the hardware jumpers
#   this is one out of the following addresses: 0x3E 0x3F 0x70 0x71. This
#   parameter must be provided
#bus: 0
#   If the I2C implementation of your microcontroller supports multiple I2C
#   busses, you may specify the bus number here. The default is 0.


# Configure a TMC2130 stepper motor driver via SPI bus. To use this
# feature, define a config section with a "tmc2130" prefix followed by
# the name of the corresponding stepper config section (for example,
# "[tmc2130 stepper_x]").
#[tmc2130 stepper_x]
#cs_pin:
#   The pin corresponding to the TMC2130 chip select line. This pin
#   will be set to low at the start of SPI messages and raised to high
#   after the message completes. This parameter must be provided.
#microsteps:
#   The number of microsteps to configure the driver to use. Valid
#   values are 1, 2, 4, 8, 16, 32, 64, 128, 256. This parameter must
#   be provided.
#interpolate: True
#   If true, enable step interpolation (the driver will internally
#   step at a rate of 256 micro-steps). The default is True.
#run_current:
#   The amount of current (in amps) to configure the driver to use
#   during stepper movement. This parameter must be provided.
#hold_current:
#   The amount of current (in amps) to configure the driver to use
#   when the stepper is not moving. The default is to use the same
#   value as run_current.
#sense_resistor: 0.110
#   The resistance (in ohms) of the motor sense resistor. The default
#   is 0.110 ohms.
#stealthchop_threshold: 0
#   The velocity (in mm/s) to set the "stealthChop" threshold to. When
#   set, "stealthChop" mode will be enabled if the stepper motor
#   velocity is below this value. The default is 0, which disables
#   "stealthChop" mode.
#driver_IHOLDDELAY: 8
#driver_TPOWERDOWN: 0
#driver_BLANK_TIME_SELECT: 1
#driver_TOFF: 4
#driver_HEND: 7
#driver_HSTRT: 0
#driver_PWM_AUTOSCALE: True
#driver_PWM_FREQ: 1
#driver_PWM_GRAD: 4
#driver_PWM_AMPL: 128
#driver_SGT: 0
#   Set the given register during the configuration of the TMC2130
#   chip. This may be used to set custom motor parameters. The
#   defaults for each parameter are next to the parameter name in the
#   above list.
#diag1_pin:
#   The micro-controller pin attached to the DIAG1 line of the TMC2130
#   chip. Setting this creates a "tmc2130_stepper_x:virtual_endstop"
#   virtual pin which may be used as the stepper's endstop_pin. Doing
#   this enables "sensorless homing". (Be sure to also set driver_SGT
#   to an appropriate sensitivity value.) The default is to not enable
#   sensorless homing. See docs/Sensorless_Homing.md for details on how
#   to configure this.


# Configure a TMC2208 (or TMC2224) stepper motor driver via single
# wire UART. To use this feature, define a config section with a
# "tmc2208" prefix followed by the name of the corresponding stepper
# config section (for example, "[tmc2208 stepper_x]").
#[tmc2208 stepper_x]
#uart_pin:
#   The pin connected to the TMC2208 PDN_UART line. This parameter
#   must be provided.
#tx_pin:
#   If using separate receive and transmit lines to communicate with
#   the driver then set uart_pin to the receive pin and tx_pin to the
#   transmit pin. The default is to use uart_pin for both reading and
#   writing.
#microsteps:
#   The number of microsteps to configure the driver to use. Valid
#   values are 1, 2, 4, 8, 16, 32, 64, 128, 256. This parameter must
#   be provided.
#interpolate: True
#   If true, enable step interpolation (the driver will internally
#   step at a rate of 256 micro-steps). The default is True.
#run_current:
#   The amount of current (in amps) to configure the driver to use
#   during stepper movement. This parameter must be provided.
#hold_current:
#   The amount of current (in amps) to configure the driver to use
#   when the stepper is not moving. The default is to use the same
#   value as run_current.
#sense_resistor: 0.110
#   The resistance (in ohms) of the motor sense resistor. The default
#   is 0.110 ohms.
#stealthchop_threshold: 0
#   The velocity (in mm/s) to set the "stealthChop" threshold to. When
#   set, "stealthChop" mode will be enabled if the stepper motor
#   velocity is below this value. The default is 0, which disables
#   "stealthChop" mode.
#driver_IHOLDDELAY: 8
#driver_TPOWERDOWN: 20
#driver_BLANK_TIME_SELECT: 2
#driver_TOFF: 3
#driver_HEND: 0
#driver_HSTRT: 5
#driver_PWM_AUTOGRAD: True
#driver_PWM_AUTOSCALE: True
#driver_PWM_LIM: 12
#driver_PWM_REG: 8
#driver_PWM_FREQ: 1
#driver_PWM_GRAD: 14
#driver_PWM_OFS: 36
#   Set the given register during the configuration of the TMC2208
#   chip. This may be used to set custom motor parameters. The
#   defaults for each parameter are next to the parameter name in the
#   above list.


# Configure a TMC2660 stepper motor driver via SPI bus. To use this
# feature, define a config section with a tmc2660 prefix followed by
# the name of the corresponding stepper config section (for example,
# "[tmc2660 stepper_x]"). The current of the TMC2660 stepper driver
# is adjustable at run-time using
# "SET_TMC_CURRENT STEPPER=stepper_x CURRENT=.1" type extended g-code
# commands.
#[tmc2660 stepper_x]
#cs_pin:
#   The pin corresponding to the TMC2660 chip select line. This pin
#   will be set to low at the start of SPI messages and set to high
#   after the message transfer completes. This parameter must be provided.
#spi_bus:
#   Select the SPI bus the TMC2660 stepper driver is connected to.
#   This depends on the physical connections on your board, as well as
#   the SPI implementation of your particular micro-controller. The
#   default is bus 0.
#spi_speed: 2000000
#   SPI bus frequency used to communicate with the TMC2660 stepper
#   driver. The default is 2000000.
#microsteps:
#   The number of microsteps to configure the driver to use. Valid
#   values are 1, 2, 4, 8, 16, 32, 64, 128, 256. This parameter must
#   be provided.
#interpolate: True
#   If true, enable step interpolation (the driver will internally
#   step at a rate of 256 micro-steps). This only works if microsteps
#   is set to 16. The default is True.
#run_current:
#   The amount of current (in ampere) used by the driver during stepper
#   movement. This parameter must be provided.
#idle_current_percent: 100
#   The percentage of the run_current the stepper driver will be
#   lowered to when the idle timeout expires (you need to set up the
#   timeout using a [idle_timeout] config section). The current will
#   be raised again once the stepper has to move again. Make sure to
#   set this to a high enough value such that the steppers do not lose
#   their position. There is also small delay until the  current is
#   raised again, so take this into account when commanding fast moves
#   while the stepper is idling. The default is 100 (no reduction).
#driver_DEDGE: False
#driver_TBL: 36
#   Valid values are 16, 24, 36, 54.
#driver_CHM: spreadcycle
#   Valid values are 'spreadcycle' and 'constant_toff'
#driver_RNDTF: False
#driver_HDEC: False
#driver_HEND: 7 if spreadcycle is used, 3 otherwise
#driver_HSTRT: 5 if spreadcycle is used, 4 otherwise
#driver_TOFF: 7 if spreadcycle is used, 4 otherwise
#driver_SEIMIN: half
#   Valid values are 'quarter' and 'half'.
#driver_SEDN: 32
#   Valid values are 1, 2, 8, 32.
#driver_SEMAX: 0
#driver_SEUP: 1
#   Valid values are 1, 2, 4, 8.
#driver_SEMIN: 0
#driver_SFILT: True
#driver_SGT: -64
#driver_SLPH: min
#   Valid values are 'min', 'min_tc', 'med_tc', 'max'
#driver_SLPL: min
#   Valid values are 'min', 'med', 'max'
#driver_DISS2G: False
#driver_TS2G: 0.8
#   Valid values are 0.8, 1.2, 1.6, 3.2.
#driver_VSENSE: high
#   Valid values are 'high' and 'low'
#
#   Set the given parameter during the configuration of the TMC2660
#   chip. This may be used to set custom driver parameters. The
#   defaults for each parameter are next to the parameter name in the
#   list above. See the TMC2660 datasheet about what each parameter
#   does and what the restrictions on parameter combinations are.


# Homing override. One may use this mechanism to run a series of
# g-code commands in place of a G28 found in the normal g-code input.
# This may be useful on printers that require a specific procedure to
# home the machine.
#[homing_override]
#gcode:
#   A list of G-Code commands (one per line; subsequent lines
#   indented) to execute in place of G28 commands found in the normal
#   g-code input. If a G28 is contained in this list of commands then
#   it will invoke the normal homing procedure for the printer. The
#   commands listed here must home all axes. This parameter must be
#   provided.
#axes: xyz
#   The axes to override. For example, if this is set to "z" then the
#   override script will only be run when the z axis is homed (eg, via
#   a "G28" or "G28 Z0" command). Note, the override script should
#   still home all axes. The default is "xyz" which causes the
#   override script to be run in place of all G28 commands.
#set_position_x:
#set_position_y:
#set_position_z:
#   If specified, the printer will assume the axis is at the specified
#   position prior to running the above g-code commands. Setting this
#   disables homing checks for that axis. This may be useful if the
#   head must move prior to invoking the normal G28 mechanism for an
#   axis. The default is to not force a position for an axis.


# Support manually moving stepper motors for diagnostic purposes.
# Note, using this feature may place the printer in an invalid state -
# see docs/G-Codes.md for important details.
#[force_move]
#enable_force_move: False
#   Set to true to enable FORCE_MOVE and SET_KINEMATIC_POSITION
#   extended G-Code commands. The default is false.


# A virtual sdcard may be useful if the host machine is not fast
# enough to run OctoPrint well. It allows the Klipper host software to
# directly print gcode files stored in a directory on the host using
# standard sdcard G-Code commands (eg, M24).
#[virtual_sdcard]
#path: ~/.octoprint/uploads/
#   The path of the local directory on the host machine to look for
#   g-code files. This is a read-only directory (sdcard file writes
#   are not supported). One may point this to OctoPrint's upload
#   directory (generally ~/.octoprint/uploads/ ). This parameter must
#   be provided.


# Support for a display attached to the micro-controller.
#[display]
#lcd_type:
#   The type of LCD chip in use. This may be "hd44780" (which is used
#   in "RepRapDiscount 2004 Smart Controller" type displays), "st7920"
#   (which is used in "RepRapDiscount 12864 Full Graphic Smart
#   Controller" type displays), "uc1701" (which is used in "MKS Mini
#   12864" type displays), or "ssd1306". This parameter must be
#   provided.
#rs_pin:
#e_pin:
#d4_pin:
#d5_pin:
#d6_pin:
#d7_pin:
#   The pins connected to an hd44780 type lcd. These parameters must
#   be provided when using an hd44780 display.
#cs_pin:
#sclk_pin:
#sid_pin:
#   The pins connected to an st7920 type lcd. These parameters must be
#   provided when using an st7920 display.
#cs_pin:
#a0_pin:
#   The pins connected to an uc1701 type lcd. These parameters must be
#   provided when using an uc1701 display.
#cs_pin:
#dc_pin:
#   The pins connected to an ssd1306 type lcd when in "4-wire" spi
#   mode. The default is to use i2c mode for ssd1306 displays.
#menu_root:
#   Entry point for menu, root menu container name. If this parameter
#   is not provided then default menu root is used. When provided
#   menu entry is 'deck' type then it'll be initiated immediately at startup.
#   Description of menu items is located in example-menu.cfg file.
#menu_timeout:
#   Timeout for menu. Being inactive this amount of seconds will trigger
#   menu exit or return to root menu when having autorun enabled.
#   The default is 0 seconds (disabled)
#encoder_pins:
#   The pins connected to encoder. 2 pins must be provided when
#   using encoder. This parameter must be provided when using menu.
#click_pin:
#   The pin connected to 'enter' button or encoder 'click'. This parameter
#   must be provided when using menu.
#back_pin:
#   The pin connected to 'back' button. This parameter is optional, menu
#   can be used without it.
#up_pin:
#   The pin connected to 'up' button. This parameter must be provided
#   when using menu without encoder.
#down_pin:
#   The pin connected to 'down' button. This parameter must be provided
#   when using menu without encoder.
#kill_pin:
#   The pin connected to 'kill' button. This button will call
#   emergency stop.


# Custom thermistors (one may define any number of sections with a
# "thermistor" prefix). A custom thermistor may be used in the
# sensor_type field of a heater config section. (For example, if one
# defines a "[thermistor my_thermistor]" section then one may use a
# "sensor_type: my_thermistor" when defining a heater.) Be sure to
# place the thermistor section in the config file above its first use
# in a heater section.
#[thermistor my_thermistor]
#temperature1:
#resistance1:
#temperature2:
#resistance2:
#temperature3:
#resistance3:
#   Three resistance measurements (in Ohms) at the given temperatures
#   (in Celsius). The three measurements will be used to calculate the
#   Steinhart-Hart coefficients for the thermistor. These parameters
#   must be provided when using Steinhart-Hart to define the
#   thermistor.
#beta:
#   Alternatively, one may define temperature1, resistance1, and beta
#   to define the thermistor parameters. This parameter must be
#   provided when using "beta" to define the thermistor.


# Custom ADC temperature sensors (one may define any number of
# sections with an "adc_temperature" prefix). This allows one to
# define a custom temperature sensor that measures a voltage on an
# Analog to Digital Converter (ADC) pin and uses linear interpolation
# between a set of configured temperature/voltage measurements to
# determine the temperature. The resulting sensor can be used as a
# sensor_type in a heater section. (For example, if one defines a
# "[adc_temperature my_sensor]" section then one may use a
# "sensor_type: my_sensor" when defining a heater.) Be sure to place
# the sensor section in the config file above its first use in a
# heater section.
#[adc_temperature my_sensor]
#temperature1:
#voltage1:
#temperature2:
#voltage2:
#...
#   A set of temperatures (in Celsius) and voltages (in Volts) to use
#   as reference when converting a temperature. At least two
#   measurements must be provided.


# MAXxxxxx serial peripheral interface (SPI) temperature based
# sensors. The following parameters are available in heater sections
# that use one of these sensor types.
#[extruder]
# See the "extruder" section in example.cfg for a description of
# heater parameters. The parameters below describe sensor parameters.
#sensor_type:
#   One of "MAX6675", "MAX31855", "MAX31856", or "MAX31865".
#spi_speed: 4000000
#   The SPI speed (in hz) to use when communicating with the chip.
#   The default is 4000000.
#sensor_pin:
#   The chip select line for the sensor chip. This parameter must be
#   provided.
#tc_type: K
#tc_use_50Hz_filter: False
#tc_averaging_count: 1
#   The above parameters control the sensor parameters of MAX31856
#   chips.  The defaults for each parameter are next to the parameter
#   name in the above list.
#rtd_nominal_r: 100
#rtd_reference_r: 430
#rtd_num_of_wires: 2
#rtd_use_50Hz_filter: False
#   The above parameters control the sensor parameters of MAX31865
#   chips.  The defaults for each parameter are next to the parameter
#   name in the above list.


# G-Code macros (one may define any number of sections with a
# "gcode_macro" prefix).
#[gcode_macro my_cmd]
#gcode:
#   A list of G-Code commands (one per line; subsequent lines
#   indented) to execute in place of "my_cmd". This parameter is
#   evaluated using Python "string format syntax" with the command
#   parameters as named arguments. For example, if one were to define
#   a macro MY_DELAY with gcode "G4 P{DELAY}" then the command
#   "MY_DELAY DELAY=100" would evaluate to "G4 P100". This parameter
#   must be provided.
#default_parameter_<parameter>:
#   One may define any number of options with a "default_parameter_"
#   prefix. Use this to define default values for g-code parameters.
#   For example, if one were to define the macro MY_DELAY with gcode
#   "G4 P{DELAY}" along with "default_parameter_DELAY = 50" then the
#   command "MY_DELAY" would evaluate to "G4 P50". The default is to
#   require that all parameters used in the gcode script be present in
#   the command invoking the macro.


# Replicape support - see the generic-replicape.cfg file for further
# details.
#[replicape]

# Enable the "M118" and "RESPOND" extended commands.
# [respond]
# default_type: echo
#    Sets the default prefix of the "M118" and "RESPOND" output to one of
#    the following:
#        echo: "echo: " (This is the default)
#        command: "// "
#        error: "!! "
# default_prefix: echo:
#    Directly sets the default prefix. If present, this value will override
#    the "default_type".