Repository navigation
cornering_calib
Cornering is a critical aspect of 3D printing that affects print quality and accuracy. It's how the printer handles changes in direction during movement, particularly at corners and curves.
Proper cornering settings can reduce artifacts such as ringing, ghosting, and overshooting, resulting in cleaner and more precise prints.
Important
This test will help you find the Maximum Cornering settings your printer can handle without losing print quality.
If you are not experiencing issues with corners in your prints and are satisfied with the print speed, you may choose to skip this calibration.
Tip
Follow the recommended calibration order in the Calibration Guide.
Tip
Read more in Jerk XY and check Cornering Control Types
This test automatically detects your printer firmware type and adapts the calibration process to it.
- Klipper: square_corner_velocity
- Marlin 2:
-
Junction Deviation if
Maximum Junction Deviationin Printer settings/Motion ability/Jerk limitations is bigger than0. -
Classic Jerk if
Maximum Junction Deviationis set to0.
-
Junction Deviation if
- Marlin Legacy: Classic Jerk.
- RepRap: Maximum instantaneous speed changes
Warning
The firmware limits cornering, and OrcaSlicer can't check that limit.
OrcaSlicer sends the test values to the printer, but it can't read what the firmware actually applies. Above the firmware limit, a higher value doesn't make corners faster in real prints, and the rest of the tower prints the same.
-
Klipper: the corner speed is also limited by the print speed, the acceleration and the length of the moves, so above a certain
square_corner_velocitythe corners don't get any faster. To see the value in use, sendSET_VELOCITY_LIMITwithout parameters in the console while the test prints. -
Marlin 2 (Junction Deviation): only values between
0.01and0.3mm are accepted. Values outside this range are ignored. -
Marlin (Classic Jerk): firmware built with
LIMITED_JERK_EDITINGcaps the jerk values (by default to twice the firmware default). SendM503to see the values in use.
Note
This calibration example uses Junction Deviation as an example. The process is similar for Jerk calibration; just read the Jerk values instead of JD values.
JD values are between 0.0 and 0.3 (in mm) while Jerk values are usually between 1 and 20 or higher (in mm/s).
- Pre-requisites:
- If using Marlin 2 firmware, Check if your printer has Junction Deviation enabled. Look for
Junction deviationin the printer's advanced settings. - In OrcaSlicer, set:
- Acceleration high enough to trigger ringing or the speed you want to check out (e.g., 2000 mm/s²).
- Speed high enough to trigger ringing (e.g., 100 mm/s).
- Use an opaque, high-gloss filament to make ringing more visible.
- If using Marlin 2 firmware, Check if your printer has Junction Deviation enabled. Look for
- Open the Cornering test.
- In this first approximation, set a wide range of Start and End values.
- If you don't see any loss of quality, increase the End value and retry. If the whole tower still looks the same, you have probably reached the firmware limit (see the warning above), and a higher value won't help.
- If you do see a loss of quality, measure the maximum height when the corners start losing sharpness and read the Cornering/Jerk/JunctionDeviation value set at that point in OrcaSlicer.

- Print a new calibration tower with a maximum set near the point where corners start losing sharpness.
RECOMMENDED: Use the Ringing Tower test model to more easily visualize the jerk limit. - Print the second Cornering test with the new maximum value.
- Measure the maximum height when the corners start losing sharpness and read the Cornering/Jerk/JunctionDeviation value set at that point in OrcaSlicer.

- In this first approximation, set a wide range of Start and End values.
- Save the settings
-
Into your OrcaSlicer printer profile (RECOMMENDED):
- Go to Printer settings → Motion ability → Jerk limitation:
- Set your maximum Jerk X and Y or Junction Deviation values.
-
Directly into your printer firmware:
-
Restore your 3D Printer settings to avoid keeping high acceleration and jerk values used for the test.
-
Klipper:
- Skeleton:
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=#SquareCornerVelocity
Example:
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=5.0
Note: You can also set
square_corner_velocitypersistently in yourprinter.cfg(restart required). -
Marlin 2 (Junction Deviation enabled):
- Skeleton:
M205 J#JunctionDeviationValue M500
- Example:
M205 J0.012 M500
-
To make the change permanent in firmware, set in
Configuration.hand recompile:
#define JUNCTION_DEVIATION_MM 0.012 // (mm) Distance from real junction edge
Also ensure classic jerk is disabled if using junction deviation:
//#define CLASSIC_JERK-
Marlin Classic Jerk / Marlin Legacy:
- Skeleton: — set the per-axis jerk limits using
M205(X/Y optional depending on firmware build):
M205 X#JerkX Y#JerkY M500
- Example:
M205 X10 Y10 M500
- Skeleton: — set the per-axis jerk limits using
-
RepRap (Duet / RepRapFirmware):
IMPORTANT: Set in mm/min so convert from mm/s to mm/min multiply by 60.- Skeleton:
M566 X#max_instantaneous_change Y#max_instantaneous_change M500 ; if supported by your board
- Example (Duet-style):
M566 X3000 Y3000
-
-
Note
RepRapFirmware exposes M566 to set allowable instantaneous speed changes; some boards may persist settings with M500 or via their web/config files.
- Junction Deviation Machine Limit @RF47
- Cornering Calibration @IanAlexis
- Fast tower model @RF47
- SCV-V2 model @chrisheib