Basic Information:
Printer Model:
MCU / Printerboard:
Host / SBC
klippy.log
Fill out above information and in all cases attach your klippy.log file (use zip to compress it, if too big). Pasting your printer.cfg is not needed
Be sure to check our “Knowledge Base” Category first. Most relevant items, e.g. error messages, are covered there
Describe your issue:
How to set up a 3D printer with Klipper – fine-tuning print quality
This text does not cover the installation of Klipper or the complete setup of a printer from the beginning. It assumes that the printer is already working and that Klipper is installed. I am focusing on systematically finding suitable speed, acceleration, and other settings that affect print quality.
First, you need to clarify your priorities.
Good surface quality
Accurate dimensions
Print speed
These three things do not work perfectly together when printing, so it is necessary to find some kind of compromise.
For two days, I unsuccessfully tried following the instructions from the Klipper documentation.
Then I decided to take my own approach. Since I had studied the documentation, I had some understanding of the available functions. The instructions there are useful, but you cannot set up a printer by following them alone.
You need to adjust several things, and testing only one of them will not solve the problem.
You need to proceed systematically.
First, I created a new profile in PrusaSlicer. I switched off everything I could so that it would print at one constant speed and would not cause problems with various corrections.
Speed: 100 mm/s.
Infill: 0%
Line width: 0.4 mm
Turn off cooling because it slows down the print.
Bottom layers: 1
Top layers: 0
Perimeters: 2
Layer height: 0.2 mm
Place the seam on the back of the model so that it does not form on the corners and is not scattered across the entire surface.
Use the temperature you normally use. In my case, it is 210 °C. I use only high-quality filament that I know—in my case, Polyline.
I do not use a heated bed. Blue tape is an optimal solution. Some modern print surfaces have poor adhesion, but there is a solution for that as well. Simply go over the surface lightly with P600 sandpaper. A heated bed only makes everything worse.
Create one cuboid approximately 60 × 60 mm and another one measuring 20 × 20 mm. Leave two edges of each model sharp, and give the other two edges a radius of 1 mm and 2 mm.
I turned off cooling during the test so that the slicer would not automatically slow down the print on short layers. After the first layer has been printed, the fan must be turned on in the G-code or in the start/layer-change code.
Add the command to turn on the cooling fan to the G-code: M106 S255, and place it where the printer starts printing the second layer.
In printer.cfg, comment out the functions:
pressure_advance
input_shaper
Set square_corner_velocity to 0.
Set minimum_cruise_ratio to 0.
Everything that affects print quality needs to be disabled.
Now you can begin.
First, find out how fast your machine can print while still producing nice and smooth walls. Do not focus on the edges. Look only at the straight surfaces.
Enter the following tuning command:
TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=VELOCITY START=30 STEP_DELTA=10 STEP_HEIGHT=5
This command will increase the speed every 5 mm of height. The model must therefore be at least 60 mm high. Load the large cuboid model, measuring 60 × 60 mm, and start the print. According to my command, printing will start at 30 mm/s and increase by 10 mm/s every 5 mm.
You can optionally set the print speed to 500%. This is only in case you go above 100 mm/s, because the command increases the maximum print speed. Continuously observe the surface structure, and when it no longer looks good to you, stop the print. Check the height at which the quality was still good enough for your requirements and measure that height. Calculate what speed was being used at that point.
You now have a starting point.
During printing, you can later set this speed for the perimeters, and you will always know that the surface should look good.
Temporarily set this speed in printer.cfg as the maximum print speed. Since you have a G-code model in which the speed is defined as 100 mm/s, you will not need to slice a new model with a different speed. Only do this if the printer produces a nice surface at a speed higher than 100 mm/s. Alternatively, you can increase the speed.
Now find out what acceleration your machine can handle.
TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=ACCEL START=3000 STEP_DELTA=500 STEP_HEIGHT=5
Use the speed you found earlier and the command for increasing the acceleration every 3–5 mm.
Open the 20 × 20 mm cuboid model and start the print.
Observe how it prints in the corners. When the corners begin to deteriorate significantly, stop the print, measure the height again, and calculate which acceleration produced the best result.
I normally used an acceleration of 6000, but now I have limited it to 3000. That is sufficient.
You now have the speed and acceleration values and can continue. Set them in printer.cfg so that you do not have to enter them manually every time you restart the machine.
Now enter the command for increasing the square_corner_velocity value:
TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=SQUARE_CORNER_VELOCITY START=1 STEP_DELTA=1 STEP_HEIGHT=3
Start printing the 20 × 20 mm cuboid. The large cuboid is no longer needed.
Follow the same procedure: observe the print, stop it, measure the height, and calculate which value produced the best result.
Set it in printer.cfg.
Do the same for minimum_cruise_ratio:
TUNING_TOWER COMMAND=SET_VELOCITY_LIMIT PARAMETER=MINIMUM_CRUISE_RATIO START=0 STEP_HEIGHT=3 STEP_DELTA=0.1
Once you have done this and all the values have been set, you can move on to pressure_advance.
https://www.klipper3d.org/Pressure\_Advance.html?h=pressure\_advance
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
The calculation is different here because the value increases with every layer.
Height × 0.005 equals your pressure_advance value.
If you want to use input_shaper, you must follow the instructions in the Klipper documentation.
https://www.klipper3d.org/Resonance\_Compensation.html
Later, you can fine-tune it using:
TUNING_TOWER COMMAND=SET_INPUT_SHAPER PARAMETER=SHAPER_FREQ_X START=45 STEP_DELTA=1 STEP_HEIGHT=3
TUNING_TOWER COMMAND=SET_INPUT_SHAPER PARAMETER=SHAPER_FREQ_Y START=55 STEP_DELTA=1 STEP_HEIGHT=3
Once all the values have been entered into printer.cfg, print a 20 × 20 × 5 mm cuboid with infill and top layers. Measure the dimensions, and if they are not correct, adjust them using a calculation.
I have a 16-tooth pulley, so my rotation_distance is 32. With a 20-tooth pulley, it is 40.
You can calculate it as follows:
32 × (measured value / desired value) = your new rotation_distance
Then print it again and measure it.
Now you can set up your slicer and Klipper normally. Increase the maximum speed in Klipper according to your preference, and do the same in the slicer. Use different speeds for specific printing tasks. Leave the external-perimeter speed at the value you found during calibration.
Fine-tune everything else according to your own preferences.
I am not claiming that this is the correct procedure, but it is definitely a good starting point. This way, you will understand what effect each function has and get to know your printer better.
“Printing without understanding the printing process and without knowing your printer makes no sense.”
