Skip to content

Parameters

Every setting in mmu.cfg and mmu_parameters.cfg, generated by reading the real shipped config templates and the menuconfig help text behind each one - not the wiki, which this page treats as too unreliable to trust for facts that change from release to release. Feature pages explain the why behind a setting; this page is the flat, exhaustive lookup for what it is and what it defaults to, the same role Command Reference and Printer Variables play for commands and status fields.

Two other config files exist and are not covered here: mmu_hardware.cfg (pins and per-unit hardware wiring - see each Feature page's own Hardware Setup section) and mmu_macro_vars.cfg (macro tuning variables - not yet its own reference page).

Defaults below come from a Box Turtle install, generated fresh by menuconfig - the same seed this site's other menuconfig screenshots use. A different MMU type or a different set of enabled features can change any default shown here; where a setting only appears with a particular feature enabled, that's noted alongside it. Many settings can also be changed live with MMU_TEST_CONFIG <var>=<value>, without a Klipper restart - see MMU_TEST_CONFIG.

Shared settings (mmu.cfg)

mmu.cfg's [mmu_parameters] section applies to the whole logical MMU, regardless of how many physical units make it up.

Logging

Parameter Default Description
log_level 1 Console log verbosity: 0=essential, 1=info, 2=debug, 3=trace, 4=developer (includes stepper moves)
log_file_level 2 Same scale, for mmu.log - -1 disables the log file entirely
log_statistics 1 Log the swap-timing table on every toolchange - see Feature: Statistics & Counters
log_visual 1 Show a visual representation of filament position in the console
log_startup_status 1 Log a tool-to-gate summary on startup
log_m117_messages 1 Mirror toolchange messages to the printer display via M117
suppress_klipper_warnings 0 1 = send startup Klipper warnings to mmu.log instead of the console

Tip

Console logging above 2 (debug) isn't recommended outside active troubleshooting - the extra detail has real overhead.

Extruder movement speeds

Parameter Default Description
extruder_load_speed 16 mm/s Speed of the load move inside the extruder, from homing position to the melt zone
extruder_unload_speed 16 mm/s Speed of the unload move inside the extruder (the initial move away from the melt zone runs at 50% of this)
extruder_sync_load_speed 18 mm/s Same load move, when the gear stepper is synced to the extruder
extruder_sync_unload_speed 18 mm/s Same unload move, when synced
extruder_homing_speed 16 mm/s Speed of extruder-only homing moves (e.g. to a toolhead sensor)
extruder_accel 1500 Extruder stepper acceleration limit during MMU load/unload moves, to avoid skipped steps
macro_toolhead_max_accel 0 Toolhead acceleration applied while a callback macro runs, restored afterward - 0 = use the printer's own max
macro_toolhead_min_cruise_ratio 0.5 Same, for the printer's cruise-ratio setting

Tip forming

See Feature: Tip Forming and Purging for the full picture - these four settings choose who forms the tip and how hard the extruder pushes while doing it.

Parameter Default Description
force_form_tip_standalone 1 1 = always use Happy Hare's own standalone tip forming; 0 = the slicer forms tips in-print, standalone only otherwise
form_tip_macro _MMU_FORM_TIP Macro called to form (or cut) the tip - _MMU_FORM_TIP, _MMU_CUT_TIP, or a custom macro
extruder_form_tip_current 100% Extruder current (100-150%) during tip forming - 100 disables the boost
slicer_tip_park_pos 0 mm Where the slicer leaves filament in the extruder after its own tip forming - only relevant if the slicer forms tips

Purging

See Feature: Tip Forming and Purging for the full picture.

Parameter Default Description
force_purge_standalone 1 1 = always use standalone purging; 0 = the slicer's wipe tower in-print, standalone otherwise
purge_macro _MMU_PURGE Macro called to purge - _MMU_PURGE, BLOBIFIER, or a custom macro. Blank disables standalone purging entirely
extruder_purge_current 100% Extruder current (100-150%) during purging - 100 disables the boost

Filament management

Parameter Default Description
endless_spool_enabled 0 Enable EndlessSpool - automatic hand-off to a spare gate on runout
endless_spool_on_load 0 Also apply EndlessSpool if the gate a load targets turns out to be empty
endless_spool_eject_gate -1 Which gate to eject filament remains to - -1 = the current gate
endless_spool_groups (empty) EndlessSpool grouping list - empty means no groups defined
spoolman_support off off/readonly/push/pull - see Feature: Spoolman / Filament Hub for what each does
spoolman_pending_id_timeout 20 s How long a pending spool ID assignment stays valid before being voided
spoolman_led_segment gate_status Which LED segment(s) show the pending-spool-ID overlay: gate_status, status, or both
spoolman_nfc_auto_create 0 Auto-create a Spoolman spool from an unrecognised NFC tag's metadata - see Feature: NFC/RFID Reading
t_macro_color slicer Source for the Tx macro's color variable: slicer, allgates, gatemap, or off

Console

See Feature: Statistics & Consumption Counters for the swap-timing table these columns/rows control.

Parameter Default Description
console_stat_columns unload, load, post_load, total Which timing columns the MMU_STATS table shows
console_stat_rows total, total_average, job, job_average, last Which rows it shows, in order
console_gate_stat emoticon Gate-quality display: string, percentage, or emoticon
console_always_output_full 1 Always show the full statistics table, even mid-print
console_show_colored_text 1 Use color in console output
console_show_filament_color 1 Show a colored "swatch" for filament rather than a plain asterisk

Misc

Parameter Default Description
timeout_pause 72000 s Idle timeout while the MMU is in a paused state
disable_heater 600 s Delay before the hotend heater is turned off during an MMU pause
default_extruder_temp 200°C Temperature used for swaps/tip-forming outside a print, when the gate map has no temperature for that filament
extruder_temp_variance 2°C Permissible +/- variance while waiting for extruder temperature
startup_reset_ttg_map 0 Reset the TTG map on every startup
show_error_dialog 1 Show a pop-up dialog (in addition to the console message) on error
strict_filament_recovery 0 On a toolhead-sensor MMU, do extra moves on recovery to check for filament trapped between the extruder and the sensor
filament_recovery_on_pause 1 Run a quick position check on pause/error
retry_tool_change_on_error 0 Automatically retry a failed toolchange (MMU_RECOVER + Tx) - can mask real problems if left on
bypass_autoload 1 With an extruder-entry sensor fitted, automatically load through the bypass once filament is inserted
print_start_detection 1 Automatically detect print start/end and call MMU_PRINT_START/MMU_PRINT_END
gcode_load_sequence 0 1 = use the macro-based load sequence instead of internal logic - see Custom Load/Unload Sequences
gcode_unload_sequence 0 Same, for unloading
drying_data (11-material dict) Per-material (temperature, time) drying recipe table - see Feature: Environment Manager

Klipper tuning

Parameter Default Description
update_trsync 0 Increase Klipper's TRSYNC_TIMEOUT - can help with a "Timer too close" error during MMU homing moves, especially over CANbus
canbus_comms_retries 3 Automatic retries for a CANbus comms timeout during a homing move
update_bit_max_time 1 Increase neopixel.py's BIT_MAX_TIME automatically - works around finicky older-neopixel timing errors
update_aht10_commands 0 Convert AHT30 sensor commands to AHT10 - for BTT ViViD's heater sensor on an older Klipper without AHT30 support

Macros

Every one of these names a callback macro - see Custom Load/Unload Sequences for how they fit together and when each fires.

Parameter Default Description
pause_macro PAUSE Macro called to pause the print on an MMU error
action_changed_macro _MMU_ACTION_CHANGED Called when printer.mmu.action changes
print_state_changed_macro _MMU_PRINT_STATE_CHANGED Called when printer.mmu.print_state changes
mmu_event_macro _MMU_EVENT Called on assorted MMU events
post_preload_macro _MMU_POST_PRELOAD Called after a successful gate preload
pre_unload_macro _MMU_PRE_UNLOAD Called before an unload starts
post_form_tip_macro _MMU_POST_FORM_TIP Called immediately after tip forming/cutting
post_unload_macro _MMU_POST_UNLOAD Called after an unload completes
pre_load_macro _MMU_PRE_LOAD Called before a load starts
post_load_macro _MMU_POST_LOAD Called after a load completes
unload_sequence_macro _MMU_UNLOAD_SEQUENCE Macro name called when gcode_unload_sequence: 1
load_sequence_macro _MMU_LOAD_SEQUENCE Macro name called when gcode_load_sequence: 1

Reset defaults

The values various RESET=1 commands restore, instead of plain empty/unknown attributes - see Feature: Gate/TTG Maps. Every list's length must match your gate count. All commented out (and therefore inactive) by default.

Parameter Restored by
default_gate_status, default_gate_vendor, default_gate_filament_name, default_gate_material, default_gate_color, default_gate_temperature, default_gate_spool_id, default_gate_speed_override MMU_GATE_MAP RESET=1
default_endless_spool_groups MMU_ENDLESS_SPOOL_GROUPS RESET=1
default_ttg_map MMU_TTG_MAP RESET=1

Toolhead geometry ([mmu_toolhead])

Still defined in mmu.cfg, but its own section - one toolhead's physical dimensions, which can be shared across units if they share a toolhead.

Parameter Default Description
extruder_switch_pin (pin) Extruder-entry sensor pin - detects filament just before the extruder
toolhead_switch_pin (pin) Toolhead sensor pin - detects filament just past the extruder entry
register_toolhead_sensors 1 Register these sensors for visibility in Mainsail/Fluidd and QUERY_SENSOR
toolhead_extruder_to_nozzle 72 mm Distance from the extruder gears to the nozzle
toolhead_sensor_to_nozzle 62 mm Distance from the toolhead sensor to the nozzle (ignored if not fitted)
toolhead_entry_to_extruder 8 mm Distance from the extruder-entry sensor to the extruder gears (ignored if not fitted)
toolhead_residual_filament 2 mm Filament left behind in the nozzle after unload - reduces load length and factors into purge volume
toolhead_ooze_reduction 0 mm Final fine-tuning adjustment on top of the above - see Feature: Tip Forming and Purging

A hall-effect filament-width sensor (as fitted to some Qidi printers) can emulate either switch pin instead - see the commented hall_sensor_endstop block in the shipped mmu.cfg if that applies to your printer.

Not covered here

A few more sections exist in mmu.cfg that this page doesn't tabulate, since they're either not really "parameters" or already fully documented elsewhere:

Per-unit settings (mmu_parameters.cfg)

One mmu_parameters.cfg exists per physical MMU unit, under its own [mmu_unit_parameters <name>] section. On a single-unit machine there's just one; a multi-unit machine has one per physical MMU.

Selector control

Only present for a design with a moving selector (Type-A/C) - a gear-per-gate design like Box Turtle has no selector and skips this section entirely. Defaults below are shown where a selector type applies; several of these (marked type-dependent) only get a real value once the specific selector/servo hardware is chosen in menuconfig, and several servo angle settings are deliberately left blank to force calibration rather than trust an unverified number.

Parameter Default Description
selector_move_speed type-dependent mm/s speed of selector movement
selector_homing_speed type-dependent mm/s speed of the initial selector homing move
selector_touch_speed type-dependent mm/s speed of "touch" (stallguard) selector moves
selector_accel 1200 Selector stepper acceleration
selector_touch_enabled type-dependent Enable/disable touch (stallguard) selector movement, if wired for it
selector_gate_directions (empty) Per-gate gear-stepper direction override, e.g. for the 3D-Chameleon design - 1, 1, 0, 0
selector_release_gates (empty) Per-gate "which gate to move to in order to release this gate's filament" list (only if filament_always_gripped: 0)
selector_gate_order (empty) Order of gates for efficient forward-direction selection - can be auto-calibrated
selector_endstop_width (empty) Width of the gate-index sensor trigger range, for centering on a gate after homing (Indexed selectors)
select_tool_macro select_tool_macro Macro called to change gates (MacroSelector designs only)
select_tool_num_switches 0 Number of switches a MacroSelector design reports

Important

With touch (stallguard) selector movement enabled, don't lower selector_accel to quiet the selector down - stallguard detection itself gets unreliable below about 600, and only becomes dependable again above roughly 1000. The default already sits safely in the reliable range; a well-intentioned "quieter" value can silently break touch homing instead.

Servo-driven selectors (LinearServoSelector/ServoSelector) add:

Parameter Default Description
servo_up_angle / servo_down_angle blank - calibrate Servo angle to release / grip filament
servo_move_angle blank - calibrate Angle used while the selector is moving - defaults to the up position; on some designs (e.g. ERCF) this also passively grips
servo_buzz_gear_on_down blank Whether to "buzz" the gear stepper on the down move, to aid engagement
servo_min_angle / servo_max_angle blank Hard angle limits Happy Hare will never move the servo past
servo_gate_angles blank - calibrate Optional list of per-gate angles - leave blank to force calibration; calibrated values in mmu_vars.cfg override this
servo_bypass_angle blank Optional bypass-gate servo angle - -1 if unsupported
servo_release_angle blank Optional explicit release angle - -1 = default (halfway between gate angles)
servo_duration blank Duration of the PWM burst sent to the servo (non-always-active mode)
servo_dwell blank Minimum time given to the servo to finish moving before the next move starts
servo_always_active blank 1 = keep the servo powered continuously - can stress cheap servos/5V supply, use with care
servo_active_down blank (LinearServoSelector only) keep the servo active specifically in the down position

Filament movement speeds

Parameter Default Description
gear_load_speed 100 mm/s Default long-distance bowden load speed
gear_load_accel 100 Acceleration for that load
gear_from_filament_buffer_speed (buffer-equipped only) Faster load speed once a filament buffer is fitted - 50-100% faster is often safe
gear_from_filament_buffer_accel (buffer-equipped only) Acceleration for the above
gear_unload_speed 80 mm/s Bowden unload speed - defaults to a bit under load speed; tune lower for a rewinder-limited eSpooler
gear_unload_accel 100 Acceleration for unloading
gear_homing_speed 50 mm/s Speed of gear-only homing moves (to gate or extruder)
virtual_sensor_homing_speed 15 mm/s Slower homing speed used specifically for virtual endstops (e.g. sync-feedback compression/tension, or a Qidi filament-width sensor standing in for a real sensor)
gear_short_move_speed 80 mm/s Speed for short moves (e.g. incremental encoder-guided retracts)
gear_short_move_accel 400 Acceleration for short moves
gear_short_move_threshold 70 mm Move distance below which the "short move" speed/accel apply instead

Gate loading/unloading

Settings for parking filament at the gate - see Feature: Encoder for how an encoder can substitute for (or verify) the endstop here.

Parameter Default Description
gate_homing_endstop type-dependent Which endstop parks filament at the gate: encoder, mmu_shared_exit, mmu_exit, or extruder
gate_homing_max 100 mm Maximum extra homing distance (or the actual move distance, if using the encoder endstop)
gate_parking_distance -23 mm Position relative to the homing endstop - must be a retraction (≤0) unless the endstop is mmu_exit
gate_preload_endstop (empty) Endstop used specifically when preloading - defaults to gate_homing_endstop if unset
gate_preload_homing_max 100 mm Maximum homing distance to the preload (mmu_exit) endstop
gate_preload_parking_distance -23 mm Parking position after a preload homing move
gate_preload_attempts 2 Attempts made to pick up filament after a preload is issued
gate_endstop_to_encoder (encoder-equipped only) Distance from the gate endstop to where the encoder actually sees filament
gate_load_attempts 2 (servo-equipped Type-A designs) Attempts to grab filament on the initial load
gate_autoload (entry-sensor-equipped only) Automatically load a gate once the entry sensor sees filament
gate_final_eject_distance 20 mm Extra distance ejected on MMU_EJECT to clear the MMU's grip entirely

Bowden tube loading/unloading

Parameter Default Description
bowden_homing_max 2000 mm Maximum attempted bowden move, for calibration - should exceed your actual bowden length
bowden_load_homing_buffer 20 mm How much a fast bowden load falls short of its target, to leave room for accurate extruder homing
bowden_unload_homing_buffer 40 mm Same, for unload, to allow accurate gate homing without overshoot
bowden_apply_correction 0 (encoder-equipped only) Trust the encoder to auto-correct a short bowden move - not recommended above ~350mm/s load speed
bowden_allowable_encoder_delta 20.0 mm How close a correction move will try to get to the target
bowden_pre_unload_test 1 (encoder-equipped only) Verify filament is clear of the extruder before the fast unload pull
bowden_pre_unload_error_tolerance 50% Allowed mismatch for that pre-unload check
bowden_move_error_tolerance 60% Allowed mismatch between commanded and encoder-observed bowden movement - 100 disables the check

Extruder homing

See Feature: Encoder and Feature: Sync-Feedback Buffer for two of the possible homing methods.

Parameter Default Description
extruder_homing_endstop none Method used to find the extruder entrance: filament_compression, extruder, encoder, mmu_gear_touch, or none
extruder_homing_max 100 mm Maximum distance advanced attempting to home to the extruder
extruder_collision_homing_current 30% Gear stepper current during collision-based homing (encoder/mmu_gear_touch methods)
extruder_force_homing (toolhead-sensor-equipped only) Force extruder homing even though a toolhead sensor makes it unnecessary

Toolhead loading/unloading (behaviour)

Distinct from [mmu_toolhead]'s physical geometry settings above - these tune the toolhead-loading behaviour itself, per unit.

Parameter Default Description
toolhead_homing_max (toolhead-sensor-equipped only) Extra distance to advance attempting to home to the toolhead sensor
toolhead_unload_safety_margin 10 mm Extra unload distance to ensure filament is genuinely clear of the extruder
toolhead_post_load_tighten 60% After a load, tighten filament by this % of the clog-detection length, to remove bowden slack (ignored if synced to the extruder)
toolhead_post_load_tension_adjust 1 Use a fitted sync-feedback buffer to create neutral tension after loading, if synced
toolhead_entry_tension_test 1 Verify the filament passed the extruder entry via a neutral-tension check (needs a compression-capable sync-feedback sensor; ignored with a toolhead sensor)
toolhead_move_error_tolerance 60% (encoder-equipped only) Allowed mismatch between commanded and encoder-observed toolhead movement

Synchronized gear/extruder movement

See Feature: Sync-Feedback Buffer for the buffer-based half of this.

Parameter Default Description
sync_to_extruder 0 Keep the gear motor synchronized to the extruder throughout printing
sync_gear_current 100% Gear stepper current while synced during a print
sync_form_tip 0 Also sync during standalone tip forming
sync_purge 0 Also sync during standalone purging
sync_feedback_enabled (buffer-equipped only) Turn sync-feedback off even with the sensor fitted and working
sync_feedback_speed_multiplier 5% Gear speed delta applied to keep filament neutral in the buffer
sync_feedback_boost_multiplier 3% Extra gear speed boost while first finding the neutral position
sync_feedback_extrude_threshold 5 mm Extruder movement between sync-feedback updates - keep small, but above your retract distance
sync_feedback_debug_log 0 1 = write a sync_<gate>.jsonl telemetry log, selectable and viewable with make plot_sync

FlowGuard clog and tangle detection

See Feature: FlowGuard for the full tuning guide - these are the same settings covered there in depth.

Parameter Default Description
flowguard_enabled 1 (once FlowGuard is enabled) Master on/off for FlowGuard protection
flowguard_max_relief 40 mm (buffer-equipped) Relief movement tolerated before triggering a clog/runout - smaller is more sensitive
tangle_prevention_enabled 1 (once enabled) Boost gear current under high sensed tension, to pull through minor spool resistance
tangle_prevention_threshold 0.3 Tension level that triggers the current boost
tangle_prevention_release 0.2 Tension level that restores normal current - must sit below the threshold for hysteresis
flowguard_encoder_mode 2 (encoder-equipped) 0=off, 1=static detection length, 2=autotuned
flowguard_encoder_max_motion 20.0 mm Max extruder movement without encoder movement before triggering, in static mode

ESpooler control

See Feature: eSpooler for the full picture - including the PWM power curve formula these settings feed.

Parameter Default Description
espooler_min_distance 30 mm Individual stepper moves shorter than this don't activate the espooler
espooler_max_stepper_speed 300 Gear stepper speed at which espooler power reaches maximum
espooler_min_stepper_speed 0 Gear stepper speed below which the espooler goes inactive - useful for non-PWM control
espooler_speed_exponent 0.5 Non-linear power-vs-speed exponent
espooler_assist_reduced_speed 50% % of rewind speed applied to assist-while-loading
espooler_printing_power 0 Fixed % PWM power while printing if >0; 0 allows burst-style assist moves instead
espooler_operations rewind, assist, print Which operational modes are active - remove any to disable them even if the hardware supports them
espooler_assist_extruder_move_length 100 mm Extruder distance between assist bursts
espooler_assist_burst_power 100% Power of an assist burst move
espooler_assist_burst_duration 0.4 s Duration of an assist burst move
espooler_assist_burst_trigger 0 Enable a trigger-switch-driven assist burst
espooler_assist_burst_trigger_max 3 Max back-to-back trigger-driven bursts
espooler_rewind_burst_power 100% Power of a rewind burst move (used during drying-cycle spool rotation - see Feature: Environment Manager)
espooler_rewind_burst_duration 0.4 s Duration of a rewind burst move

Heater / environment management

See Feature: Environment Manager for the full drying-cycle picture.

Parameter Default Description
heater_max_temp 65°C Absolute ceiling, to protect the enclosure construction
heater_default_dry_temp 45°C Fallback drying temperature for an unmatched or empty gate
heater_default_dry_time 300 min Fallback drying cycle time
heater_default_dry_humidity 25% Default humidity goal - drying ends early if reached
heater_vent_macro _MMU_VENT Macro called periodically during drying to vent humid air
heater_vent_interval 0 min Interval between vent-macro calls - 0 disables venting
heater_rotate_interval 5 min (eSpooler-equipped) Interval between spool-rotation bursts during drying

NFC reader

See Feature: NFC/RFID Reading for the full picture.

Parameter Default Description
nfc_deep_read 1 Parse full tag contents (material, color, vendor, temps), not just the UID
nfc_gate_jog_scan_window -50, 50 mm Max retract/extrude jog range while searching for a tag - 0, 0 disables jogging
nfc_led_segment auto Which LED segment shows read/fail feedback - auto follows reader type

Calibration and autotune

Parameter Default Description
autocal_bowden_length 1 (this Box Turtle seed - needs an extruder-entry sensor or a sync-feedback buffer with compression/proportional sensing; 0 on types without either) Auto-calibrate bowden length on first load, instead of requiring MMU_CALIBRATE_BOWDEN
autotune_bowden_length 0 Continuously tune bowden length over time (best with a toolhead sensor)
skip_cal_rotation_distance 1 Rely on the installed default gear rotation distance rather than requiring MMU_CALIBRATE_GEAR
autotune_rotation_distance 0 Continuously tune gear rotation distance from sync-feedback or encoder telemetry
skip_cal_encoder 1 (0 on ERCF specifically, not encoder-equipped types generally - KMS and QuattroBox both ship encoders and still default to 1) Rely on the installed default encoder resolution rather than requiring MMU_CALIBRATE_ENCODER

Misc (per-unit)

Parameter Default Description
startup_home_selector 0 1 = home the selector on startup if unloaded, then reselect the last gate; 0 = trust the saved shutdown position - see Feature: State Persistence
encoder_move_validation 1 (encoder-equipped) Use the encoder to validate every movement - 0 removes a slight pause between moves but is less safe

CAD dimensions for custom designs

Commented out by default - only needed for a mmu_vendor: Other custom build, or to override the values a recognised vendor/version normally supplies automatically.

Parameter Default (commented) Description
cad_gate0_pos 4.2 mm Approximate distance from the selector's endstop to the first gate - rough calibration starting point only
cad_gate_width 21.0 mm (Linear); 90.0° (Indexed) Width of each gate, or - for a rotary Indexed selector - the rotation-distance-equivalent degrees between gates
cad_bypass_offset 0 mm Distance from the limit of travel back to the bypass position (e.g. ERCF v2.0)
cad_last_gate_offset 2.0 mm Distance from the limit of travel back to the last gate
cad_selector_tolerance 10.0 mm Extra selector movement allowed for calibration
cad_max_rotations 2 Maximum full rotations of an Indexed selector wheel

See also