Firmware is the program stored on a 3D printer’s mainboard, responsible for interpreting and carrying out inputted G-code commands with the connected hardware. While Marlin is probably the most popular 3D printer firmware for consumer-priced machines, it’s certainly not the only option.
A newer firmware option is Klipper, which is open source and has a unique setup compared to most other programs. Specifically, Klipper utilizes a connected Raspberry Pi (or similar computer) to process G-code commands. This way, the mainboard can focus solely on controlling the hardware, allowing your machine to print faster and more precisely.
Although Klipper offers many benefits, it comes with a few downsides, like its incompatibility with most printer’s built-in displays, unless you use upgrades like KlipperScreen to work around the problem. Another downside is that Klipper firmware can be somewhat tricky to install.
Luckily, in this article, we’ll go over exactly how to set up Klipper on the Creality Ender 3 V2, a popular, customizable, and budget-friendly 3D printer that succeeded the original Creality Ender 3. We’ll first discuss what you need for the installation and then go over the main steps for the process. Lastly, we’ll leave you with some troubleshooting tips.
Note that we’ll be using FluiddPi and the Fluidd interface to install Klipper. Fluidd is a web interface for Klipper firmware, and FluiddPi is the corresponding operating system (like OctoPi is for OctoPrint). We chose to use Fluidd because of its built-in configuration file editing capabilities, which allow you to easily and quickly make the necessary changes. However, there are other installation routes like OctoPrint and Mainsail. If you chose to use one of these, the process is very similar, but you may need to take additional steps to edit your configuration files.
While it’s not uncommon for a 3D printer firmware installation to use an extra cable or two, adding Klipper to the Ender 3 V2 requires a fair amount of additional hardware.
It’s important to note that while you can use SBCs other than Raspberry Pis, that’s what we’ll be using. The process for different boards shouldn’t be too different as long as you can install FluiddPi.
Once you have all the necessary supplies, we can get started installing Klipper on the Ender 3 V2!
The first thing you need to do is to set up FluiddPi. Let’s get into the step-by-step instructions:
While it’s not enough of a process to deserve its own official step, you’ll need to find the IP address of your connected device. You can find it by following the few steps below:
Now we want to download Klipper on your Pi and then configure it for your Ender 3 V2’s mainboard. If you’re following this guide but using a different printer, make sure to use specify your printer’s mainboard and not the Ender 3 V2’s mainboard because this could result in issues.
git clone https://github.com/KevinOConnor/klipper
./klipper/scripts/install-octopi.sh
. (This download process takes a few minutes.)cd ~/klipper/
and then the phrase make menuconfig
.make
command.The third step in this process is to upload your new firmware to your Ender 3 V2 through Fluidd’s web interface and other programs. Follow below to complete this process:
The final official step to installing Klipper on your Ender 3 V2 and Raspberry Pi board is to update the firmware.
That’s it! You’ve successfully installed Klipper on your Ender 3 V2.
Although Klipper is functioning on your 3D printer, you can’t really tell, as the LCD (if you choose to plug it back in, which is totally optional) doesn’t show anything. That’s because Klipper, as we said earlier, doesn’t work with the Ender 3 V2’s direct display, and you need a web interface to control your machine and start prints. You can continue reading to learn how to do this with Fluidd!
While Klipper doesn’t work with the V2’s LCD, it’s worth noting that the firmware is compatible with the stock LCD on the original Ender 3 (and CR-10). If you’re interested in how to do this, you can check out the last section of this article.
Even though you’ve installed Klipper, you can’t use it until you set up a web interface to work with Klipper. Although Fluidd is a great option, there are other Klipper-compatible online interfaces, such as Mainsail, and you can find other guides to use these alternatives.
If you want to use Fluidd, though, you have to make some changes to the configuration of Klipper to make the two programs work together. You can follow the steps below to do just that!
And that’s really all there is to it! You now have a Fluidd-compatible version of Klipper that you can use with your Ender 3 V2.
If you upgraded your Ender 3 V2 printer from the stock Creality V4.2.2 mainboard to the Creality V4.2.7 silent mainboard, you might notice some issues with controlling your machine. Most likely, you won’t be able to control the motion of components on your machine, so actions like homing an axis or moving the printhead a certain distance won’t work.
This problem is caused by a difference in the pinout schemes between the V4.2.2 and V4.2.7 boards. Luckily, one user found that all you need to do is swap the pinout numbers for the “step_pin” and “dir_pin” in the printer configuration file. You can follow the steps below to make the necessary adjustments:
step_pin: PB9 dir_pin: PC24+
step_pin: PB7 dir_pin: PB8
step_pin: PB5 dir_pin: !PB6
step_pin: PB3 dir_pin: PB4
One of the most popular upgrades to the Ender 3 V2 is a BLTouch sensor, which allows you to automatically level your bed using the precise measurement probe. As automatic bed leveling isn’t supported in Klipper’s stock configuration, we have to make a few changes to make it compatible.
Luckily, there are a few guides online covering this process, such as Klipper’s official instructions, an informative Reddit post, and TechingTech’s video tutorial. An overview of the necessary configuration changes are below:
sensor_pin: ^PB1 control_pin: PB0 x_offset: -42 y_offset: -10
home_xy_position: 117.5,117.5 # Change coordinates to the center of your print bed z_hop: 10 # Move up 10mm z_hop_speed: 5
endstop_pin: probe:z_virtual_endstop
speed: 120 horizontal_move_z: 5 mesh_min: 15, 15 mesh_max: 205, 205 probe_count: 5,3 algorithm: bicubic fade_start: 1 fade_end: 10 fade_target: 0
M190 S60 G28 BED_MESH_CALIBRATE SAVE_CONFIG
There are a few other optional settings for setting up BLTouch auto bed leveling, but this configuration should work just fine. If you’re interested in adding other BLTouch features to your firmware, you can use the guides we linked to at the beginning of this section!
Installing Klipper on your Raspberry Pi and 3D printer is a somewhat complex process, meaning there’s a possibility for errors and problems. Below, we’ve listed a few tips, tricks, and fixes to hopefully help solve some issues you could run into. Also, you can use Klipper’s documentation page, FAQ page, the Reddit Klippers group, and other forums to seek additional help.
ls /dev/serial/by-id/*
command phrase into Putty. If the response if a phrase like /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
, then the two devices are properly connected.Lead image source: AcroFPV via Reddit
License: The text of "Klipper on Ender 3 V2: How to Install It" by All3DP is licensed under a Creative Commons Attribution 4.0 International License.