In Cura, add the firmware command to Machine Settings > Start G-code: M900 K<value> for Marlin Linear Advance or SET_PRESSURE_ADVANCE ADVANCE=<value> for Klipper, or install a Marketplace plugin that adds a per-material field. PrusaSlicer keeps the command in Filament Settings > Custom G-code. OrcaSlicer has an Enable pressure advance box in the filament preset.
Pressure advance belongs to the printer’s firmware, not the slicer. Marlin’s Linear Advance page describes the problem: nozzle pressure lags behind the printhead as it speeds up and slows down, causing bleeding edges and rough surfaces. The firmware compensates by pushing extra filament during acceleration and retracting an equal amount during deceleration, as Klipper’s configuration reference puts it. Start with a value established for your printer, nozzle and filament; the pressure advance calibration procedure covers how to obtain it.
The key distinction is between the saved preset and the command the printer actually receives. Changing a field in an inactive filament preset does not change the next print. A machine start script can also contain a different value from the one you intended to use.
Which command your printer reads
Each firmware names the feature differently and reads a different command, so identify yours before editing any slicer field.
| Firmware or printer | Feature name | Command in slicer G-code | Where a permanent value lives |
|---|---|---|---|
| Klipper | Pressure advance | SET_PRESSURE_ADVANCE ADVANCE=<value> | pressure_advance in the [extruder] section of printer.cfg |
Marlin built with LIN_ADVANCE | Linear Advance | M900 K<value>; M900 K0 disables it | Firmware configuration, then reflash |
| Prusa MK4/MK4S, XL, MINI, MK3.9 on firmware 5.0.0+ | Pressure advance | M572 S<value> | Filament custom G-code in Prusa profiles |
| Prusa MK3S, MK3, MK2.5S, MK2.5 on firmware 3.9.0+ | Linear Advance 1.5 | M900 K<value> | Filament custom G-code in Prusa profiles |
| RepRapFirmware (Duet) | Pressure advance | M572 S<value> | Filament G-code or start macro |
The rows follow Prusa’s pressure advance and Linear Advance articles, Marlin’s M900 reference and Ellis’ guide to saving the value. Prusa firmware 5.0.0+ converts old M900 K commands 1:1 to a pressure advance value, and Prusa’s MK3-family firmware converts Linear Advance 1.0 values automatically. Marlin does not: its Linear Advance 1.5 changed the unit of K from 1.0, so the K calibration has to be redone.
Where the pressure advance setting lives
| Slicer | Location to inspect | Scope to check |
|---|---|---|
| OrcaSlicer | Filament preset, under Flow Ratio and Pressure Advance | Selected filament and its pressure-advance override |
| PrusaSlicer | Filament Settings > Custom G-code in documented Prusa Linear Advance presets | Filament-specific command and any existing conditions |
| Cura | Preferences > Configure Cura > Printers > Machine Settings > Start G-code | Selected printer; a literal value needs review when filament changes |
These locations follow the official documentation cited below. Profile and printer support differ, so inspect the active preset rather than assuming every machine exposes the same controls. A slicer field cannot add a firmware feature that the printer lacks.
OrcaSlicer: edit the selected filament preset
Open the filament preset used by the model and find the pressure-advance controls in the filament settings. The OrcaSlicer material reference separates pressure advance from flow ratio; they are different parameters even though they appear together.
Where available for the selected printer, tick Enable pressure advance and enter the established value. Save a user preset with a name that identifies the filament and nozzle. Select that saved preset before slicing.
The OrcaSlicer calibration documentation directs users to put the chosen result in filament settings. Generating a calibration project is therefore a different task from saving the result for subsequent jobs. Confirm both the saved value and the selected filament after closing the calibration project.
The same page adds two cautions: Marlin printers need Linear Advance enabled in firmware, and on Bambu Lab printers you should not select the Flow calibration option during the pressure advance test. Bambu Studio’s own route is covered in the Bambu Studio vs PrusaSlicer comparison.
Leave adaptive pressure advance out of a basic configuration check unless you deliberately use that separate feature; its setup is covered in the adaptive section below. When several controls can affect extrusion, keeping the ordinary pressure-advance path identifiable makes the exported file easier to review.
For a broader view of the application, read OrcaSlicer features worth knowing. For transferring temperature and extrusion settings from Cura, use the profile migration guide.
PrusaSlicer: inspect filament custom G-code
For the Prusa presets covered by its Linear Advance documentation, Prusa places the K value in Filament Settings > Custom G-code. The Prusa reference specifically identifies this as a filament setting, not the printer-specific custom G-code.
Inspect the existing script before changing it. A preset may contain conditions for the nozzle or printer, so preserve the logic required by the manufacturer’s profile. Save the adjusted filament preset under a separate name and make sure the project selects it.
This documentation describes Prusa Linear Advance presets; it does not mean every printer configured in PrusaSlicer accepts the same command. A Klipper printer requires its supported pressure-advance command, whereas a Marlin printer needs a firmware build with Linear Advance enabled. Keep the printer’s established start sequence in place while reviewing the filament-specific value.
To change the value:
- Select the filament preset, then open Filament Settings > Custom G-code > Start G-code.
- Find the line your firmware reads, using the command table above.
- On Prusa profiles, edit the number inside the branch that matches your printer and nozzle. Prusa’s pressure advance article notes that the
Svalue changes with nozzle diameter and recommends keeping the default for most uses. - Save under a new filament preset name, export, then search the G-code for the last pressure advance command before the first layer.
On a non-Prusa printer, Ellis’ guide puts the Klipper or Marlin command in the same filament custom G-code, which keeps a separate value per filament preset.
Cura: Start G-code or a Marketplace plugin
The Cura start and end G-code documentation gives the route through Preferences > Configure Cura > Printers > Machine Settings. The Printer tab contains the machine start script.
For supported firmware, this is a place to send an established advance value. Add one line to the existing script:
; Marlin with LIN_ADVANCE, or Prusa MK3-family firmware
M900 K<value>
; Klipper
SET_PRESSURE_ADVANCE ADVANCE=<value>
A number written literally in machine start G-code remains tied to that script; changing the material selection does not rewrite the literal number. Record which material it belongs to and review it before slicing with another spool.
Retain the manufacturer’s homing, heating and other required instructions. Inspect the exported file after editing the script, including any commands inserted by post-processing. A working printer start sequence is part of the configuration you are preserving.
When the value should follow the material rather than the machine script, a plugin is the practical route:
| Plugin | Firmware | What it adds | Command written |
|---|---|---|---|
| Linear Advance Settings (fieldOfView) | Marlin with LIN_ADVANCE, RepRapFirmware | Linear Advance Factor plus feature-specific subsettings, in the Material category | M900 on Marlin, M572 on RepRap |
| Klipper Settings (jjgraphix), v1.0.2 | Klipper only | A Klipper Settings category: pressure advance per extruder, line type and mesh, smooth time, tuning-tower presets | Klipper commands |
| Pressure Advance (ollyfg) | Klipper | A Pressure Advance setting in the Material category | SET_PRESSURE_ADVANCE |
The Klipper Settings author recommends Cura 5.0 (SDK 8.0.0) or newer and warns that most values stay applied after a print until the printer restarts, so set pressure advance explicitly in every job. The Linear Advance Settings README also includes a Klipper macro that maps M900 to SET_PRESSURE_ADVANCE.
Cura itself has moved a little. The Cura 5.10.0 release notes (25 March 2025) list “Pressure Advance Factor Setting: New setting for machine definitions.” That describes a printer-definition setting, not a documented per-material control, so check whether your printer profile uses it and confirm the result in exported G-code.
Cura’s retraction controls are a separate topic. Use Cura stringing and retraction settings for travel-related strings, and Cura PETG settings for the material-specific profile. Marlin’s Linear Advance page also asks users to disable options such as wipe while retract and combing, so review Cura’s combing mode when enabling Linear Advance.
Klipper: printer.cfg or slicer G-code
Klipper keeps a permanent value as pressure_advance in the [extruder] section of printer.cfg. The configuration reference measures it in millimetres of filament per mm/s and defaults it to 0, which disables the feature; pressure_advance_smooth_time defaults to 0.040 s and may not exceed 200 ms. Klipper’s pressure advance documentation puts typical values between 0.050 and 1.000.
The per-job alternative is SET_PRESSURE_ADVANCE ADVANCE=<value> in the slicer’s filament start G-code; the G-code reference applies it to the active extruder unless EXTRUDER= is given. Ellis’ guide notes that slicer commands override the printer configuration and typically do not persist across reboots, while a printer.cfg edit needs a RESTART. Use printer.cfg when one filament dominates, and filament G-code when one printer runs several materials.
Pressure advance tests compared
Every pressure advance test prints the same feature across a range of values and asks you to judge where corners or line ends look best. The tests differ in where the file comes from and how a position maps back to a value.
| Test | Where it comes from | Firmware | Reading the result |
|---|---|---|---|
| Tower | OrcaSlicer calibration | Any with pressure or linear advance enabled | Value rises one step per mm: start + (step × height), e.g. 0 + (0.002 × 8) = 0.016 |
| Pattern | OrcaSlicer calibration, or Ellis’ pattern tool | Klipper, Marlin, RepRapFirmware | Sharpest corner with the fewest gaps, bulges or divots |
| Line | OrcaSlicer calibration | Any with pressure or linear advance enabled | Most even line; depends on a good first layer |
TUNING_TOWER | Klipper console command before a test print | Klipper | start + measured height × factor; FACTOR=.005 direct drive, .020 bowden |
| K-Factor Calibration Pattern | Generator linked from Marlin’s Linear Advance page | Marlin with LIN_ADVANCE | Compare the lines printed at each K value |
For the Klipper tower, Klipper’s documentation slices the model at high speed with zero infill and asks you to disable dynamic acceleration control and scarf joint seams in the slicer for the test. OrcaSlicer’s calibration page ships a direct-drive and a bowden version of each method. Once the range is known, Ellis suggests fine-tuning in 0.001 to 0.002 steps. Calibrate flow and temperature first, as the flow and temperature calibration guide sets out, since the pressure advance test assumes both are correct.
Adaptive pressure advance in OrcaSlicer
Adaptive pressure advance replaces the single number with a model. OrcaSlicer’s adaptive guide notes that the best value shifts with flow rate, acceleration and layer height. You enter comma-separated triplets of PA value, volumetric flow (mm³/s) and acceleration (mm/s²), such as 0.036, 3.84, 1000, and the slicer adjusts pressure advance to each move.
- Print the pattern test at each combination of the accelerations and speeds you use. The guide suggests 1,000, 2,000 and 4,000 mm/s² at 50, 100, 150 and 200 mm/s, 12 tests in all.
- Record the best PA and the flow rate for each. OrcaSlicer 2.2.0 and later prints the test parameters on the sample; older versions show flow in the G-code preview’s Flow view.
- Enter the triplets in Adaptive pressure advance measurements, tick Enable adaptive pressure advance, and set Pressure advance for bridges to about half your usual value as a starting point.
The feature has been tested on Klipper and is untested on Marlin and Bambu Lab printers. Klipper versions older than 11 July 2024 might produce artifacts with dynamic pressure advance; the guide says stable 0.13.0 (20250411) fixes this. If you print one layer height at one speed and acceleration, there is no need to enable it.
Check the command that reaches the printer
Use the firmware documentation to recognize the command in an exported text G-code file:
- Klipper documents
SET_PRESSURE_ADVANCEwith anADVANCEparameter. - Marlin documents
M900with aKparameter and requires Linear Advance support. - Prusa firmware 5.0.0+ uses
M572with anSvalue, plus an optionalWsmoothing time that defaults to 0.04 s.
These names identify the configuration path; they do not establish a conversion between values. Keep the value with the printer, firmware, nozzle and filament for which it was obtained.
Search the exported file for every occurrence of the applicable command. Compare its value with the saved preset and inspect any later assignment. If the file calls a firmware macro, inspect that macro’s configuration too: its expanded behavior may not appear in the sliced file. A preview confirms geometry but does not by itself prove the intended advance value will remain active.
When the saved value seems to have no effect
First confirm the printer and filament selected in the project. Next check that the override is enabled where applicable, then inspect start scripts and the exported commands. If the command is unsupported, use the printer’s firmware documentation before changing more slicer parameters. On Marlin, sending M900 with no parameters reports the current K factor, which shows whether the file’s value arrived.
Once the configuration path is clear, return to the calibration procedure if the value itself needs to change. Keep separate material profiles so a successful setting is saved with the filament it describes.
FAQ
what pressure advance value should i use for pla
Prusa’s published starting point for PLA is K 0.05, for its MK3-family printers running Linear Advance 1.5 with a 0.4 mm nozzle, against 0.08 for PETG. No PLA number transfers reliably to a different extruder, hotend or firmware, so use such figures only to centre a test range, then calibrate on your own printer.
is linear advance the same as pressure advance
Yes, they are the same compensation under different names. Marlin calls it Linear Advance and sets it with M900 K; Klipper, RepRapFirmware and Prusa firmware 5.0.0+ call it pressure advance. The numbers are not interchangeable, and Marlin’s Linear Advance 1.5 uses different units from version 1.0, so recalibrate after switching firmware.
does pressure advance work with a bowden extruder
Yes, but expect higher values than on direct drive. Klipper’s tuning tower uses a factor of .020 per millimetre for bowden against .005 for direct drive, and Marlin suggests testing bowden K values from about 0.1 to 2.0 on Linear Advance 1.5. OrcaSlicer also ships separate bowden versions of each calibration test.
do i need to calibrate pressure advance for every filament
Yes, calibrating per filament and per nozzle is the safe rule. Prusa’s table lists different values for PLA, PETG, ASA and nylon on the same printer, its MK4-family profiles change the M572 value with nozzle diameter, and OrcaSlicer’s calibration page says results should be saved to the material profile.
Related across the network
- Ender 3 V3 KE Input Shaping Explained: Fix Ringing — crealityreviews.com


