Pressure advance tuning process

So, I’ve been using the Marlin K factor test pattern generator with Klipper for a while now and it seems to be just as accurate as the current tuning tower method but it uses far less filament and time. Is there a reason we don’t recommend setting up an M900 macro and using the Marlin process or even better, put it into the firmware? This sort of test is really simple and is a great way to showcase Klipper’s increased functionality.

Adding gcodes beyond those required for core functionality have been consistently rejected. M900 in particular is not interchangeable as the pressure advance values are not the same as linear advance values. Making a macro is the preferred solution for those that want to use M900.

As for the tuning process, I think it’s more valuable to see how the change in values affects the corner of a real print. I print the test object in single wall with no infill, so the amount of filament required is not substantial. If the Marlin process works for you that’s great, but I don’t imagine the documents will be changed to match Marlin.

Interesting take. I wasn’t suggesting adding m900 btw. I was thinking of adding a calibrate_pa command that draws the lines and everything. It would narrow down the precision automatically and then save config if you wanted that.

I’m curious what have you noticed in inspecting a real print that you can’t detect in the lines test? In theory they should be the same. Even at one wall the tower still takes at least 16 times the filament, and more annoyingly it takes far more time.

@koconnor commented somewhere that he found the Marlin test very depending on the “first layer quality” and bed leveling of the printer, i.e. leading to wrong / inconclusive results when the first layer is not properly tuned.
As such the more robust test with the square tower is considered preferred.

FWIW, there is also a Klipper version of the Marlin generator: Pressure Advance Tool – Klipper – Advanced 3D Printing

Well I think especially if there is a dedicated clipper pattern generator, it should be mentioned on the pressure advance tuning page for people who have automatic bed leveling

Linking to random 3rd party websites is generally avoided in documentation. Kevin has no control over what gcode it produces, or whether the link remains active. This creates a maintenance burden and a potential safety risk.

1 Like

Well then that takes us back to my suggestion to make it part of klipper itself

I agree with @jakep_82. I’m using the Marlin way myself occasionally but only to determine a rough range and then do the fine tuning via the square tower.
For the “casual user” I would stick with the proven and robust solution to avoid confusion, additional support questions etc.
“Power users” don’t need that, so you are free to chose the solution that suits you best.

You have a good point about keeping the docs simple. Although I am still confused how the tower gives you any more accuracy. Klippers pressure advance setting is limited to 3 decimal places is it not? And I haven’t ever seen a need for more than .005, not the full base 10.

I’ll admit I have little patience in general but I still don’t see how the tower is nessesary

This is not the point IMO:

  • At least on my printers, all sides of the square tower show different behavior
  • Only the square tower allows to see a transition between bad → better → good → worse again
  • General rule of thumb is also to rather settle for a lower value than going to its exterme

I can clearly see the bad to good to bad again transition in the lines test

I’ll print the tower again and check out the different sides, I haven’t heard of anything like that before

There have been several proposals for alternative pressure advance tests over the years. It’s pretty common to get a proposal every few months. Typically the proposals are for a “single layer test” or a “single wall test”. For what it’s worth, I prefer the standard Klipper “cube test” and I still use it on my printers.

Some people prefer the faster results (and less filament) of the single layer / single wall tests. I also know some people that consume multiple spools of filament a day and do not test every spool - they know their printers and suppliers, and have a method that works for them. As always, I encourage people to use the methods, process, and software they are most comfortable with.

In the general case though, I do think the current “cube test” has some notable advantages over other proposed tests, and I do think it is still the best suited to be the “official recommended test” - in particular for new users just converting to Klipper.

I’ve done a lot of work on “single layer” tests in the past (eg, reprap-test/test-extruder-spring.py at master · KevinOConnor/reprap-test · GitHub ). I found it has some notable flaws: 1) minor differences in layer height (or bed/nozzle temperature) can significantly skew the results; 2) it requires configuring a g-code generator which is daunting for new users. It is also not a durable test and can be difficult to measure depending on the type of build plate. As a result, I abandoned this work and went on to design other tests.

The other common proposed alternative is to use a “single wall” test. In general, I’ve found single wall tests to have a notable flaw - some types of filament are fragile at cornering speeds (the nozzle can pull the filament with it when it moves) and that can skew the results of a test. Depending on the initial layers, the single wall tests can also have issues with warping - many prints struggle to adhere to the bed at the very tip of a corner, and warping of this kind can skew test results. Finally, I’ve seen temperature settings (eg, fan speed) can alter results in a way that may confuse users.

There are some advantages to the “cube test” that many people may not realize. The test is robust to many types of errors (eg, minor first layer imperfections usually not an issue, the round feet on the corner deter warping, there are many corners to inspect so the “seam” doesn’t cause an issue, there are variations of distance one can inspect via the inner notches, it’s largely immune to slicer retraction settings, multiple walls actually emphasize pressure which can make results easier to read). The resulting print is also “durable” - it’s possible to remove from the bed and inspect it in different lighting; it’s possible to store it for months/years and compare it to the results from other printers and filaments.

I also feel the “cube test” has an “aha moment” for new users. Many new users are sceptical of “yet another calibration test”. However, the “cube test” is largely a “real world print” produced using largely “real world settings”, and the results from the test are often very obvious. I think a user that completes the test is very likely to take away the high-level idea that “pressure advance does something real and useful”. I fear some other tests are more “arcane” and what is occurring may not seem as “real” or as “hands on”. I think of the “cube test” as a “big X marks the spot” type of test. Indeed, the test results are so obvious that I often see people describe pressure advance as “a tool for improving the quality of corners” - which is interesting because I would describe pressure advance as primarily a tool for reducing ooze.

Just for completeness, it’s worth noting that the current “cube test” was originally championed by user “crzcrz” (I added the TUNING_TOWER command to facilitate it). For anyone curious, it replaced the older test method described at klipper/Pressure_Advance.md at v0.8.0 · Klipper3d/klipper · GitHub .

Cheers,
-Kevin

1 Like