Cura Flow% not respected by Klipper?

Basic Information:

Printer Model: Monoprice Delta Pro
MCU / Printerboard: Orange Pi / Lerdge X

Describe your issue:

I have a part sliced in Cura 5.1.0 output format for Marlin. I printed it with Klipper and it needed more flow, so I used the Klipper interface to go to 150% Flow. It printed perfect for the first layer, but I had to back it down to 120% for the rest of the print.

I changed the Flow% in Cura for the first layer to 150% and 120% for the rest. Then I printed it again with Klipper set to 100% flow.

The part was printed as if Cura had asked for 100% only. Is this something that does not work between the two products?

  1. More flow then normal means some calibration problems. More flow on first layer then other means bed level or mecanical problems.
  2. The Cura flow and Klipper flow are two different things. The flow in Klipper is set on top of what you set in Cura. For exemple, if you set the flow in Cura at 150% and the flow in Klipper also at 150% you final flow will be 225%.
2 Likes
  • Klipper itself does not care about flow or extrude factor and also does not care if the gcode comes for Cura, Prusa, whatever
  • The source of your flow settings is the gcode as created by the slicer
  • If you modify it via the webinterface the gcode command M221 is used. This modifies directly the gcode value, e.g.
    • Gcode: G1 X0.2 Y200.0 Z0.3 F1500.0 E10 ← as produced by the slicer
    • M221 S110
    • What Klipper uses: G1 X0.2 Y200.0 Z0.3 F1500.0 E11
  • The above means that all what comes from your slicer (read: is in the gcode) is the “base value”. Any modifications with M221 is applied to the respective base value

So much for the theory. Now to your issue:

  • On a properly dialed in printer you should usually not have the need to crank up flow for the first layer
  • If you see the need:
    • Verify your z-offset. Could be too large
    • Check your rotation_distance calibration of the extruder
2 Likes

Thank you for responding. That is what I would expect, but that is not what happened.

Thank you for the detailed explanation of how Klipper works. My base numbers for general printing are correct. I do have special needs for certain parts to over-extrude the first layer and other layers for beefed up wall thicknesses or water tightness. The new versions of Cura has the ability to modify flow control on a line by line basis to compensate for thin or thick walls. These don’t always work out for the best part aesthetics or strength, so overriding with the flow control lets me fine tune each different part. When running many of the same part, it pays to take the time to dial it in to perfection. For some parts, I have to run 60% flow control to get the best functional part. The point is that Changing the flow control in Cura did not change the resultant part. If what you said is correct, then the problem must be inside Cura. I will take a deep dive in that direction with the gcode first then come back here with what I find.

I did a quick test of what Cura generates for a small 2 layer square. It did not generate what you or I would expect.

In the Cura setting for general Flow% I started with 100%. For first layer Flow%, also 100%.
Then I changed the two to 120% and 150% respectively.

I calculated that it increased the Flow% by 162% for the 120% case and 180% for the 150% case.
Color me confused, but this is not a Klipper issue. Here are some snips from the two gcodes that I used to calculate these:

``;FLAVOR:Marlin
;Generated with Cura_SteamEngine main


;Snip from gcode for 100%/100% flow settings

;LAYER:0  [flow 100%]
;TYPE:WALL-INNER
G1 F1260.7 X0.00 Y3.94 E2.64335

;LAYER:1  [flow 100%]
;TYPE:WALL-INNER
G1 F1016.4 X0.00 Y3.725 E11.80681

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;Snip from gcode for 150%/120% flow settings

;LAYER:0  [flow 150%]
;TYPE:WALL-INNER
G1 F1260.7 X0.00 Y3.94 E4.75803

;LAYER:1  [flow 120%]
;TYPE:WALL-INNER 
G1 F1016.4 X0.00 Y3.725 E19.15476

Using the Klipper web interface, setting the Flow% to 150% for the first layer and 120% for generated a perfect print. I will have to figure out how to make Cura do that now.

Thanks for your insights. It was helpful. I still do not know why I got a different result the first time around. The only thing I could think of is somehow I did not print the version Cura generated the second time around. If it did, it should have been massively over-extruded, not under-extruded as I got from the 100% Flow%. More surprises await I am sure as I migrate my work to Klipper.

1 Like

I was able to verify what went wrong the first time. Indeed, I had sent the gcode file to the wrong folder, so I did not print the one with the 120% and 150% Flow% in it. I just tried to print the correct file and just as the calculations above indicated, there was a massive over-extrusion. I could verify the amount of over-extrusion by backing off Klipper Flow% to 83%. That matches up to moving 180% down to the desired 150%. It looks like the Flow% control settings in Cura have a bug. My mistake in printing with Klipper Flow control to get the desired result and not being able to get Cura to match that result uncovered the bug. Thanks for the help and understanding.

1 Like

Interesting. Thanks for sharing your findings.
Actually never bothered to check if the slicer “does the right thing”.
Since I also use Cura, I’d be interested if you find the reason for this behavior.

Thanx for discovering this - I’ve started setting the “Flow” in Cura and been seeing something similar and trying to puzzle through it for the past three or four days.

I guess I’ll just use Klipper’s “Extrusion Factor”.

I did a quick test myself with Cura 5.3.0

Flow 100%:

;LAYER:0
;TYPE:WALL-OUTER
G1 F2400 X156.79 Y100.21 E21.80531

;LAYER:1
;TYPE:WALL-OUTER
G1 X156.37 Y149.37 E223.91559
G1 F2400 X156.79 Y100.21 E225.64708

Delta Layer1: 1.73149

Flow 100%, Initial Layer Flow 150%:

;LAYER:0
;TYPE:WALL-OUTER
G1 F2400 X156.79 Y100.21 E32.70797

;LAYER:1
;TYPE:WALL-OUTER
G1 X156.37 Y149.37 E322.60818
G1 F2400 X156.79 Y100.21 E324.33967

Delta Layer1: 1.73149

Increase Layer 0: 32.70797 / 21.80531 = 1.5000002293

So at least in this simple example, Cura seems to work like expected.

1 Like

Thanks for your followup test. I was also able to get correct results from my setup as long as I only changed the Flow% on the first layer. It seems to be an interaction between having the general Flow% set and also having the first layer Flow% set. It seems to be adding the two together for the first layer, the going completely whacko for the rest of the layers.

For now, I am going to try printing with a first layer Flow% of 125% and then adjusting the Klipper Flow% to 120%. That should get me the desired Flow% that works for this part.