aboutsummaryrefslogtreecommitdiffstats
path: root/docs/Config_Reference.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/Config_Reference.md')
-rw-r--r--docs/Config_Reference.md3400
1 files changed, 3400 insertions, 0 deletions
diff --git a/docs/Config_Reference.md b/docs/Config_Reference.md
new file mode 100644
index 00000000..4ef71833
--- /dev/null
+++ b/docs/Config_Reference.md
@@ -0,0 +1,3400 @@
+This document is a reference for options available in the Klipper
+config file.
+
+The descriptions in this document are formatted so that it is possible
+to cut-and-paste them into a printer config file. See the
+[installation document](Installation.md) for information on setting up
+Klipper and choosing an initial config file.
+
+# Format of micro-controller pin names
+
+Many config options require the name of a micro-controller pin.
+Klipper uses the hardware names for these pins - for example `PA4`.
+
+For AVR micro-controllers one may also use an Arduino alias (such as
+"ar29" or "analog3"). In order to use Arduino names, the `pin_map`
+variable in the `[mcu]` section must be present and have a value of
+`arduino`.
+
+Pin names may be preceded by `!` to indicate that a reverse polarity
+should be used (eg, trigger on low instead of high).
+
+Input pins may be preceded by `^` to indicate that a hardware pull-up
+resistor should be enabled for the pin. If the micro-controller
+supports pull-down resistors then an input pin may alternatively be
+preceded by `~`.
+
+Note, some config sections may "create" additional pins. Where this
+occurs, the config section defining the pins must be listed in the
+config file before any sections using those pins.
+
+# Common kinematic settings
+
+## [printer]
+
+The printer section controls high level printer settings.
+
+```
+[printer]
+kinematics:
+# The type of printer in use. This option may be one of: cartesian,
+# corexy, corexz, delta, rotary_delta, polar, winch, or none. This
+# parameter must be specified.
+max_velocity: 500
+# Maximum velocity (in mm/s) of the toolhead (relative to the
+# print). This parameter must be specified.
+max_accel: 3000
+# Maximum acceleration (in mm/s^2) of the toolhead (relative to the
+# print). This parameter must be specified.
+#max_accel_to_decel:
+# A pseudo acceleration (in mm/s^2) controlling how fast the
+# toolhead may go from acceleration to deceleration. It is used to
+# reduce the top speed of short zig-zag moves (and thus reduce
+# printer vibration from these moves). The default is half of
+# max_accel.
+#square_corner_velocity: 5.0
+# The maximum velocity (in mm/s) that the toolhead may travel a 90
+# degree corner at. A non-zero value can reduce changes in extruder
+# flow rates by enabling instantaneous velocity changes of the
+# toolhead during cornering. This value configures the internal
+# centripetal velocity cornering algorithm; corners with angles
+# larger than 90 degrees will have a higher cornering velocity while
+# corners with angles less than 90 degrees will have a lower
+# cornering velocity. If this is set to zero then the toolhead will
+# decelerate to zero at each corner. The default is 5mm/s.
+```
+
+## [stepper]
+
+Stepper motor definitions. Different printer types (as specified by
+the "kinematics" option in the [printer] config section) require
+different names for the stepper (eg, `stepper_x` vs `stepper_a`).
+Below are common stepper definitions.
+
+```
+[stepper_x]
+step_pin:
+# Step GPIO pin (triggered high). This parameter must be provided.
+dir_pin:
+# Direction GPIO pin (high indicates positive direction). This
+# parameter must be provided.
+enable_pin:
+# Enable pin (default is enable high; use ! to indicate enable
+# low). If this parameter is not provided then the stepper motor
+# driver must always be enabled.
+step_distance:
+# Distance in mm that each step causes the axis to travel. This
+# parameter must be provided.
+endstop_pin:
+# Endstop switch detection pin. This parameter must be provided for
+# the X, Y, and Z steppers on cartesian style printers.
+#position_min: 0
+# Minimum valid distance (in mm) the user may command the stepper to
+# move to. The default is 0mm.
+position_endstop:
+# Location of the endstop (in mm). This parameter must be provided
+# for the X, Y, and Z steppers on cartesian style printers.
+position_max:
+# Maximum valid distance (in mm) the user may command the stepper to
+# move to. This parameter must be provided for the X, Y, and Z
+# steppers on cartesian style printers.
+#homing_speed: 5.0
+# Maximum velocity (in mm/s) of the stepper when homing. The default
+# is 5mm/s.
+#homing_retract_dist: 5.0
+# Distance to backoff (in mm) before homing a second time during
+# homing. Set this to zero to disable the second home. The default
+# is 5mm.
+#homing_retract_speed:
+# Speed to use on the retract move after homing in case this should
+# be different from the homing speed, which is the default for this
+# parameter
+#second_homing_speed:
+# Velocity (in mm/s) of the stepper when performing the second home.
+# The default is homing_speed/2.
+#homing_positive_dir:
+# If true, homing will cause the stepper to move in a positive
+# direction (away from zero); if false, home towards zero. It is
+# better to use the default than to specify this parameter. The
+# default is true if position_endstop is near position_max and false
+# if near position_min.
+```
+
+## Cartesian Kinematics
+
+See
+[example-cartesian.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/example-cartesian.cfg)
+for an example cartesian kinematics config file.
+
+Only parameters specific to cartesian printers are described here -
+see [common kinematic settings](#common-kinematic-settings) for
+available parameters.
+
+```
+[printer]
+kinematics: cartesian
+max_z_velocity:
+# This sets the maximum velocity (in mm/s) of movement along the z
+# axis. This setting can be used to restrict the maximum speed of
+# the z stepper motor. The default is to use max_velocity for
+# max_z_velocity.
+max_z_accel:
+# This sets the maximum acceleration (in mm/s^2) of movement along
+# the z axis. It limits the acceleration of the z stepper motor. The
+# default is to use max_accel for max_z_accel.
+
+# The stepper_x section is used to describe the stepper controlling
+# the X axis in a cartesian robot.
+[stepper_x]
+
+# The stepper_y section is used to describe the stepper controlling
+# the Y axis in a cartesian robot.
+[stepper_y]
+
+# The stepper_z section is used to describe the stepper controlling
+# the Z axis in a cartesian robot.
+[stepper_z]
+```
+
+## Linear Delta Kinematics
+
+See
+[example-delta.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/example-delta.cfg)
+for an example linear delta kinematics config file.
+
+Only parameters specific to linear delta printers are described here -
+see [common kinematic settings](#common-kinematic-settings) for
+available parameters.
+
+```
+[printer]
+kinematics: delta
+max_z_velocity:
+# For delta printers this limits the maximum velocity (in mm/s) of
+# moves with z axis movement. This setting can be used to reduce the
+# maximum speed of up/down moves (which require a higher step rate
+# than other moves on a delta printer). The default is to use
+# max_velocity for max_z_velocity.
+#minimum_z_position: 0
+# The minimum Z position that the user may command the head to move
+# to. The default is 0.
+delta_radius:
+# Radius (in mm) of the horizontal circle formed by the three linear
+# axis towers. This parameter may also be calculated as:
+# delta_radius = smooth_rod_offset - effector_offset - carriage_offset
+# This parameter must be provided.
+#print_radius:
+# The radius (in mm) of valid toolhead XY coordinates. One may use
+# this setting to customize the range checking of toolhead moves. If
+# a large value is specified here then it may be possible to command
+# the toolhead into a collision with a tower. The default is to use
+# delta_radius for print_radius (which would normally prevent a
+# tower collision).
+
+# The stepper_a section describes the stepper controlling the front
+# left tower (at 210 degrees). This section also controls the homing
+# parameters (homing_speed, homing_retract_dist) for all towers.
+[stepper_a]
+position_endstop: 297.05
+# Distance (in mm) between the nozzle and the bed when the nozzle is
+# in the center of the build area and the endstop triggers. This
+# parameter must be provided for stepper_a; for stepper_b and
+# stepper_c this parameter defaults to the value specified for
+# stepper_a.
+arm_length: 333.0
+# Length (in mm) of the diagonal rod that connects this tower to the
+# print head. This parameter must be provided for stepper_a; for
+# stepper_b and stepper_c this parameter defaults to the value
+# specified for stepper_a.
+#angle:
+# This option specifies the angle (in degrees) that the tower is
+# at. The default is 210 for stepper_a, 330 for stepper_b, and 90
+# for stepper_c.
+
+# The stepper_b section describes the stepper controlling the front
+# right tower (at 330 degrees).
+[stepper_b]
+
+# The stepper_c section describes the stepper controlling the rear
+# tower (at 90 degrees).
+[stepper_c]
+
+# The delta_calibrate section enables a DELTA_CALIBRATE extended
+# g-code command that can calibrate the tower endstop positions and
+# angles.
+[delta_calibrate]
+radius: 50
+# Radius (in mm) of the area that may be probed. This is the radius
+# of nozzle coordinates to be probed; if using an automatic probe
+# with an XY offset then choose a radius small enough so that the
+# probe always fits over the bed. 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.
+```
+
+## CoreXY Kinematics
+
+See
+[example-corexy.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/example-corexy.cfg)
+for an example corexy (and h-bot) kinematics file.
+
+Only parameters specific to corexy printers are described here - see
+[common kinematic settings](#common-kinematic-settings) for available
+parameters.
+
+```
+[printer]
+kinematics: corexy
+max_z_velocity:
+# This sets the maximum velocity (in mm/s) of movement along the z
+# axis. This setting can be used to restrict the maximum speed of
+# the z stepper motor. The default is to use max_velocity for
+# max_z_velocity.
+max_z_accel:
+# This sets the maximum acceleration (in mm/s^2) of movement along
+# the z axis. It limits the acceleration of the z stepper motor. The
+# default is to use max_accel for max_z_accel.
+
+# The stepper_x section is used to describe the X axis as well as the
+# stepper controlling the X+Y movement.
+[stepper_x]
+
+# The stepper_y section is used to describe the Y axis as well as the
+# stepper controlling the X-Y movement.
+[stepper_y]
+
+# The stepper_z section is used to describe the stepper controlling
+# the Z axis.
+[stepper_z]
+```
+
+## CoreXZ Kinematics
+
+See
+[example-corexz.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/example-corexz.cfg)
+for an example corexz kinematics config file.
+
+Only parameters specific to corexz printers are described here - see
+[common kinematic settings](#common-kinematic-settings) for available
+parameters.
+
+```
+[printer]
+kinematics: corexz
+max_z_velocity:
+# This sets the maximum velocity (in mm/s) of movement along the z
+# axis. The default is to use max_velocity for max_z_velocity.
+max_z_accel:
+# This sets the maximum acceleration (in mm/s^2) of movement along
+# the z axis. The default is to use max_accel for max_z_accel.
+
+# The stepper_x section is used to describe the X axis as well as the
+# stepper controlling the X+Z movement.
+[stepper_x]
+
+# The stepper_y section is used to describe the stepper controlling
+# the Y axis.
+[stepper_y]
+
+# The stepper_z section is used to describe the Z axis as well as the
+# stepper controlling the X-Z movement.
+[stepper_z]
+```
+
+## Polar Kinematics
+
+See
+[example-polar.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/example-polar.cfg)
+for an example polar kinematics config file.
+
+Only parameters specific to polar printers are described here - see
+[common kinematic settings](#common-kinematic-settings) for available
+parameters.
+
+POLAR KINEMATICS ARE A WORK IN PROGRESS. Moves around the `0,0`
+position are known to not work properly.
+
+```
+[printer]
+kinematics: polar
+
+# The stepper_bed section is used to describe the stepper controlling
+# the bed.
+[stepper_bed]
+step_distance: 0.001963495
+# On a polar printer the step_distance is the amount each step pulse
+# moves the bed in radians (for example, a 1.8 degree stepper with
+# 16 micro-steps would be 2 * pi * (1.8 / 360) / 16 == 0.001963495).
+# This parameter must be provided.
+max_z_velocity:
+# This sets the maximum velocity (in mm/s) of movement along the z
+# axis. This setting can be used to restrict the maximum speed of
+# the z stepper motor. The default is to use max_velocity for
+# max_z_velocity.
+max_z_accel:
+# This sets the maximum acceleration (in mm/s^2) of movement along
+# the z axis. It limits the acceleration of the z stepper motor. The
+# default is to use max_accel for max_z_accel.
+
+# The stepper_arm section is used to describe the stepper controlling
+# the carriage on the arm.
+[stepper_arm]
+
+# The stepper_z section is used to describe the stepper controlling
+# the Z axis.
+[stepper_z]
+```
+
+## Rotary delta Kinematics
+
+See
+[example-rotary-delta.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/example-rotary-delta.cfg)
+for an example rotary delta kinematics config file.
+
+Only parameters specific to rotary delta printers are described here -
+see [common kinematic settings](#common-kinematic-settings) for
+available parameters.
+
+ROTARY DELTA KINEMATICS ARE A WORK IN PROGRESS. Homing moves may
+timeout and some boundary checks are not implemented.
+
+```
+[printer]
+kinematics: rotary_delta
+max_z_velocity: 50
+# For delta printers this limits the maximum velocity (in mm/s) of
+# moves with z axis movement. This setting can be used to reduce the
+# maximum speed of up/down moves (which require a higher step rate
+# than other moves on a delta printer). The default is to use
+# max_velocity for max_z_velocity.
+#minimum_z_position: 0
+# The minimum Z position that the user may command the head to move
+# to. The default is 0.
+shoulder_radius: 33.900
+# Radius (in mm) of the horizontal circle formed by the three
+# shoulder joints, minus the radius of the circle formed by the
+# effector joints. This parameter may also be calculated as:
+# shoulder_radius = (delta_f - delta_e) / sqrt(12)
+# This parameter must be provided.
+shoulder_height: 412.900
+# Distance (in mm) of the shoulder joints from the bed, minus the
+# effector toolhead height. This parameter must be provided.
+
+# The stepper_a section describes the stepper controlling the rear
+# right arm (at 30 degrees). This section also controls the homing
+# parameters (homing_speed, homing_retract_dist) for all arms.
+[stepper_a]
+step_distance: 0.001963495
+# On a rotary delta printer the step_distance is the amount each
+# step pulse moves the upper arm in radians (for example, a directly
+# connected 1.8 degree stepper with 16 micro-steps would be 2 * pi *
+# (1.8 / 360) / 16 == 0.001963495). This parameter must be provided.
+position_endstop: 252
+# Distance (in mm) between the nozzle and the bed when the nozzle is
+# in the center of the build area and the endstop triggers. This
+# parameter must be provided for stepper_a; for stepper_b and
+# stepper_c this parameter defaults to the value specified for
+# stepper_a.
+upper_arm_length: 170.000
+# Length (in mm) of the arm connecting the "shoulder joint" to the
+# "elbow joint". This parameter must be provided for stepper_a; for
+# stepper_b and stepper_c this parameter defaults to the value
+# specified for stepper_a.
+lower_arm_length: 320.000
+# Length (in mm) of the arm connecting the "elbow joint" to the
+# "effector joint". This parameter must be provided for stepper_a;
+# for stepper_b and stepper_c this parameter defaults to the value
+# specified for stepper_a.
+#angle:
+# This option specifies the angle (in degrees) that the arm is at.
+# The default is 30 for stepper_a, 150 for stepper_b, and 270 for
+# stepper_c.
+
+# The stepper_b section describes the stepper controlling the rear
+# left arm (at 150 degrees).
+[stepper_b]
+
+# The stepper_c section describes the stepper controlling the front
+# arm (at 270 degrees).
+[stepper_c]
+
+# The delta_calibrate section enables a DELTA_CALIBRATE extended
+# g-code command that can calibrate the shoulder endstop positions.
+[delta_calibrate]
+radius: 50
+# Radius (in mm) of the area that may be probed. This is the radius
+# of nozzle coordinates to be probed; if using an automatic probe
+# with an XY offset then choose a radius small enough so that the
+# probe always fits over the bed. 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.
+```
+
+## Cable winch Kinematics
+
+See the
+[example-winch.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/example-winch.cfg)
+for an example cable winch kinematics config file.
+
+Only parameters specific to cable winch printers are described here -
+see [common kinematic settings](#common-kinematic-settings) for
+available parameters.
+
+CABLE WINCH SUPPORT IS EXPERIMENTAL. Homing is not implemented on
+cable winch kinematics. In order to home the printer, manually send
+movement commands until the toolhead is at 0,0,0 and then issue a
+`G28` command.
+
+```
+[printer]
+kinematics: winch
+
+# The stepper_a section describes the stepper connected to the first
+# cable winch. A minimum of 3 and a maximum of 26 cable winches may be
+# defined (stepper_a to stepper_z) though it is common to define 4.
+[stepper_a]
+step_distance: .01
+# The step_distance is the nominal distance (in mm) the toolhead
+# moves towards the cable winch on each step pulse. This parameter
+# must be provided.
+anchor_x: 0
+anchor_y: -2000
+anchor_z: -100
+# The x, y, and z position of the cable winch in cartesian space.
+# These parameters must be provided.
+```
+
+## None Kinematics
+
+It is possible to define a special "none" kinematics to disable
+kinematic support in Klipper. This may be useful for controlling
+devices that are not typical 3d-printers or for debugging purposes.
+
+```
+[printer]
+kinematics: none
+max_velocity: 1
+max_accel: 1
+# The max_velocity and max_accel parameters must be defined. The
+# values are not used for "none" kinematics.
+```
+
+# Primary micro-controller support
+
+## [mcu]
+
+Configuration of the primary micro-controller.
+
+```
+[mcu]
+serial:
+# The serial port to connect to the MCU. If unsure (or if it
+# changes) see the "Where's my serial port?" section of the FAQ.
+# This parameter must be provided.
+#baud: 250000
+# The baud rate to use. The default is 250000.
+#pin_map:
+# This option may be used to enable Arduino pin name aliases. The
+# default is to not enable the aliases.
+#restart_method:
+# This controls the mechanism the host will use to reset the
+# micro-controller. The choices are 'arduino', 'cheetah', 'rpi_usb',
+# and 'command'. The 'arduino' method (toggle DTR) is common on
+# Arduino boards and clones. The 'cheetah' method is a special
+# method needed for some Fysetc Cheetah boards. The 'rpi_usb' method
+# is useful on Raspberry Pi boards with micro-controllers powered
+# over USB - it briefly disables power to all USB ports to
+# accomplish a micro-controller reset. The 'command' method involves
+# sending a Klipper command to the micro-controller so that it can
+# reset itself. The default is 'arduino' if the micro-controller
+# communicates over a serial port, 'command' otherwise.
+```
+
+# Common extruder and heated bed support
+
+## [extruder]
+
+The extruder section is used to describe both the stepper
+controlling the printer extruder and the heater parameters for the
+nozzle.
+
+```
+[extruder]
+step_pin:
+dir_pin:
+enable_pin:
+step_distance:
+# See the "stepper" section for a description of the above parameters.
+nozzle_diameter: 0.400
+# Diameter of the nozzle orifice (in mm). This parameter must be
+# provided.
+filament_diameter: 1.750
+# The nominal diameter of the raw filament (in mm) as it enters the
+# extruder. This parameter must be provided.
+#max_extrude_cross_section:
+# Maximum area (in mm^2) of an extrusion cross section (eg,
+# extrusion width multiplied by layer height). This setting prevents
+# excessive amounts of extrusion during relatively small XY moves.
+# If a move requests an extrusion rate that would exceed this value
+# it will cause an error to be returned. The default is: 4.0 *
+# nozzle_diameter^2
+#instantaneous_corner_velocity: 1.000
+# The maximum instantaneous velocity change (in mm/s) of the
+# extruder during the junction of two moves. The default is 1mm/s.
+#max_extrude_only_distance: 50.0
+# Maximum length (in mm of raw filament) that a retraction or
+# extrude-only move may have. If a retraction or extrude-only move
+# requests a distance greater than this value it will cause an error
+# to be returned. The default is 50mm.
+#max_extrude_only_velocity:
+#max_extrude_only_accel:
+# Maximum velocity (in mm/s) and acceleration (in mm/s^2) of the
+# extruder motor for retractions and extrude-only moves. These
+# settings do not have any impact on normal printing moves. If not
+# specified then they are calculated to match the limit an XY
+# printing move with a cross section of 4.0*nozzle_diameter^2 would
+# have.
+#pressure_advance: 0.0
+# The amount of raw filament to push into the extruder during
+# extruder acceleration. An equal amount of filament is retracted
+# during deceleration. It is measured in millimeters per
+# millimeter/second. The default is 0, which disables pressure
+# advance.
+#pressure_advance_smooth_time: 0.040
+# A time range (in seconds) to use when calculating the average
+# extruder velocity for pressure advance. A larger value results in
+# smoother extruder movements. This parameter may not exceed 200ms.
+# This setting only applies if pressure_advance is non-zero. The
+# default is 0.040 (40 milliseconds).
+#
+# The remaining variables describe the extruder heater.
+heater_pin:
+# PWM output pin controlling the heater. This parameter must be
+# provided.
+#max_power: 1.0
+# The maximum power (expressed as a value from 0.0 to 1.0) that the
+# heater_pin may be set to. The value 1.0 allows the pin to be set
+# fully enabled for extended periods, while a value of 0.5 would
+# allow the pin to be enabled for no more than half the time. This
+# setting may be used to limit the total power output (over extended
+# periods) to the heater. The default is 1.0.
+sensor_type: EPCOS 100K B57560G104F
+# Type of sensor - common thermistors are "EPCOS 100K B57560G104F",
+# "ATC Semitec 104GT-2", "NTC 100K beta 3950", "Honeywell 100K
+# 135-104LAG-J01", "NTC 100K MGB18-104F39050L32", "SliceEngineering
+# 450", and "TDK NTCG104LH104JT1". See the "Heaters and temperature
+# sensors" section for other sensors. This parameter must be
+# provided.
+sensor_pin:
+# Analog input pin connected to the sensor. This parameter must be
+# provided.
+#pullup_resistor: 4700
+# The resistance (in ohms) of the pullup attached to the thermistor.
+# This parameter is only valid when the sensor is a thermistor. The
+# default is 4700 ohms.
+#inline_resistor: 0
+# The resistance (in ohms) of an extra (not heat varying) resistor
+# that is placed inline with the thermistor. It is rare to set this.
+# This parameter is only valid when the sensor is a thermistor. The
+# default is 0 ohms.
+#smooth_time: 2.0
+# A time value (in seconds) over which temperature measurements will
+# be smoothed to reduce the impact of measurement noise. The default
+# is 2 seconds.
+control: pid
+# Control algorithm (either pid or watermark). This parameter must
+# be provided.
+pid_Kp: 22.2
+# Kp is the "proportional" constant for the pid. This parameter must
+# be provided for PID heaters.
+pid_Ki: 1.08
+# Ki is the "integral" constant for the pid. This parameter must be
+# provided for PID heaters.
+pid_Kd: 114
+# Kd is the "derivative" constant for the pid. This parameter must
+# be provided for PID heaters.
+#pid_integral_max:
+# The maximum "windup" the integral term may accumulate. The default
+# is to use the same value as max_power.
+#max_delta: 2.0
+# On 'watermark' controlled heaters this is the number of degrees in
+# Celsius above the target temperature before disabling the heater
+# as well as the number of degrees below the target before
+# re-enabling the heater. The default is 2 degrees Celsius.
+#pwm_cycle_time: 0.100
+# Time in seconds for each software PWM cycle of the heater. It is
+# not recommended to set this unless there is an electrical
+# requirement to switch the heater faster than 10 times a second.
+# The default is 0.100 seconds.
+#min_extrude_temp: 170
+# The minimum temperature (in Celsius) at which extruder move
+# commands may be issued. The default is 170 Celsius.
+min_temp: 0
+max_temp: 210
+# The maximum range of valid temperatures (in Celsius) that the
+# heater 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. This check can help detect some
+# heater and sensor hardware failures. Set this range just wide
+# enough so that reasonable temperatures do not result in an error.
+# These parameters must be provided.
+```
+
+## [heater_bed]
+
+The heater_bed section describes a heated bed. It uses the same heater
+settings described in the "extruder" section.
+
+```
+[heater_bed]
+heater_pin:
+sensor_type:
+sensor_pin:
+control:
+min_temp:
+max_temp:
+# See the "extruder" section for a description of the above parameters.
+```
+
+# Bed level support
+
+## [bed_mesh]
+
+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. When using a probe to home the z-axis, it is
+recommended to define a safe_z_home section in printer.cfg to home
+toward the center of the print area.
+
+Visual Examples:
+```
+ rectangular bed, probe_count = 3,3:
+ x---x---x (max_point)
+ |
+ x---x---x
+ |
+ (min_point) x---x---x
+
+ round bed, round_probe_count = 5, bed_radius = r:
+ x (0,r) end
+ /
+ x---x---x
+ \
+ (-r,0) x---x---x---x---x (r,0)
+ \
+ x---x---x
+ /
+ x (0,-r) start
+```
+
+```
+[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.
+#mesh_radius:
+# Defines the radius of the mesh to probe for round beds. Note that
+# the radius is relative to the coordinate specified by the
+# mesh_origin option. This parameter must be provided for round beds
+# and omitted for rectangular beds.
+#mesh_origin:
+# Defines the center x,y coordinate of the mesh for round beds. This
+# coordinate is relative to the probe's location. It may be useful
+# to adjust the mesh_origin in an effort to maximize the size of the
+# mesh radius. Default is 0,0. This parameter must be omitted for
+# rectangular beds.
+#mesh_min:
+# Defines the minimum x,y coordinate of the mesh for rectangular
+# beds. This coordinate is relative to the probe's location. This
+# will be the first point probed, nearest to the origin. This
+# parameter must be provided for rectangular beds.
+#mesh_max:
+# Defines the maximum x,y coordinate of the mesh for rectangular
+# beds. Adheres to the same principle as mesh_min, however this will
+# be the furthest point probed from the bed's origin. This parameter
+# must be provided for rectangular beds.
+#probe_count: 3,3
+# For rectangular beds, this is a comma separate 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 applied to both axes. Default is 3,3.
+#round_probe_count: 5
+# For round beds, this integer value defines the maximum number of
+# points to probe along each axis. This value must be an odd number.
+# Default is 5.
+#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.
+#relative_reference_index:
+# A point index in the mesh to reference all z values to. Enabling
+# this parameter produces a mesh relative to the probed z position
+# at the provided index.
+```
+
+## [bed_tilt]
+
+Bed tilt compensation. One may define a bed_tilt config section to
+enable move transformations that account for a tilted bed. Note that
+bed_mesh and bed_tilt are incompatible; both cannot be defined.
+
+```
+[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.
+```
+
+## [bed_screws]
+
+Tool to help adjust bed leveling screws. One may define a [bed_screws]
+config section to enable a BED_SCREWS_ADJUST g-code command.
+
+```
+[bed_screws]
+#screw1: 100,100
+# The X,Y coordinate of the first bed leveling screw. This is a
+# position to command the nozzle to that is directly above the bed
+# screw (or as close as possible while still being above the bed).
+# This parameter must be provided.
+#screw1_name: front screw
+# An arbitrary name for the given screw. This name is displayed when
+# the helper script runs. The default is to use a name based upon
+# the screw XY location.
+#screw1_fine_adjust:
+# An X,Y coordinate to command the nozzle to so that one can fine
+# tune the bed leveling screw. The default is to not perform fine
+# adjustments on the bed screw.
+#screw2:
+#screw2_name:
+#screw2_fine_adjust:
+#...
+# Additional bed leveling screws. At least three screws must be
+# defined.
+#horizontal_move_z: 5
+# The height (in mm) that the head should be commanded to move to
+# when moving from one screw location to the next. The default is 5.
+#probe_height: 0
+# The height of the probe (in mm) after adjusting for the thermal
+# expansion of bed and nozzle. The default is zero.
+#speed: 50
+# The speed (in mm/s) of non-probing moves during the calibration.
+# The default is 50.
+#probe_speed: 5
+# The speed (in mm/s) when moving from a horizontal_move_z position
+# to a probe_height position. The default is 5.
+```
+
+## [screws_tilt_adjust]
+
+Tool to help adjust bed screws tilt using Z probe. One may define a
+screws_tilt_adjust config section to enable a SCREWS_TILT_CALCULATE
+g-code command.
+
+```
+[screws_tilt_adjust]
+#screw1: 100,100
+# The X,Y coordinate of the first bed leveling screw. This is a
+# position to command the nozzle to that is directly above the bed
+# screw (or as close as possible while still being above the bed).
+# This is the base screw used in calculations. This parameter must
+# be provided.
+#screw1_name: front screw
+# An arbitrary name for the given screw. This name is displayed when
+# the helper script runs. The default is to use a name based upon
+# the screw XY location.
+#screw2:
+#screw2_name:
+#...
+# Additional bed leveling screws. At least two screws must be
+# defined.
+#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.
+#screw_thread: CW-M3
+# The type of screw used for bed level, M3, M4 or M5 and the
+# direction of the knob used to level the bed, clockwise decrease
+# counter-clockwise decrease.
+# Accepted values: CW-M3, CCW-M3, CW-M4, CCW-M4, CW-M5, CCW-M5.
+# Default value is CW-M3, most printers use an M3 screw and
+# turning the knob clockwise decrease distance.
+```
+
+## [z_tilt]
+
+Multiple Z stepper tilt adjustment. This feature enables independent
+adjustment of multiple z steppers (see the "stepper_z1" section) 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 bed "pivot point". The
+# "pivot point" is the point where the bed attaches to the given Z
+# stepper. It is described using nozzle coordinates (the XY position
+# of the nozzle if it could move directly above the point). 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.
+#retries: 0
+# Number of times to retry if the probed points aren't within
+# tolerance.
+#retry_tolerance: 0
+# If retries are enabled then retry if largest and smallest probed
+# points differ more than retry_tolerance. Note the smallest unit of
+# change here would be a single step. However if you are probing
+# more points than steppers then you will likely have a fixed
+# minimum value for the range of probed points which you can learn
+# by observing command output.
+```
+
+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.
+#max_adjust: 4
+# Safety limit if an adjustment greater than this value is requested
+# quad_gantry_level will abort.
+#retries: 0
+# Number of times to retry if the probed points aren't within
+# tolerance.
+#retry_tolerance: 0
+# If retries are enabled then retry if largest and smallest probed
+# points differ more than retry_tolerance.
+```
+
+## [skew_correction]
+
+Printer Skew Correction. It is possible to use software to correct
+printer skew across 3 planes, xy, xz, yz. This is done by printing a
+calibration model along a plane and measuring three lengths. Due to
+the nature of skew correction these lengths are set via gcode. See
+[skew correction](skew_correction.md) and [G-Codes](G-Codes.md) for
+details.
+
+```
+[skew_correction]
+```
+
+# Customized homing
+
+## [safe_z_home]
+
+Safe Z homing. One may use this mechanism to home the Z axis at a
+specific XY coordinate. This is useful if the toolhead, for example
+has to move to the center of the bed before Z can be homed.
+
+```
+[safe_z_home]
+home_xy_position:
+# A X,Y coordinate (e.g. 100,100) where the Z homing should be
+# performed. This parameter must be provided.
+#speed: 50.0
+# Speed at which the toolhead is moved to the safe Z home
+# coordinate. The default is 50 mm/s
+#z_hop:
+# Distance (in mm) to lift the Z axis prior to homing. This is
+# applied to any homing command, even if it doesn't home the Z axis.
+# If the Z axis is already homed and the current Z position is less
+# than z_hop, then this will lift the head to a height of z_hop. If
+# the Z axis is not already homed, then prior to any XY homing
+# movement the Z axis boundary checks are disabled and the head is
+# lifted by z_hop. If z_hop is specified, be sure to home the Z
+# immediately after any XY home requests so that the Z boundary
+# checks are accurate. The default is to not implement Z hop.
+#z_hop_speed: 20.0
+# Speed (in mm/s) at which the Z axis is lifted prior to homing. The
+# default is 20mm/s.
+#move_to_previous: False
+# When set to True, xy are reset to their previous positions after z
+# homing. The default is False.
+```
+
+## [homing_override]
+
+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 to execute in place of G28 commands
+# found in the normal g-code input. See docs/Command_Templates.md
+# for G-Code format. 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.
+```
+
+## [endstop_phase]
+
+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 a TMC driver
+# 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.
+```
+
+# G-Code macros and events
+
+## [gcode_macro]
+
+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 to execute in place of "my_cmd". See
+# docs/Command_Templates.md for G-Code format. 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". To override the
+# default parameter when calling the command then using
+# "MY_DELAY DELAY=30" would evaluate to "G4 P30". The default is
+# to require that all parameters used in the gcode script be
+# present in the command invoking the macro.
+#variable_<name>:
+# One may specify any number of options with a "variable_" prefix.
+# The given variable name will be assigned the given value (parsed
+# as a Python literal) and will be available during macro expansion.
+# For example, a config with "variable_fan_speed = 75" might have
+# gcode commands containing "M106 S{ fan_speed * 255 }". Variables
+# can be changed at run-time using the SET_GCODE_VARIABLE command
+# (see docs/Command_Templates.md for details). Variable names may
+# not use upper case characters.
+#rename_existing:
+# This option will cause the macro to override an existing G-Code
+# command and provide the previous definition of the command via the
+# name provided here. This can be used to override builtin G-Code
+# commands. Care should be taken when overriding commands as it can
+# cause complex and unexpected results. The default is to not
+# override an existing G-Code command.
+```
+
+## [delayed_gcode]
+
+Execute a gcode on a set delay.
+
+```
+[delayed_gcode my_delayed_gcode]
+gcode:
+# A list of G-Code commands to execute when the delay duration has
+# elapsed. G-Code templates are supported. This parameter must be
+# provided.
+#initial_duration: 0.0
+# The duration of the initial delay (in seconds). If set to a
+# non-zero value the delayed_gcode will execute the specified number
+# of seconds after the printer enters the "ready" state. This can be
+# useful for initialization procedures or a repeating delayed_gcode.
+# If set to 0 the delayed_gcode will not execute on startup.
+# Default is 0.
+```
+
+## [idle_timeout]
+
+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 to execute on an idle timeout. See
+# docs/Command_Templates.md for G-Code format. 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.
+```
+
+# Optional G-Code features
+
+## [virtual_sdcard]
+
+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.
+```
+
+## [force_move]
+
+Support manually moving stepper motors for diagnostic purposes. Note,
+using this feature may place the printer in an invalid state - see
+[G-Codes](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.
+```
+
+## [pause_resume]
+
+Pause/Resume functionality with support of position capture and
+restore.
+
+```
+[pause_resume]
+#recover_velocity: 50.
+# When capture/restore is enabled, the speed at which to return to
+# the captured position (in mm/s). Default is 50.0 mm/s.
+```
+
+## [firmware_retraction]
+
+Firmware filament retraction. This enables G10 (retract) and G11
+(unretract) GCODE commands issued by many slicers. The parameters
+below provide startup defaults, although the values can be adjusted
+via the SET_RETRACTION command, allowing per-filament settings and
+runtime tuning.
+
+```
+[firmware_retraction]
+#retract_length: 0
+# The length of filament (in mm) to retract when G10 is activated,
+# and to unretract when G11 is activated (but see
+# unretract_extra_length below). The default is 0 mm.
+#retract_speed: 20
+# The speed of retraction, in mm/s. The default is 20 mm/s.
+#unretract_extra_length: 0
+# The length (in mm) of *additional* filament to add when
+# unretracting.
+#unretract_speed: 10
+# The speed of unretraction, in mm/s. The default is 10 mm/s.
+```
+
+## [gcode_arcs]
+
+Support for gcode arc (G2/G3) commands.
+
+```
+[gcode_arcs]
+#resolution: 1.0
+# An arc will be split into segments. Each segment's length will
+# equal the resolution in mm set above. Lower values will produce a
+# finer arc, but also more work for your machine. Arcs smaller than
+# the configured value will become straight lines. The default is
+# 1mm.
+```
+
+## [respond]
+
+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".
+```
+
+# Resonance compensation
+
+## [input_shaper]
+
+Enables input shaping.
+
+```
+[input_shaper]
+#shaper_freq_x: 0
+# A frequency (in Hz) of the input shaper for X axis. This is
+# usually a resonance frequency of X axis that the input shaper
+# should suppress. For more complex shapers, like 2- and 3-hump EI
+# input shapers, this parameter can be set from different
+# considerations. The default value is 0, which disables input
+# shaping for X axis.
+#shaper_freq_y: 0
+# A frequency (in Hz) of the input shaper for Y axis. This is
+# usually a resonance frequency of Y axis that the input shaper
+# should suppress. For more complex shapers, like 2- and 3-hump EI
+# input shapers, this parameter can be set from different
+# considerations. The default value is 0, which disables input
+# shaping for Y axis.
+#shaper_type: mzv
+# A type of the input shaper to use for both X and Y axes. Supported
+# shapers are zv, mzv, zvd, ei, 2hump_ei, and 3hump_ei. The default
+# is mzv input shaper.
+#shaper_type_x:
+#shaper_type_y:
+# If shaper_type is not set, these two parameters can be used to
+# configure different input shapers for X and Y axes. The same
+# values are supported as for shaper_type parameter.
+#damping_ratio_x: 0.1
+#damping_ratio_y: 0.1
+# Damping ratios of vibrations of X and Y axes used by input shapers
+# to improve vibration suppression. Should not be changed without
+# some proper measurements, e.g. with an accelerometer. Default
+# value is 0.1 which is a good all-round value for most printers.
+```
+
+## [adxl345]
+
+Support for ADXL345 accelerometers. This support allows one to query
+accelerometer measurements from the sensor. This enables an
+ACCELEROMETER_MEASURE command (see [G-Codes](G-Codes.md) for more
+information). The default chip name is "default", but one may specify
+an explicit name (eg, [adxl345 my_chip_name]).
+
+```
+[adxl345]
+cs_pin:
+# The SPI enable pin for the sensor. This parameter must be
+# provided.
+#spi_speed: 5000000
+# The SPI speed (in hz) to use when communicating with the chip.
+# The default is 5000000.
+#spi_bus:
+#spi_software_sclk_pin:
+#spi_software_mosi_pin:
+#spi_software_miso_pin:
+# These optional parameters allow one to customize the SPI settings
+# used to communicate with the chip.
+#axes_map: x,y,z
+# The accelerometer axis for each of the printer's x, y, and z axes.
+# This may be useful if the accelerometer is mounted in an
+# orientation that does not match the printer orientation. For
+# example, one could set this to "y,x,z" to swap the x and y axes.
+# It is also possible to negate an axis if the accelerometer
+# direction is reversed (eg, "x,z,-y"). The default is "x,y,z".
+#rate: 3200
+# Output data rate for ADXL345. ADXL345 supports the following data
+# rates: 3200, 1600, 800, 400, 200, 100, 50, and 25. Note that it is
+# not recommended to change this rate from the default 3200, and
+# rates below 800 will considerably affect the quality of resonance
+# measurements.
+```
+
+## [resonance_tester]
+
+Support for resonance testing and automatic input shaper calibration.
+In order to use most of the functionality of this module, additional
+software dependencies must be installed; refer to
+[Measuring Resonances](Measuring_Resonances.md) for more information.
+
+```
+[resonance_tester]
+#probe_points:
+# A list of X,Y,Z coordinates of points (one point per line) to test
+# resonances at. At least one point is required. Make sure that all
+# points with some safety margin in XY plane (~a few centimeters)
+# are reachable by the toolhead.
+#accel_chip:
+# A name of the accelerometer chip to use for measurements. If
+# adxl345 chip was defined without an explicit name, this parameter
+# can simply reference it as "accel_chip: adxl345", otherwise an
+# explicit name must be supplied as well, e.g. "accel_chip: adxl345
+# my_chip_name". Either this, or the next two parameters must be
+# set.
+#accel_chip_x:
+#accel_chip_y:
+# Names of the accelerometer chips to use for measurements for each
+# of the axis. Can be useful, for instance, on bed slinger printer,
+# if two separate accelerometers are mounted on the bed (for Y axis)
+# and on the toolhead (for X axis). These parameters have the same
+# format as 'accel_chip' parameter. Only 'accel_chip' or these two
+# parameters must be provided.
+#min_freq: 5
+# Minimum frequency to test for resonances. The default is 5 Hz.
+#max_freq: 120
+# Maximum frequency to test for resonances. The default is 120 Hz.
+#accel_per_hz: 75
+# This parameter is used to determine which acceleration to use to
+# test a specific frequency: accel = accel_per_hz * freq. Higher the
+# value, the higher is the energy of the oscillations. Can be set to
+# a lower than the default value if the resonances get too strong on
+# the printer. However, lower values make measurements of
+# high-frequency resonances less precise. The default value is 75
+# (mm/sec).
+#hz_per_sec: 1
+# Determines the speed of the test. When testing all frequencies in
+# range [min_freq, max_freq], each second the frequency increases by
+# hz_per_sec. Small values make the test slow, and the large values
+# will decrease the precision of the test. The default value is 1.0
+# (Hz/sec == sec^-2).
+```
+
+# Config file helpers
+
+## [board_pins]
+
+Board pin aliases. One may define aliases for the pins on a
+micro-controller. (If a micro-controller name is omitted in the
+board_pins config section name then it defaults to "mcu".)
+
+```
+[board_pins mcu]
+aliases:
+# A comma separated list of "name=value" aliases to create for the
+# given micro-controller. For example, "EXP1_1=PE6" would create an
+# "EXP1_1" alias for the "PE6" pin. However, if "value" is enclosed
+# in "<>" then "name" is created as a reserved pin (for example,
+# "EXP1_9=<GND>" would reserve "EXP1_9"). This parameter must be
+# provided.
+```
+
+## [include]
+
+Include file support. One may include additional config file from the
+main printer config file. Wildcards may also be used (eg,
+"configs/*.cfg").
+
+```
+[include my_other_config.cfg]
+```
+
+# Bed probing hardware
+
+## [probe]
+
+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:
+# 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.
+#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 lift the toolhead between each sample (if
+# sampling more than once). The default is 2mm.
+#lift_speed: 5.0
+# Speed (in mm/s) of the Z axis when lifting the probe between
+# samples. The default is to use the same value as the 'speed'
+# parameter.
+#samples_result: average
+# The calculation method when sampling more than once - either
+# "median" or "average". The default is average.
+#samples_tolerance: 0.100
+# The maximum Z distance (in mm) that a sample may differ from other
+# samples. If this tolerance is exceeded then either an error is
+# reported or the attempt is restarted (see
+# samples_tolerance_retries). The default is 0.100mm.
+#samples_tolerance_retries: 0
+# The number of times to retry if a sample is found that exceeds
+# samples_tolerance. On a retry, all current samples are discarded
+# and the probe attempt is restarted. If a valid set of samples are
+# not obtained in the given number of retries then an error is
+# reported. The default is zero which causes an error to be reported
+# on the first sample that exceeds samples_tolerance.
+#activate_gcode:
+# A list of G-Code commands to execute prior to each probe attempt.
+# See docs/Command_Templates.md for G-Code format. 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 to execute after each probe attempt
+# completes. See docs/Command_Templates.md for G-Code format. Do not
+# issue any commands here that move the toolhead. The default is to
+# not run any special G-Code commands on deactivation.
+```
+
+## [bltouch]
+
+BLTouch probe. One may define this section (instead of a probe
+section) to enable a BLTouch probe. See [BL-Touch guide](BLTouch.md)
+for further information on configuring a BLTouch. A virtual
+"probe:z_virtual_endstop" pin is also created (see the "probe" section
+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.680
+# The amount of time (in seconds) to wait for the BLTouch pin to
+# move up or down. The default is 0.680 seconds.
+#stow_on_each_sample: True
+# This determines if Klipper should command the pin to move up
+# between each probe attempt when performing a multiple probe
+# sequence. Read the directions in docs/BLTouch.md before setting
+# this to False. The default is True.
+#probe_with_touch_mode: False
+# If this is set to True then Klipper will probe with the device in
+# "touch_mode". The default is False (probing in "pin_down" mode).
+#pin_up_reports_not_triggered: True
+# Set if the BLTouch consistently reports the probe in a "not
+# triggered" state after a successful "pin_up" command. This should
+# be True for all genuine BLTouch devices. Read the directions in
+# docs/BLTouch.md before setting this to False. The default is True.
+#pin_up_touch_mode_reports_triggered: True
+# Set if the BLTouch consistently reports a "triggered" state after
+# the commands "pin_up" followed by "touch_mode". This should be
+# True for all genuine BLTouch devices. Read the directions in
+# docs/BLTouch.md before setting this to False. The default is True.
+#set_output_mode:
+# Request a specific sensor pin output mode on the BLTouch V3.0 (and
+# later). This setting should not be used on other types of probes.
+# Set to "5V" to request a sensor pin output of 5 Volts (only use if
+# the controller board needs 5V mode and is 5V tolerant on its input
+# signal line). Set to "OD" to request the sensor pin output use
+# open drain mode. The default is to not request an output mode.
+#x_offset:
+#y_offset:
+#z_offset:
+#speed:
+#samples:
+#sample_retract_dist:
+#samples_result:
+#samples_tolerance:
+#samples_tolerance_retries:
+# See the "probe" section for information on these parameters.
+```
+
+# Additional micro-controllers
+
+## [mcu my_extra_mcu]
+
+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 for configuration parameters.
+```
+
+# Additional stepper motors and extruders
+
+## [stepper_z1]
+
+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:
+#dir_pin:
+#enable_pin:
+#step_distance:
+# See the "stepper" section for the definition of the above parameters.
+#endstop_pin:
+# 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.
+```
+
+## [extruder1]
+
+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 for a description of available parameters.
+
+```
+[extruder1]
+#step_pin:
+#dir_pin:
+#...
+# See the "extruder" section for available stepper and heater
+# parameters.
+#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.
+```
+
+## [dual_carriage]
+
+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 - the SET_DUAL_CARRIAGE
+command is often called at the same time as the ACTIVATE_EXTRUDER
+command. Be sure 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 "stepper" section for the definition of the above parameters.
+```
+
+## [extruder_stepper]
+
+Support for additional steppers synchronized to the movement of an
+extruder (one may define any number of sections with an
+"extruder_stepper" prefix).
+
+```
+[extruder_stepper my_extra_stepper]
+#extruder: extruder
+# The extruder this stepper is synchronized to. The default is
+# "extruder".
+#step_pin:
+#dir_pin:
+#enable_pin:
+#step_distance:
+# See the "stepper" section for the definition of the above
+# parameters.
+```
+
+## [manual_stepper]
+
+Manual steppers (one may define any number of sections with a
+"manual_stepper" prefix). These are steppers that are controlled by
+the MANUAL_STEPPER g-code command. For example: "MANUAL_STEPPER
+STEPPER=my_stepper MOVE=10 SPEED=5". See [G-Codes](G-Codes.md) file
+for a description of the MANUAL_STEPPER command. The steppers are not
+connected to the normal printer kinematics.
+
+```
+[manual_stepper my_stepper]
+#step_pin:
+#dir_pin:
+#enable_pin:
+#step_distance:
+# See the "stepper" section for a description of these parameters.
+#velocity:
+# Set the default velocity (in mm/s) for the stepper. This value
+# will be used if a MANUAL_STEPPER command does not specify a SPEED
+# parameter. The default is 5mm/s.
+#accel:
+# Set the default acceleration (in mm/s^2) for the stepper. An
+# acceleration of zero will result in no acceleration. This value
+# will be used if a MANUAL_STEPPER command does not specify an ACCEL
+# parameter. The default is zero.
+#endstop_pin:
+# Endstop switch detection pin. If specified, then one may perform
+# "homing moves" by adding a STOP_ON_ENDSTOP parameter to
+# MANUAL_STEPPER movement commands.
+```
+
+# Heaters and temperature sensors
+
+## [verify_heater]
+
+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]
+#max_error: 120
+# The maximum "cumulative temperature error" before raising an
+# error. Smaller values result in stricter checking and larger
+# values allow for more time before an error is reported.
+# Specifically, the temperature is inspected once a second and if it
+# is close to the target temperature then an internal "error
+# counter" is reset; otherwise, if the temperature is below the
+# target range then the counter is increased by the amount the
+# reported temperature differs from that range. Should the counter
+# exceed this "max_error" then an error is raised. The default is
+# 120.
+#check_gain_time:
+# This controls heater verification during initial heating. Smaller
+# values result in stricter checking and larger values allow for
+# more time before an error is reported. Specifically, during
+# initial heating, as long as the heater increases in temperature
+# within this time frame (specified in seconds) then the internal
+# "error counter" is reset. The default is 20 seconds for extruders
+# and 60 seconds for heater_bed.
+#hysteresis: 5
+# The maximum temperature difference (in Celsius) to a target
+# temperature that is considered in range of the target. This
+# controls the max_error range check. It is rare to customize this
+# value. The default is 5.
+#heating_gain: 2
+# The minimum temperature (in Celsius) that the heater must increase
+# by during the check_gain_time check. It is rare to customize this
+# value. The default is 2.
+```
+
+## [homing_heaters]
+
+Tool to disable heaters when homing or probing an axis.
+
+```
+[homing_heaters]
+#steppers:
+# A comma separated list of steppers that should cause heaters to be
+# disabled. The default is to disable heaters for any homing/probing
+# move.
+# Typical example: stepper_z
+#heaters:
+# A comma separated list of heaters to disable during homing/probing
+# moves. The default is to disable all heaters.
+# Typical example: extruder, heater_bed
+```
+
+## MAXxxxxx temperature sensors
+
+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 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.
+#spi_bus:
+#spi_software_sclk_pin:
+#spi_software_mosi_pin:
+#spi_software_miso_pin:
+# These optional parameters allow one to customize the SPI settings
+# used to communicate with the chip.
+#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.
+```
+
+## Common temperature amplifiers
+
+Common temperature amplifiers. The following parameters are available
+in heater sections that use one of these sensors.
+
+```
+#[extruder]
+# See the "extruder" section for a description of heater parameters.
+# The parameters below describe sensor parameters.
+#sensor_type:
+# One of "PT100 INA826", "AD595", "AD597", "AD8494", "AD8495",
+# "AD8496", or "AD8497".
+#sensor_pin:
+# Analog input pin connected to the sensor. This parameter must be
+# provided.
+#adc_voltage: 5.0
+# The ADC comparison voltage (in Volts). The default is 5 volts.
+#voltage_offset: 0
+# The ADC voltage offset (in Volts). The default is 0.
+```
+
+## Directly connected PT1000 sensor
+
+Directly connected PT1000 sensor. The following parameters are
+available in heater sections that use one of these sensors.
+
+```
+#[extruder]
+# See the "extruder" section for a description of heater parameters.
+# The parameters below describe sensor parameters.
+#sensor_type: PT1000
+#sensor_pin:
+# Analog input pin connected to the sensor. This parameter must be
+# provided.
+#pullup_resistor: 4700
+# The resistance (in ohms) of the pullup attached to the sensor. The
+# default is 4700 ohms.
+```
+
+## [thermistor]
+
+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.
+```
+
+## [adc_temperature]
+
+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 (or temperature/resistance)
+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. A heater section using
+# this sensor may also specify adc_voltage and voltage_offset
+# parameters to define the ADC voltage (see "Common temperature
+# amplifiers" section for details). At least two measurements must
+# be provided.
+#temperature1:
+#resistance1:
+#temperature2:
+#resistance2:
+#...
+# Alternatively one may specify a set of temperatures (in Celsius)
+# and resistance (in Ohms) to use as reference when converting a
+# temperature. A heater section using this sensor may also specify a
+# pullup_resistor parameter (see "extruder" section for details). At
+# least two measurements must be provided.
+```
+
+## bme280 temperature sensor
+
+BME280 two wire interface (I2C) environmental sensor. Note that this
+sensor is not intended for use with extruders and heater beds, but
+rather for monitoring ambient temperature (C), pressure (hPa), and
+relative humidity. See
+[sample-macros.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/sample-macros.cfg)
+for a gcode_macro that may be used to report pressure and humidity in
+addition to temperature.
+
+```
+#[temperature_sensor my_sensor]
+# See the "temperature_sensor" section for a description of its
+# parameters. The parameters below describe BME280 sensor parameters.
+#sensor_type:
+# Must be "BME280"
+#i2c_address:
+# Default is 118 (0x76). Some BME280 sensors have an address of 119
+# (0x77).
+#i2c_mcu:
+# MCU the sensor is connected to. Default is the primary mcu.
+#i2c_bus:
+# The I2C bus the sensor is connected to. On some MCU platforms the
+# default is bus 0. On platforms without bus 0 this parameter is
+# required.
+#i2c_speed:
+# The I2C speed (in Hz) to use when communicating with the sensor.
+# Default is 100000. On some MCUs changing this value has no effect.
+```
+
+## HTU21D sensor
+
+HTU21D family two wire interface (I2C) environmental sensor. Note that
+this sensor is not intended for use with extruders and heater beds,
+but rather for monitoring ambient temperature (C) and relative
+humidity. See
+[sample-macros.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/sample-macros.cfg)
+for a gcode_macro that may be used to report humidity in addition to
+temperature.
+
+```
+#[temperature_sensor my_sensor]
+# See the "temperature_sensor" section for a description of its
+# parameters. The parameters below describe HTU21D family sensor
+# parameters.
+#sensor_type:
+# Must be "HTU21D" , "SI7013", "SI7020", "SI7021" or "SHT21"
+#i2c_address:
+# Default is 64 (0x40).
+#i2c_mcu:
+# MCU the sensor is connected to. Default is the primary mcu.
+#i2c_bus:
+# The I2C bus the sensor is connected to. On some MCU platforms the
+# default is bus 0. On platforms without bus 0 this parameter is
+# required.
+#i2c_speed:
+# The I2C speed (in Hz) to use when communicating with the sensor.
+# Default is 100000. On some MCUs changing this value has no effect.
+#htu21d_hold_master:
+# If the sensor can hold the I2C buf while reading. If True no other
+# bus communication can be performed while reading is in progress.
+# Default is False.
+#htu21d_resolution:
+# The resolution of temperature and humidity reading.
+# Valid values are:
+# 'TEMP14_HUM12' -> 14bit for Temp and 12bit for humidity
+# 'TEMP13_HUM10' -> 13bit for Temp and 10bit for humidity
+# 'TEMP12_HUM08' -> 12bit for Temp and 08bit for humidity
+# 'TEMP11_HUM11' -> 11bit for Temp and 11bit for humidity
+# Default is: "TEMP11_HUM11"
+#htu21d_report_time:
+# Interval in seconds between readings. Default is 30
+```
+
+## LM75 temperature sensor
+
+LM75/LM75A two wire (I2C) connected temperature sensors. These sensors
+have range up to 125 C, so are usable for e.g. chamber temperature
+monitoring. They can also function as simple fan/heater controllers
+but this mode is not used here.
+
+```
+#[temperature_sensor my_sensor]
+# See the "temperature_sensor" section for a description of its
+# parameters. The parameters below describe LM75 family sensor
+# parameters.
+#sensor_type:
+# Must be "LM75".
+#i2c_address:
+# Default is 72 (0x48). Normal range is 72-79 (0x48-0x4F) and the 3
+# low bits of the address are configured via pins on the chip
+# (usually with jumpers or hard wired).
+#i2c_mcu:
+# MCU the sensor is connected to. Default is the primary mcu.
+#i2c_bus:
+# The I2C bus the sensor is connected to. On some MCU platforms the
+# default is bus 0. On platforms without bus 0 this parameter is
+# required.
+#i2c_speed:
+# The I2C speed (in Hz) to use when communicating with the sensor.
+# Default is 100000. On some MCUs changing this value has no effect.
+#lm75_report_time:
+# Interval in seconds between readings. Default is 0.8, with minimum
+# 0.5.
+```
+
+## [heater_generic]
+
+Generic heaters (one may define any number of sections with a
+"heater_generic" prefix). These heaters behave similarly to standard
+heaters (extruders, heated beds). Use the SET_HEATER_TEMPERATURE
+command (see [G-Codes](G-Codes.md) for details) to set the target
+temperature.
+
+```
+[heater_generic my_generic_heater]
+#gcode_id: C
+# The id to use when reporting the temperature in the M105 command.
+# This parameter must be provided.
+#heater_pin:
+#max_power:
+#sensor_type:
+#sensor_pin:
+#smooth_time:
+#control:
+#pid_Kp:
+#pid_Ki:
+#pid_Kd:
+#pid_integral_max:
+#pwm_cycle_time:
+#min_temp:
+#max_temp:
+# See the "extruder" section for the definition of the above
+# parameters.
+```
+
+## [temperature_sensor]
+
+Generic temperature sensors. One can define any number of additional
+temperature sensors that are reported via the M105 command.
+
+```
+[temperature_sensor my_sensor]
+#sensor_type:
+#sensor_pin:
+#min_temp:
+#max_temp:
+# See the "extruder" section for the definition of the above
+# parameters.
+#gcode_id:
+# See the "heater_generic" section for the definition of this
+# parameter.
+```
+
+# Fans
+
+## [fan]
+
+Print cooling fan.
+
+```
+[fan]
+pin:
+# Output pin controlling the fan. This parameter must be provided.
+#max_power: 1.0
+# The maximum power (expressed as a value from 0.0 to 1.0) that the
+# pin may be set to. The value 1.0 allows the pin to be set fully
+# enabled for extended periods, while a value of 0.5 would allow the
+# pin to be enabled for no more than half the time. This setting may
+# be used to limit the total power output (over extended periods) to
+# the fan. If this value is less than 1.0 then fan speed requests
+# will be scaled between zero and max_power (for example, if
+# max_power is .9 and a fan speed of 80% is requested then the fan
+# power will be set to 72%). The default is 1.0.
+#shutdown_speed: 0
+# The desired fan speed (expressed as a value from 0.0 to 1.0) if
+# the micro-controller software enters an error state. The default
+# is 0.
+#cycle_time: 0.010
+# The amount of time (in seconds) for each PWM power cycle to the
+# fan. It is recommended this be 10 milliseconds or greater when
+# using software based PWM. The default is 0.010 seconds.
+#hardware_pwm: False
+# Enable this to use hardware PWM instead of software PWM. Most fans
+# do not work well with hardware PWM, so it is not recommended to
+# enable this unless there is an electrical requirement to switch at
+# very high speeds. When using hardware PWM the actual cycle time is
+# constrained by the implementation and may be significantly
+# different than the requested cycle_time. The default is False.
+#kick_start_time: 0.100
+# Time (in seconds) to run the fan at full speed when either first
+# enabling or increasing it by more than 50% (helps get the fan
+# spinning). The default is 0.100 seconds.
+#off_below: 0.0
+# The minimum input speed which will power the fan (expressed as a
+# value from 0.0 to 1.0). When a speed lower than off_below is
+# requested the fan will instead be turned off. This setting may be
+# used to prevent fan stalls and to ensure kick starts are
+# effective. The default is 0.0.
+#
+# This setting should be recalibrated whenever max_power is adjusted.
+# To calibrate this setting, start with off_below set to 0.0 and the
+# fan spinning. Gradually lower the fan speed to determine the lowest
+# input speed which reliably drives the fan without stalls. Set
+# off_below to the duty cycle corresponding to this value (for
+# example, 12% -> 0.12) or slightly higher.
+```
+
+## [heater_fan]
+
+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:
+#off_below:
+# See the "fan" section 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
+```
+
+## [controller_fan]
+
+Controller cooling fan (one may define any number of sections with a
+"controller_fan" prefix). A "controller fan" is a fan that will be
+enabled whenever its associated heater or any configured stepper
+driver is active. The fan will stop whenever an idle_timeout is
+reached to ensure no overheating will occur after deactivating a
+watched component.
+
+```
+[controller_fan my_controller_fan]
+#pin:
+#max_power:
+#shutdown_speed:
+#cycle_time:
+#hardware_pwm:
+#kick_start_time:
+#off_below:
+# See the "fan" section for a description of the above parameters.
+#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 a heater or stepper driver is active.
+# The default is 1.0
+#idle_timeout:
+# The amount of time (in seconds) after a stepper driver or heater
+# was active and the fan should be kept running. The default
+# is 30 seconds.
+#idle_speed:
+# The fan speed (expressed as a value from 0.0 to 1.0) that the fan
+# will be set to when a heater or stepper driver was active and
+# before the idle_timeout is reached. The default is fan_speed.
+#heater:
+# 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".
+```
+
+## [temperature_fan]
+
+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:
+#off_below:
+# See the "fan" section for a description of the above parameters.
+#sensor_type:
+#sensor_pin:
+#control:
+#pid_Kp:
+#pid_Ki:
+#pid_Kd:
+#pid_deriv_time:
+#pid_integral_max:
+#max_delta:
+#min_temp:
+#max_temp:
+# See the "extruder" section for a description of the above parameters.
+#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 for PID temperature fans.
+# The default is 0.3.
+#gcode_id:
+# If set, the temperature will be reported in M105 queries using the
+# given id. The default is to not report the temperature via M105.
+```
+
+## [fan_generic]
+
+Manually controlled fan (one may define any number of sections with a
+"fan_generic" prefix). The speed of a manually controlled fan is set
+with the SET_FAN_SPEED gcode command.
+
+```
+[fan_generic extruder_partfan]
+#pin:
+#max_power:
+#shutdown_speed:
+#cycle_time:
+#hardware_pwm:
+#kick_start_time:
+#off_below:
+# See the "fan" section for a description of the above parameters.
+```
+
+# Additional servos, LEDs, buttons, and other pins
+
+## [servo]
+
+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:
+# 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:
+# Initial angle (in degrees) to set the servo to. The default is to
+# not send any signal at startup.
+#initial_pulse_width:
+# Initial pulse width time (in seconds) to set the servo to. (This
+# is only valid if initial_angle is not set.) The default is to not
+# send any signal at startup.
+```
+
+## [neopixel]
+
+Neopixel (aka WS2812) LED support (one may define any number of
+sections with a "neopixel" prefix). One may set the LED color via
+"SET_LED LED=my_neopixel RED=0.1 GREEN=0.1 BLUE=0.1" type extended
+g-code commands.
+
+```
+[neopixel my_neopixel]
+pin:
+# The pin connected to the neopixel. This parameter must be
+# provided.
+#chain_count:
+# The number of Neopixel chips that are "daisy chained" to the
+# provided pin. The default is 1 (which indicates only a single
+# Neopixel is connected to the pin).
+#color_order: GRB
+# Set the pixel order required by the LED hardware. Options are GRB,
+# RGB, GRBW, or RGBW. The default is GRB.
+#initial_RED: 0.0
+#initial_GREEN: 0.0
+#initial_BLUE: 0.0
+#initial_WHITE: 0.0
+# Sets the initial LED color of the Neopixel. Each value should be
+# between 0.0 and 1.0. The WHITE option is only available on RGBW
+# LEDs. The default for each color is 0.
+```
+
+## [dotstar]
+
+Dotstar (aka APA102) LED support (one may define any number of
+sections with a "dotstar" prefix). One may set the LED color via
+"SET_LED LED=my_dotstar RED=0.1 GREEN=0.1 BLUE=0.1" type extended
+g-code commands.
+
+```
+[dotstar my_dotstar]
+data_pin:
+# The pin connected to the data line of the dotstar. This parameter
+# must be provided.
+clock_pin:
+# The pin connected to the clock line of the dotstar. This parameter
+# must be provided.
+#chain_count:
+#initial_RED: 0.0
+#initial_GREEN: 0.0
+#initial_BLUE: 0.0
+# See the "neopixel" section for information on these parameters.
+```
+
+## [gcode_button]
+
+Execute gcode when a button is pressed or released (or when a pin
+changes state). You can check the state of the button by using
+`QUERY_BUTTON button=my_gcode_button`.
+
+```
+[gcode_button my_gcode_button]
+pin:
+# The pin on which the button is connected. This parameter must be
+# provided.
+#analog_range:
+# Two comma separated resistances (in Ohms) specifying the minimum
+# and maximum resistance range for the button. If analog_range is
+# provided then the pin must be an analog capable pin. The default
+# is to use digital gpio for the button.
+#analog_pullup_resistor:
+# The pullup resistance (in Ohms) when analog_range is specified.
+# The default is 4700 ohms.
+#press_gcode:
+# A list of G-Code commands to execute when the button is pressed.
+# G-Code templates are supported. This parameter must be provided.
+#release_gcode:
+# A list of G-Code commands to execute when the button is released.
+# G-Code templates are supported. The default is to not run any
+# commands on a button release.
+```
+
+## [output_pin]
+
+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. When
+# using hardware PWM the actual cycle time is constrained by the
+# implementation and may be significantly different than the
+# requested cycle_time. 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.
+```
+
+## [static_digital_output]
+
+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.
+```
+
+## [multi_pin]
+
+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.
+```
+
+# TMC stepper driver configuration
+
+## [tmc2130]
+
+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.
+#spi_bus:
+#spi_speed:
+#spi_software_sclk_pin:
+#spi_software_mosi_pin:
+#spi_software_miso_pin:
+# These optional parameters allow one to customize the SPI settings
+# used to communicate with the chip.
+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 RMS) to configure the driver to use
+# during stepper movement. This parameter must be provided.
+#hold_current:
+# The amount of current (in amps RMS) 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_TBL: 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.
+#diag0_pin:
+#diag1_pin:
+# The micro-controller pin attached to one of the DIAG lines of the
+# TMC2130 chip. Only a single diag pin should be specified.
+# 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.
+```
+
+## [tmc2208]
+
+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.
+#select_pins:
+# A comma separated list of pins to set prior to accessing the
+# tmc2208 UART. This may be useful for configuring an analog mux for
+# UART communication. The default is to not configure any pins.
+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 RMS) to configure the driver to use
+# during stepper movement. This parameter must be provided.
+#hold_current:
+# The amount of current (in amps RMS) 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_TBL: 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.
+```
+
+## [tmc2209]
+
+Configure a TMC2209 stepper motor driver via single wire UART. To use
+this feature, define a config section with a "tmc2209" prefix followed
+by the name of the corresponding stepper config section (for example,
+"[tmc2209 stepper_x]").
+
+```
+[tmc2209 stepper_x]
+uart_pin:
+#tx_pin:
+#select_pins:
+#microsteps:
+#interpolate: True
+run_current:
+#hold_current:
+#sense_resistor: 0.110
+#stealthchop_threshold: 0
+# See the "tmc2208" section for the definition of these parameters.
+#uart_address:
+# The address of the TMC2209 chip for UART messages (an integer
+# between 0 and 3). This is typically used when multiple TMC2209
+# chips are connected to the same UART pin. The default is zero.
+#driver_IHOLDDELAY: 8
+#driver_TPOWERDOWN: 20
+#driver_TBL: 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
+#driver_SGTHRS: 0
+# Set the given register during the configuration of the TMC2209
+# 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.
+#diag_pin:
+# The micro-controller pin attached to the DIAG line of the TMC2209
+# chip. Setting this creates a "tmc2209_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_SGTHRS to an appropriate sensitivity value.) The default is
+# to not enable sensorless homing.
+```
+
+## [tmc2660]
+
+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]").
+
+```
+[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 to use the default micro-controller spi bus.
+#spi_speed: 4000000
+# SPI bus frequency used to communicate with the TMC2660 stepper
+# driver. The default is 4000000.
+#spi_software_sclk_pin:
+#spi_software_mosi_pin:
+#spi_software_miso_pin:
+# These optional parameters allow one to customize the SPI settings
+# used to communicate with the chip.
+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 amps RMS) used by the driver during
+# stepper movement. This parameter must be provided.
+#sense_resistor:
+# The resistance (in ohms) of the motor sense resistor. 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_TBL: 2
+#driver_RNDTF: 0
+#driver_HDEC: 0
+#driver_CHM: 0
+#driver_HEND: 3
+#driver_HSTRT: 3
+#driver_TOFF: 4
+#driver_SEIMIN: 0
+#driver_SEDN: 0
+#driver_SEMAX: 0
+#driver_SEUP: 0
+#driver_SEMIN: 0
+#driver_SFILT: 1
+#driver_SGT: 0
+#driver_SLPH: 0
+#driver_SLPL: 0
+#driver_DISS2G: 0
+#driver_TS2G: 3
+# 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. Be
+# especially aware of the CHOPCONF register, where setting CHM to
+# either zero or one will lead to layout changes (the first bit of
+# HDEC) is interpreted as the MSB of HSTRT in this case).
+```
+
+## [tmc5160]
+
+Configure a TMC5160 stepper motor driver via SPI bus. To use this
+feature, define a config section with a "tmc5160" prefix followed by
+the name of the corresponding stepper config section (for example,
+"[tmc5160 stepper_x]").
+
+```
+[tmc5160 stepper_x]
+cs_pin:
+# The pin corresponding to the TMC5160 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.
+#spi_bus:
+#spi_speed:
+#spi_software_sclk_pin:
+#spi_software_mosi_pin:
+#spi_software_miso_pin:
+# These optional parameters allow one to customize the SPI settings
+# used to communicate with the chip.
+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 RMS) to configure the driver to use
+# during stepper movement. This parameter must be provided.
+#hold_current:
+# The amount of current (in amps RMS) 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.075
+# The resistance (in ohms) of the motor sense resistor. The default
+# is 0.075 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. Try to reexperience this with tmc5160.
+# Values can be much higher than other tmcs.
+#driver_IHOLDDELAY: 6
+#driver_TPOWERDOWN: 10
+#driver_TBL: 2
+#driver_TOFF: 3
+#driver_HEND: 2
+#driver_HSTRT: 5
+#driver_FD3: 0
+#driver_TPFD: 4
+#driver_CHM: 0
+#driver_VHIGHFS: 0
+#driver_VHIGHCHM: 0
+#driver_DISS2G: 0
+#driver_DISS2VS: 0
+#driver_PWM_AUTOSCALE: True
+#driver_PWM_AUTOGRAD: True
+#driver_PWM_FREQ: 0
+#driver_FREEWHEEL: 0
+#driver_PWM_GRAD: 0
+#driver_PWM_OFS: 30
+#driver_PWM_REG: 4
+#driver_PWM_LIM: 12
+#driver_SGT: 0
+#driver_SEMIN: 0
+#driver_SEUP: 0
+#driver_SEMAX: 0
+#driver_SEDN: 0
+#driver_SEIMIN: 0
+#driver_SFILT: 0
+# Set the given register during the configuration of the TMC5160
+# 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.
+#diag0_pin:
+#diag1_pin:
+# The micro-controller pin attached to one of the DIAG lines of the
+# TMC5160 chip. Only a single diag pin should be specified.
+# Setting this creates a "tmc5160_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.
+```
+
+# Run-time stepper motor current configuration
+
+## [ad5206]
+
+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.
+#spi_bus:
+#spi_speed:
+#spi_software_sclk_pin:
+#spi_software_mosi_pin:
+#spi_software_miso_pin:
+# These optional parameters allow one to customize the SPI settings
+# used to communicate with the chip.
+#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.
+```
+
+## [mcp4451]
+
+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.
+```
+
+## [mcp4728]
+
+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: 96
+# The i2c address that the chip is using on the i2c bus. The default
+# is 96.
+#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 (2.048V) 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 (2.048V), 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.
+```
+
+## [mcp4018]
+
+Statically configured MCP4018 digipot connected via two gpio "bit
+banging" pins (one may define any number of sections with an "mcp4018"
+prefix).
+
+```
+[mcp4018 my_digipot]
+scl_pin:
+# The SCL "clock" pin. This parameter must be provided.
+sda_pin:
+# The SDA "data" pin. This parameter must be provided.
+wiper:
+# The value to statically set the given MCP4018 "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).
+# This parameter must be provided.
+#scale:
+# This parameter can be used to alter how the 'wiper' parameter is
+# interpreted. If provided, then the 'wiper' parameter should be
+# between 0.0 and 'scale'. This may be useful when the MCP4018 is
+# used to set stepper voltage references. The 'scale' can be set to
+# the equivalent stepper amperage if the MCP4018 is at its highest
+# resistance, and then the 'wiper' parameter can be specified using
+# the desired amperage value for the stepper. The default is to not
+# scale the 'wiper' parameter.
+```
+
+# Display support
+
+## [display]
+
+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), "ssd1306", or "sh1106". 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:
+#rst_pin:
+# The pins connected to an uc1701 type lcd. The rst_pin is
+# optional. The cs_pin and a0_pin parameters must be provided when
+# using an uc1701 display.
+#contrast: 40
+# The contrast to set when using a uc1701 or SSD1306/SH1106 type
+# display For UC1701 the value may range from 0 to 63. Default is
+# 40. For SSD1306/SH1106 the value may range from 0 to 256. Default
+# is 239.
+#vcomh: 0
+# Set the Vcomh value on SSD1306/SH1106 displays. This value is
+# associated with a "smearing" effect on some OLED displays. The
+# value may range from 0 to 63. Default is 0.
+#x_offset: 0
+# Set the horizontal offset value on SSD1306/SH1106 displays.
+# Default is 0.
+#invert: FALSE
+# TRUE inverts the pixels on certain OLED (SSD1306/SH1106) displays.
+# The default is FALSE.
+#cs_pin:
+#dc_pin:
+#spi_bus:
+#spi_speed:
+#spi_software_sclk_pin:
+#spi_software_mosi_pin:
+#spi_software_miso_pin:
+# The pins connected to an ssd1306 type lcd when in "4-wire" spi
+# mode. The parameters that start with "spi_" are optional and they
+# control the spi settings used to communicate with the chip. The
+# default is to use i2c mode for ssd1306 displays.
+#reset_pin:
+# A reset pin may be specified on ssd1306 displays. If it is not
+# specified then the hardware must have a pull-up on the
+# corresponding lcd line.
+#display_group:
+# The name of the display_data group to show on the display. This
+# controls the content of the screen (see the "display_data" section
+# for more information). The default is _default_20x4 for hd44780
+# displays and _default_16x4 for other displays.
+#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)
+#menu_root:
+# Name of the main menu section to show when clicking the encoder
+# on the home screen. The defaults is __main, and this shows the
+# the default menus as defined in klippy/extras/display/menu.cfg
+#menu_reverse_navigation:
+# When enabled it will reverse up and down directions for list
+# navigation. The default is False. This parameter is optional.
+#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. The presence of an
+# 'analog_range_click_pin' config parameter turns this parameter
+# from digital to analog.
+#back_pin:
+# The pin connected to 'back' button. This parameter is optional,
+# menu can be used without it. The presence of an
+# 'analog_range_back_pin' config parameter turns this parameter from
+# digital to analog.
+#up_pin:
+# The pin connected to 'up' button. This parameter must be provided
+# when using menu without encoder. The presence of an
+# 'analog_range_up_pin' config parameter turns this parameter from
+# digital to analog.
+#down_pin:
+# The pin connected to 'down' button. This parameter must be
+# provided when using menu without encoder. The presence of an
+# 'analog_range_down_pin' config parameter turns this parameter from
+# digital to analog.
+#kill_pin:
+# The pin connected to 'kill' button. This button will call
+# emergency stop. The presence of an 'analog_range_kill_pin' config
+# parameter turns this parameter from digital to analog.
+#analog_pullup_resistor: 4700
+# The resistance (in ohms) of the pullup attached to the analog
+# button. The default is 4700 ohms.
+#analog_range_click_pin:
+# The resistance range for a 'enter' button. Range minimum and
+# maximum comma-separated values must be provided when using analog
+# button.
+#analog_range_back_pin:
+# The resistance range for a 'back' button. Range minimum and
+# maximum comma-separated values must be provided when using analog
+# button.
+#analog_range_up_pin:
+# The resistance range for a 'up' button. Range minimum and maximum
+# comma-separated values must be provided when using analog button.
+#analog_range_down_pin:
+# The resistance range for a 'down' button. Range minimum and
+# maximum comma-separated values must be provided when using analog
+# button.
+#analog_range_kill_pin:
+# The resistance range for a 'kill' button. Range minimum and
+# maximum comma-separated values must be provided when using analog
+# button.
+```
+
+## [display_data]
+
+Support for displaying custom data on an lcd screen. One may create
+any number of display groups and any number of data items under those
+groups. The display will show all the data items for a given group if
+the display_group option in the [display] section is set to the given
+group name.
+
+```
+[display_data my_group_name my_data_name]
+position: 0, 0
+# Comma separated row and column of the display position that should
+# be used to display the information. This parameter must be
+# provided.
+text:
+# The text to show at the given position. This field is evaluated
+# using command templates (see docs/Command_Templates.md). This
+# parameter must be provided.
+```
+
+## [display_template]
+
+Display data text "macros" (one may define any number of sections
+with a display_template prefix). This feature allows one to reduce
+repetitive definitions in display_data sections. One may use the
+builtin render() function in display_data sections to evaluate a
+template. For example, if one were to define [display_template
+my_template] then one could use `{ render('my_template') }` in a
+display_data section.
+
+```
+[display_template my_template_name]
+#param_<name>:
+# One may specify any number of options with a "param_" prefix. The
+# given name will be assigned the given value (parsed as a Python
+# literal) and will be available during macro expansion. If the
+# parameter is passed in the call to render() then that value will
+# be used during macro expansion. For example, a config with
+# "param_speed = 75" might have a caller with
+# "render('my_template_name', param_speed=80)". Parameter names may
+# not use upper case characters.
+#text:
+# The text to return when the render() function is called for this
+# template. This field is evaluated using command templates (see
+# docs/Command_Templates.md). This parameter must be provided.
+```
+
+## [display_glyph]
+
+Display a custom glyph on displays that support it. The given name
+will be assigned the given display data which can then be referenced
+in the display templates by their name surrounded by two "tilde"
+symbols i.e. `~my_display_glyph~`
+
+```
+[display_glyph my_display_glyph]
+#data:
+# The display data, stored as 16 lines consisting of 16 bits (1 per
+# pixel) where '.' is a blank pixel and '*' is an on pixel (e.g.,
+# "****************" to display a solid horizontal line).
+# Alternatively, one can use '0' for a blank pixel and '1' for an on
+# pixel. Put each display line into a separate config line. The
+# glyph must consist of exactly 16 lines with 16 bits each. This
+# parameter is optional.
+#hd44780_data:
+# Glyph to use on 20x4 hd44780 displays. The glyph must consist of
+# exactly 8 lines with 5 bits each. This parameter is optional.
+#hd44780_slot:
+# The hd44780 hardware index (0..7) to store the glyph at. If
+# multiple distinct images use the same slot then make sure to only
+# use one of those images in any given screen. This parameter is
+# required if hd44780_data is specified.
+```
+
+## [display my_extra_display]
+
+If a primary [display] section has been defined in printer.cfg as
+shown above it is possible to define multiple auxiliary displays. Note
+that auxiliary displays do not currently support menu functionality,
+thus they do not support the "menu" options or button configuration.
+
+```
+[display my_extra_display]
+# See the "display" section for available parameters.
+```
+
+## [menu]
+
+Available options in menu Jinja2 template context:
+
+Read-only attributes for menu element:
+* menu.width - element width (number of display columns)
+* menu.ns - element namespace
+* menu.event - name of the event that triggered the script
+* menu.input - input value, only available in input script context
+
+List of actions for menu element:
+* menu.back(force, update): will execute menu back command, optional
+ boolean parameters <force> and <update>.
+ * When <force> is set True then it will also stop editing. Default
+ value is False
+ * When <update> is set False then parent container items are not
+ updated. Default value is True
+* menu.exit(force) - will execute menu exit command, optional boolean
+ parameter <force> default value False
+ * When <force> is set True then it will also stop editing. Default
+ value is False
+
+```
+# Common parameters available for all menu config sections.
+#[menu some_name]
+#type:
+# One of command, input, list, text:
+# command - basic menu element with various script triggers
+# input - same like 'command' but has value changing capabilities.
+# Press will start/stop edit mode.
+# list - it allows for menu items to be grouped together in a
+# scrollable list. Add to the list by creating menu
+# configurations using "some_list" as a prefix - for
+# example: [menu some_list some_item_in_the_list]
+# vsdlist - same as 'list' but will append files from virtual sdcard
+# (will be removed in the future)
+#name:
+# Name of menu item - evaluated as a template.
+#enable:
+# Template that evaluates to True or False.
+#index:
+# Position where an item needs to be inserted in list. By default
+# the item is added at the end.
+
+#[menu some_list]
+#type: list
+#name:
+#enable:
+# See above for a description of these parameters.
+
+#[menu some_list some_command]
+#type: command
+#name:
+#enable:
+# See above for a description of these parameters.
+#gcode:
+# Script to run on button click or long click. Evaluated as a
+# template.
+
+#[menu some_list some_input]
+#type: input
+#name:
+#enable:
+# See above for a description of these parameters.
+#input:
+# Initial value to use when editing - evaluated as a template.
+# Result must be float.
+#input_min:
+# Minimum value of range - evaluated as a template. Default -99999.
+#input_max:
+# Maximum value of range - evaluated as a template. Default 99999.
+#input_step:
+# Editing step - Must be a positive integer or float value. It has
+# internal fast rate step. When "(input_max - input_min) /
+# input_step > 100" then fast rate step is 10 * input_step else fast
+# rate step is same input_step.
+#realtime:
+# This attribute accepts static boolean value. When enabled then
+# gcode script is run after each value change. The default is False.
+#gcode:
+# Script to run on button click, long click or value change.
+# Evaluated as a template. The button click will trigger the edit
+# mode start or end.
+```
+
+# Filament sensors
+
+## [filament_switch_sensor]
+
+Filament Switch Sensor. Support for filament insert and runout
+detection using a switch sensor, such as an endstop switch.
+
+```
+[filament_switch_sensor my_sensor]
+#pause_on_runout: True
+# When set to True, a PAUSE will execute immediately after a runout
+# is detected. Note that if pause_on_runout is False and the
+# runout_gcode is omitted then runout detection is disabled. Default
+# is True.
+#runout_gcode:
+# A list of G-Code commands to execute after a filament runout is
+# detected. See docs/Command_Templates.md for G-Code format. If
+# pause_on_runout is set to True this G-Code will run after the
+# PAUSE is complete. The default is not to run any G-Code commands.
+#insert_gcode:
+# A list of G-Code commands to execute after a filament insert is
+# detected. See docs/Command_Templates.md for G-Code format. The
+# default is not to run any G-Code commands, which disables insert
+# detection.
+#event_delay: 3.0
+# The minimum amount of time in seconds to delay between events.
+# Events triggered during this time period will be silently
+# ignored. The default is 3 seconds.
+#pause_delay: 0.5
+# The amount of time to delay, in seconds, between the pause command
+# dispatch and execution of the runout_gcode. It may be useful to
+# increase this delay if OctoPrint exhibits strange pause behavior.
+# Default is 0.5 seconds.
+#switch_pin:
+# The pin on which the switch is connected. This parameter must be
+# provided.
+```
+
+## [tsl1401cl_filament_width_sensor]
+
+TSLl401CL Based Filament Width Sensor
+
+```
+[tsl1401cl_filament_width_sensor]
+#pin:
+#default_nominal_filament_diameter: 1.75 # (mm)
+# Maximum allowed filament diameter difference as mm.
+#max_difference: 0.2
+# The distance from sensor to the melting chamber as mm.
+#measurement_delay: 100
+```
+
+## [hall_filament_width_sensor]
+
+Hall filament width sensor (see
+[Hall Filament Width Sensor](HallFilamentWidthSensor.md)).
+
+```
+[hall_filament_width_sensor]
+adc1:
+adc2:
+# Analog input pins connected to the sensor. These parameters must
+# be provided.
+#cal_dia1: 1.50
+#cal_dia2: 2.00
+# The calibration values (in mm) for the sensors. The default is
+# 1.50 for cal_dia1 and 2.00 for cal_dia2.
+#raw_dia1: 9500
+#raw_dia2: 10500
+# The raw calibration values for the sensors. The default is 9500
+# for raw_dia1 and 10500 for raw_dia2.
+#default_nominal_filament_diameter: 1.75
+# The nominal filament diameter. This parameter must be provided.
+#max_difference: 0.200
+# Maximum allowed filament diameter difference in millimeters (mm).
+# If difference between nominal filament diameter and sensor output
+# is more than +- max_difference, extrusion multiplier is set back
+# to %100. The default is 0.200.
+#measurement_delay: 70
+# The distance from sensor to the melting chamber/hot-end in
+# millimeters (mm). The filament between the sensor and the hot-end
+# will be treated as the default_nominal_filament_diameter. Host
+# module works with FIFO logic. It keeps each sensor value and
+# position in an array and POP them back in correct position. This
+# parameter must be provided.
+#enable: False
+# Sensor enabled or disabled after power on. The default is to
+# disable.
+#measurement_interval: 10
+# The approximate distance (in mm) between sensor readings. The
+# default is 10mm.
+#logging: False
+# Out diameter to terminal and klipper.log can be turn on|of by
+# command.
+#min_diameter: 1.0
+# Minimal diameter for trigger virtual filament_switch_sensor.
+#use_current_dia_while_delay: False
+# Use the current diameter instead of the nominal diameter while
+# the measurement delay has not run through.
+#pause_on_runout:
+#runout_gcode:
+#insert_gcode:
+#event_delay:
+#pause_delay:
+# See the "filament_switch_sensor" section for a description of the
+# above parameters.
+```
+
+# Board specific hardware support
+
+## [sx1509]
+
+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]
+i2c_address:
+# I2C address used by this expander. Depending on the hardware
+# jumpers this is one out of the following addresses: 62 63 112
+# 113. This parameter must be provided.
+#i2c_mcu: mcu
+# The name of the micro-controller that the SX1509 chip is connected
+# to. The default is "mcu".
+#i2c_bus:
+# If the I2C implementation of your micro-controller supports
+# multiple I2C busses, you may specify the bus name here. The
+# default is to use the default micro-controller i2c bus.
+```
+
+## [samd_sercom]
+
+SAMD SERCOM configuration to specify which pins to use on a given
+SERCOM. One may define one section with the "samd_sercom" prefix per
+SERCOM available. Each SERCOM must be configured prior to using it as
+SPI or I2C peripheral. Place this config section above any other
+section that makes use of SPI or I2C buses.
+
+```
+[samd_sercom sercom0]
+tx_pin:
+# MOSI pin for SPI communication, or SDA (data) pin for I2C
+# communication. The pin must have a valid pinmux configuration
+# for the given SERCOM peripheral. This parameter must be provided.
+#rx_pin:
+# MISO pin for SPI communication. This pin is not used for I2C
+# communication (I2C uses tx_pin for both sending and receiving).
+# The pin must have a valid pinmux configuration for the given
+# SERCOM peripheral. This parameter is optional.
+clk_pin:
+# CLK pin for SPI communication, or SCL (clock) pin for I2C
+# communication. The pin must have a valid pinmux configuration
+# for the given SERCOM peripheral. This parameter must be provided.
+```
+
+## [adc_scaled]
+
+Duet2 Maestro analog scaling by vref and vssa readings. Defining an
+adc_scaled section enables virtual adc pins (such as "my_name:PB0")
+that are automatically adjusted by the board's vref and vssa
+monitoring pins. Be sure to define this config section above any
+config sections that use one these virtual pins.
+
+```
+[adc_scaled my_name]
+vref_pin:
+# The ADC pin to use for VREF monitoring. This parameter must be
+# provided.
+vssa_pin:
+# The ADC pin to use for VSSA monitoring. This parameter must be
+# provided.
+#smooth_time: 2.0
+# A time value (in seconds) over which the vref and vssa
+# measurements will be smoothed to reduce the impact of measurement
+# noise. The default is 2 seconds.
+```
+
+## [replicape]
+
+Replicape support - see the
+[generic-replicape.cfg](https://github.com/KevinOConnor/klipper/tree/master/config/generic-replicape.cfg)
+file for further details.
+
+```
+[replicape]
+```