diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2022-01-29 12:54:07 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2022-02-01 11:59:55 -0500 |
commit | c80552f9e7750d8d425888b7809b5af5bdcf9b74 (patch) | |
tree | 8dc007102cdd88d7b3ce77d587867408ac9207b8 /docs/G-Codes.md | |
parent | 9c4172784ad832ab05e543f5afc68775cd90c922 (diff) | |
download | kutter-c80552f9e7750d8d425888b7809b5af5bdcf9b74.tar.gz kutter-c80552f9e7750d8d425888b7809b5af5bdcf9b74.tar.xz kutter-c80552f9e7750d8d425888b7809b5af5bdcf9b74.zip |
docs: Reorganize layout of G-Codes.md
Break listing up by module name. Provide links to "extended"
commands. Sort reference by module name.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'docs/G-Codes.md')
-rw-r--r-- | docs/G-Codes.md | 1653 |
1 files changed, 953 insertions, 700 deletions
diff --git a/docs/G-Codes.md b/docs/G-Codes.md index 6450f0ef..6b903342 100644 --- a/docs/G-Codes.md +++ b/docs/G-Codes.md @@ -50,33 +50,337 @@ to implement it with a custom example, one might use this to implement: `G12`, `G29`, `G30`, `G31`, `M42`, `M80`, `M81`, `T1`, etc. -### G-Code SD card commands +## Additional Commands -Klipper also supports the following standard G-Code commands if the -[virtual_sdcard config section](Config_Reference.md#virtual_sdcard) is -enabled: -- List SD card: `M20` -- Initialize SD card: `M21` -- Select SD file: `M23 <filename>` -- Start/resume SD print: `M24` -- Pause SD print: `M25` -- Set SD position: `M26 S<offset>` -- Report SD print status: `M27` +Klipper uses "extended" G-Code commands for general configuration and +status. These extended commands all follow a similar format - they +start with a command name and may be followed by one or more +parameters. For example: `SET_SERVO SERVO=myservo ANGLE=5.3`. In this +document, the commands and parameters are shown in uppercase, however +they are not case sensitive. (So, "SET_SERVO" and "set_servo" both run +the same command.) -In addition, the following extended commands are availble when the -"virtual_sdcard" config section is enabled. -- Load a file and start SD print: `SDCARD_PRINT_FILE FILENAME=<filename>` -- Unload file and clear SD state: `SDCARD_RESET_FILE` +This section is organized my Klipper module name, which generally +follows the section names specified in the +[printer configuration file](Config_Reference.md). Note that some +modules are automatically loaded. -### G-Code arcs +### [adxl345] -The following standard G-Code commands are available if a -[gcode_arcs config section](Config_Reference.md#gcode_arcs) is -enabled: -- Controlled Arc Move (G2 or G3): `G2 [X<pos>] [Y<pos>] [Z<pos>] - [E<pos>] [F<speed>] I<value> J<value>` +The following commands are available when an +[adxl345 config section](Config_Reference.md#adxl345) is enabled. + +#### ACCELEROMETER_MEASURE +`ACCELEROMETER_MEASURE [CHIP=<config_name>] [NAME=<value>]`: Starts +accelerometer measurements at the requested number of samples per +second. If CHIP is not specified it defaults to "adxl345". The command +works in a start-stop mode: when executed for the first time, it +starts the measurements, next execution stops them. The results of +measurements are written to a file named +`/tmp/adxl345-<chip>-<name>.csv` where `<chip>` is the name of the +accelerometer chip (`my_chip_name` from `[adxl345 my_chip_name]`) and +`<name>` is the optional NAME parameter. If NAME is not specified it +defaults to the current time in "YYYYMMDD_HHMMSS" format. If the +accelerometer does not have a name in its config section (simply +`[adxl345]`) then `<chip>` part of the name is not generated. + +#### ACCELEROMETER_QUERY +`ACCELEROMETER_QUERY [CHIP=<config_name>] [RATE=<value>]`: queries +accelerometer for the current value. If CHIP is not specified it +defaults to "adxl345". If RATE is not specified, the default value is +used. This command is useful to test the connection to the ADXL345 +accelerometer: one of the returned values should be a free-fall +acceleration (+/- some noise of the chip). + +#### ACCELEROMETER_DEBUG_READ +`ACCELEROMETER_DEBUG_READ [CHIP=<config_name>] REG=<register>`: +queries ADXL345 register <register> (e.g. 44 or 0x2C). Can be useful +for debugging purposes. + +#### ACCELEROMETER_DEBUG_WRITE +`ACCELEROMETER_DEBUG_WRITE [CHIP=<config_name>] REG=<reg> +VAL=<value>`: Writes raw <value> into a register <register>. Both +<value> and <register> can be a decimal or a hexadecimal integer. Use +with care, and refer to ADXL345 data sheet for the reference. + +### [bed_mesh] + +The following commands are available when the +[bed_mesh config section](Config_Reference.md#bed_mesh) is enabled +(also see the [bed mesh guide](Bed_Mesh.md)). -### G-Code firmware retraction +#### BED_MESH_CALIBRATE +`BED_MESH_CALIBRATE [METHOD=manual] [<probe_parameter>=<value>] +[<mesh_parameter>=<value>]`: This command probes the bed using +generated points specified by the parameters in the config. After +probing, a mesh is generated and z-movement is adjusted according to +the mesh. See the PROBE command for details on the optional probe +parameters. If METHOD=manual is specified then the manual probing tool +is activated - see the MANUAL_PROBE command above for details on the +additional commands available while this tool is active. + +#### BED_MESH_OUTPUT +`BED_MESH_OUTPUT PGP=[<0:1>]`: This command outputs the current probed +z values and current mesh values to the terminal. If PGP=1 is +specified the X, Y coordinates generated by bed_mesh, along with their +associated indices, will be output to the terminal. + +#### BED_MESH_MAP +`BED_MESH_MAP`: Like to BED_MESH_OUTPUT, this command prints the +current state of the mesh to the terminal. Instead of printing the +values in a human readable format, the state is serialized in json +format. This allows octoprint plugins to easily capture the data and +generate height maps approximating the bed's surface. + +#### BED_MESH_CLEAR +`BED_MESH_CLEAR`: This command clears the mesh and removes all z +adjustment. It is recommended to put this in your end-gcode. + +#### BED_MESH_PROFILE +`BED_MESH_PROFILE LOAD=<name> SAVE=<name> REMOVE=<name>`: This command +provides profile management for mesh state. LOAD will restore the mesh +state from the profile matching the supplied name. SAVE will save the +current mesh state to a profile matching the supplied name. Remove +will delete the profile matching the supplied name from persistent +memory. Note that after SAVE or REMOVE operations have been run the +SAVE_CONFIG gcode must be run to make the changes to persistent memory +permanent. + +#### BED_MESH_OFFSET +`BED_MESH_OFFSET [X=<value>] [Y=<value>]`: Applies X and/or Y offsets +to the mesh lookup. This is useful for printers with independent +extruders, as an offset is necessary to produce correct Z adjustment +after a tool change. + +### [bed_screws] + +The following commands are available when the +[bed_screws config section](Config_Reference.md#bed_screws) is enabled +(also see the +[manual level guide](Manual_Level.md#adjusting-bed-leveling-screws)). + +#### BED_SCREWS_ADJUST +`BED_SCREWS_ADJUST`: This command will invoke the bed screws +adjustment tool. It will command the nozzle to different locations (as +defined in the config file) and allow one to make adjustments to the +bed screws so that the bed is a constant distance from the nozzle. + +### [bed_tilt] + +The following commands are available when the +[bed_tilt config section](Config_Reference.md#bed_tilt) is enabled. + +#### BED_TILT_CALIBRATE +`BED_TILT_CALIBRATE [METHOD=manual] [<probe_parameter>=<value>]`: This +command will probe the points specified in the config and then +recommend updated x and y tilt adjustments. See the PROBE command for +details on the optional probe parameters. If METHOD=manual is +specified then the manual probing tool is activated - see the +MANUAL_PROBE command above for details on the additional commands +available while this tool is active. + +### [bltouch] + +The following command is available when a +[bltouch config section](Config_Reference.md#bltouch) is enabled (also +see the [BL-Touch guide](BLTouch.md)). + +#### BLTOUCH_DEBUG +`BLTOUCH_DEBUG COMMAND=<command>`: This sends a command to the +BLTouch. It may be useful for debugging. Available commands are: +`pin_down`, `touch_mode`, `pin_up`, `self_test`, `reset`. A BL-Touch +V3.0 or V3.1 may also support `set_5V_output_mode`, +`set_OD_output_mode`, `output_mode_store` commands. + +#### BLTOUCH_STORE +`BLTOUCH_STORE MODE=<output_mode>`: This stores an output mode in the +EEPROM of a BLTouch V3.1 Available output_modes are: `5V`, `OD` + +### [configfile] + +The configfile module is automatically loaded. + +#### SAVE_CONFIG +`SAVE_CONFIG`: This command will overwrite the main printer config +file and restart the host software. This command is used in +conjunction with other calibration commands to store the results of +calibration tests. + +### [delayed_gcode] + +The following command is enabled if a +[delayed_gcode config section](Config_Reference.md#delayed_gcode) has +been enabled (also see the +[template guide](Command_Templates.md#delayed-gcodes)). + +#### UPDATE_DELAYED_GCODE +`UPDATE_DELAYED_GCODE [ID=<name>] [DURATION=<seconds>]`: Updates the +delay duration for the identified [delayed_gcode] and starts the timer +for gcode execution. A value of 0 will cancel a pending delayed gcode +from executing. + +### [delta_calibrate] + +The following commands are available when the +[delta_calibrate config section](Config_Reference.md#linear-delta-kinematics) +is enabled (also see the [delta calibrate guide](Delta_Calibrate.md)). + +#### DELTA_CALIBRATE +`DELTA_CALIBRATE [METHOD=manual] [<probe_parameter>=<value>]`: This +command will probe seven points on the bed and recommend updated +endstop positions, tower angles, and radius. See the PROBE command for +details on the optional probe parameters. If METHOD=manual is +specified then the manual probing tool is activated - see the +MANUAL_PROBE command above for details on the additional commands +available while this tool is active. + +#### DELTA_ANALYZE +`DELTA_ANALYZE`: This command is used during enhanced delta +calibration. See [Delta Calibrate](Delta_Calibrate.md) for details. + +### [display] + +The following command is available when a +[display config section](Config_Reference.md#gcode_macro) is enabled. + +#### SET_DISPLAY_GROUP +`SET_DISPLAY_GROUP [DISPLAY=<display>] GROUP=<group>`: Set the active +display group of an lcd display. This allows to define multiple +display data groups in the config, e.g. `[display_data <group> +<elementname>]` and switch between them using this extended gcode +command. If DISPLAY is not specified it defaults to "display" (the +primary display). + +### [display_status] + +The display_status module is automatically loaded if a +[display config section](Config_Reference.md#display) is enabled. It +provides the following standard G-Code commands: +- Display Message: `M117 <message>` +- Set build percentage: `M73 P<percent>` + +### [dual_carriage] + +The following command is available when the +[dual_carriage config section](Config_Reference.md#dual_carriage) is +enabled. + +#### SET_DUAL_CARRIAGE +`SET_DUAL_CARRIAGE CARRIAGE=[0|1]`: This command will set the active +carriage. It is typically invoked from the activate_gcode and +deactivate_gcode fields in a multiple extruder configuration. + +### [endstop_phase] + +The following commands are available when an +[endstop_phase config section](Config_Reference.md#endstop_phase) is +enabled (also see the [endstop phase guide](Endstop_Phase.md)). + +#### ENDSTOP_PHASE_CALIBRATE +`ENDSTOP_PHASE_CALIBRATE [STEPPER=<config_name>]`: If no STEPPER +parameter is provided then this command will reports statistics on +endstop stepper phases during past homing operations. When a STEPPER +parameter is provided it arranges for the given endstop phase setting +to be written to the config file (in conjunction with the SAVE_CONFIG +command). + +### [extruder] + +The following commands are available if an +[extruder config section](Config_Reference.md#extruder) is enabled: + +#### ACTIVATE_EXTRUDER +`ACTIVATE_EXTRUDER EXTRUDER=<config_name>`: In a printer with multiple +extruders this command is used to change the active extruder. + +#### SET_PRESSURE_ADVANCE +`SET_PRESSURE_ADVANCE [EXTRUDER=<config_name>] +[ADVANCE=<pressure_advance>] +[SMOOTH_TIME=<pressure_advance_smooth_time>]`: Set pressure advance +parameters. If EXTRUDER is not specified, it defaults to the active +extruder. + +#### SET_EXTRUDER_STEP_DISTANCE +`SET_EXTRUDER_STEP_DISTANCE [EXTRUDER=<config_name>] +[DISTANCE=<distance>]`: Set a new value for the provided extruder's +"step distance". The "step distance" is +`rotation_distance/(full_steps_per_rotation*microsteps)`. Value is not +retained on Klipper reset. Use with caution, small changes can result +in excessive pressure between extruder and hot end. Do proper +calibration steps with filament before use. If 'DISTANCE' value is not +included command will return current step distance. + +#### SYNC_STEPPER_TO_EXTRUDER +`SYNC_STEPPER_TO_EXTRUDER STEPPER=<name> [EXTRUDER=<name>]`: This +command will cause the given extruder STEPPER (as specified in an +[extruder](Config_Reference#extruder) or +[extruder stepper](Config_Reference#extruder_stepper) config section) +to become synchronized to the given EXTRUDER. If EXTRUDER is an empty +string then the stepper will not be synchronized to an extruder. + +### [fan_generic] + +The following command is available when a +[fan_generic config section](Config_Reference.md#fan_generic) is +enabled. + +#### SET_FAN_SPEED +`SET_FAN_SPEED FAN=config_name SPEED=<speed>` This command sets the +speed of a fan. <speed> must be between 0.0 and 1.0. + +### [firmware_retraction] + +The following standard G-Code commands are available when the +[firmware_retraction config section](Config_Reference.md#firmware_retraction) +is enabled. These commands allow you to utilize the firmware +retraction feature available in many slicers, to reduce stringing +during non-extrusion moves from one part of the print to another. +Appropriately configuring pressure advance reduces the length of +retraction required. +- `G10`: Retracts the extruder using the currently configured + parameters. +- `G11`: Unretracts the extruder using the currently configured + parameters. + +The following additional commands are also available. + +#### SET_RETRACTION +`SET_RETRACTION [RETRACT_LENGTH=<mm>] [RETRACT_SPEED=<mm/s>] +[UNRETRACT_EXTRA_LENGTH=<mm>] [UNRETRACT_SPEED=<mm/s>]`: Adjust the +parameters used by firmware retraction. RETRACT_LENGTH determines the +length of filament to retract and unretract. The speed of retraction +is adjusted via RETRACT_SPEED, and is typically set relatively +high. The speed of unretraction is adjusted via UNRETRACT_SPEED, and +is not particularly critical, although often lower than RETRACT_SPEED. +In some cases it is useful to add a small amount of additional length +on unretraction, and this is set via UNRETRACT_EXTRA_LENGTH. +SET_RETRACTION is commonly set as part of slicer per-filament +configuration, as different filaments require different parameter +settings. + +#### GET_RETRACTION +`GET_RETRACTION`: Queries the current parameters used by firmware +retraction and displays them on the terminal. + +### [filament_switch_sensor] + +The following command is available when a +[filament_switch_sensor](Config_Reference.md#filament_switch_sensor) +or +[filament_motion_sensor](Config_Reference.md#filament_motion_sensor) +config section is enabled. + +#### QUERY_FILAMENT_SENSOR +`QUERY_FILAMENT_SENSOR SENSOR=<sensor_name>`: Queries the current +status of the filament sensor. The data displayed on the terminal will +depend on the sensor type defined in the configuration. + +#### SET_FILAMENT_SENSOR +`SET_FILAMENT_SENSOR SENSOR=<sensor_name> ENABLE=[0|1]`: Sets the +filament sensor on/off. If ENABLE is set to 0, the filament sensor +will be disabled, if set to 1 it is enabled. + +### [firmware_retraction] The following standard G-Code commands are available if a [firmware_retraction config section](Config_Reference.md#firmware_retraction) @@ -84,514 +388,504 @@ is enabled: - Retract: `G10` - Unretract: `G11` -### G-Code display commands +### [force_move] -The following standard G-Code commands are available if a -[display config section](Config_Reference.md#display) is enabled: -- Display Message: `M117 <message>` -- Set build percentage: `M73 P<percent>` +The force_move module is automatically loaded, however some commands +require setting `enable_force_move` in the +[printer config](Config_Reference#force_move). -### Other available G-Code commands +#### STEPPER_BUZZ +`STEPPER_BUZZ STEPPER=<config_name>`: Move the given stepper forward +one mm and then backward one mm, repeated 10 times. This is a +diagnostic tool to help verify stepper connectivity. -The following standard G-Code commands are currently available, but -using them is not recommended: -- Get Endstop Status: `M119` (Use QUERY_ENDSTOPS instead.) +#### FORCE_MOVE +`FORCE_MOVE STEPPER=<config_name> DISTANCE=<value> VELOCITY=<value> +[ACCEL=<value>]`: This command will forcibly move the given stepper +the given distance (in mm) at the given constant velocity (in mm/s). +If ACCEL is specified and is greater than zero, then the given +acceleration (in mm/s^2) will be used; otherwise no acceleration is +performed. No boundary checks are performed; no kinematic updates are +made; other parallel steppers on an axis will not be moved. Use +caution as an incorrect command could cause damage! Using this command +will almost certainly place the low-level kinematics in an incorrect +state; issue a G28 afterwards to reset the kinematics. This command is +intended for low-level diagnostics and debugging. -## Extended G-Code Commands +#### SET_KINEMATIC_POSITION +`SET_KINEMATIC_POSITION [X=<value>] [Y=<value>] [Z=<value>]`: Force +the low-level kinematic code to believe the toolhead is at the given +cartesian position. This is a diagnostic and debugging command; use +SET_GCODE_OFFSET and/or G92 for regular axis transformations. If an +axis is not specified then it will default to the position that the +head was last commanded to. Setting an incorrect or invalid position +may lead to internal software errors. This command may invalidate +future boundary checks; issue a G28 afterwards to reset the +kinematics. -Klipper uses "extended" G-Code commands for general configuration and -status. These extended commands all follow a similar format - they -start with a command name and may be followed by one or more -parameters. For example: `SET_SERVO SERVO=myservo ANGLE=5.3`. In this -document, the commands and parameters are shown in uppercase, however -they are not case sensitive. (So, "SET_SERVO" and "set_servo" both run -the same command.) +### [gcode] -The following standard commands are supported: -- `QUERY_ENDSTOPS`: Probe the axis endstops and report if they are - "triggered" or in an "open" state. This command is typically used to - verify that an endstop is working correctly. -- `QUERY_ADC [NAME=<config_name>] [PULLUP=<value>]`: Report the last - analog value received for a configured analog pin. If NAME is not - provided, the list of available adc names are reported. If PULLUP is - provided (as a value in Ohms), the raw analog value along with the - equivalent resistance given that pullup is reported. -- `GET_POSITION`: Return information on the current location of the - toolhead. -- `SET_GCODE_OFFSET [X=<pos>|X_ADJUST=<adjust>] - [Y=<pos>|Y_ADJUST=<adjust>] [Z=<pos>|Z_ADJUST=<adjust>] - [MOVE=1 [MOVE_SPEED=<speed>]]`: Set a positional offset to apply to - future G-Code commands. This is commonly used to virtually change - the Z bed offset or to set nozzle XY offsets when switching - extruders. For example, if "SET_GCODE_OFFSET Z=0.2" is sent, then - future G-Code moves will have 0.2mm added to their Z height. If the - X_ADJUST style parameters are used, then the adjustment will be - added to any existing offset (eg, "SET_GCODE_OFFSET Z=-0.2" followed - by "SET_GCODE_OFFSET Z_ADJUST=0.3" would result in a total Z offset - of 0.1). If "MOVE=1" is specified then a toolhead move will be - issued to apply the given offset (otherwise the offset will take - effect on the next absolute G-Code move that specifies the given - axis). If "MOVE_SPEED" is specified then the toolhead move will be - performed with the given speed (in mm/s); otherwise the toolhead - move will use the last specified G-Code speed. -- `SAVE_GCODE_STATE [NAME=<state_name>]`: Save the current - g-code coordinate parsing state. Saving and restoring the g-code - state is useful in scripts and macros. This command saves the - current g-code absolute coordinate mode (G90/G91), absolute extrude - mode (M82/M83), origin (G92), offset (SET_GCODE_OFFSET), speed - override (M220), extruder override (M221), move speed, current XYZ - position, and relative extruder "E" position. If NAME is provided it - allows one to name the saved state to the given string. If NAME is - not provided it defaults to "default". -- `RESTORE_GCODE_STATE [NAME=<state_name>] - [MOVE=1 [MOVE_SPEED=<speed>]]`: Restore a state previously saved via - SAVE_GCODE_STATE. If "MOVE=1" is specified then a toolhead move will - be issued to move back to the previous XYZ position. If "MOVE_SPEED" - is specified then the toolhead move will be performed with the given - speed (in mm/s); otherwise the toolhead move will use the restored - g-code speed. -- `PID_CALIBRATE HEATER=<config_name> TARGET=<temperature> - [WRITE_FILE=1]`: Perform a PID calibration test. The specified - heater will be enabled until the specified target temperature is - reached, and then the heater will be turned off and on for several - cycles. If the WRITE_FILE parameter is enabled, then the file - /tmp/heattest.txt will be created with a log of all temperature - samples taken during the test. -- `TURN_OFF_HEATERS`: Turn off all heaters. -- `TEMPERATURE_WAIT SENSOR=<config_name> [MINIMUM=<target>] [MAXIMUM=<target>]`: - Wait until the given temperature sensor is at or above the supplied - MINIMUM and/or at or below the supplied MAXIMUM. -- `SET_VELOCITY_LIMIT [VELOCITY=<value>] [ACCEL=<value>] - [ACCEL_TO_DECEL=<value>] [SQUARE_CORNER_VELOCITY=<value>]`: Modify - the printer's velocity limits. -- `SET_HEATER_TEMPERATURE HEATER=<heater_name> [TARGET=<target_temperature>]`: - Sets the target temperature for a heater. If a target temperature is - not supplied, the target is 0. -- `ACTIVATE_EXTRUDER EXTRUDER=<config_name>`: In a printer with - multiple extruders this command is used to change the active - extruder. -- `SET_PRESSURE_ADVANCE [EXTRUDER=<config_name>] [ADVANCE=<pressure_advance>] - [SMOOTH_TIME=<pressure_advance_smooth_time>]`: Set pressure advance - parameters. If EXTRUDER is not specified, it defaults to the active - extruder. -- `SET_EXTRUDER_STEP_DISTANCE [EXTRUDER=<config_name>] - [DISTANCE=<distance>]`: Set a new value for the provided extruder's - "step distance". The "step distance" is - `rotation_distance/(full_steps_per_rotation*microsteps)`. Value is - not retained on Klipper reset. Use with caution, small changes can - result in excessive pressure between extruder and hot end. Do proper - calibration steps with filament before use. If 'DISTANCE' value is - not included command will return current step distance. -- `SYNC_STEPPER_TO_EXTRUDER STEPPER=<name> [EXTRUDER=<name>]`: This - command will cause the given extruder STEPPER (as specified in an - [extruder](Config_Reference#extruder) or - [extruder stepper](Config_Reference#extruder_stepper) config - section) to become synchronized to the given EXTRUDER. If EXTRUDER - is an empty string then the stepper will not be synchronized to an - extruder. -- `SET_STEPPER_ENABLE STEPPER=<config_name> ENABLE=[0|1]`: Enable or - disable only the given stepper. This is a diagnostic and debugging - tool and must be used with care. Disabling an axis motor does not - reset the homing information. Manually moving a disabled stepper may - cause the machine to operate the motor outside of safe limits. This - can lead to damage to axis components, hot ends, and print surface. -- `STEPPER_BUZZ STEPPER=<config_name>`: Move the given stepper forward - one mm and then backward one mm, repeated 10 times. This is a - diagnostic tool to help verify stepper connectivity. -- `MANUAL_PROBE [SPEED=<speed>]`: Run a helper script useful for - measuring the height of the nozzle at a given location. If SPEED is - specified, it sets the speed of TESTZ commands (the default is - 5mm/s). During a manual probe, the following additional commands are - available: - - `ACCEPT`: This command accepts the current Z position and - concludes the manual probing tool. - - `ABORT`: This command terminates the manual probing tool. - - `TESTZ Z=<value>`: This command moves the nozzle up or down by the - amount specified in "value". For example, `TESTZ Z=-.1` would move - the nozzle down .1mm while `TESTZ Z=.1` would move the nozzle up - .1mm. The value may also be `+`, `-`, `++`, or `--` to move the - nozzle up or down an amount relative to previous attempts. -- `Z_ENDSTOP_CALIBRATE [SPEED=<speed>]`: Run a helper script useful - for calibrating a Z position_endstop config setting. See the - MANUAL_PROBE command for details on the parameters and the - additional commands available while the tool is active. -- `Z_OFFSET_APPLY_ENDSTOP`: Take the current Z Gcode offset (aka, - babystepping), and subtract it from the stepper_z endstop_position. - This acts to take a frequently used babystepping value, and "make - it permanent". Requires a `SAVE_CONFIG` to take effect. -- `TUNING_TOWER COMMAND=<command> PARAMETER=<name> START=<value> [SKIP=<value>] - [FACTOR=<value> [BAND=<value>]] | [STEP_DELTA=<value> STEP_HEIGHT=<value>]`: - A tool for tuning a parameter on each Z height during a print. - The tool will run the given `COMMAND` with the given `PARAMETER` - assigned to a value that varies with `Z` according to a formula. Use `FACTOR` - if you will use a ruler or calipers to measure the Z height of the optimum - value, or `STEP_DELTA` and `STEP_HEIGHT` if the tuning tower model has bands - of discrete values as is common with temperature towers. If `SKIP=<value>` - is specified, the tuning process doesn't begin until Z height `<value>` is - reached, and below that the value will be set to `START`; in this case, the - `z_height` used in the formulas below is actually `max(z - skip, 0)`. - There are three possible combinations of options: - - `FACTOR`: The value changes at a rate of `factor` per millimeter. - The formula used is - `value = start + factor * z_height`. - You can plug the optimum Z height directly into the formula to - determine the optimum parameter value. - - `FACTOR` and `BAND`: The value changes at an average rate of `factor` per - millimeter, but in discrete bands where the adjustment will only be made - every `BAND` millimeters of Z height. - The formula used is - `value = start + factor * ((floor(z_height / band) + .5) * band)`. - - `STEP_DELTA` and `STEP_HEIGHT`: The value changes by `STEP_DELTA` every - `STEP_HEIGHT` millimeters. The formula used is - `value = start + step_delta * floor(z_height / step_height)`. - You can simply count bands or read tuning tower labels to determine the - optimum value. -- `SET_DISPLAY_GROUP [DISPLAY=<display>] GROUP=<group>`: Set the - active display group of an lcd display. This allows to define - multiple display data groups in the config, - e.g. `[display_data <group> <elementname>]` and switch between them - using this extended gcode command. If DISPLAY is not specified it - defaults to "display" (the primary display). -- `SET_IDLE_TIMEOUT [TIMEOUT=<timeout>]`: Allows the user to set the - idle timeout (in seconds). -- `RESTART`: This will cause the host software to reload its config - and perform an internal reset. This command will not clear error - state from the micro-controller (see FIRMWARE_RESTART) nor will it - load new software (see - [the FAQ](FAQ.md#how-do-i-upgrade-to-the-latest-software)). -- `FIRMWARE_RESTART`: This is similar to a RESTART command, but it - also clears any error state from the micro-controller. -- `SAVE_CONFIG`: This command will overwrite the main printer config - file and restart the host software. This command is used in - conjunction with other calibration commands to store the results of - calibration tests. -- `STATUS`: Report the Klipper host software status. -- `HELP`: Report the list of available extended G-Code commands. +The gcode module is automatically loaded. + +#### RESTART +`RESTART`: This will cause the host software to reload its config and +perform an internal reset. This command will not clear error state +from the micro-controller (see FIRMWARE_RESTART) nor will it load new +software (see +[the FAQ](FAQ.md#how-do-i-upgrade-to-the-latest-software)). + +#### FIRMWARE_RESTART +`FIRMWARE_RESTART`: This is similar to a RESTART command, but it also +clears any error state from the micro-controller. + +#### STATUS +`STATUS`: Report the Klipper host software status. + +#### HELP +`HELP`: Report the list of available extended G-Code commands. + +### [gcode_arcs] + +The following standard G-Code commands are available if a +[gcode_arcs config section](Config_Reference.md#gcode_arcs) is +enabled: +- Controlled Arc Move (G2 or G3): `G2 [X<pos>] [Y<pos>] [Z<pos>] + [E<pos>] [F<speed>] I<value> J<value>` -### G-Code Macro Commands +### [gcode_macro] The following command is available when a [gcode_macro config section](Config_Reference.md#gcode_macro) is enabled (also see the -[command templates guide](Command_Templates.md)): -- `SET_GCODE_VARIABLE MACRO=<macro_name> VARIABLE=<name> - VALUE=<value>`: This command allows one to change the value of a - gcode_macro variable at run-time. The provided VALUE is parsed as a - Python literal. +[command templates guide](Command_Templates.md)). -### Custom Pin Commands +#### SET_GCODE_VARIABLE +`SET_GCODE_VARIABLE MACRO=<macro_name> VARIABLE=<name> VALUE=<value>`: +This command allows one to change the value of a gcode_macro variable +at run-time. The provided VALUE is parsed as a Python literal. -The following command is available when an -[output_pin config section](Config_Reference.md#output_pin) is -enabled: -- `SET_PIN PIN=config_name VALUE=<value> CYCLE_TIME=<cycle_time>` +### [gcode_move] -Note: Hardware PWM does not currently support the CYCLE_TIME parameter -and will use the cycle time defined in the config. +The gcode_move module is automatically loaded. -### Manually Controlled Fans Commands +#### GET_POSITION +`GET_POSITION`: Return information on the current location of the +toolhead. -The following command is available when a -[fan_generic config section](Config_Reference.md#fan_generic) is -enabled: -- `SET_FAN_SPEED FAN=config_name SPEED=<speed>` This command sets - the speed of a fan. <speed> must be between 0.0 and 1.0. +#### SET_GCODE_OFFSET +`SET_GCODE_OFFSET [X=<pos>|X_ADJUST=<adjust>] +[Y=<pos>|Y_ADJUST=<adjust>] [Z=<pos>|Z_ADJUST=<adjust>] [MOVE=1 +[MOVE_SPEED=<speed>]]`: Set a positional offset to apply to future +G-Code commands. This is commonly used to virtually change the Z bed +offset or to set nozzle XY offsets when switching extruders. For +example, if "SET_GCODE_OFFSET Z=0.2" is sent, then future G-Code moves +will have 0.2mm added to their Z height. If the X_ADJUST style +parameters are used, then the adjustment will be added to any existing +offset (eg, "SET_GCODE_OFFSET Z=-0.2" followed by "SET_GCODE_OFFSET +Z_ADJUST=0.3" would result in a total Z offset of 0.1). If "MOVE=1" is +specified then a toolhead move will be issued to apply the given +offset (otherwise the offset will take effect on the next absolute +G-Code move that specifies the given axis). If "MOVE_SPEED" is +specified then the toolhead move will be performed with the given +speed (in mm/s); otherwise the toolhead move will use the last +specified G-Code speed. -### Neopixel and Dotstar Commands +#### SAVE_GCODE_STATE +`SAVE_GCODE_STATE [NAME=<state_name>]`: Save the current g-code +coordinate parsing state. Saving and restoring the g-code state is +useful in scripts and macros. This command saves the current g-code +absolute coordinate mode (G90/G91), absolute extrude mode (M82/M83), +origin (G92), offset (SET_GCODE_OFFSET), speed override (M220), +extruder override (M221), move speed, current XYZ position, and +relative extruder "E" position. If NAME is provided it allows one to +name the saved state to the given string. If NAME is not provided it +defaults to "default". -The following command is available when a -[neopixel config section](Config_Reference.md#neopixel) or -[dotstar config section](Config_Reference.md#dotstar) is enabled: -- `SET_LED LED=<config_name> RED=<value> GREEN=<value> BLUE=<value> - WHITE=<value> [INDEX=<index>] [TRANSMIT=0] [SYNC=1]`: This sets the LED - output. Each color `<value>` must be between 0.0 and 1.0. The WHITE - option is only valid on RGBW LEDs. If multiple LED chips are - daisy-chained then one may specify INDEX to alter the color of just - the given chip (1 for the first chip, 2 for the second, etc.). If - INDEX is not provided then all LEDs in the daisy-chain will be set - to the provided color. If TRANSMIT=0 is specified then the color - change will only be made on the next SET_LED command that does not - specify TRANSMIT=0; this may be useful in combination with the INDEX - parameter to batch multiple updates in a daisy-chain. By default, the - SET_LED command will sync it's changes with other ongoing gcode commands. - This can lead to undesirable behavior if LEDs are being set while the - printer is not printing as it will reset the idle timeout. If careful - timing is not needed, the optional SYNC=0 parameter can be specified to - apply the changes instantly and not reset the idle timeout. +#### RESTORE_GCODE_STATE +`RESTORE_GCODE_STATE [NAME=<state_name>] [MOVE=1 +[MOVE_SPEED=<speed>]]`: Restore a state previously saved via +SAVE_GCODE_STATE. If "MOVE=1" is specified then a toolhead move will +be issued to move back to the previous XYZ position. If "MOVE_SPEED" +is specified then the toolhead move will be performed with the given +speed (in mm/s); otherwise the toolhead move will use the restored +g-code speed. -### Servo Commands +### [hall_filament_width_sensor] -The following commands are available when a -[servo config section](Config_Reference.md#servo) is enabled: -- `SET_SERVO SERVO=config_name [ANGLE=<degrees> | WIDTH=<seconds>]`: - Set the servo position to the given angle (in degrees) or pulse - width (in seconds). Use `WIDTH=0` to disable the servo output. +The following commands are available when the +[tsl1401cl filament width sensor config section](Config_Reference.md#tsl1401cl_filament_width_sensor) +or [hall filament width sensor config section](Config_Reference.md#hall_filament_width_sensor) +is enabled (also see [TSLl401CL Filament Width Sensor](TSL1401CL_Filament_Width_Sensor.md) +and [Hall Filament Width Sensor](Hall_Filament_Width_Sensor.md)): + +#### QUERY_FILAMENT_WIDTH +`QUERY_FILAMENT_WIDTH`: Return the current measured filament width. + +#### RESET_FILAMENT_WIDTH_SENSOR +`RESET_FILAMENT_WIDTH_SENSOR`: Clear all sensor readings. Helpful +after filament change. + +#### DISABLE_FILAMENT_WIDTH_SENSOR +`DISABLE_FILAMENT_WIDTH_SENSOR`: Turn off the filament width sensor +and stop using it for flow control. -### Manual stepper Commands +#### ENABLE_FILAMENT_WIDTH_SENSOR +`ENABLE_FILAMENT_WIDTH_SENSOR`: Turn on the filament width sensor and +start using it for flow control. + +#### QUERY_RAW_FILAMENT_WIDTH +`QUERY_RAW_FILAMENT_WIDTH`: Return the current ADC channel readings +and RAW sensor value for calibration points. + +#### ENABLE_FILAMENT_WIDTH_LOG +`ENABLE_FILAMENT_WIDTH_LOG`: Turn on diameter logging. + +#### DISABLE_FILAMENT_WIDTH_LOG +`DISABLE_FILAMENT_WIDTH_LOG`: Turn off diameter logging. + +### [heaters] + +The heaters module is automatically loaded if a heater is defined in +the config file. + +#### TURN_OFF_HEATERS +`TURN_OFF_HEATERS`: Turn off all heaters. + +#### TEMPERATURE_WAIT +`TEMPERATURE_WAIT SENSOR=<config_name> [MINIMUM=<target>] +[MAXIMUM=<target>]`: Wait until the given temperature sensor is at or +above the supplied MINIMUM and/or at or below the supplied MAXIMUM. + +#### SET_HEATER_TEMPERATURE +`SET_HEATER_TEMPERATURE HEATER=<heater_name> +[TARGET=<target_temperature>]`: Sets the target temperature for a +heater. If a target temperature is not supplied, the target is 0. + +### [idle_timeout] + +The idle_timeout module is automatically loaded. + +#### SET_IDLE_TIMEOUT +`SET_IDLE_TIMEOUT [TIMEOUT=<timeout>]`: Allows the user to set the +idle timeout (in seconds). + +### [input_shaper] + +The following command is enabled if an +[input_shaper config section](Config_Reference.md#input_shaper) has +been enabled (also see the +[resonance compensation guide](Resonance_Compensation.md)). + +#### SET_INPUT_SHAPER +`SET_INPUT_SHAPER [SHAPER_FREQ_X=<shaper_freq_x>] +[SHAPER_FREQ_Y=<shaper_freq_y>] [DAMPING_RATIO_X=<damping_ratio_x>] +[DAMPING_RATIO_Y=<damping_ratio_y>] [SHAPER_TYPE=<shaper>] +[SHAPER_TYPE_X=<shaper_type_x>] [SHAPER_TYPE_Y=<shaper_type_y>]`: +Modify input shaper parameters. Note that SHAPER_TYPE parameter resets +input shaper for both X and Y axes even if different shaper types have +been configured in [input_shaper] section. SHAPER_TYPE cannot be used +together with either of SHAPER_TYPE_X and SHAPER_TYPE_Y parameters. +See [config reference](Config_Reference.md#input_shaper) for more +details on each of these parameters. + +### [manual_probe] + +The manual_probe module is automatically loaded. + +#### MANUAL_PROBE +`MANUAL_PROBE [SPEED=<speed>]`: Run a helper script useful for +measuring the height of the nozzle at a given location. If SPEED is +specified, it sets the speed of TESTZ commands (the default is +5mm/s). During a manual probe, the following additional commands are +available: +- `ACCEPT`: This command accepts the current Z position and concludes + the manual probing tool. +- `ABORT`: This command terminates the manual probing tool. +- `TESTZ Z=<value>`: This command moves the nozzle up or down by the + amount specified in "value". For example, `TESTZ Z=-.1` would move + the nozzle down .1mm while `TESTZ Z=.1` would move the nozzle up + .1mm. The value may also be `+`, `-`, `++`, or `--` to move the + nozzle up or down an amount relative to previous attempts. + +#### Z_ENDSTOP_CALIBRATE +`Z_ENDSTOP_CALIBRATE [SPEED=<speed>]`: Run a helper script useful for +calibrating a Z position_endstop config setting. See the MANUAL_PROBE +command for details on the parameters and the additional commands +available while the tool is active. + +#### Z_OFFSET_APPLY_ENDSTOP +`Z_OFFSET_APPLY_ENDSTOP`: Take the current Z Gcode offset (aka, +babystepping), and subtract it from the stepper_z endstop_position. +This acts to take a frequently used babystepping value, and "make it +permanent". Requires a `SAVE_CONFIG` to take effect. + +### [manual_stepper] The following command is available when a [manual_stepper config section](Config_Reference.md#manual_stepper) is -enabled: -- `MANUAL_STEPPER STEPPER=config_name [ENABLE=[0|1]] - [SET_POSITION=<pos>] [SPEED=<speed>] [ACCEL=<accel>] - [MOVE=<pos> [STOP_ON_ENDSTOP=[1|2|-1|-2]] [SYNC=0]]`: This command - will alter the state of the stepper. Use the ENABLE parameter to - enable/disable the stepper. Use the SET_POSITION parameter to force - the stepper to think it is at the given position. Use the MOVE - parameter to request a movement to the given position. If SPEED - and/or ACCEL is specified then the given values will be used instead - of the defaults specified in the config file. If an ACCEL of zero is - specified then no acceleration will be performed. If - STOP_ON_ENDSTOP=1 is specified then the move will end early should - the endstop report as triggered (use STOP_ON_ENDSTOP=2 to complete - the move without error even if the endstop does not trigger, use -1 - or -2 to stop when the endstop reports not triggered). Normally - future G-Code commands will be scheduled to run after the stepper - move completes, however if a manual stepper move uses SYNC=0 then - future G-Code movement commands may run in parallel with the stepper - movement. - -### Probe +enabled. -The following commands are available when a -[probe config section](Config_Reference.md#probe) is enabled (also see -the [probe calibrate guide](Probe_Calibrate.md)): -- `PROBE [PROBE_SPEED=<mm/s>] [LIFT_SPEED=<mm/s>] [SAMPLES=<count>] - [SAMPLE_RETRACT_DIST=<mm>] [SAMPLES_TOLERANCE=<mm>] - [SAMPLES_TOLERANCE_RETRIES=<count>] - [SAMPLES_RESULT=median|average]`: Move the nozzle downwards until - the probe triggers. If any of the optional parameters are provided - they override their equivalent setting in the - [probe config section](Config_Reference.md#probe). -- `QUERY_PROBE`: Report the current status of the probe ("triggered" - or "open"). -- `PROBE_ACCURACY [PROBE_SPEED=<mm/s>] [SAMPLES=<count>] - [SAMPLE_RETRACT_DIST=<mm>]`: Calculate the maximum, minimum, - average, median, and standard deviation of multiple probe - samples. By default, 10 SAMPLES are taken. Otherwise the optional - parameters default to their equivalent setting in the probe config - section. -- `PROBE_CALIBRATE [SPEED=<speed>] [<probe_parameter>=<value>]`: Run a - helper script useful for calibrating the probe's z_offset. See the - PROBE command for details on the optional probe parameters. See - the MANUAL_PROBE command for details on the SPEED parameter and the - additional commands available while the tool is active. Please note, - the PROBE_CALIBRATE command uses the speed variable - to move in XY direction as well as Z. -- `Z_OFFSET_APPLY_PROBE`: Take the current Z Gcode offset (aka, - babystepping), and subtract if from the probe's z_offset. - This acts to take a frequently used babystepping value, and "make - it permanent". Requires a `SAVE_CONFIG` to take effect. +#### MANUAL_STEPPER +`MANUAL_STEPPER STEPPER=config_name [ENABLE=[0|1]] +[SET_POSITION=<pos>] [SPEED=<speed>] [ACCEL=<accel>] [MOVE=<pos> +[STOP_ON_ENDSTOP=[1|2|-1|-2]] [SYNC=0]]`: This command will alter the +state of the stepper. Use the ENABLE parameter to enable/disable the +stepper. Use the SET_POSITION parameter to force the stepper to think +it is at the given position. Use the MOVE parameter to request a +movement to the given position. If SPEED and/or ACCEL is specified +then the given values will be used instead of the defaults specified +in the config file. If an ACCEL of zero is specified then no +acceleration will be performed. If STOP_ON_ENDSTOP=1 is specified then +the move will end early should the endstop report as triggered (use +STOP_ON_ENDSTOP=2 to complete the move without error even if the +endstop does not trigger, use -1 or -2 to stop when the endstop +reports not triggered). Normally future G-Code commands will be +scheduled to run after the stepper move completes, however if a manual +stepper move uses SYNC=0 then future G-Code movement commands may run +in parallel with the stepper movement. -### BLTouch +### [neopixel] The following command is available when a -[bltouch config section](Config_Reference.md#bltouch) is enabled (also -see the [BL-Touch guide](BLTouch.md)): -- `BLTOUCH_DEBUG COMMAND=<command>`: This sends a command to the - BLTouch. It may be useful for debugging. Available commands are: - `pin_down`, `touch_mode`, `pin_up`, `self_test`, `reset`, - (*1): `set_5V_output_mode`, `set_OD_output_mode`, `output_mode_store` +[neopixel config section](Config_Reference.md#neopixel) or +[dotstar config section](Config_Reference.md#dotstar) is enabled. - *** Note that the commands marked by (*1) are solely supported - by a BL-Touch V3.0 or V3.1(+) +#### SET_LED +`SET_LED LED=<config_name> RED=<value> GREEN=<value> BLUE=<value> +WHITE=<value> [INDEX=<index>] [TRANSMIT=0] [SYNC=1]`: This sets the +LED output. Each color `<value>` must be between 0.0 and 1.0. The +WHITE option is only valid on RGBW LEDs. If multiple LED chips are +daisy-chained then one may specify INDEX to alter the color of just +the given chip (1 for the first chip, 2 for the second, etc.). If +INDEX is not provided then all LEDs in the daisy-chain will be set to +the provided color. If TRANSMIT=0 is specified then the color change +will only be made on the next SET_LED command that does not specify +TRANSMIT=0; this may be useful in combination with the INDEX parameter +to batch multiple updates in a daisy-chain. By default, the SET_LED +command will sync it's changes with other ongoing gcode commands. +This can lead to undesirable behavior if LEDs are being set while the +printer is not printing as it will reset the idle timeout. If careful +timing is not needed, the optional SYNC=0 parameter can be specified +to apply the changes instantly and not reset the idle timeout. -- `BLTOUCH_STORE MODE=<output_mode>`: This stores an output mode in the - EEPROM of a BLTouch V3.1 Available output_modes are: `5V`, `OD` +### [output_pin] -### Delta Calibration +The following command is available when an +[output_pin config section](Config_Reference.md#output_pin) is +enabled. -The following commands are available when the -[delta_calibrate config section](Config_Reference.md#linear-delta-kinematics) -is enabled (also see the [delta calibrate guide](Delta_Calibrate.md)): -- `DELTA_CALIBRATE [METHOD=manual] [<probe_parameter>=<value>]`: This - command will probe seven points on the bed and recommend updated - endstop positions, tower angles, and radius. See the PROBE command - for details on the optional probe parameters. If METHOD=manual is - specified then the manual probing tool is activated - see the - MANUAL_PROBE command above for details on the additional commands - available while this tool is active. -- `DELTA_ANALYZE`: This command is used during enhanced delta - calibration. See [Delta Calibrate](Delta_Calibrate.md) for details. +#### SET_PIN +`SET_PIN PIN=config_name VALUE=<value> CYCLE_TIME=<cycle_time>`: +Note - hardware PWM does not currently support the CYCLE_TIME +parameter and will use the cycle time defined in the config. -### Bed Tilt +### [palette2] The following commands are available when the -[bed_tilt config section](Config_Reference.md#bed_tilt) is enabled: -- `BED_TILT_CALIBRATE [METHOD=manual] [<probe_parameter>=<value>]`: - This command will probe the points specified in the config and then - recommend updated x and y tilt adjustments. See the PROBE command - for details on the optional probe parameters. If METHOD=manual is - specified then the manual probing tool is activated - see the - MANUAL_PROBE command above for details on the additional commands - available while this tool is active. +[palette2 config section](Config_Reference.md#palette2) is enabled. -### Mesh Bed Leveling +Palette prints work by embedding special OCodes (Omega Codes) in the +GCode file: +- `O1`...`O32`: These codes are read from the GCode stream and processed + by this module and passed to the Palette 2 device. -The following commands are available when the -[bed_mesh config section](Config_Reference.md#bed_mesh) is enabled -(also see the [bed mesh guide](Bed_Mesh.md)): -- `BED_MESH_CALIBRATE [METHOD=manual] [<probe_parameter>=<value>] - [<mesh_parameter>=<value>]`: - This command probes the bed using generated points specified by the - parameters in the config. After probing, a mesh is generated and - z-movement is adjusted according to the mesh. See the PROBE command - for details on the optional probe parameters. If METHOD=manual is - specified then the manual probing tool is activated - see the - MANUAL_PROBE command above for details on the additional commands - available while this tool is active. -- `BED_MESH_OUTPUT PGP=[<0:1>]`: This command outputs the current probed - z values and current mesh values to the terminal. If PGP=1 is specified - the X, Y coordinates generated by bed_mesh, along with their associated - indices, will be output to the terminal. -- `BED_MESH_MAP`: Like to BED_MESH_OUTPUT, this command prints the current - state of the mesh to the terminal. Instead of printing the values in a - human readable format, the state is serialized in json format. This allows - octoprint plugins to easily capture the data and generate height maps - approximating the bed's surface. -- `BED_MESH_CLEAR`: This command clears the mesh and removes all - z adjustment. It is recommended to put this in your end-gcode. -- `BED_MESH_PROFILE LOAD=<name> SAVE=<name> REMOVE=<name>`: This - command provides profile management for mesh state. LOAD will - restore the mesh state from the profile matching the supplied name. - SAVE will save the current mesh state to a profile matching the - supplied name. Remove will delete the profile matching the - supplied name from persistent memory. Note that after SAVE or - REMOVE operations have been run the SAVE_CONFIG gcode must be run - to make the changes to peristent memory permanent. -- `BED_MESH_OFFSET [X=<value>] [Y=<value>]`: Applies X and/or Y - offsets to the mesh lookup. This is useful for printers with - independent extruders, as an offset is necessary to produce - correct Z adjustment after a tool change. +The following additional commands are also available. -### Bed Screws Helper +#### PALETTE_CONNECT +`PALETTE_CONNECT`: This command initializes the connection with the +Palette 2. -The following commands are available when the -[bed_screws config section](Config_Reference.md#bed_screws) is enabled -(also see the -[manual level guide](Manual_Level.md#adjusting-bed-leveling-screws)): -- `BED_SCREWS_ADJUST`: This command will invoke the bed screws - adjustment tool. It will command the nozzle to different locations - (as defined in the config file) and allow one to make adjustments to - the bed screws so that the bed is a constant distance from the - nozzle. +#### PALETTE_DISCONNECT +`PALETTE_DISCONNECT`: This command disconnects from the Palette 2. -### Bed Screws Tilt Adjust Helper +#### PALETTE_CLEAR +`PALETTE_CLEAR`: This command instructs the Palette 2 to clear all of +the input and output paths of filament. -The following commands are available when the -[screws_tilt_adjust config section](Config_Reference.md#screws_tilt_adjust) -is enabled (also see the -[manual level guide](Manual_Level.md#adjusting-bed-leveling-screws-using-the-bed-probe)): -- `SCREWS_TILT_CALCULATE [DIRECTION=CW|CCW] [<probe_parameter>=<value>]`: - This command will invoke the bed screws adjustment tool. It will command the - nozzle to different locations (as defined in the config file) - probing the z height and calculate the number of knob turns to - adjust the bed level. If DIRECTION is specified, the knob turns will all - be in the same direction, clockwise (CW) or counterclockwise (CCW). - See the PROBE command for details on the optional probe parameters. - IMPORTANT: You MUST always do a G28 before using this command. +#### PALETTE_CUT +`PALETTE_CUT`: This command instructs the Palette 2 to cut the +filament currently loaded in the splice core. -### Z Tilt +#### PALETTE_SMART_LOAD +`PALETTE_SMART_LOAD`: This command start the smart load sequence on +the Palette 2. Filament is loaded automatically by extruding it the +distance calibrated on the device for the printer, and instructs the +Palette 2 once the loading has been completed. This command is the +same as pressing **Smart Load** directly on the Palette 2 screen after +the filament load is complete. -The following commands are available when the -[z_tilt config section](Config_Reference.md#z_tilt) is enabled: -- `Z_TILT_ADJUST [<probe_parameter>=<value>]`: This command will probe - the points specified in the config and then make independent - adjustments to each Z stepper to compensate for tilt. See the PROBE - command for details on the optional probe parameters. +### [pid_calibrate] -### Dual Carriages +The pid_calibrate module is automatically loaded if a heater is defined +in the config file. -The following command is available when the -[dual_carriage config section](Config_Reference.md#dual_carriage) is +#### PID_CALIBRATE +`PID_CALIBRATE HEATER=<config_name> TARGET=<temperature> +[WRITE_FILE=1]`: Perform a PID calibration test. The specified heater +will be enabled until the specified target temperature is reached, and +then the heater will be turned off and on for several cycles. If the +WRITE_FILE parameter is enabled, then the file /tmp/heattest.txt will +be created with a log of all temperature samples taken during the +test. + +### [pause_resume] + +The following commands are available when the +[pause_resume config section](Config_Reference.md#pause_resume) is enabled: -- `SET_DUAL_CARRIAGE CARRIAGE=[0|1]`: This command will set the active - carriage. It is typically invoked from the activate_gcode and - deactivate_gcode fields in a multiple extruder configuration. -### TMC stepper drivers +#### PAUSE +`PAUSE`: Pauses the current print. The current position is captured +for restoration upon resume. -The following commands are available when any of the -[tmcXXXX config sections](Config_Reference.md#tmc-stepper-driver-configuration) -are enabled: -- `DUMP_TMC STEPPER=<name>`: This command will read the TMC driver - registers and report their values. -- `INIT_TMC STEPPER=<name>`: This command will intitialize the TMC - registers. Needed to re-enable the driver if power to the chip is - turned off then back on. -- `SET_TMC_CURRENT STEPPER=<name> CURRENT=<amps> HOLDCURRENT=<amps>`: - This will adjust the run and hold currents of the TMC driver. - (HOLDCURRENT is not applicable to tmc2660 drivers.) -- `SET_TMC_FIELD STEPPER=<name> FIELD=<field> VALUE=<value>`: This - will alter the value of the specified register field of the TMC - driver. This command is intended for low-level diagnostics and - debugging only because changing the fields during run-time can lead - to undesired and potentially dangerous behavior of your printer. - Permanent changes should be made using the printer configuration - file instead. No sanity checks are performed for the given values. +#### RESUME +`RESUME [VELOCITY=<value>]`: Resumes the print from a pause, first +restoring the previously captured position. The VELOCITY parameter +determines the speed at which the tool should return to the original +captured position. -### Endstop adjustments by stepper phase +#### CLEAR_PAUSE +`CLEAR_PAUSE`: Clears the current paused state without resuming the +print. This is useful if one decides to cancel a print after a +PAUSE. It is recommended to add this to your start gcode to make sure +the paused state is fresh for each print. -The following commands are available when an -[endstop_phase config section](Config_Reference.md#endstop_phase) is -enabled (also see the [endstop phase guide](Endstop_Phase.md)): -- `ENDSTOP_PHASE_CALIBRATE [STEPPER=<config_name>]`: If no STEPPER - parameter is provided then this command will reports statistics on - endstop stepper phases during past homing operations. When a STEPPER - parameter is provided it arranges for the given endstop phase - setting to be written to the config file (in conjunction with the - SAVE_CONFIG command). +#### CANCEL_PRINT +`CANCEL_PRINT`: Cancels the current print. -### Force movement +### [probe] -The following commands are available when the -[force_move config section](Config_Reference.md#force_move) is -enabled: -- `FORCE_MOVE STEPPER=<config_name> DISTANCE=<value> VELOCITY=<value> - [ACCEL=<value>]`: This command will forcibly move the given stepper - the given distance (in mm) at the given constant velocity (in - mm/s). If ACCEL is specified and is greater than zero, then the - given acceleration (in mm/s^2) will be used; otherwise no - acceleration is performed. No boundary checks are performed; no - kinematic updates are made; other parallel steppers on an axis will - not be moved. Use caution as an incorrect command could cause - damage! Using this command will almost certainly place the low-level - kinematics in an incorrect state; issue a G28 afterwards to reset - the kinematics. This command is intended for low-level diagnostics - and debugging. -- `SET_KINEMATIC_POSITION [X=<value>] [Y=<value>] [Z=<value>]`: Force - the low-level kinematic code to believe the toolhead is at the given - cartesian position. This is a diagnostic and debugging command; use - SET_GCODE_OFFSET and/or G92 for regular axis transformations. If an - axis is not specified then it will default to the position that the - head was last commanded to. Setting an incorrect or invalid position - may lead to internal software errors. This command may invalidate - future boundary checks; issue a G28 afterwards to reset the - kinematics. +The following commands are available when a +[probe config section](Config_Reference.md#probe) or +[bltouch config section](Config_Reference.md#bltouch) is enabled (also +see the [probe calibrate guide](Probe_Calibrate.md)). -### SDcard loop +#### PROBE +`PROBE [PROBE_SPEED=<mm/s>] [LIFT_SPEED=<mm/s>] [SAMPLES=<count>] +[SAMPLE_RETRACT_DIST=<mm>] [SAMPLES_TOLERANCE=<mm>] +[SAMPLES_TOLERANCE_RETRIES=<count>] [SAMPLES_RESULT=median|average]`: +Move the nozzle downwards until the probe triggers. If any of the +optional parameters are provided they override their equivalent +setting in the [probe config section](Config_Reference.md#probe). -When the [sdcard_loop config section](Config_Reference.md#sdcard_loop) -is enabled, the following extended commands are available: -- `SDCARD_LOOP_BEGIN COUNT=<count>`: Begin a looped section in the SD - print. A count of 0 indicates that the section should be looped - indefinately. -- `SDCARD_LOOP_END`: End a looped section in the SD print. -- `SDCARD_LOOP_DESIST`: Complete existing loops without further - iterations. +#### QUERY_PROBE +`QUERY_PROBE`: Report the current status of the probe ("triggered" or +"open"). -### Send message (respond) to host +#### PROBE_ACCURACY +`PROBE_ACCURACY [PROBE_SPEED=<mm/s>] [SAMPLES=<count>] +[SAMPLE_RETRACT_DIST=<mm>]`: Calculate the maximum, minimum, average, +median, and standard deviation of multiple probe samples. By default, +10 SAMPLES are taken. Otherwise the optional parameters default to +their equivalent setting in the probe config section. -The following commands are availabe when the -[respond config section](Config_Reference.md#respond) is enabled. +#### PROBE_CALIBRATE +`PROBE_CALIBRATE [SPEED=<speed>] [<probe_parameter>=<value>]`: Run a +helper script useful for calibrating the probe's z_offset. See the +PROBE command for details on the optional probe parameters. See the +MANUAL_PROBE command for details on the SPEED parameter and the +additional commands available while the tool is active. Please note, +the PROBE_CALIBRATE command uses the speed variable to move in XY +direction as well as Z. + +#### Z_OFFSET_APPLY_PROBE +`Z_OFFSET_APPLY_PROBE`: Take the current Z Gcode offset (aka, +babystepping), and subtract if from the probe's z_offset. This acts +to take a frequently used babystepping value, and "make it permanent". +Requires a `SAVE_CONFIG` to take effect. + +### [query_adc] + +The query_endstops module is automatically loaded. + +#### QUERY_ADC +`QUERY_ADC [NAME=<config_name>] [PULLUP=<value>]`: Report the last +analog value received for a configured analog pin. If NAME is not +provided, the list of available adc names are reported. If PULLUP is +provided (as a value in Ohms), the raw analog value along with the +equivalent resistance given that pullup is reported. + +### [query_endstops] + +The query_endstops module is automatically loaded. The following +standard G-Code commands are currently available, but using them is +not recommended: +- Get Endstop Status: `M119` (Use QUERY_ENDSTOPS instead.) + +#### QUERY_ENDSTOPS +`QUERY_ENDSTOPS`: Probe the axis endstops and report if they are +"triggered" or in an "open" state. This command is typically used to +verify that an endstop is working correctly. + +### [resonance_tester] + +The following commands are available when a +[resonance_tester config section](Config_Reference.md#resonance_tester) +is enabled (also see the +[measuring resonances guide](Measuring_Resonances.md)). + +#### MEASURE_AXES_NOISE +`MEASURE_AXES_NOISE`: Measures and outputs the noise for all axes of +all enabled accelerometer chips. + +#### TEST_RESONANCES +`TEST_RESONANCES AXIS=<axis> OUTPUT=<resonances,raw_data> +[NAME=<name>] [FREQ_START=<min_freq>] [FREQ_END=<max_freq>] +[HZ_PER_SEC=<hz_per_sec>] [INPUT_SHAPING=[<0:1>]]`: Runs the resonance +test in all configured probe points for the requested <axis> and +measures the acceleration using the accelerometer chips configured for +the respective axis. <axis> can either be X or Y, or specify an +arbitrary direction as `AXIS=dx,dy`, where dx and dy are floating +point numbers defining a direction vector (e.g. `AXIS=X`, `AXIS=Y`, or +`AXIS=1,-1` to define a diagonal direction). Note that `AXIS=dx,dy` +and `AXIS=-dx,-dy` is equivalent. If `INPUT_SHAPING=0` or not set +(default), disables input shaping for the resonance testing, because +it is not valid to run the resonance testing with the input shaper +enabled. `OUTPUT` parameter is a comma-separated list of which outputs +will be written. If `raw_data` is requested, then the raw +accelerometer data is written into a file or a series of files +`/tmp/raw_data_<axis>_[<point>_]<name>.csv` with (`<point>_` part of +the name generated only if more than 1 probe point is configured). If +`resonances` is specified, the frequency response is calculated +(across all probe points) and written into +`/tmp/resonances_<axis>_<name>.csv` file. If unset, OUTPUT defaults to +`resonances`, and NAME defaults to the current time in +"YYYYMMDD_HHMMSS" format. + +#### SHAPER_CALIBRATE +`SHAPER_CALIBRATE [AXIS=<axis>] [NAME=<name>] [FREQ_START=<min_freq>] +[FREQ_END=<max_freq>] [HZ_PER_SEC=<hz_per_sec>] +[MAX_SMOOTHING=<max_smoothing>]`: Similarly to `TEST_RESONANCES`, runs +the resonance test as configured, and tries to find the optimal +parameters for the input shaper for the requested axis (or both X and +Y axes if `AXIS` parameter is unset). If `MAX_SMOOTHING` is unset, its +value is taken from `[resonance_tester]` section, with the default +being unset. See the +[Max smoothing](Measuring_Resonances.md#max-smoothing) of the +measuring resonances guide for more information on the use of this +feature. The results of the tuning are printed to the console, and the +frequency responses and the different input shapers values are written +to a CSV file(s) `/tmp/calibration_data_<axis>_<name>.csv`. Unless +specified, NAME defaults to the current time in "YYYYMMDD_HHMMSS" +format. Note that the suggested input shaper parameters can be +persisted in the config by issuing `SAVE_CONFIG` command. + +### [respond] + +The following standard G-Code commands are available when the +[respond config section](Config_Reference.md#respond) is enabled: - `M118 <message>`: echo the message prepended with the configured default prefix (or `echo: ` if no prefix is configured). + +The following additional commands are also available. + +#### RESPOND - `RESPOND MSG="<message>"`: echo the message prepended with the configured default prefix (or `echo: ` if no prefix is configured). - `RESPOND TYPE=echo MSG="<message>"`: echo the message prepended with `echo: `. - `RESPOND TYPE=command MSG="<message>"`: echo the message prepended - with `// `. Octopint can be configured to respond to these messages + with `// `. OctoPrint can be configured to respond to these messages (e.g. `RESPOND TYPE=command MSG=action:pause`). - `RESPOND TYPE=error MSG="<message>"`: echo the message prepended with `!! `. @@ -599,269 +893,228 @@ The following commands are availabe when the prepended with `<prefix>`. (The `PREFIX` parameter will take priority over the `TYPE` parameter) -### Pause Resume +### [save_variables] + +The following command is enabled if a +[save_variables config section](Config_Reference.md#save_variables) +has been enabled. + +#### SAVE_VARIABLE +`SAVE_VARIABLE VARIABLE=<name> VALUE=<value>`: Saves the variable to +disk so that it can be used across restarts. All stored variables are +loaded into the `printer.save_variables.variables` dict at startup and +can be used in gcode macros. The provided VALUE is parsed as a Python +literal. + +### [screws_tilt_adjust] The following commands are available when the -[pause_resume config section](Config_Reference.md#pause_resume) is -enabled: -- `PAUSE`: Pauses the current print. The current position is captured - for restoration upon resume. -- `RESUME [VELOCITY=<value>]`: Resumes the print from a pause, first - restoring the previously captured position. The VELOCITY parameter - determines the speed at which the tool should return to the original - captured position. -- `CLEAR_PAUSE`: Clears the current paused state without resuming the - print. This is useful if one decides to cancel a print after a - PAUSE. It is recommended to add this to your start gcode to make - sure the paused state is fresh for each print. -- `CANCEL_PRINT`: Cancels the current print. +[screws_tilt_adjust config section](Config_Reference.md#screws_tilt_adjust) +is enabled (also see the +[manual level guide](Manual_Level.md#adjusting-bed-leveling-screws-using-the-bed-probe)). -### Filament Sensor +#### SCREWS_TILT_CALCULATE +`SCREWS_TILT_CALCULATE [DIRECTION=CW|CCW] +[<probe_parameter>=<value>]`: This command will invoke the bed screws +adjustment tool. It will command the nozzle to different locations (as +defined in the config file) probing the z height and calculate the +number of knob turns to adjust the bed level. If DIRECTION is +specified, the knob turns will all be in the same direction, clockwise +(CW) or counterclockwise (CCW). See the PROBE command for details on +the optional probe parameters. IMPORTANT: You MUST always do a G28 +before using this command. -The following command is available when the -[filament_switch_sensor or filament_motion_sensor config section](Config_Reference.md#filament_switch_sensor) -is enabled. -- `QUERY_FILAMENT_SENSOR SENSOR=<sensor_name>`: Queries the current - status of the filament sensor. The data displayed on the terminal - will depend on the sensor type defined in the confguration. -- `SET_FILAMENT_SENSOR SENSOR=<sensor_name> ENABLE=[0|1]`: Sets the - filament sensor on/off. If ENABLE is set to 0, the filament sensor - will be disabled, if set to 1 it is enabled. +### [sdcard_loop] -### Firmware Retraction +When the [sdcard_loop config section](Config_Reference.md#sdcard_loop) +is enabled, the following extended commands are available. -The following commands are available when the -[firmware_retraction config section](Config_Reference.md#firmware_retraction) -is enabled. These commands allow you to utilise the firmware -retraction feature available in many slicers, to reduce stringing -during non-extrusion moves from one part of the print to another. -Appropriately configuring pressure advance reduces the length of -retraction required. -- `SET_RETRACTION [RETRACT_LENGTH=<mm>] [RETRACT_SPEED=<mm/s>] - [UNRETRACT_EXTRA_LENGTH=<mm>] [UNRETRACT_SPEED=<mm/s>]`: Adjust the - parameters used by firmware retraction. RETRACT_LENGTH determines - the length of filament to retract and unretract. The speed of - retraction is adjusted via RETRACT_SPEED, and is typically set - relatively high. The speed of unretraction is adjusted via - UNRETRACT_SPEED, and is not particularly critical, although often - lower than RETRACT_SPEED. In some cases it is useful to add a small - amount of additional length on unretraction, and this is set via - UNRETRACT_EXTRA_LENGTH. SET_RETRACTION is commonly set as part of - slicer per-filament configuration, as different filaments require - different parameter settings. -- `GET_RETRACTION`: Queries the current parameters used by firmware - retraction and displays them on the terminal. -- `G10`: Retracts the extruder using the currently configured - parameters. -- `G11`: Unretracts the extruder using the currently configured - parameters. +#### SDCARD_LOOP_BEGIN +`SDCARD_LOOP_BEGIN COUNT=<count>`: Begin a looped section in the SD +print. A count of 0 indicates that the section should be looped +indefinitely. + +#### SDCARD_LOOP_END +`SDCARD_LOOP_END`: End a looped section in the SD print. + +#### SDCARD_LOOP_DESIST +`SDCARD_LOOP_DESIST`: Complete existing loops without further +iterations. + +### [servo] + +The following commands are available when a +[servo config section](Config_Reference.md#servo) is enabled. + +#### SET_SERVO +`SET_SERVO SERVO=config_name [ANGLE=<degrees> | WIDTH=<seconds>]`: Set +the servo position to the given angle (in degrees) or pulse width (in +seconds). Use `WIDTH=0` to disable the servo output. -### Skew Correction +### [skew_correction] The following commands are available when the [skew_correction config section](Config_Reference.md#skew_correction) -is enabled (also see the [Skew Correction](Skew_Correction.md) guide): -- `SET_SKEW [XY=<ac_length,bd_length,ad_length>] [XZ=<ac,bd,ad>] - [YZ=<ac,bd,ad>] [CLEAR=<0|1>]`: Configures the [skew_correction] - module with measurements (in mm) taken from a calibration print. - One may enter measurements for any combination of planes, planes not - entered will retain their current value. If `CLEAR=1` is entered - then all skew correction will be disabled. -- `GET_CURRENT_SKEW`: Reports the current printer skew for each plane - in both radians and degrees. The skew is calculated based on - parameters provided via the `SET_SKEW` gcode. -- `CALC_MEASURED_SKEW [AC=<ac_length>] [BD=<bd_length>] - [AD=<ad_length>]`: Calculates and reports the skew (in radians and - degrees) based on a measured print. This can be useful for - determining the printer's current skew after correction has been - applied. It may also be useful before correction is applied to - determine if skew correction is necessary. See [Skew Correction](Skew_Correction.md) - for details on skew calibration objects and measurements. -- `SKEW_PROFILE [LOAD=<name>] [SAVE=<name>] [REMOVE=<name>]`: Profile - management for skew_correction. LOAD will restore skew state from - the profile matching the supplied name. SAVE will save the current - skew state to a profile matching the supplied name. Remove will - delete the profile matching the supplied name from persistent - memory. Note that after SAVE or REMOVE operations have been run the - SAVE_CONFIG gcode must be run to make the changes to peristent - memory permanent. +is enabled (also see the [Skew Correction](Skew_Correction.md) guide). -### Delayed GCode +#### SET_SKEW +`SET_SKEW [XY=<ac_length,bd_length,ad_length>] [XZ=<ac,bd,ad>] +[YZ=<ac,bd,ad>] [CLEAR=<0|1>]`: Configures the [skew_correction] +module with measurements (in mm) taken from a calibration print. One +may enter measurements for any combination of planes, planes not +entered will retain their current value. If `CLEAR=1` is entered then +all skew correction will be disabled. -The following command is enabled if a -[delayed_gcode config section](Config_Reference.md#delayed_gcode) has -been enabled (also see the -[template guide](Command_Templates.md#delayed-gcodes)): -- `UPDATE_DELAYED_GCODE [ID=<name>] [DURATION=<seconds>]`: Updates the - delay duration for the identified [delayed_gcode] and starts the timer - for gcode execution. A value of 0 will cancel a pending delayed gcode - from executing. +#### GET_CURRENT_SKEW +`GET_CURRENT_SKEW`: Reports the current printer skew for each plane in +both radians and degrees. The skew is calculated based on parameters +provided via the `SET_SKEW` gcode. -### Save Variables +#### CALC_MEASURED_SKEW +`CALC_MEASURED_SKEW [AC=<ac_length>] [BD=<bd_length>] +[AD=<ad_length>]`: Calculates and reports the skew (in radians and +degrees) based on a measured print. This can be useful for determining +the printer's current skew after correction has been applied. It may +also be useful before correction is applied to determine if skew +correction is necessary. See [Skew Correction](Skew_Correction.md) for +details on skew calibration objects and measurements. -The following command is enabled if a -[save_variables config section](Config_Reference.md#save_variables) -has been enabled: -- `SAVE_VARIABLE VARIABLE=<name> VALUE=<value>`: Saves the variable to - disk so that it can be used across restarts. All stored variables - are loaded into the `printer.save_variables.variables` dict at - startup and can be used in gcode macros. The provided VALUE is - parsed as a Python literal. +#### SKEW_PROFILE +`SKEW_PROFILE [LOAD=<name>] [SAVE=<name>] [REMOVE=<name>]`: Profile +management for skew_correction. LOAD will restore skew state from the +profile matching the supplied name. SAVE will save the current skew +state to a profile matching the supplied name. Remove will delete the +profile matching the supplied name from persistent memory. Note that +after SAVE or REMOVE operations have been run the SAVE_CONFIG gcode +must be run to make the changes to persistent memory permanent. -### Resonance compensation +### [stepper_enable] -The following command is enabled if an -[input_shaper config section](Config_Reference.md#input_shaper) has -been enabled (also see the -[resonance compensation guide](Resonance_Compensation.md)): -- `SET_INPUT_SHAPER [SHAPER_FREQ_X=<shaper_freq_x>] - [SHAPER_FREQ_Y=<shaper_freq_y>] - [DAMPING_RATIO_X=<damping_ratio_x>] - [DAMPING_RATIO_Y=<damping_ratio_y>] [SHAPER_TYPE=<shaper>] - [SHAPER_TYPE_X=<shaper_type_x>] [SHAPER_TYPE_Y=<shaper_type_y>]`: - Modify input shaper parameters. Note that SHAPER_TYPE parameter - resets input shaper for both X and Y axes even if different shaper - types have been configured in [input_shaper] section. SHAPER_TYPE - cannot be used together with either of SHAPER_TYPE_X and - SHAPER_TYPE_Y parameters. See - [config reference](Config_Reference.md#input_shaper) for more - details on each of these parameters. +The stepper_enable module is automatically loaded. + +#### SET_STEPPER_ENABLE +`SET_STEPPER_ENABLE STEPPER=<config_name> ENABLE=[0|1]`: Enable or +disable only the given stepper. This is a diagnostic and debugging +tool and must be used with care. Disabling an axis motor does not +reset the homing information. Manually moving a disabled stepper may +cause the machine to operate the motor outside of safe limits. This +can lead to damage to axis components, hot ends, and print surface. -### Temperature Fan Commands +### [temperature_fan] The following command is available when a [temperature_fan config section](Config_Reference.md#temperature_fan) -is enabled: -- `SET_TEMPERATURE_FAN_TARGET temperature_fan=<temperature_fan_name> - [target=<target_temperature>] [min_speed=<min_speed>] [max_speed=<max_speed>]`: Sets the target temperature for a - temperature_fan. If a target is not supplied, it is set to the - specified temperature in the config file. If speeds are not supplied, no change is applied. +is enabled. -### Adxl345 Accelerometer Commands +#### SET_TEMPERATURE_FAN_TARGET +`SET_TEMPERATURE_FAN_TARGET temperature_fan=<temperature_fan_name> +[target=<target_temperature>] [min_speed=<min_speed>] +[max_speed=<max_speed>]`: Sets the target temperature for a +temperature_fan. If a target is not supplied, it is set to the +specified temperature in the config file. If speeds are not supplied, +no change is applied. -The following commands are available when an -[adxl345 config section](Config_Reference.md#adxl345) is enabled: -- `ACCELEROMETER_MEASURE [CHIP=<config_name>] [NAME=<value>]`: Starts - accelerometer measurements at the requested number of samples per - second. If CHIP is not specified it defaults to "adxl345". The - command works in a start-stop mode: when executed for the first - time, it starts the measurements, next execution stops them. The - results of measurements are written to a file named - `/tmp/adxl345-<chip>-<name>.csv` where `<chip>` is the name of the - accelerometer chip (`my_chip_name` from `[adxl345 my_chip_name]`) - and `<name>` is the optional NAME parameter. If NAME is not - specified it defaults to the current time in "YYYYMMDD_HHMMSS" - format. If the accelerometer does not have a name in its config - section (simply `[adxl345]`) then `<chip>` part of the name is not - generated. -- `ACCELEROMETER_QUERY [CHIP=<config_name>] [RATE=<value>]`: queries - accelerometer for the current value. If CHIP is not specified it - defaults to "adxl345". If RATE is not specified, the default value - is used. This command is useful to test the connection to the - ADXL345 accelerometer: one of the returned values should be a - free-fall acceleration (+/- some noise of the chip). -- `ACCELEROMETER_DEBUG_READ [CHIP=<config_name>] REG=<register>`: queries - ADXL345 register <register> (e.g. 44 or 0x2C). Can be useful for - debugging purposes. -- `ACCELEROMETER_DEBUG_WRITE [CHIP=<config_name>] REG=<reg> VAL=<value>`: - writes raw <value> into a register <register>. Both <value> and - <register> can be a decimal or a hexadecimal integer. Use with care, - and refer to ADXL345 data sheet for the reference. +### [tmcXXXX] -### Resonance Testing Commands +The following commands are available when any of the +[tmcXXXX config sections](Config_Reference.md#tmc-stepper-driver-configuration) +are enabled. -The following commands are available when a -[resonance_tester config section](Config_Reference.md#resonance_tester) -is enabled (also see the -[measuring resonances guide](Measuring_Resonances.md)): -- `MEASURE_AXES_NOISE`: Measures and outputs the noise for all axes of - all enabled accelerometer chips. -- `TEST_RESONANCES AXIS=<axis> OUTPUT=<resonances,raw_data> - [NAME=<name>] [FREQ_START=<min_freq>] [FREQ_END=<max_freq>] - [HZ_PER_SEC=<hz_per_sec>] [INPUT_SHAPING=[<0:1>]]`: Runs the resonance - test in all configured probe points for the requested <axis> - and measures the acceleration using the accelerometer chips configured - for the respective axis. <axis> can either be X or Y, or specify an - arbitrary direction as `AXIS=dx,dy`, where dx and dy are floating point - numbers defining a direction vector (e.g. `AXIS=X`, `AXIS=Y`, or - `AXIS=1,-1` to define a diagonal direction). Note that `AXIS=dx,dy` and - `AXIS=-dx,-dy` is equivalent. If `INPUT_SHAPING=0` or not set (default), - disables input shaping for the resonance testing, because it is not valid - to run the resonance testing with the input shaper enabled. - `OUTPUT` parameter is a comma-separated list of which outputs will be - written. If `raw_data` is requested, then the raw accelerometer data - is written into a file or a series of files - `/tmp/raw_data_<axis>_[<point>_]<name>.csv` with (`<point>_` part of - the name generated only if more than 1 probe point is configured). - If `resonances` is specified, the frequency response is calculated - (across all probe points) and written into - `/tmp/resonances_<axis>_<name>.csv` file. If unset, OUTPUT defaults - to `resonances`, and NAME defaults to the current time in - "YYYYMMDD_HHMMSS" format. -- `SHAPER_CALIBRATE [AXIS=<axis>] [NAME=<name>] - [FREQ_START=<min_freq>] [FREQ_END=<max_freq>] - [HZ_PER_SEC=<hz_per_sec>] [MAX_SMOOTHING=<max_smoothing>]`: - Similarly to `TEST_RESONANCES`, runs the resonance test as configured, - and tries to find the optimal parameters for the input shaper for the - requested axis (or both X and Y axes if `AXIS` parameter is unset). - If `MAX_SMOOTHING` is unset, its value is taken from `[resonance_tester]` - section, with the default being unset. See the - [Max smoothing](Measuring_Resonances.md#max-smoothing) of the measuring - resonances guide for more information on the use of this feature. - The results of the tuning are printed to the console, and the frequency - responses and the different input shapers values are written to a CSV - file(s) `/tmp/calibration_data_<axis>_<name>.csv`. Unless specified, NAME - defaults to the current time in "YYYYMMDD_HHMMSS" format. Note that - the suggested input shaper parameters can be persisted in the config - by issuing `SAVE_CONFIG` command. +#### DUMP_TMC +`DUMP_TMC STEPPER=<name>`: This command will read the TMC driver +registers and report their values. -### Palette 2 Commands +#### INIT_TMC +`INIT_TMC STEPPER=<name>`: This command will initialize the TMC +registers. Needed to re-enable the driver if power to the chip is +turned off then back on. -The following command is available when the -[palette2 config section](Config_Reference.md#palette2) -is enabled: -- `PALETTE_CONNECT`: This command initializes the connection with - the Palette 2. -- `PALETTE_DISCONNECT`: This command disconnects from the Palette 2. -- `PALETTE_CLEAR`: This command instructs the Palette 2 to clear all of the - input and output paths of filament. -- `PALETTE_CUT`: This command instructs the Palette 2 to cut the filament - currently loaded in the splice core. -- `PALETTE_SMART_LOAD`: This command start the smart load sequence on the - Palette 2. Filament is loaded automatically by extruding it the distance - calibrated on the device for the printer, and instructs the Palette 2 - once the loading has been completed. This command is the same as pressing - **Smart Load** directly on the Palette 2 screen after the filament load - is complete. +#### SET_TMC_CURRENT +`SET_TMC_CURRENT STEPPER=<name> CURRENT=<amps> HOLDCURRENT=<amps>`: +This will adjust the run and hold currents of the TMC driver. +(HOLDCURRENT is not applicable to tmc2660 drivers.) -Palette prints work by embedding special OCodes (Omega Codes) -in the GCode file: -- `O1`...`O32`: These codes are read from the GCode stream and processed - by this module and passed to the Palette 2 device. +#### SET_TMC_FIELD +`SET_TMC_FIELD STEPPER=<name> FIELD=<field> VALUE=<value>`: This will +alter the value of the specified register field of the TMC driver. +This command is intended for low-level diagnostics and debugging only +because changing the fields during run-time can lead to undesired and +potentially dangerous behavior of your printer. Permanent changes +should be made using the printer configuration file instead. No sanity +checks are performed for the given values. -### Filament Width Sensor Commands +### [toolhead] -The following command is available when the -[tsl1401cl filament width sensor config section](Config_Reference.md#tsl1401cl_filament_width_sensor) -or [hall filament width sensor config section](Config_Reference.md#hall_filament_width_sensor) -is enabled (also see [TSLl401CL Filament Width Sensor](TSL1401CL_Filament_Width_Sensor.md) -and [Hall Filament Width Sensor](Hall_Filament_Width_Sensor.md)): +The toolhead module is automatically loaded. -- `QUERY_FILAMENT_WIDTH` - Return the current measured filament width -- `RESET_FILAMENT_WIDTH_SENSOR` - Clear all sensor readings. Helpful after - filament change -- `DISABLE_FILAMENT_WIDTH_SENSOR` - Turn off the filament width sensor and - stop using it for flow control -- `ENABLE_FILAMENT_WIDTH_SENSOR` - Turn on the filament width sensor and - start using it for flow control +#### SET_VELOCITY_LIMIT +`SET_VELOCITY_LIMIT [VELOCITY=<value>] [ACCEL=<value>] +[ACCEL_TO_DECEL=<value>] [SQUARE_CORNER_VELOCITY=<value>]`: Modify the +printer's velocity limits. -### Hall Filament Width Sensor Commands +### [tuning_tower] -The following command is available when the -[hall filament width sensor config section](Config_Reference.md#hall_filament_width_sensor) -is enabled: +The tuning_tower module is automatically loaded. + +#### TUNING_TOWER +`TUNING_TOWER COMMAND=<command> PARAMETER=<name> START=<value> +[SKIP=<value>] [FACTOR=<value> [BAND=<value>]] | [STEP_DELTA=<value> +STEP_HEIGHT=<value>]`: A tool for tuning a parameter on each Z height +during a print. The tool will run the given `COMMAND` with the given +`PARAMETER` assigned to a value that varies with `Z` according to a +formula. Use `FACTOR` if you will use a ruler or calipers to measure +the Z height of the optimum value, or `STEP_DELTA` and `STEP_HEIGHT` +if the tuning tower model has bands of discrete values as is common +with temperature towers. If `SKIP=<value>` is specified, the tuning +process doesn't begin until Z height `<value>` is reached, and below +that the value will be set to `START`; in this case, the `z_height` +used in the formulas below is actually `max(z - skip, 0)`. There are +three possible combinations of options: +- `FACTOR`: The value changes at a rate of `factor` per millimeter. + The formula used is: `value = start + factor * z_height`. You can + plug the optimum Z height directly into the formula to determine the + optimum parameter value. +- `FACTOR` and `BAND`: The value changes at an average rate of + `factor` per millimeter, but in discrete bands where the adjustment + will only be made every `BAND` millimeters of Z height. + The formula used is: + `value = start + factor * ((floor(z_height / band) + .5) * band)`. +- `STEP_DELTA` and `STEP_HEIGHT`: The value changes by `STEP_DELTA` + every `STEP_HEIGHT` millimeters. The formula used is: + `value = start + step_delta * floor(z_height / step_height)`. + You can simply count bands or read tuning tower labels to determine + the optimum value. + +### [virtual_sdcard] + +Klipper supports the following standard G-Code commands if the +[virtual_sdcard config section](Config_Reference.md#virtual_sdcard) is +enabled: +- List SD card: `M20` +- Initialize SD card: `M21` +- Select SD file: `M23 <filename>` +- Start/resume SD print: `M24` +- Pause SD print: `M25` +- Set SD position: `M26 S<offset>` +- Report SD print status: `M27` + +In addition, the following extended commands are available when the +"virtual_sdcard" config section is enabled. + +#### SDCARD_PRINT_FILE +`SDCARD_PRINT_FILE FILENAME=<filename>`: Load a file and start SD +print. + +#### SDCARD_RESET_FILE +`SDCARD_RESET_FILE`: Unload file and clear SD state. + +### [z_tilt] + +The following commands are available when the +[z_tilt config section](Config_Reference.md#z_tilt) is enabled. -- `QUERY_RAW_FILAMENT_WIDTH` - Return the current ADC channel readings and - RAW sensor value for calibration points -- `ENABLE_FILAMENT_WIDTH_LOG` - Turn on diameter logging -- `DISABLE_FILAMENT_WIDTH_LOG` - Turn off diameter logging +#### Z_TILT_ADJUST +`Z_TILT_ADJUST [<probe_parameter>=<value>]`: This command will probe +the points specified in the config and then make independent +adjustments to each Z stepper to compensate for tilt. See the PROBE +command for details on the optional probe parameters. |