Every 3D printer and many other complex pieces of machinery run a program that serves as the link between the hardware and the software.
This program is called a firmware.
In the 3D printing world, you would store the firmware on the machine’s mainboard. This firmware would control every piece of electronics you hook up to it, such as sensors and stepper motors, through G-code instructions from slicing software, to 3D print a model.
Though Marlin is very popular, Klipper firmware is catching up very quickly in terms of popularity.
Based on Python, Klipper is easy to set up and enables faster printing time without compromising build quality. We will explore the pros and cons in this review.
What is Klipper?
Klipper is an open-source 3D printer firmware that breaks the tradition.
Developed by KevinOConnor on GitHub, Klipper works with a 3D printer mainboard and another single-board computer such as a Raspberry Pi. It leverages the extra computational power to achieve faster printing time and higher overall accuracy.
Before we look into how Klipper utilizes this extra computational power, we need to understand why KevinOConnor created the firmware in the first place.
At its inception, most printers used 8-bit mainboards. In fact, a lot of them still do nowadays.
Without going into too much detail, those boards have very slow processing times when the machine needs to read and carry out G-code commands.
To improve processing times, Klipper was created. It helped improve printing performance by offloading the processing job to another device.
Klipper uses the extra computational power to create a pre-developed plan to execute G-code commands. That way, your printer only needs to perform the commands instead of wasting time processing them.
This is possible since stepper motors move only slightly in individual steps. So, Klipper uses the extra computational power and built-in algorithms to calculate step movement times for motor actions.
Using an external computer to schedule movements also frees up your device to perform more actions in a given time.
Of course, software support is always important. So, on this side of things, you can find the source files on the GitHub page, which updates quite often.
If you have problems or questions, you can check out the Issues section on the same page or open a New Issue case to get help.
Also, their Klipper Discourse Group is a great source of informations.
There is also a Subreddit for firmware where you can hang out with other users as well. Speaking of the community, what does the 3D printing community has to say about this firmware?
Evidently, this firmware package offers an alternative to other options such as RepRap or Marlin.
But is it going to be enough? Right from the get-go, people noticed a significant difference when they use Klipper.
There is indeed a print quality difference between Klipper and other firmware. We will go over its primary features as well as the pros and cons below.
Primary Features of Klipper
Klipper is not your run-of-the-mill firmware program.
It utilizes another computer board that serves as an application processor, giving more processing power to your machine. So, what are some features that make Klipper stand out from the rest?
Klipper gives your older hardware a new breath of life by enabling them to achieve high-stepping rates.
Even old 8-bit microcontrollers can clock well over 175k steps a second. More modern microcontrollers can reach millions of steps.
A higher stepper rate translates to higher print velocities and even at such a high rate, the stepper event timing is still precise.
Multiple micro-controllers support
Klipper can work with more than one microcontroller (MCU).
For instance, you can use one to control the printer’s heaters while running another one to check the extruder. Klipper has clock synchronization to compensate for clock drift between micro-controllers and all it takes to enable this is a few lines of code in the config file.
Very precise stepper movement
Klipper usually runs on a Raspberry Pi to calculate printer movements.
In this case, the Raspberry Pi determines when to step each stepper motor. The events are compressed before being sent to the microcontroller, which performs each one at a certain moment in time.
This accuracy is better than or equal to 25 microseconds.
To run Klipper effectively, Klipper recommends Raspberry Pi 2 and above (Model 3 and 4).
You can also use the computers with lower processing power (Model 1 or “zero”), but these might have issues to run interfaces optimally.
You can edit Klipper’s config file with ease, without the need to reflash the microcontroller. That means it is very easy to set up and maintain the hardware.
Smooth pressure advance feature
This is a mechanism that takes into consideration the effects of pressure inside an extruder.
This feature gives you control over the extruder in the sense that you can adjust the flow depending on the elasticity of the filament and its compression within the tube. That way, you can reduce extruder ooze to achieve better stability and smoother prints.
Klipper enables precise timing regardless of the hardware you use.
The micro-controller code follows the schedule from Klipper host software. In other words, you can swap your setup and have full confidence that the timing would remain precise.
In the printer configuration file, you can define new programmable G-Code commands.
So, depending on the printer’s condition, these commands may perform a number of different actions.
Pros and Cons of Using Klipper 3D Printing Firmware
But before you go and install Klipper and use it to run your 3D projects, it is worth looking at the pros and cons first.
Setting up and configuring Klipper is very easy.
The documentation is well written, and it does not take long.
First, you’ll need the printer’s configuration file (“printer-” prefix) usually from Klipper config directory (see compatibility).
Then you need to transfer the file to Raspberry Pi and flash into MCU. After OctoPrint (Mainsail or Fluidd) setup, a new configuration file should be updated.
Updating the software is also a straightforward process. All you have to do is to add or change some commands in the config file, save, then restart. Simple as that!
Faster print speed
Though Input Shaping, Klipper helps eliminate ringing in your 3D printer from vibrations.
In other words, you can push your 3D printer to run at a higher acceleration setting without creating any ringing in details on your projects.
Most common interfaces used along with Klipper firmware are Mainsail, Fluidd or Octoprint.
These interfaces offer great customization options and responsive UI. Multiple printer management, webcam support or bed mesh leveling are part of their feature set.
Faster stepping rate
Klipper enhances older hardware, allowing them to keep up with newer ones.
For instance, an ancient 8-bit RAM board can do only 10,000 steps a second if you run an 8-bit Marlin installation. With Klipper, the same board can push out over 100,000 steps a second.
If you run relatively modern 32-bit systems like the Duet 2, you can get well over 600,000 steps a second.
Though you might not need that many step rates, it is still nice to have. Long story short, you can push your rig harder and faster using Klipper.
As already mentioned, you can run as many controller boards as you want along with Raspberry Pi.
Normally, you can only run as many steppers as there are on the controller board. If you want to expand, you need to buy a special board with an expander, which can get expensive quickly.
With Klipper, you can just flash the firmware to the board, plug it into your Raspberry Pi, tinker with the config file to identify it as a second controller board, and you are good to go!
Klipper runs on Python.
If you are unfamiliar with programming, Python is one of the easiest programming languages to pick up because it is very readable.
With a bit of math and programming experience under your belt, you can add features such as additional kinematic support for different kinds of printers.
Several thermistors support
Except the compatibility with most common thermistors, such as AD595, PT100 or MAX31855, you can configure your own temperature sensors.
Klipper also supports all the common bed probes and g-codes from all the common slicers.
Klipper development team is constantly updating with new features.
There has been practically new version available every year since 2016, with the latest version v0.11.0 from October 2022.
Easy to run
You will need a separate board to hook your controller board in order to run Klipper. Fortunately, any old hardware will do.
A lot of people use Raspberry Pi for the job, and you should too. Raspberry Pi’s processors are very efficient in terms of power consumption.
Klipper is compatible with most common printer controller boards used today.
There are over 150 config files available in their klipper/config repository on GitHub.
In case you’d not find your printer on the list, you can check the MCU of your motherboard to see if it would work with Klipper.
If so, you can flash the board. More often than not, you can find example firmware for your setup.
Although Klipper allows you to leverage your printers to achieve better quality in print, you should not switch to Klipper if you already have good-quality prints with Marlin.
There are numerous occasions where people switch from other firmware to Klipper and cannot get some functions to work properly, or face new issues that they never had with other firmware.
Though the configuration is easy to tinker with, it is also finicky. It is difficult to identify the problem when things go wrong. It could be the configuration, the slicer settings, or some bug in Klipper.
Some features have values that are difficult to understand unless you actually try tinkering with them.
This is a common problem for Klipper. It only supports basic graphical interfaces. Certain displays that come with their own firmware that sends Instructions to the controller board are not supported by Klipper.
Frequently Asked Questions
After weighing the pros and cons, you should have a good idea of whether Klipper is for you.
But if you still have more questions, then chances are that you will find an answer below.
Does Cura Support Klipper?
The short answer is: yes, Cura does support Klipper.
Though, you do need to spend a bit of time tinkering with the config file to ensure that there is no conflict. Consider getting plug-ins so you can change Klipper settings directly in Cura.
Does Klipper Improve Print Quality?
Absolutely! Even at higher speeds, Klipper still maintains consistent print quality.
You can easily calibrate the axis of your motors, and complex calculations are “outsourced” to the Raspberry Pi.
The “outsourcing” ability of Klipper provide more computationally precise and complex control and results in higher print quality.
Can Klipper Run on a PC?
Yes, it can. Although, I must point out that Klipper is designed to run on Raspberry Pi 2, 3, and 4. If you have a Windows PC, you can still run Klipper, but you need to use Windows Subsystem for Linux (WSL).
Klipper firmware is gaining popularity rapidly nowadays. It is one alternative to the Marlin firmware that everybody is very familiar with.
Though Klipper does not and may never replace Marlin completely, it does offer a lot of customization options in the config file to help you make the most out of your 3D printer.
Overall, Klipper enables you to improve print quality, precision, and speed regardless of your hardware. It is a great choice of firmware, but it is definitely not for everybody.
As the saying goes, “if it ain’t broke, don’t fix it”. If you run Marlin and the prints come out good, you might be better off sticking to it. Making the switch might introduce more issues, and it can be tricky to pinpoint the issue.
But, if you are upgrading your setup and want something that can squeeze a bit more performance from your hardware, and you just so happen to have a Raspberry Pi, Klipper is definitely worth checking out.