Pressure advance and max volumetric flow test prints for PrusaSlicer on Klipper (no profile edits, one SET_PRESSURE_ADVANCE per band)

Hi all. I made two calibration prints that open in PrusaSlicer as ready-made projects (.3mf). The test changes are stored in the project as per-layer custom G-code, so they print with your own printer and filament profiles and you don’t edit anything. I built and tuned them on a RatRig V-Core 4 IDEX running Klipper (RatOS), Orbiter 2.5 direct drive and Rapido UHF, in PETG. I’d like feedback from people who know Klipper better than I do.

Pressure advance

A hollow hexagon with three blades, 9 bands of 4.6 mm. Each band starts with its own command, for example:


;CALIB pressure_advance band=3/9 pa=0.020

SET_PRESSURE_ADVANCE ADVANCE=0.020

  • Band 1 is always 0, so you see “too low” on your own printer.

  • Files: klipper-dd (fine 0–0.08, coarse 0–0.20) and klipper-bowden\ (fine 0–0.8, coarse 0–1.6). For IDEX there are _T0/_T1 files with EXTRUDER=extruder / EXTRUDER=extruder1.

  • The blades end in 90° and 45° tips after long straight walls. Too little PA makes the tips bulge; too much makes them round and gappy.

  • The walls print at about 98 mm/s (around 8 mm³/s) with your own external-perimeter acceleration and square_corner_velocity. That’s on purpose: the docs method (SQUARE_CORNER_VELOCITY=1 ACCEL=500) exaggerates the corners, but tunes PA for conditions I don’t print at. The value I got is tied to those settings, and the guide says to write them down with it.

  • On the last layer the file uses RESPOND to pop up a “PA test finished” message in Mainsail/Fluidd, so you remember the printer is still on the top band’s value. It needs [respond], which RatOS and the Mainsail/Fluidd configs already include.

  • To store the result per filament, I put it in PrusaSlicer’s Filament Settings › Custom G-code › Start G-code, rather than in [extruder]: SET_PRESSURE_ADVANCE EXTRUDER=extruder{if filament_extruder_id > 0}{filament_extruder_id}{endif} ADVANCE=0.04

My PETG result: the coarse file showed the tips wearing from 0.10; the fine file showed small blobs in the lowest bands, gone from 0.04.

Max volumetric flow

A hex column and a long wedge, printed in bands that get faster. PrusaSlicer slices it as a slow, steady print. Each band then sends M220 S<percent>, so Klipper does the speeding up. Because the slicer only sees the slow base speed, its own slowdowns (minimum layer time, volumetric cap) normally don’t kick in. The number engraved beside each band is its flow in mm³/s, measured on the long straights. The last clean band, minus about 15 %, goes into the filament’s Max volumetric speed in PrusaSlicer.

Klipper notes from testing:

  • max_velocity and max_accel in [printer] have to be high enough for the top bands (or use SET_VELOCITY_LIMIT for the session). The guide has a table per file.

  • Klipper keeps the M220 factor after a cancel. The top of the tower sends M220 S100, but if you cancel early, send it yourself or RESTART, or the next print runs many times too fast.

  • minimum_cruise_ratio (default 0.5) changes nothing at 4000 mm/s² because the straights are long. At 1000 mm/s², the fast 0.4 files peak a little below their top label.

  • max_extrude_cross_section needs no change, because the line is 0.30 × nozzle² against the default 4 × nozzle². If you lowered it, you’ll get “Move exceeds maximum extrusion”.

My result on the hf-0.4 file: last clean band 30 mm³/s, so I set 25. The heater held within ±0.8 °C and the extruder never clicked, so the limit was melt capacity, not the extruder or the heater.

Guides with photos, a scorecard and the full Klipper notes (English and Italian; the file links are on each page):

PA: Pressure advance — HexCalibr

Max flow: Maximum volumetric flow — HexCalibr

Free, CC BY-SA. There are also temperature, flow, first-layer and IDEX offset tests on the same site.

Two questions for the Klipper crowd. Do you tune PA at your real print acceleration, or with the low-accel method from the docs? And is there a cleaner way than M220 to step speed per band without the slicer slowing things down?