[H] Move exceeds maximum extrusion

Preventing an “unhealthy” amount of extrusion on short moves is a safety feature of Klipper. The default value is set to

Maximum Extrusion = 4.0 x Nozzle_Diameter^2 = 4.0 x 0.4^2 = 0.640 mm²

The error typically is caused by:

  • Extreme settings for the prime line in the start gcode
  • Extreme settings for a purge, e.g. on filament change
  • Crappy gcode created by the slicer (especially S3D)
  • Weird Slicer settings affecting the extrusion or flow rate
  • Misplaced M83 commands (e.g. in start gcode) causing the extrusion to add up

Basically you have two options:

  • Find the root cause, most likely from the list above
  • Relax (read deactivate) the safety setting in the [extruder] section by setting max_extrude_cross_section: 5 → Not recommend, this check is there for a reason

Edit, as this topic seems to be still read and gets attention:

Some Extrusion Math

Input

  • Nozzle Diameter: 0.4 mm
  • Filament Diameter: 1.75 mm
  • Extrusion Width: 0.48 mm
  • Layer Height: 0.2 mm
  • Print Speed: 80 mm/s
  • Extruded Length: 15 mm
  • Movement Length: 30 mm

Volumetric Speed
Volumetric_Speed [mm^3/s] = Extrusion_Width [mm] * Layer_Height [mm] * Print Speed [mm/s] = 7,68 mm³/s

  • This is the amount of polymer that the extruder needs to physically melt and squeeze through the nozzle to uphold a certain printing speed
  • The maximum depends on filament, quality (torque) of the extruder and melting capacity of the heated area
  • Standard extruder are somewhere between a maximum of 8 mm³/s and 20 mm³/s
  • High quality / high flow extruders can reach up to 50 mm³/s
  • Exceeding the physical capabilities will lead to skipped extruder steps (grinding) and under extrusion

Klipper Safety mechanism
max_extrude_cross_section [mm²] = 4.0 x Nozzle_Diameter^2 = 4.0 x 0.4^2 = 0.640 mm²

Extruded_Volume [mm³] = Extruded_Length [mm] x (Filament_Diameter [mm] / 2)^2 x Pi = 15 mm x (1.75 mm / 2)^2 x 3.14 = 36.1 mm³

Actual_Extruded_Cross_Section [mm²] = Extruded_Volume [mm³) / Movement_Length [mm] = 36.1 mm³ / 30 mm = 1.2 mm²

  • If one single gcode command would request a movement of 30 mm while trying to extrude 15 mm filament (gcode: E15) it would result in a Actual_Extruded_Cross_Section of 1.2 mm²
  • Klipper would react with an error message saying Move exceeds maximum extrusion (1.2mm^2 vs 0.640mm^2)
  • To solve the issue, either the Movement_Length needs to be increased by a factor of 1.875 to minimum 56,25 mm or the Extruded_Length decreased by the same factor to E8
5 Likes