Skip to content

Filament Calibration

BamDude ships an in-app Filament Calibration wizard that tunes per-filament print parameters — pressure-advance K, flow ratio, speed and temperature limits — from inside BamDude. You no longer need the Bambu Studio desktop application open just to run a calibration: the wizard reproduces the Bambu Studio calibration flow against your own connected printer.

The wizard's pressure-advance result feeds straight into a K-Profile — see that page for how the resulting K value is stored, synced, and applied per spool.


Opening the wizard

Every printer card has a kebab (⋮) menu with two sibling calibration entries:

Menu entry What it opens
Filament Calibration The calibration wizard itself — pick a mode, slice, print, save the result.
Calibration History A modal listing BamDude's stored calibration rows next to the printer's live K-profile table.

How it slices

This is the key difference from a fixed test print. The wizard does not ship a canned, pre-sliced 3MF and blindly print it. For each mode it slices the calibration scaffold geometry against your active printer / process / filament presets through a connected OrcaSlicer or Bambu Studio sidecar — exactly the way the Bambu Studio desktop calibration wizard does it.

Per-mode preset overrides (wall loops, line width, initial-layer speed, spiral mode, and so on) are applied before slicing, so the calibration object behaves identically to a Bambu Studio calibration.

The sliced .gcode.3mf is then FTP'd to the printer and run as a real print through the normal dispatch pipeline. Because it goes through the same path as any library job, plate-change macros and chamber-light MQTT actions fire just as they would for a regular print.

Slicer sidecar required

The wizard needs a reachable OrcaSlicer or Bambu Studio sidecar to slice. Configure it under Settings before running a calibration. Without a slicer the wizard cannot produce a printable 3MF.


Calibration modes

Pressure Advance

Three pressure-advance modes, all fully production:

Mode What it prints
PA Line A series of single-perimeter lines, each at an increasing K value.
PA Pattern A grid pattern that exposes K quality across a 2D field.
PA Tower A vertical tower with K incrementing by height.

All three follow the full flow: slice → FTP → print → save dialog → K-profile saved and bound to the AMS slot.

Towers

Mode What it prints
Temperature Tower A tower whose nozzle temperature steps down 5 °C every 10 mm band — each band carries an embossed temperature number.
Volumetric Speed Tower A spiral-mode tower whose outer-wall speed ramps up with height.
VFA Tower Vibration Fine Artifacts tower — also spiral-mode, outer-wall speed ramps with height.
Retraction Tower A two-pillar stringing tower — each 1 mm of height retracts a little more filament.

All four are production. They are print-and-eyeball calibrations: the operator reads the cleanest band (Temperature), the failure height (Volumetric Speed, VFA), or the height where stringing between the pillars cleans up (Retraction) by eye, then uses the finish-step calculator (see below). For the Temperature Tower, the start/end temperatures default to the right range for the loaded filament's material — PLA 230→190 °C, PETG 250→230 °C, ABS/ASA 270→230 °C, and so on.

Flow Rate

A two-pass test that calibrates the filament's flow ratio — the multiplier that scales every extrusion move so the right amount of plastic comes out. Pass 1 (coarse) prints a plate of 9 patches at modifiers from −20 % to +20 % in 5 % steps centred on your filament's current filament_flow_ratio. The operator picks the smoothest patch in the wizard's coarse-save dialog; pass 2 (fine) then prints 10 patches at modifiers from −9 % to 0 %, centred on the coarse pick. The final flow ratio is coarse_pick × (100 + fine_modifier) / 100 — written into the calibration history and ready to copy into the slicer's filament profile.

The baseline the test prints at is the picked filament preset's filament_flow_ratio, auto-prefilled in the verify-download page when the preset is local or resolvable; the operator can also override it to test from a fresh 1.0 without editing the slicer profile.

Production. The wizard's two-pass auto-dispatch runs end-to-end — pass 1 slices, prints, you pick the block, pass 2 slices automatically with the picked baseline, prints, you pick the block, the wizard saves.

In development

Only Auto (lidar-driven, X1 / H2D Pro) calibration is still rolling out. It appears greyed-out in the wizard on supported printers until it lands.


Mode lifecycle

Every mode is in one of three states. This is how BamDude rolls a calibration mode out safely — modes graduate from disabled through verification to production.

