Pressure Advance / Linear Advance Tuning Guide: Sharp Corners, Clean Lines

Pressure Advance / Linear Advance Tuning Guide: Sharp Corners, Clean Lines

If your 3D prints have bulging corners, inconsistent line widths during speed changes, or blobs where the nozzle decelerates, the fix is almost certainly pressure advance. It’s the single most impactful tuning step after basic calibration, and most printers — including many expensive ones — ship with it either disabled or poorly configured.

Klipper calls it “Pressure Advance.” Marlin calls it “Linear Advance.” RepRapFirmware calls it “Pressure Advance.” Different names, identical concept. This guide covers all three.

Pressure Advance Tuning Guide

What Pressure Advance Actually Does

Here’s the problem it solves: there’s a delay between the extruder pushing filament and plastic actually coming out of the nozzle. The filament has to compress slightly, the melt zone has to pressurize, and the molten plastic has to overcome the nozzle’s resistance. This delay is tiny — milliseconds — but at high speeds and accelerations, it’s visible.

Without pressure advance:
– When the nozzle accelerates into a straight line, extrusion starts late. The first few millimeters are under-extruded — thin, weak lines.
– When the nozzle decelerates into a corner, extrusion continues after the nozzle slows down. Excess plastic squeezes out, creating bulging corners and blobs.
– When the nozzle stops at a seam, residual pressure pushes out a blob of plastic at the stopping point.

With pressure advance:
– The firmware calculates the pressure lag and compensates in real time.
– During acceleration, it pushes extra filament to pre-pressurize the system.
– During deceleration, it pulls filament back (reduces pressure) before the nozzle slows.
– Corners come out sharp. Line widths stay consistent. Seams are cleaner.

Prerequisites: Do These First

Pressure advance assumes your other calibrations are correct. If they’re wrong, PA tuning will compensate for their errors instead of fixing the actual pressure lag. Confirm:

  1. E-steps are calibrated. Command 100mm of extrusion, measure what actually comes out. If it’s not within 1mm of 100, fix this first.
  2. Flow rate is calibrated. Print a single-wall cube, measure the wall with calipers. It should match your line width setting (typically 0.4mm for a 0.4mm nozzle).
  3. Retraction is tuned. Excessive retraction fights against pressure advance. Start with moderate values (0.5-1mm direct drive, 3-5mm Bowden).
  4. Temperature is set correctly. Too hot = excessive oozing that PA can’t compensate for.

Tuning Pressure Advance in Klipper

Klipper’s pressure advance is the most straightforward to tune because the value can be changed live without reflashing firmware.

Step 1: Set Starting Value to Zero

In your printer.cfg, set or verify:

[extruder]
pressure_advance: 0

Restart Klipper to apply.

Step 2: Prepare the Test Print

The best test is a simple square tower printed at moderate speed with sharp corners.

Option A: Klipper’s built-in test

Use the tuning tower macro. In the console:

SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005

Then print a cube (50x50mm, 0.2mm layer height, 2 perimeters, 10% infill, 100mm/s speed).

The macro automatically increases the PA value with each layer. Lower layers have PA=0, upper layers have increasingly higher PA values.

Option B: Manual approach

Slice a 100mm tall, 50mm square tower. Print at 100mm/s. Observe corners at different heights.

Step 3: Read the Results

Examine the print from the side:

  • Bottom layers (low PA): Corners are bulgy, lines at direction changes are thick, perimeters look blobby.
  • Upper layers (high PA): Corners might look underextruded — gaps at corners, thin lines where the nozzle changes direction.
  • Sweet spot (middle): Corners are sharp, perimeter width is consistent, no bulges or gaps.

Measure the height of the best-looking layers. Calculate the PA value:

PA_value = start + (measured_height * factor / layer_height)

For the default START=0 FACTOR=0.005 with 0.2mm layers:
– Best at 10mm height: PA = 0 + (10 * 0.005 / 0.2) = 0.25
– Best at 5mm height: PA = 0 + (5 * 0.005 / 0.2) = 0.125

Step 4: Apply and Verify

Set the value in printer.cfg:

[extruder]
pressure_advance: 0.045

Restart Klipper and print a normal model with sharp corners to verify. Adjust in increments of 0.005 if needed.

Typical Klipper PA Values

Setup Typical Range
Direct drive + PLA 0.02 – 0.06
Direct drive + PETG 0.04 – 0.08
Direct drive + ABS 0.03 – 0.06
Direct drive + TPU 0.05 – 0.15
Bowden + PLA 0.3 – 0.8
Bowden + PETG 0.4 – 1.0

When in doubt, go lower. A slightly low PA value causes minor corner bulging, which is barely visible. A slightly high PA value causes gaps at corners, which weakens the part structurally.

Tuning Linear Advance in Marlin

Marlin’s Linear Advance (LA) uses a K-factor value. The concept is identical to Klipper’s PA but the numbers are different.

Step 1: Verify LA Is Enabled

Linear Advance requires LIN_ADVANCE to be enabled in Marlin’s Configuration_adv.h. Most modern Marlin builds include it, but some printer manufacturers disable it.

To check, send M900 via the terminal. If the printer responds with a K value, LA is enabled. If it returns “unknown command” or does nothing, you need to recompile Marlin with LIN_ADVANCE enabled.

Important: Linear Advance is incompatible with classic jerk-based motion planning and the CLASSIC_JERK option. If your printer uses classic jerk, you need to switch to junction deviation or S-curve acceleration.

