| 
									
										
										
										
											2021-07-22 00:40:40 +02:00
										 |  |  | # Features
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-27 15:14:11 -04:00
										 |  |  | Klipper has several compelling features: | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | * High precision stepper movement. Klipper utilizes an application | 
					
						
							|  |  |  |   processor (such as a low-cost Raspberry Pi) when calculating printer | 
					
						
							|  |  |  |   movements. The application processor determines when to step each | 
					
						
							|  |  |  |   stepper motor, it compresses those events, transmits them to the | 
					
						
							|  |  |  |   micro-controller, and then the micro-controller executes each event | 
					
						
							| 
									
										
										
										
											2017-05-01 11:36:07 -04:00
										 |  |  |   at the requested time. Each stepper event is scheduled with a | 
					
						
							| 
									
										
										
										
											2016-12-26 13:15:37 -05:00
										 |  |  |   precision of 25 micro-seconds or better. The software does not use | 
					
						
							|  |  |  |   kinematic estimations (such as the Bresenham algorithm) - instead it | 
					
						
							|  |  |  |   calculates precise step times based on the physics of acceleration | 
					
						
							|  |  |  |   and the physics of the machine kinematics. More precise stepper | 
					
						
							| 
									
										
										
										
											2022-11-19 10:12:37 -05:00
										 |  |  |   movement provides quieter and more stable printer operation. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | * Best in class performance. Klipper is able to achieve high stepping | 
					
						
							| 
									
										
										
										
											2023-02-20 17:06:25 +01:00
										 |  |  |   rates on both new and old micro-controllers. Even old 8-bit | 
					
						
							| 
									
										
										
										
											2020-10-13 14:24:05 -04:00
										 |  |  |   micro-controllers can obtain rates over 175K steps per second. On | 
					
						
							| 
									
										
										
										
											2021-11-04 22:08:32 -04:00
										 |  |  |   more recent micro-controllers, several million steps per second are | 
					
						
							| 
									
										
										
										
											2017-09-27 13:59:47 -04:00
										 |  |  |   possible. Higher stepper rates enable higher print velocities. The | 
					
						
							|  |  |  |   stepper event timing remains precise even at high speeds which | 
					
						
							|  |  |  |   improves overall stability. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * Klipper supports printers with multiple micro-controllers. For | 
					
						
							|  |  |  |   example, one micro-controller could be used to control an extruder, | 
					
						
							|  |  |  |   while another controls the printer's heaters, while a third controls | 
					
						
							|  |  |  |   the rest of the printer. The Klipper host software implements clock | 
					
						
							|  |  |  |   synchronization to account for clock drift between | 
					
						
							|  |  |  |   micro-controllers. No special code is needed to enable multiple | 
					
						
							|  |  |  |   micro-controllers - it just requires a few extra lines in the config | 
					
						
							|  |  |  |   file. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | * Configuration via simple config file. There's no need to reflash the | 
					
						
							|  |  |  |   micro-controller to change a setting. All of Klipper's configuration | 
					
						
							|  |  |  |   is stored in a standard config file which can be easily edited. This | 
					
						
							|  |  |  |   makes it easier to setup and maintain the hardware. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-13 14:24:05 -04:00
										 |  |  | * Klipper supports "Smooth Pressure Advance" - a mechanism to account | 
					
						
							|  |  |  |   for the effects of pressure within an extruder. This reduces | 
					
						
							|  |  |  |   extruder "ooze" and improves the quality of print corners. Klipper's | 
					
						
							|  |  |  |   implementation does not introduce instantaneous extruder speed | 
					
						
							|  |  |  |   changes, which improves overall stability and robustness. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Klipper supports "Input Shaping" to reduce the impact of vibrations | 
					
						
							|  |  |  |   on print quality. This can reduce or eliminate "ringing" (also known | 
					
						
							|  |  |  |   as "ghosting", "echoing", or "rippling") in prints. It may also | 
					
						
							|  |  |  |   allow one to obtain faster printing speeds while still maintaining | 
					
						
							|  |  |  |   high print quality. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Klipper uses an "iterative solver" to calculate precise step times | 
					
						
							|  |  |  |   from simple kinematic equations. This makes porting Klipper to new | 
					
						
							|  |  |  |   types of robots easier and it keeps timing precise even with complex | 
					
						
							|  |  |  |   kinematics (no "line segmentation" is needed). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-19 10:12:37 -05:00
										 |  |  | * Klipper is hardware agnostic. One should get the same precise timing | 
					
						
							|  |  |  |   independent of the low-level electronics hardware. The Klipper | 
					
						
							|  |  |  |   micro-controller code is designed to faithfully follow the schedule | 
					
						
							|  |  |  |   provided by the Klipper host software (or prominently alert the user | 
					
						
							|  |  |  |   if it is unable to). This makes it easier to use available hardware, | 
					
						
							|  |  |  |   to upgrade to new hardware, and to have confidence in the hardware. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-10 18:23:35 -05:00
										 |  |  | * Portable code. Klipper works on ARM, AVR, PRU, and other | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  |   micro-controllers. Existing "reprap" style printers can run Klipper | 
					
						
							|  |  |  |   without hardware modification - just add a Raspberry Pi. Klipper's | 
					
						
							|  |  |  |   internal code layout makes it easier to support other | 
					
						
							|  |  |  |   micro-controller architectures as well. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Simpler code. Klipper uses a very high level language (Python) for | 
					
						
							| 
									
										
										
										
											2017-04-27 15:14:11 -04:00
										 |  |  |   most code. The kinematics algorithms, the G-code parsing, the | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  |   heating and thermistor algorithms, etc. are all written in Python. | 
					
						
							|  |  |  |   This makes it easier to develop new functionality. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-13 14:24:05 -04:00
										 |  |  | * Custom programmable macros. New G-Code commands can be defined in | 
					
						
							|  |  |  |   the printer config file (no code changes are necessary). Those | 
					
						
							|  |  |  |   commands are programmable - allowing them to produce different | 
					
						
							|  |  |  |   actions depending on the state of the printer. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Builtin API server. In addition to the standard G-Code interface, | 
					
						
							|  |  |  |   Klipper supports a rich JSON based application interface. This | 
					
						
							|  |  |  |   enables programmers to build external applications with detailed | 
					
						
							|  |  |  |   control of the printer. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-22 00:40:40 +02:00
										 |  |  | ## Additional features
 | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | Klipper supports many standard 3d printer features: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-28 20:59:31 -05:00
										 |  |  | * Several web interfaces available. Works with Mainsail, Fluidd, | 
					
						
							|  |  |  |   OctoPrint and others. This allows the printer to be controlled using | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  |   a regular web-browser. The same Raspberry Pi that runs Klipper can | 
					
						
							| 
									
										
										
										
											2022-11-28 20:59:31 -05:00
										 |  |  |   also run the web interface. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | * Standard G-Code support. Common g-code commands that are produced by | 
					
						
							| 
									
										
										
										
											2021-09-29 20:38:53 -04:00
										 |  |  |   typical "slicers" (SuperSlicer, Cura, PrusaSlicer, etc.) are | 
					
						
							|  |  |  |   supported. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * Support for multiple extruders. Extruders with shared heaters and | 
					
						
							|  |  |  |   extruders on independent carriages (IDEX) are also supported. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-29 20:38:53 -04:00
										 |  |  | * Support for cartesian, delta, corexy, corexz, hybrid-corexy, | 
					
						
							| 
									
										
										
										
											2022-11-28 20:59:31 -05:00
										 |  |  |   hybrid-corexz, deltesian, rotary delta, polar, and cable winch style | 
					
						
							|  |  |  |   printers. | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | * Automatic bed leveling support. Klipper can be configured for basic | 
					
						
							| 
									
										
										
										
											2025-04-10 18:49:22 -04:00
										 |  |  |   bed tilt detection or full mesh bed leveling. The bed mesh can be | 
					
						
							|  |  |  |   customized to the print size (adaptive bed mesh). If the bed uses | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  |   multiple Z steppers then Klipper can also level by independently | 
					
						
							|  |  |  |   manipulating the Z steppers. Most Z height probes are supported, | 
					
						
							| 
									
										
										
										
											2023-11-10 18:23:35 -05:00
										 |  |  |   including BL-Touch probes and servo activated probes. Probes may be | 
					
						
							| 
									
										
										
										
											2025-04-10 18:49:22 -04:00
										 |  |  |   calibrated for axis twist compensation. If using an "eddy current | 
					
						
							|  |  |  |   probe" then one can utilize fast bed mesh scanning, | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-28 22:57:29 -04:00
										 |  |  | * Automatic delta calibration support. The calibration tool can | 
					
						
							|  |  |  |   perform basic height calibration as well as an enhanced X and Y | 
					
						
							|  |  |  |   dimension calibration. The calibration can be done with a Z height | 
					
						
							|  |  |  |   probe or via manual probing. | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-28 20:59:31 -05:00
										 |  |  | * Run-time "exclude object" support. When configured, this module may | 
					
						
							|  |  |  |   facilitate canceling of just one object in a multi-part print. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * Support for common temperature sensors (eg, common thermistors, | 
					
						
							| 
									
										
										
										
											2020-10-13 14:24:05 -04:00
										 |  |  |   AD595, AD597, AD849x, PT100, PT1000, MAX6675, MAX31855, MAX31856, | 
					
						
							| 
									
										
										
										
											2025-04-10 18:49:22 -04:00
										 |  |  |   MAX31865, BME280, HTU21D, DS18B20, AHT10, SHT3x, and LM75). Custom | 
					
						
							| 
									
										
										
										
											2023-11-10 18:23:35 -05:00
										 |  |  |   thermistors and custom analog temperature sensors can also be | 
					
						
							|  |  |  |   configured. One can monitor the internal micro-controller | 
					
						
							|  |  |  |   temperature sensor and the internal temperature sensor of a | 
					
						
							|  |  |  |   Raspberry Pi. | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | * Basic thermal heater protection enabled by default. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * Support for standard fans, nozzle fans, and temperature controlled | 
					
						
							| 
									
										
										
										
											2021-09-29 20:38:53 -04:00
										 |  |  |   fans. No need to keep fans running when the printer is idle. Fan | 
					
						
							| 
									
										
										
										
											2025-04-10 18:49:22 -04:00
										 |  |  |   speed can be monitored on fans that have a tachometer. One can | 
					
						
							|  |  |  |   assign a "math formula" to a fan for automatic fan speed updating. | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-23 12:28:39 -04:00
										 |  |  | * Support for run-time configuration of TMC2130, TMC2208/TMC2224, | 
					
						
							| 
									
										
										
										
											2023-11-10 18:23:35 -05:00
										 |  |  |   TMC2209, TMC2240, TMC2660, and TMC5160 stepper motor drivers. There | 
					
						
							|  |  |  |   is also support for current control of traditional stepper drivers | 
					
						
							|  |  |  |   via AD5206, DAC084S085, MCP4451, MCP4728, MCP4018, and PWM pins. | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | * Support for common LCD displays attached directly to the printer. A | 
					
						
							| 
									
										
										
										
											2020-10-13 14:24:05 -04:00
										 |  |  |   default menu is also available. The contents of the display and menu | 
					
						
							|  |  |  |   can be fully customized via the config file. | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | * Constant acceleration and "look-ahead" support. All printer moves | 
					
						
							|  |  |  |   will gradually accelerate from standstill to cruising speed and then | 
					
						
							|  |  |  |   decelerate back to a standstill. The incoming stream of G-Code | 
					
						
							|  |  |  |   movement commands are queued and analyzed - the acceleration between | 
					
						
							| 
									
										
										
										
											2017-04-27 15:14:11 -04:00
										 |  |  |   movements in a similar direction will be optimized to reduce print | 
					
						
							|  |  |  |   stalls and improve overall print time. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * Klipper implements a "stepper phase endstop" algorithm that can | 
					
						
							|  |  |  |   improve the accuracy of typical endstop switches. When properly | 
					
						
							|  |  |  |   tuned it can improve a print's first layer bed adhesion. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-29 20:38:53 -04:00
										 |  |  | * Support for filament presence sensors, filament motion sensors, and | 
					
						
							|  |  |  |   filament width sensors. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-10 18:23:35 -05:00
										 |  |  | * Support for measuring and recording acceleration using adxl345, | 
					
						
							| 
									
										
										
										
											2025-04-10 18:49:22 -04:00
										 |  |  |   mpu9250, mpu6050, lis2dw12, lis3dh, and icm20948 accelerometers. | 
					
						
							| 
									
										
										
										
											2020-10-13 14:24:05 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * Support for limiting the top speed of short "zigzag" moves to reduce | 
					
						
							|  |  |  |   printer vibration and noise. See the [kinematics](Kinematics.md) | 
					
						
							|  |  |  |   document for more information. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Sample configuration files are available for many common printers. | 
					
						
							| 
									
										
										
										
											2020-12-03 15:06:58 -05:00
										 |  |  |   Check the [config directory](../config/) for a list. | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | To get started with Klipper, read the [installation](Installation.md) | 
					
						
							|  |  |  | guide. | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-22 00:40:40 +02:00
										 |  |  | ## Step Benchmarks
 | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | Below are the results of stepper performance tests. The numbers shown | 
					
						
							|  |  |  | represent total number of steps per second on the micro-controller. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-04 22:08:32 -04:00
										 |  |  | | Micro-controller                | 1 stepper active  | 3 steppers active | | 
					
						
							| 
									
										
										
										
											2019-08-31 20:48:02 -04:00
										 |  |  | | ------------------------------- | ----------------- | ----------------- | | 
					
						
							| 
									
										
										
										
											2021-11-04 22:08:32 -04:00
										 |  |  | | 16Mhz AVR                       | 157K              | 99K               | | 
					
						
							|  |  |  | | 20Mhz AVR                       | 196K              | 123K              | | 
					
						
							| 
									
										
										
										
											2022-04-21 19:34:51 -04:00
										 |  |  | | SAMD21                          | 686K              | 471K              | | 
					
						
							| 
									
										
										
										
											2021-11-04 22:08:32 -04:00
										 |  |  | | STM32F042                       | 814K              | 578K              | | 
					
						
							|  |  |  | | Beaglebone PRU                  | 866K              | 708K              | | 
					
						
							| 
									
										
										
										
											2021-12-27 10:47:52 -05:00
										 |  |  | | STM32G0B1                       | 1103K             | 790K              | | 
					
						
							| 
									
										
										
										
											2022-04-21 19:34:51 -04:00
										 |  |  | | STM32F103                       | 1180K             | 818K              | | 
					
						
							|  |  |  | | SAM3X8E                         | 1273K             | 981K              | | 
					
						
							|  |  |  | | SAM4S8C                         | 1690K             | 1385K             | | 
					
						
							|  |  |  | | LPC1768                         | 1923K             | 1351K             | | 
					
						
							|  |  |  | | LPC1769                         | 2353K             | 1622K             | | 
					
						
							|  |  |  | | SAM4E8E                         | 2500K             | 1674K             | | 
					
						
							|  |  |  | | SAMD51                          | 3077K             | 1885K             | | 
					
						
							| 
									
										
										
										
											2023-02-21 02:15:01 +01:00
										 |  |  | | AR100                           | 3529K             | 2507K             | | 
					
						
							| 
									
										
										
										
											2025-05-31 12:41:31 -04:00
										 |  |  | | STM32G431                       | 3617K             | 2452K             | | 
					
						
							| 
									
										
										
										
											2022-04-21 19:34:51 -04:00
										 |  |  | | STM32F407                       | 3652K             | 2459K             | | 
					
						
							|  |  |  | | STM32F446                       | 3913K             | 2634K             | | 
					
						
							| 
									
										
										
										
											2025-02-26 20:25:18 -05:00
										 |  |  | | RP2040                          | 4000K             | 2571K             | | 
					
						
							| 
									
										
										
										
											2024-10-28 13:48:07 -04:00
										 |  |  | | RP2350                          | 4167K             | 2663K             | | 
					
						
							| 
									
										
										
										
											2024-10-09 22:10:46 -04:00
										 |  |  | | SAME70                          | 6667K             | 4737K             | | 
					
						
							| 
									
										
										
										
											2025-04-22 00:12:33 -04:00
										 |  |  | | STM32H723                       | 7429K             | 8619K             | | 
					
						
							| 
									
										
										
										
											2022-04-21 19:34:51 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | If unsure of the micro-controller on a particular board, find the | 
					
						
							|  |  |  | appropriate [config file](../config/), and look for the | 
					
						
							|  |  |  | micro-controller name in the comments at the top of that file. | 
					
						
							| 
									
										
										
										
											2021-11-04 22:08:32 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | Further details on the benchmarks are available in the | 
					
						
							|  |  |  | [Benchmarks document](Benchmarks.md). |