Linear Advance Calibration: K-Factor Measurement, Bulge Elimination, and Sharp Corner Quality — 2026 Guide

Your calibration cube has perfect walls but the corners bulge like they’re swollen. Every direction change, the nozzle pauses for a fraction of a millisecond while the extruder catches up — and filament continues oozing from the residual pressure in the nozzle. Linear advance (Marlin) and pressure advance (Klipper) solve this by predicting the pressure change and adjusting extruder speed before the nozzle reaches the corner. The result is corners that look machined, not printed.

How to Calibrate Linear Advance (Step by Step)

Step 1: Verify Firmware Support

Marlin: Linear advance requires LIN_ADVANCE enabled in Configuration_adv.h. Check by sending M900 through your terminal — if you get “echo:Unknown command,” it’s not enabled. Also verify you’re running TMC2208/2209 in UART mode with STEALTHCHOP disabled on the extruder — linear advance and stealthChop are incompatible and produce an aggressive grinding noise during prints.

Klipper: Pressure advance is built in. No firmware changes needed.

Step 2: Generate the K-Factor Calibration Pattern

The Marlin K-factor calibration pattern (available in the Marlin repository or from Marlin’s Linear Advance Calibration page) prints a series of lines at increasing K-factors, typically from K=0 to K=2.0 in steps of 0.2. Each line has a fast section and a slow section, and the transition between them reveals your K-factor.

In Cura/PrusaSlicer: Slice the linear advance calibration G-code file directly — it’s self-contained and auto-generates the test pattern. Configure:
– Nozzle temperature: Your normal printing temperature for this filament
– Bed temperature: Your normal bed temperature
– Start K: 0
– End K: 2.0 (for Bowden) or 0.5 (for direct drive)
– K step: 0.2 (for Bowden) or 0.05 (for direct drive)

For Klipper Pressure Advance:
Use the built-in Klipper calibration:

TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005

This prints a tower with increasing pressure advance at each layer.

Step 3: Read the Results

Marlin pattern: Examine each line. Look for the line where:
– The transition from fast to slow section has NO bulge (filament pile-up at the deceleration point)
– The transition from slow to fast section has NO gap (filament starvation at the acceleration point)

The K-factor with the most uniform line width through both transitions is your correct value.

Klipper tower: Examine the corners at each height. The height where:
– External corners are sharp, not rounded
– No bulge on the inside of corners
– No gaps at corner starts

Measure the height, calculate the PA value (START + height × FACTOR), and that’s your value.

Step 4: Typical K-Factor Ranges

PLA, Bowden setup (Ender 3, CR-10 standard):
– K = 0.4 to 0.8 (longer Bowden tube = higher K)
– Longer Bowden tubes (CR-10 with 500mm tube) can need K = 0.8-1.2

PLA, Direct Drive (Prusa, Voron, Ender 3 DD mod):
– K = 0.04 to 0.08 (one-tenth of Bowden values)
– The shorter filament path requires far less compensation

PETG, Bowden:
– K = 0.6 to 1.0 (slightly higher than PLA due to higher viscosity)

PETG, Direct Drive:
– K = 0.06 to 0.12

TPU (flexible), Direct Drive:
– K = 0.02 to 0.06 (flexible filament absorbs pressure internally — very little advance needed)
– Bowden + TPU + linear advance = don’t do it. The filament compresses so much in the tube that the advance command has no effect on the nozzle.

Klipper Pressure Advance values differ from Marlin K:
– PLA, Direct Drive: PA = 0.03 to 0.05
– PLA, Bowden: PA = 0.4 to 0.8
– PETG, Direct Drive: PA = 0.04 to 0.08

Step 5: Configure and Save

Marlin: Add M900 K<value> to your start G-code in the slicer. This applies the K-factor for every print. Alternatively, store it in EEPROM with M500 after setting with M900 K<value>.

Klipper: Add to your printer.cfg under the [extruder] section:

pressure_advance: 0.045

Or set dynamically with SET_PRESSURE_ADVANCE ADVANCE=0.045 and save with SAVE_CONFIG.

Step 6: Verify with a Calibration Cube

Print a 20mm calibration cube with 2 walls, 0% infill, and no top layers. The corners should be sharp and square with no bulging. The seam (where the nozzle starts and stops each layer) should be barely visible — heavy linear advance values can create a gap at the seam because the extruder retracts too aggressively.

