Skip to main content

Klipper Arc Fitting and G2/G3 Recommendations

This document explains the trade-offs between Klipper's [gcode_arcs], G2 / G3 arc commands, and slicer arc fitting. For daily 3D printing, it is not recommended to rely on Klipper-side arc fitting as the primary method for improving quality or performance.

Strong Reminder

Modern slicers generate paths with very high precision. Curve segmentation, path simplification, and arc fitting can all be completed during the slicing stage. For daily printing, it is not recommended to add Klipper's [gcode_arcs] to have the firmware re-decompose arcs; there is no need for Klipper to recalculate what the slicer can already do well.

Common Errors

Error Messages: Unknown command:"G2", Unknown command:"G3", G2/G3 requires IJ, IK or JK parameters, G2/G3 does not support relative move mode, G2/G3 does not support R moves.

Common Causes:

  • The slicer outputs G2 / G3 arc commands, but [gcode_arcs] is not enabled in the Klipper configuration.
  • The arc commands in the G-code are missing I, J, K parameters.
  • The G-code uses the R radius arc format, which Klipper does not support.
  • The arc format output by the slicer or post-processing script is inconsistent with what Klipper supports.

Configuration for G2/G3 Compatibility Only

Only add the following configuration as a compatibility layer when the G-code file already contains G2 / G3 commands and it is temporarily not possible to disable the slicer's arc output:

[gcode_arcs]
resolution: 1.0

resolution specifies the segmentation precision when Klipper re-decomposes the arc into straight line segments. A smaller value results in finer segmentation; a larger value results in coarser segmentation.

Usage Recommendations

Klipper's [gcode_arcs] does not directly move the toolhead along an arc path. Instead, it re-decomposes the G2 / G3 arcs into many small straight line segments before feeding them to the motion planner.

  • If resolution is set very small: The line segments are finer, but the load on the host CPU and motion planner increases. Lower-performance hosts are more likely to experience stuttering, Timer too close errors, or unstable printing rhythm.
  • If resolution is set very large: The computational load decreases, but the arc detail also degrades, resulting in limited practical benefit.
  • The slicer can already handle model curves, segmentation precision, and path simplification well, so there is no need for the firmware to recalculate.

Daily Recommendations:

  1. Prioritize using the slicer's built-in curve precision, arc fitting, or path simplification features.
  2. If the slicer can directly output high-precision line segments, it is not recommended to enable [gcode_arcs] on the Klipper side.
  3. If G2 / G3 compatibility is absolutely necessary, use [gcode_arcs] as a temporary compatibility layer. Do not set resolution too small.
  4. If you encounter printing stuttering, Timer too close errors, or high host CPU usage, prioritize disabling the slicer's G2/G3 output and let the slicer generate line segments directly.
  5. It is not recommended to enable both slicer arc fitting and a very small resolution in Klipper to achieve "smoother" results, as this typically only increases computational load.
  1. If you encounter Unknown command:"G2" / Unknown command:"G3", first confirm whether the slicer has arc output enabled.
  2. If arc output is not required, disable options like Arc / G2-G3 / Arc Welder in the slicer and re-slice.
  3. If arc output must be retained, then add [gcode_arcs] as a compatibility configuration.
  4. If stuttering or timeout errors occur after enabling it, first increase resolution or disable arc output.
  5. After confirming the issue is resolved, decide whether to keep this feature based on actual printing results.

Related Troubleshooting: System, Performance, and Service Errors, Configuration Errors.

Loading...