State In the wizard Meaning
disabled Greyed out, not selectable Not yet shipped in this build.
verification Selectable, with a Download sliced 3MF button Transitional sign-off state. An operator can download the wizard's sliced output and diff it against Bambu Studio desktop before the mode is trusted to drive a real print.
production Full wizard flow Slice → FTP → print → save. The mode is trusted.

The save / finish step

How a calibration finishes depends on the mode family.

Pressure Advance modes

Pressure-advance modes end on a save dialog:

  • PA Line / PA Pattern — the operator reads the K label printed next to the cleanest line or column and types it in directly.
  • PA Tower — the operator measures the height (mm) where the corners are sharpest, and BamDude computes the K value:

    K = start + step × height_mm
    

The result is written to a filament_calibration row, pushed to the printer's 16-slot K-profile history over MQTT, and bound to the AMS slot — so subsequent prints automatically use it.

Tower modes (Temperature, VFA, Volumetric Speed, Retraction)

Tower modes are print-and-eyeball. The result is a slicer-side setting with no printer runtime knob. The finish step provides a calculator: enter the measured height (mm) and BamDude applies the per-mode formula, showing the result inline.

Mode Formula Unit
Temperature Tower result = start − ⌊height / 10⌋ × 5 °C
Volumetric Speed Tower result = start + height × step mm³/s
VFA Tower result = start + ⌊height / 5⌋ × step mm/s
Retraction Tower result = start + ⌊max(0, height − 0.4)⌋ × step mm

The Temperature Tower descends 5 °C per 10 mm band; VFA bands the speed every 5 mm; the Retraction Tower bands every 1 mm above a 1.4 mm base — hence the floor division in all three.

Pressing Save result records the value in the calibration history as a farm record — "this filament, on this printer + nozzle, calibrated to X".

A tower result is an inert record

Unlike a pressure-advance result, a tower result is not auto-applied to anything — it is a slicer-side setting with no printer-side knob to push. The saved row is a record for your reference. Copy the value into your slicer's filament profile yourself.


Result identity

Every calibration result is keyed on a 5-tuple:

(printer, filament, nozzle diameter, nozzle volume type, extruder)

The identity is per-printer-instance: two identical printers in a farm can carry independent calibration values for the same filament. The wizard never assumes that calibrating a filament on one printer covers the others.


Auto-bind on print start

The active pressure-advance calibration auto-binds on every print start. BamDude re-matches the printer's live calibration index via the stable 5-tuple identity each time a print begins.

This means AMS slot reorders and RFID re-taps cannot silently fall back to the wrong K — even if the slot's index has shifted, the correct calibration is re-bound from BamDude's stored identity before the print runs.


Calibration History modal

The Calibration History kebab entry opens a modal that lists BamDude's stored calibration rows side-by-side with the printer's live 16-slot K-profile table.

Per row you can:

  • Set active — make this calibration the bound one for its slot.
  • Delete — remove the stored row.
  • Refresh from printer — re-read the printer's live calibration index for that row.

Tower results appear here too, shown with the mode-derived unit (VFA in mm/s, Volumetric Speed in mm³/s) so the history reads correctly regardless of mode family.


H2D dual-extruder

On H2D / H2D Pro the wizard exposes per-extruder tabs. Each extruder calibrates independently — its own modes, its own results, its own 5-tuple identity (the extruder is part of the key). Calibrating the left extruder never touches the right.


Permissions

Permission Effect
printers:update Run the calibration wizard.
kprofiles:read View the Calibration History modal.

Troubleshooting

A mode is greyed out

  • The mode is in the disabled state in this build — it has not shipped yet. Auto (lidar-driven) calibration rolls out separately; check the changelog for the build that enables it.

Calibration print didn't dispatch

  • The wizard slices through a slicer sidecar. Confirm the OrcaSlicer or Bambu Studio sidecar is configured and reachable under Settings.
  • Verify the printer is online with a green status dot and not mid-print — the calibration job dispatches through the normal pipeline and queues behind any active print.

Saved K doesn't seem to apply on the next print

  • Pressure-advance results auto-bind on print start via the 5-tuple identity. Check Calibration History to confirm the row is set active for the slot.
  • Verify the nozzle diameter and nozzle volume type match — the result is keyed on both, so a nozzle change produces a separate, unmatched identity until you re-calibrate.

A tower result had no effect

  • Expected — a tower result (VFA, Volumetric Speed, Retraction) or a Flow Rate result is an inert record, not a printer-side setting. Copy the value into your slicer's filament profile yourself.