Linear Advance K-Factor Reference Table

Filament Extruder Type Marlin K-Factor Klipper PA Calibration Pattern Step Notes
PLA Bowden (Ender 3) 0.4 – 0.8 0.4 – 0.8 0.2 Lower for Capricorn tube (less internal diameter variation)
PLA Bowden (CR-10) 0.8 – 1.2 0.8 – 1.2 0.2 Long tube length requires higher K
PLA Direct Drive 0.04 – 0.08 0.03 – 0.05 0.01 Very sensitive — retest if you change nozzles
PETG Bowden 0.6 – 1.0 0.6 – 1.0 0.2 Higher viscosity needs more advance
PETG Direct Drive 0.06 – 0.12 0.04 – 0.08 0.01 Slightly higher than PLA
TPU 95A Direct Drive 0.02 – 0.06 0.02 – 0.05 0.01 Flexible filament absorbs pressure — minimal advance
ABS/ASA Bowden 0.5 – 0.9 0.5 – 0.9 0.2 Similar to PLA range
ABS/ASA Direct Drive 0.05 – 0.09 0.03 – 0.06 0.01 Slightly higher than PLA due to higher print temp

What Most Makers Get Wrong About Linear Advance

Mistake 1: Calibrating K-factor once and forgetting it
The K-factor changes with every nozzle swap because the nozzle orifice diameter directly affects the pressure required to push filament through it. A 0.6mm nozzle needs a lower K-factor than a 0.4mm nozzle (less back pressure = less advance needed). The fix: Recalibrate K-factor when you change nozzle size. Maintain a note of K-factors per nozzle size per material.

Mistake 2: Using the same K-factor for different printing temperatures
Filament viscosity drops as temperature increases, reducing the back pressure in the nozzle. Printing PLA at 215°C needs a lower K-factor than printing the same PLA at 195°C. The fix: Calibrate at your actual printing temperature. If you print at 210°C, run the K-factor test at 210°C.

Mistake 3: Not disabling linear advance when the stepper driver changes
Upgrading from an A4988 driver to a TMC2209 changes the extruder’s behavior during the rapid speed changes that linear advance commands. A K-factor calibrated on A4988 drivers may over-compensate on TMC2209s because the TMC drivers respond faster. The fix: Recalibrate after any stepper driver change.

Mistake 4: Setting excessive K-factor based on a misread calibration pattern
The calibration pattern can be hard to read. A common mistake is seeing a small bulge on every line and concluding the K-factor needs to be impossibly high (K > 2.0). The real problem is usually temperature — the filament is too hot and oozing regardless of K-factor. The fix: Drop temperature by 5°C and re-run the calibration. If the bulge shrinks significantly, temperature was the issue, not K-factor.

Mistake 5: Enabling linear advance without sufficient extruder cooling
Linear advance commands rapid extruder speed changes — accelerating from 5mm/s to 50mm/s and back within a single print move. The stepper motor runs hotter than during normal printing. A hot extruder motor softens the filament before it enters the hotend, causing inconsistent feeding that looks exactly like incorrect K-factor. The fix: Ensure your extruder motor has adequate heatsinking and airflow. A 40mm fan pointed at the extruder motor costs $3 and solves a surprising number of “unexplained” linear advance problems.

⚠️ Safety Notice: Linear advance calibration involves printing at varying speeds and extrusion rates. Ensure your printer is on a stable, fire-resistant surface and has thermal runaway protection enabled. The rapid extruder speed changes during calibration can expose loose wiring or failing connectors — inspect your extruder wiring before running calibration. Follow all manufacturer safety guidelines and electrical certifications for your printer model.

Linear advance works best on a well-calibrated extruder. If your e-steps are off by even 5%, the K-factor compensation is applied to an incorrect base value. Our e-step calibration guide walks through getting your extruder dialed first. For printer profiles that include linear advance settings, our Cura vs PrusaSlicer vs Orca comparison covers which slicer handles PA natively without start G-code modifications.

Sharp corners matter most when printing functional FPV parts — a GoPro mount with bulging corners doesn’t fit, and an antenna holder with rounded corners snaps on the first crash. For TPU and PETG filaments that print clean functional parts with proper linear advance, check the materials at uavmodel.com.

Leave a Comment

Scroll to Top