| 
									
										
										
										
											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 | 
					
						
							|  |  |  |   movement translates to 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 | 
					
						
							|  |  |  |   rates on both new and old micro-controllers. Even an old 8bit AVR | 
					
						
							| 
									
										
										
										
											2017-04-11 13:53:33 -04:00
										 |  |  |   micro-controller can obtain rates over 175K steps per second. On | 
					
						
							| 
									
										
										
										
											2017-09-27 13:59:47 -04:00
										 |  |  |   more recent micro-controllers, rates over 500K steps per second are | 
					
						
							|  |  |  |   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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-08 11:01:54 -04:00
										 |  |  | * Portable code. Klipper works on ARM, AVR, and PRU based | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * 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). | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | Additional features | 
					
						
							|  |  |  | =================== | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | Klipper supports many standard 3d printer features: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  | * Klipper implements the "pressure advance" algorithm for extruders. | 
					
						
							|  |  |  |   When properly tuned, pressure advance reduces extruder ooze. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-20 22:22:54 -05:00
										 |  |  | * Works with Octoprint. This allows the printer to be controlled using | 
					
						
							|  |  |  |   a regular web-browser. The same Raspberry Pi that runs Klipper can | 
					
						
							|  |  |  |   also run Octoprint. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Standard G-Code support. Common g-code commands that are produced by | 
					
						
							|  |  |  |   typical "slicers" are supported. One may continue to use Slic3r, | 
					
						
							|  |  |  |   Cura, etc. with Klipper. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Support for cartesian, delta, and corexy style printers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Automatic bed leveling support. Klipper can be configured for basic | 
					
						
							|  |  |  |   bed tilt detection or full mesh bed leveling. If the bed uses | 
					
						
							|  |  |  |   multiple Z steppers then Klipper can also level by independently | 
					
						
							|  |  |  |   manipulating the Z steppers. Most Z height probes are supported, | 
					
						
							|  |  |  |   including servo activated probes. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							|  |  |  | * Support for common temperature sensors (eg, common thermistors, | 
					
						
							| 
									
										
										
										
											2019-10-15 13:08:43 -04:00
										 |  |  |   AD595, AD849x, PT100, MAX6675, MAX31855, MAX31856, MAX31865). Custom | 
					
						
							| 
									
										
										
										
											2018-09-03 20:33:00 -04:00
										 |  |  |   thermistors and custom analog temperature sensors can also be | 
					
						
							|  |  |  |   configured. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * 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 | 
					
						
							|  |  |  |   fans. No need to keep fans running when the printer is idle. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-23 12:28:39 -04:00
										 |  |  | * Support for run-time configuration of TMC2130, TMC2208/TMC2224, | 
					
						
							|  |  |  |   TMC2209, TMC2660, and TMC5160 stepper motor drivers. There is also | 
					
						
							|  |  |  |   support for current control of traditional stepper drivers via | 
					
						
							|  |  |  |   AD5206, 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 | 
					
						
							|  |  |  |   default menu is also available. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * 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. | 
					
						
							| 
									
										
										
										
											2019-04-14 21:12:21 -04:00
										 |  |  |   Check the | 
					
						
							|  |  |  |   [config directory](https://github.com/KevinOConnor/klipper/tree/master/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
										 |  |  | 
 | 
					
						
							|  |  |  | Step Benchmarks | 
					
						
							|  |  |  | =============== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Below are the results of stepper performance tests. The numbers shown | 
					
						
							|  |  |  | represent total number of steps per second on the micro-controller. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-31 20:48:02 -04:00
										 |  |  | | Micro-controller                | Fastest step rate | 3 steppers active | | 
					
						
							|  |  |  | | ------------------------------- | ----------------- | ----------------- | | 
					
						
							| 
									
										
										
										
											2019-09-06 13:24:20 -04:00
										 |  |  | | 16Mhz AVR                       | 154K              | 102K              | | 
					
						
							|  |  |  | | 20Mhz AVR                       | 192K              | 127K              | | 
					
						
							| 
									
										
										
										
											2019-08-31 20:48:02 -04:00
										 |  |  | | Arduino Zero (SAMD21)           | 234K              | 217K              | | 
					
						
							| 
									
										
										
										
											2019-09-08 09:25:31 -04:00
										 |  |  | | "Blue Pill" (STM32F103)         | 387K              | 360K              | | 
					
						
							| 
									
										
										
										
											2019-08-31 20:48:02 -04:00
										 |  |  | | Arduino Due (SAM3X8E)           | 438K              | 438K              | | 
					
						
							| 
									
										
										
										
											2019-09-08 09:13:51 -04:00
										 |  |  | | Duet2 Maestro (SAM4S8C)         | 564K              | 564K              | | 
					
						
							| 
									
										
										
										
											2019-08-31 20:48:02 -04:00
										 |  |  | | Smoothieboard (LPC1768)         | 574K              | 574K              | | 
					
						
							|  |  |  | | Smoothieboard (LPC1769)         | 661K              | 661K              | | 
					
						
							|  |  |  | | Beaglebone PRU                  | 680K              | 680K              | | 
					
						
							|  |  |  | | Duet2 Wifi/Eth (SAM4E8E)        | 686K              | 686K              | | 
					
						
							|  |  |  | | Adafruit Metro M4 (SAMD51)      | 733K              | 694K              | | 
					
						
							|  |  |  | | BigTreeTech SKR Pro (STM32F407) | 922K              | 711K              | | 
					
						
							| 
									
										
										
										
											2017-08-11 11:40:54 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | On AVR platforms, the highest achievable step rate is with just one | 
					
						
							| 
									
										
										
										
											2019-02-07 13:24:03 -05:00
										 |  |  | stepper stepping. On the SAMD21 and STM32F103 the highest step rate is | 
					
						
							|  |  |  | with two simultaneous steppers stepping. On the SAM3X8E, SAM4S8C, | 
					
						
							| 
									
										
										
										
											2019-02-01 10:49:32 -05:00
										 |  |  | SAM4E8E, LPC176x, and PRU the highest step rate is with three | 
					
						
							| 
									
										
										
										
											2019-08-31 20:48:02 -04:00
										 |  |  | simultaneous steppers. On the SAMD51 and STM32F4 the highest step rate | 
					
						
							|  |  |  | is with four simultaneous steppers. (Further details on the benchmarks | 
					
						
							|  |  |  | are available in the [Benchmarks document](Benchmarks.md).) |