Step 2: Generate the K-Factor Test Pattern

Use the official Marlin K-Factor Calibration tool at marlinfw.org/tools/lin_advance/k-factor.html.

Input your printer’s settings:
– Bed size
– Nozzle diameter (typically 0.4mm)
– Layer height (0.2mm recommended)
– Filament diameter (1.75mm)
– Temperatures
– Speed (100mm/s fast, 20mm/s slow)
– K-factor range (start 0, end 2, step 0.1 for Bowden; start 0, end 0.2, step 0.01 for direct drive)

The tool generates a gcode file that prints a series of lines, each with a different K-factor. The fast sections reveal pressure lag; the slow sections show if the compensation is correct.

Step 3: Print and Evaluate

Each line in the K-factor test has a slow section, a fast section, and another slow section. Look at the transitions:

  • K too low: Fast sections are thinner than slow sections, corners between fast/slow transitions show excess material.
  • K too high: Fast sections are thicker than slow sections (overcompensation), corners between transitions show gaps.
  • K correct: Line width is consistent across both slow and fast sections. Transitions are smooth.

Step 4: Apply the Value

M900 K0.45
M500

The M500 saves to EEPROM so the value persists across reboots.

Typical Marlin K-Factor Values

Setup Typical Range
Direct drive 0.01 – 0.1
Bowden (short tube) 0.2 – 0.6
Bowden (long tube) 0.5 – 1.5

Note: Marlin has two versions of Linear Advance. LA version 1.0 uses different K values than version 1.5. Most current firmware uses 1.5. If you flash new firmware, verify which version you’re running — old K values from 1.0 will be wildly wrong on 1.5.

Tuning Pressure Advance on Bambu Lab Printers

Bambu Lab printers (X1C, P1S, A1) handle pressure advance automatically through their built-in calibration routine. When you run “Calibration > Flow Dynamics” in Bambu Studio, it tunes PA alongside flow rate.

However, the automatic calibration isn’t always perfect. You can manually override PA in the filament settings:

  1. Open Bambu Studio
  2. Go to your filament profile
  3. Under “Pressure Advance,” adjust the value
  4. Print a corner-heavy test model to verify

The default automatic values are usually within 10-20% of optimal. Manual tuning gets you the rest of the way.

Advanced: Smooth Time / PA Time Constants

Klipper’s pressure_advance_smooth_time

This parameter controls how aggressively Klipper applies PA corrections. The default is 0.040 seconds.

  • Lower values (0.020-0.030): More aggressive correction. Sharper corners but potentially noisy extruder motor.
  • Higher values (0.040-0.060): Smoother correction. Slightly softer corners but quieter operation.

Leave this at the default unless you hear extruder buzzing during direction changes.

Per-Filament PA Values

Different filaments have different melt viscosities, which means different pressure lag. The PA value you tuned for PLA won’t be correct for PETG.

Best practice: Tune PA once per filament type, then save it in your slicer’s filament profile. In Klipper, you can set PA per-filament using start gcode:

SET_PRESSURE_ADVANCE ADVANCE=0.045  ; PLA
SET_PRESSURE_ADVANCE ADVANCE=0.065  ; PETG

In Marlin, use M900 K0.45 in your filament-specific start gcode.

Verifying Your Tuning

After setting PA, print these test objects to confirm it’s working:

Sharp Corner Test

Print a 20mm cube at your normal speed. Corners should be sharp — not bulging, not underextruded. Compare to a cube printed with PA=0 and the difference is dramatic.

Speed Transition Test

Print an object with both thin (slow) and thick (fast) sections. Line width should be consistent regardless of speed changes.

Vase Mode Test

Print a vase in spiral/vase mode. The seam (where each layer starts) should be minimal. Without PA, you’ll see a visible blob at each layer transition. With correct PA, the blob shrinks significantly.

The Benchy Test

Print a Benchy at high speed (150+ mm/s). Check:
– Hull corners: sharp, no bulging
– Bow text: legible, not blobby
– Roof overhangs: clean, no drooping from overextrusion
– Chimney: circular, not egg-shaped

Common Problems After PA Tuning

Extruder Clicking/Skipping

PA pushes extra filament during acceleration, which increases instantaneous flow demand. If your hotend can’t melt fast enough, the extruder skips.

Fix: Increase nozzle temperature by 5-10C, reduce print speed, or use a high-flow hotend (CHT, Rapido, Dragon HF).

Gaps at Seams

PA reduces pressure before the nozzle stops, which can leave a small gap at the Z-seam.

Fix: Increase “extra restart distance” or “extra length on restart” in your slicer by 0.02-0.05mm. This adds a tiny bit of extra filament when the nozzle starts a new segment.

Elephant’s Foot Gets Worse

PA correction on the first layer can overextrude during the slow first-layer speed if your PA value is tuned for faster speeds.

Fix: Use a lower PA value for the first layer. In Klipper: SET_PRESSURE_ADVANCE ADVANCE=0.02 in your start gcode, then SET_PRESSURE_ADVANCE ADVANCE=0.045 after the first layer via a layer-change gcode macro.

The Bottom Line

Pressure advance is not optional on a well-tuned printer. The difference between PA=0 and a properly tuned PA value is immediately visible on every print — sharper corners, consistent line widths, cleaner seams, and better dimensional accuracy.

The tuning process takes one test print and 15 minutes of measurement. Do it once per filament type, save the values in your profiles, and enjoy noticeably better print quality on everything you make.

Similar Posts