Command Reference¶
Every MMU_* command Happy Hare provides - generated directly from the
same help text <CMD> HELP=1 prints at a real printer, so it's always
in sync with what you'll actually see. Internal/developer-only commands
(individual loading/unloading steps, raw stress-test tooling) are
deliberately not here - see Developer Command
Reference in the Developer Guide instead.
GENERAL¶
MMU¶
Enable/Disable functionality (resets state when re-enabled)
Parameters
ENABLE = [0|1]
Examples:
MMU ENABLE=1 ...Enable Happy Hare and reset MMU state
MMU ENABLE=0 ...Disable Happy Hare (motors released, no MMU operations possible)
MMU_CALC_PURGE_VOLUMES¶
Calculate purge volume matrix based on filament color overriding slicer tool map import
Parameters
MIN = # Minimum purge volume (mm^3)
MAX = # Maximum purge volume (mm^3)
MULTIPLIER = # Scale multiplier (float)
SOURCE = [gatemap|slicer] Color source to build matrix from
Examples:
MMU_CALC_PURGE_VOLUMES SOURCE=gatemap MULTIPLIER=1.1 ...calc purge matrix colors defined in the gate map with scaling
MMU_CALC_PURGE_VOLUMES SOURCE=slicer MIN=50 ...calc purge matrix colors defined by slicer with minimum
(Use MMU_SLICER_TOOL_MAP PURGE_MAP=1 to see result)
MMU_CHANGE_TOOL¶
Perform a tool swap (called from Tx command)
Parameters
QUIET = [0|1]
STANDALONE = [0|1]
RESTORE = [0|1]
SKIP_TIP = [0|1]
SKIP_PURGE = [0|1]
NEXT_POS = X,Y (optional; only used when restore_xy_pos is 'next')
TOOL = #(int)
GATE = #(int)
SLICER_PURGE = #(mm) (optional; captures the slicer calculated purge volume)
SLICER_RETRACTION = #(mm) (optional; captures the slicer retraction length)
SLICER_FW_RETRACTION = true|false|0|1 (optional; captures the slicer firmware retraction setting. Ignored if not enabled in printer)
Examples:
MMU_CHANGE_TOOL TOOL=2 ...Change to tool 2 (equivalent to running T2)
MMU_CHANGE_TOOL TOOL=0 STANDALONE=1 ...Change to tool 0 forcing standalone tip forming/purging (not slicer)
MMU_CHANGE_TOOL GATE=3 ...Change to whichever tool is mapped to gate 3 (UI driven)
MMU_CHECK_GATE¶
Automatically inspects gate(s), parks filament and marks availability
Parameters
QUIET = [0|1]
TOOLS = comma,separated,tools
GATES = comma,separated,gates
TOOL = t (single tool)
GATE = g (single gate)
ALL = [0|1]
Examples:
MMU_CHECK_GATE ...Check the current gate
MMU_CHECK_GATE ALL=1 ...Check every gate and update availability
MMU_CHECK_GATE GATES=0,2,4 ...Check gates 0, 2 and 4
MMU_CHECK_GATE TOOL=1 ...Check the gate mapped to tool 1
MMU_EJECT¶
Ejects filament from MMU on chosen gate. If current gate then performs unload first if not already unloaded
Parameters
GATE = #(int)
FORCE = [0|1]
EXTRUDER_ONLY = [0|1]
SKIP_TIP = [0|1]
RESTORE = [0|1]
Examples:
MMU_EJECT ...Eject filament from current gate
MMU_EJECT GATE=5 ...Eject filament on gate 5
MMU_ENCODER¶
Display encoder position and stats or reset position
Parameters
POS = #(float) Sets the encoder as close as possible to specified position (subject to resolution)
VALUE = #(float) Alias for POS=
QUIET = 1 for less verbose output
(no parameters for status)
Examples:
MMU_ENCODER ...Report current encoder position and status
MMU_ENCODER POS=0 ...Reset the encoder position counter to (approximately) zero
MMU_ENCODER POS=100 ...Set the encoder as close as possible to position 100mm
MMU_ENDLESS_SPOOL¶
Diplay or Manage EndlessSpool functionality and groups
Parameters
ENABLE = [0|1]
QUIET = [0|1]
RESET = [0|1]
GROUPS = comma separated list of group membership
Examples:
MMU_ENDLESS_SPOOL GROUPS=1,1,1,1 ...Put all four gates into same endless spool group
MMU_ENDLESS_SPOOL RESET=1 ...Reset to default grouping. Typically each gate is in own group
MMU_ENDLESS_SPOOL ENABLE=0 QUIET=1 ...Disable endspool feature supressing console/log output
MMU_ESPOOLER¶
Direct control of espooler or display of current status
Parameters
UNIT = #(int)|_name_ Specify unit by name or number. OMIT if GATE supplied
ALLOFF = [0|1] Quick way to turn all espoolers off
TRIGGER = [0|1] Fire in-print trigger for testing
BURST = [0|1] Jog in direction of OPERATION (assist|rewind) using configured burst duration and power
DURATION = [0-10] Override duration of PWM signal (seconds) for burst operations
GATE = g Specify gate to operate on (defaults to current gate)
LOOSEN = [0|1] Quick way to loosen filament on spool
OPERATION = [assist|off|print|rewind] Set espooler operation mode
POWER = [0-100] Override default % power to apply to espooler motor
QUIET = [0|1] Used to suppress console/log output
RESET = [0|1] Turn of in-print assist
TIGHTEN = [0|1] Quick way to tighten filament on spool
(no parameters for status report)
Examples:
MMU_ESPOOLER ...Report espooler status
MMU_ESPOOLER GATE=2 TIGHTEN=1 ...Tighten filament on the spool at gate 2
MMU_ESPOOLER GATE=2 BURST=1 POWER=50 ...Jog espooler on gate 2 in the current operation direction at 50% power
MMU_ESPOOLER GATE=2 OPERATION=rewind ...Set gate 2 espooler to rewind (in-print) mode
MMU_ESPOOLER ALLOFF=1 ...Turn all espoolers off
MMU_FLOWGUARD¶
Enable/disable FlowGuard (clog-tangle detection)
Parameters
UNIT = #(int)|_name_|ALL Specify unit by name, number or all-units (optional if single unit)
ENABLE = [1|0] Enable/disable FlowGuard clog/tangle detection
(no parameters for status report)
Examples:
MMU_FLOWGUARD ...Report FlowGuard clog/tangle detection status
MMU_FLOWGUARD ENABLE=1 ...Enable FlowGuard detection on the active unit
MMU_FLOWGUARD ENABLE=0 UNIT=ALL ...Disable FlowGuard detection on all units
MMU_GATE_MAP¶
Display or define the type and color of filaments on each gate
Parameters
QUIET = 1 To minimize console reporting
RESET = 1 To reset specified GATE/GATES filament attributes to configured defaults
GATES = g,g,g comma separated list of gates; required with RESET unless GATE is used
GATE = g Specify a single gate; required with RESET unless GATES is used
BYPASS = 1 Set filament attributes for the bypass
NEXT_SPOOLID = id Specify the spoolman id of the next filament loaded - automatically assigned (0 to cancel)
NAME = # Filament name
MATERIAL = # Material type
VENDOR = # Filament vendor/brand name
COLOR = # Filament color as w3c name or RRGGBB or RRGGBBaa (without #)
SPOOLID = # Optionally the spoolman ID for the filament (don't need to specify other attributes)
TEMP = # Default temperature of filament
SPEED = % Speed override (use <100 for soft TPU types)
RFID = # Single hexadecimal RFID tag UID read at the gate (blank to clear)
AVAILABLE = [-1|0|1|2] Filament availability: Unknown | Empty | Available | Available from filament buffer
(no parameters for status report)
Examples:
MMU_GATE_MAP GATES=0,1,2,3 AVAILABLE=1 ...Mark gates 0-3 as having filament available
MMU_GATE_MAP GATE=5 COLOR=red MATERIAL=pla ...Set filament attributes for gate 5
MMU_GATE_MAP NEXT_SPOOLID=45 ...Automatically mark the next spool preloaded or loaded with spoolman id 45
MMU_GATE_MAP GATE=0 SPEED=50 ...Set load/unload speed of gate 0 to 50% - great for TPU!
MMU_GATE_MAP GATE=0 RFID=E2003412 ...Record the RFID tag read for the spool loaded in gate 0
MMU_GATE_MAP RESET=1 GATES=4,5 ...Reset gates 4 and 5 to defaults configured in mmu.cfg
MMU_GRIP¶
Grip filament in current gate
MMU_HEATER¶
Control MMU heater(s) and filament drying cycle
Parameters
UNIT = #(int) Optional if only one unit fitted to printer
STOP = [0|1] Turn off heater and drying cycle
DRYING_DATA = [0|1] Dump configured drying data for filament types
DRY = [0|1] Disable/enable filament heater for filament drying cycle
TIMER = #(mins) Force drying time
TEMP = #(degrees) Force temperature
HUMIDITY = % Terminate drying when humidty goal is reached
GATES = g1,g2 Gates to control ONLY IF MMU has per-gate heaters/dryers
ROTATE = [0|1] Rotate spool (requires eSpooler and explicit GATES)
ROTATE_INTERVAL = #(mins) How often to rotate spools when drying (requires eSpooler)
VENT_INTERVAL = #(mins) How often to call 'vent' macro in drying cycle
(no parameters for status report)
Examples:
MMU_HEATER TEMP=50 ...Set heater temperature or adjusts if in drying cycle
MMU_HEATER DRY=1 ...Dry with intelligent temperature/time recommended from 'drying_data'
MMU_HEATER DRY=1 TEMP=50 TIMER=240 HUMIDITY=12 ...Initiate drying cycle at 50°C for 240 minutes with 12% humidity goal
MMU_HEATER STOP=1 ...Stop current drying cycle
MMU_HEATER DRY=1 ROTATE=1 GATES=1,3 ...Start drying cycle on gates 1 & 3 periodically rotating them (requires espooler)
MMU_HEATER DRYING_DATA=1 ...List the current drying data database
MMU_HEATER DRY=1 VENT_INTERVAL=10 ...Initiate drying cycle calling vent macro every 10 minutes
With per-gate heaters:
MMU_HEATER DRY=1 GATES=0,2,3 ...Drying cycle on gates 0,2 & 3 (subject to max simultaneous heaters)
MMU_HEATER TEMP=45 GATES=0,1 ...Turn heaters on for gates 0 & 1
MMU_HELP¶
Display the complete set of MMU commands and function
Parameters
PARAMS = [0|1] Show parameter help and supplemental examples
ALL = [0|1] Show all user commands categories
GENERAL = [0|1] Regular MMU commands (DEFAULT ON)
TESTING = [0|1] Calibration and testing commands
STEPS = [0|1] Advanced load/unload sequence and steps commands
MACROS = [0|1] Print start/end or slicer macros (defined in mmu_software.cfg)
CALLBACKS = [0|1] Callbacks macros (defined in mmu_sequence.cfg, mmu_state.cfg)
INTERNAL = [0|1] Internal commands/macros (Caution!)
OTHER = [0|1] Alias or not categorised
CMD = _cmd_ Show help on command (same as _cmd_ HELP=1)
(without parameters it will summarize just major commands)
Examples:
MMU_HELP ALL=1 ...Summerize all user commands
MMU_HELP PARAMS=1 ...Summerize basic commands showing parameters and examples
MMU_HELP GENERAL=0 TESTING=1 PARAMS=1 ...Provide details help on all testing/calibration commands
MMU_HELP INTERNAL=1 PARAMS=1 ...You are a developer? Caution!
MMU_HOME¶
Home the MMU selector
Parameters
UNIT = #(int)|_name_|ALL Specify unit by name, number or all-units (optional if single unit)
TOOL = #(int) Optionally select tool number after homing
SKIP_HOMED = [0|1] Skip homing of units that are already homed
(no parameters: home selector on single unit setup and select T0)
Examples:
MMU_HOME UNIT=ALL ...Home all mmu units with selector kinimatics
MMU_HOME UNIT=ALL SKIP_HOMED=1 ...Home only units that are not already homed
MMU_HOME UNIT=1 ...Home unit 1
MMU_LED¶
Manage mode of operation of optional MMU LED's
Parameters
ENABLE = [0|1] Enable/disable
ANIMATION = [0|1] Enable/disable animations
EXIT_EFFECT = [off|gate_status|filament_color|slicer_color|r,g,b|_effect_]
ENTRY_EFFECT = [off|gate_status|filament_color|slicer_color|r,g,b|_effect_]
STATUS_EFFECT = [off|on|filament_color|slicer_color|r,g,b|_effect_]
LOGO_EFFECT = [off|r,g,b|_effect_]
REFRESH = [0|1] Force refresh of LED
QUIET = [0|1] Don't report non-essential status
UNIT = #(int)|_name_ Specify unit by name, number else will operate on all-units
(no parameters for status report)
Examples:
MMU_LED EXIT_EFFECT=filament_color LOGO_EFFECT=(.5,0,0) ...Set exit effect to filament_color and logo to dim red
MMU_LED ANIMATION=0 UNIT=1 ...Turn off animation for LED's on unit 1
MMU_LED ENABLE=0 ...Turn off LED's
MMU_LOAD¶
Loads filament on current tool/gate or optionally loads just the extruder for bypass or recovery usage (EXTRUDER_ONLY=1)
Parameters
EXTRUDER_ONLY = [0|1]
SKIP_PURGE = [0|1]
RESTORE = [0|1]
Examples:
MMU_LOAD ...Load filament from current gate
MMU_LOAD SKIP_PURGE=1 ...Load filament from current gate skipping purge macro
MMU_LOAD EXTRUDER_ONLY=1 ...Load filament into extruder (assumes filament is at extruder entrance)
MMU_LOG¶
Logs messages in MMU log
Parameters
MSG = _text_
ERROR = [0|1]
DEBUG = [0|1]
Examples:
MMU_LOG MSG="Loading complete" ...Write an informational message to console and mmu.log
MMU_LOG MSG="Gate 3 is empty" ERROR=1 ...Write an error message
MMU_LOG MSG="entering load sequence" DEBUG=1 ...Write a debug-level message (only shown when debugging enabled)
MMU_MOTORS_OFF¶
Turn off all MMU motors and servos
Examples:
MMU_MOTORS_OFF ...Turn off all MMU motors and servos so the mechanism can be moved by hand
MMU_MOTORS_ON¶
Turn on all MMU motors and servos
Examples:
MMU_MOTORS_ON ...Re-energize all MMU motors and servos
MMU_NFC¶
Control and inspect the MMU NFC/RFID readers
Parameters
SHARED = [0|1] Target the unit's shared reader
GATE = #(int) Target the reader for this gate (implies the unit)
GATES = g,g,g Target multiple gates' readers (don't mix with GATE/SHARED)
UNIT = #(int)/name Only needed to disambiguate multiple units with shared readers
ENABLE = [0|1] Top-level on/off for the reader (re-inits when enabled)
READ = [0|1] Read the addressed reader once and report the UID
DEEP = [0|1] With READ=1, also parse and report the tag metadata (ignores nfc_deep_read setting)
REGISTER = [0|1] Read tag (implies READ=1 DEEP=1) and resolve it in Spoolman (may auto-create). Shared reader: report-only, Per-gate: updates gate map
APPEND = [0|1] With REGISTER=1 on a gate that already has a spool assigned, bind the newly scanned tag onto that spool instead of resolving/auto-creating (e.g. a second tag on the same spool)
INIT = [0|1] (Re)initialize the addressed reader
RELEASE = [0|1] Release the current target on the addressed reader
INIT_ALL = [0|1] (Re)initialize every reader on every unit
DETAILS = [0|1] Include actual cached tag UIDs in the status report
(no parameters for status report of all readers)
Examples:
MMU_NFC ...Report status of all readers (which have a cached tag)
MMU_NFC DETAILS=1 ...As above but show the actual cached UIDs
MMU_NFC SHARED=1 ENABLE=0 ...Disable the shared reader
MMU_NFC GATE=3 READ=1 ...Read the reader on gate 3 and report the result
MMU_NFC SHARED=1 READ=1 DEEP=1 ...Read the shared reader and report the parsed tag metadata
MMU_NFC SHARED=1 REGISTER=1 ...Read tag and resolve/register it in Spoolman (report only, no assignment)
MMU_NFC GATE=2 REGISTER=1 ...Read tag on gate 2 and apply to the gate map (as if auto-scanned)
MMU_NFC GATE=2 REGISTER=1 APPEND=1 ...Read a 2nd tag on gate 2 and bind it onto the spool already assigned there
MMU_NFC GATE=2 INIT=1 ...(Re)initialize the reader on gate 2
MMU_NFC GATES=0,1,2,3 ENABLE=0 ...Disable selected per-gate readers
MMU_NFC INIT_ALL=1 ...Re-initialize every reader on all units
MMU_NFC_SCAN¶
Read the NFC/RFID spool tag for a gate by jogging filament to its reader
Parameters
GATE = #(int) Gate to scan (default: current gate)
Jogs the filament within the unit's 'nfc_gate_jog_scan_window' until the spool's
RFID tag reaches the gate's reader, reads it, then re-parks the filament.
Examples:
MMU_NFC_SCAN ...Jog and scan the RFID/NFC tag on the current gate
MMU_NFC_SCAN GATE=2 ...Jog and scan the RFID/NFC tag on gate 2
MMU_PAUSE¶
Pause the current print and lock the MMU operations
Parameters
MSG = _text_
FORCE_IN_PRINT = [0|1]
Examples:
MMU_PAUSE ...Pause the MMU and enter the error/recovery state
MMU_PAUSE MSG="Filament tangle" ...Pause with a custom reason shown to the user
MMU_PAUSE FORCE_IN_PRINT=1 ...Pause using in-print behaviour even when not detected as printing
MMU_PRELOAD¶
Preloads filament at specified or current gate
Parameters
GATE = #(int)
Examples:
MMU_PRELOAD ...Preload filament into the current gate
MMU_PRELOAD GATE=3 ...Preload filament into gate 3
MMU_RECOVER¶
Recover MMU tool/gate/filament state
Parameters
TOOL = t Optionally force the assignment of specified tool number
GATE = g Optionally force the assignment of the specified gate number (fixes TTG map)
BYPASS = 1 Used to force the assignment of the bypass Tool/Gate
LOADED = [0|1] Force unloaded or loaded (in the extruder) state
STRICT = 1 If auto-recovering state, allows extended tests including extruder heating
(no parameters for automatic filament position recovery)
Examples:
MMU_RECOVER ...automatically recover filament position
MMU_RECOVER LOADED=1 ...to indicate filament is in the extruder
MMU_RECOVER TOOL=2 GATE=3 ...to indicate T2 is currently loaded from gate 3
MMU_RELEASE¶
Ungrip filament in current gate
MMU_RESET¶
Forget persisted state and re-initialize defaults
Parameters
CONFIRM = [0|1] Must be set to 1 to proceed
Examples:
MMU_RESET CONFIRM=1 ...reset all persisted MMU state back to defaults
MMU_SELECT¶
Select the specified logical tool (following TTG map) or physical gate
Parameters
TOOL = #(int) Logical tool index (0..num_gates-1)
GATE = #(int) Physical gate index (0..num_gates-1)
BYPASS = [0|1]
QUIET = [0|1]
(must specify TOOL, GATE, or BYPASS)
Examples:
MMU_SELECT TOOL=2 ...Select tool 2 (moves selector to the mapped gate but does not load)
MMU_SELECT GATE=0 ...Select physical gate 0 directly
MMU_SELECT BYPASS=1 ...Select the bypass (for direct-to-extruder loading)
MMU_SENSORS¶
Query, or enable/disable, sensors fitted to mmu
Parameters
UNIT = #(int) Specify unit else unit with active gate will be assumed
SENSOR = _sensor_name_ Target one sensor by name; alone, reports just that sensor
ENABLE = [0|1] Persistently enable/disable the sensor named by SENSOR
Examples:
MMU_SENSORS ...report state of every sensor on all units, including disabled ones
MMU_SENSORS UNIT=1 ...report state of active sensors on unit index 1
MMU_SENSORS SENSOR=mmu_exit_0 ...report state of just that one sensor, even if disabled
MMU_SENSORS SENSOR=unit0:mmu_shared_exit ENABLE=0 ...persistently disable that sensor (sticky across restarts)
MMU_SENSORS SENSOR=mmu_exit_0 ENABLE=1 ...persistently re-enable it
MMU_SERVO¶
Move MMU servo to position specified position or angle
Parameters
UNIT = #(int) Optional, defaults to all units
RESET = 1 Clear saved calibration
SAVE = 1 Save current position against pos if calibrating
POS = [off|up|move|down]
MMU_SET_LED¶
Raw direct control of MMU leds for temporary changes (normally you want to use MMU_LED)
Parameters
GATE = #(int)
UNIT = #(int)|_name_ Specify unit by name or number. OMIT if GATE supplied
EXIT_EFFECT = [off|gate_status|filament_color|slicer_color|r,g,b|_effect_]
ENTRY_EFFECT = [off|gate_status|filament_color|slicer_color|r,g,b|_effect_]
STATUS_EFFECT = [off|on|filament_color|slicer_color|r,g,b|_effect_]
LOGO_EFFECT = [off|r,g,b|_effect_]
DURATION = #.#(float) seconds
FADETIME = #.#(float) seconds
Examples:
MMU_SET_LED EXIT_EFFECT=mmu_ready_orange GATE=2 DURATION=5 ...Set the exit LED on gate 2 to orange effect for 5 seconds then revert
MMU_SET_LED ENTRY_EFFECT=(1,1,1) GATE=4 ...Set the entry LED on gate 4 to solid white until state change
MMU_SLICER_TOOL_MAP¶
Display or define the tools used in print as specified by slicer
Parameters
DETAIL = 1 Log additional details to console
PURGE_MAP = 1 Display purge map
SPARSE_PURGE_MAP = 1 Display purge map for only toolchanges possible in print
RESET = 1 Reset/clear slicer map
INITIAL_TOOL = t Specify the initial tool for the print
TOTAL_TOOLCHANGES= # Configure how many toolchanges are in the print
TOOL = t Specify tool number
MATERIAL = _text_ Filament material type
COLOR = _text_ Filament color
NAME = _text_ Filament name
TEMP = # Tool extruder temperature
USED = [0|1] Whether tool being specified is used in print
PURGE_VOLUMES = Command separated list of volumes (length: single, n_tool, 2x_n_tool, nxn_tool)
NUM_SLICER_TOOLS = # (optional, <= num_gates)
AUTOMAP = [none|filament_name|spool_id|material|closest_color|color] Set automap strategy
SKIP_AUTOMAP = 1 Skip automap for next print (one-print option)
(no parameters for status report)
Examples:
MMU_SLICER_TOOL_MAP PURGE_MAP=1 ...Display the current purge volume matrix
--- Generally this is done by the Happy Hare print start macros ---
MMU_SLICER_TOOL_MAP INITIAL_TOOL=0 ...Set initial tool to 0
MMU_SLICER_TOOL_MAP TOOL=0 COLOR=990304 TEMP=214 MATERIAL=pla ...Set tool 0 color, temp and type
MMU_SLICER_TOOL_MAP AUTOMAP=kkkkpla ...Set tool 0 color, temp and type
MMU_SPOOLMAN¶
Manage spoolman status / gate-spool assignment
Parameters
QUIET = [0|1] Suppress non-critical console output
SYNC = 1 Sync the local and remote (spoolman) gate maps
CLEAR = 1 Clear all gate/spool assignments for this printer in the spoolman db
REFRESH = 1 Rebuild spoolman's cache of this printer's assignments, then sync (unless SYNC= is also given)
FIX = 1 With REFRESH=, also unassign any inconsistent spool/gate pairs found (partial or duplicate assignments)
SPOOLID = #(int) Spoolman spool id
GATE = #(int) Gate number
PRINTER = _name_ Show another printer's gate/spool assignments instead of this one
SPOOLINFO = [-1|spool_id] Display spoolman details for a spool (0 = the active spool)
(no parameters to show the current spoolman gate/spool assignments)
Examples:
MMU_SPOOLMAN ...Show the current spoolman gate/spool assignments
MMU_SPOOLMAN REFRESH=1 ...Refresh the local gate map from the spoolman database
MMU_SPOOLMAN GATE=0 SPOOLID=45 ...Assign spoolman spool id 45 to gate 0
MMU_SPOOLMAN GATE=0 ...Unassign whichever spool is on gate 0
MMU_SPOOLMAN SPOOLID=45 ...Unassign spool id 45 from whichever gate it's on
MMU_SPOOLMAN SPOOLINFO=45 ...Display spoolman details for spool id 45
MMU_SPOOLMAN SPOOLINFO=-1 ...Display spoolman details for active spool
See MMU_SPOOLMAN_TAG to register a tag/UID onto a spool record.
MMU_SPOOLMAN_TAG¶
Register an NFC/RFID tag UID onto a spoolman spool record
Parameters
QUIET = [0|1] Suppress non-critical console output
SPOOLID = #(int) Spoolman spool id to register the tag against
GATE = #(int)|LAST Gate whose assigned spool (RFID=) or recorded tag (REGISTER=) to use. If omitted implies current gate
RFID = _uid_ (or comma-separated UIDs) to write onto the spool. RFID='' to clear
APPEND = 1 Add to the existing UID(s) instead of replacing them
REGISTER = 1 Bind the gate's already-recorded UID onto SPOOLID (needs spoolman_support != pull)
Examples:
MMU_SPOOLMAN_TAG SPOOLID=45 RFID=E2003412 ...Register tag E2003412 against spool id 45 in the spoolman db (replaces any existing tags)
MMU_SPOOLMAN_TAG SPOOLID=45 RFID=E2003499 APPEND=1 ...Register a second tag on the same spool (e.g. one on each side), keeping E2003412
MMU_SPOOLMAN_TAG SPOOLID=45 RFID='' ...Clear all tags registered against spool id 45
MMU_SPOOLMAN_TAG GATE=0 RFID=E2003412 ...Same, for whichever spool is assigned to gate 0
MMU_SPOOLMAN_TAG GATE=3 SPOOLID=87 REGISTER=1 ...Bind gate 3's already-known tag uid to newly-created spool 87
MMU_SPOOLMAN_TAG GATE=LAST SPOOLID=87 REGISTER=1 ...Bind last gate preloaded already-known tag uid to spool 87
MMU_SPOOLMAN_TAG SPOOLID=87 REGISTER=1 ...Bind currently selected gate's tag uid to spool 87
See MMU_SPOOLMAN read or change gate-spool assignment in spoolman
MMU_STATS¶
Dump and optionally reset the MMU statistics
Parameters
RESET = [0|1]
TOTAL = [0|1]
DETAIL = [0|1]
QUIET = [0|1]
SHOWCOUNTS = [0|1]
COUNTER = _name_
DELETE = [0|1] (with COUNTER)
LIMIT = #(int) (with COUNTER)
INCR = #(int) (with COUNTER)
WARNING = _text_ (with COUNTER)
PAUSE = [0|1] (with COUNTER)
Examples:
MMU_STATS ...Show swap/job statistics summary
MMU_STATS DETAIL=1 ...Show detailed statistics including per-gate breakdown
MMU_STATS RESET=1 ...Reset all statistics and counters
MMU_STATS COUNTER=blade INCR=1 ...Increment a user-defined counter named 'blade'
MMU_STATS COUNTER=blade LIMIT=3000 WARNING="Replace cutter blade" ...Configure a maintenance counter with limit and warning
MMU_STATUS¶
Complete dump of current MMU state and important configuration
Parameters
SHOWCONFIG = [0|1]
DETAIL = [0|1]
Examples:
MMU_STATUS ...Show current MMU state (gates, tool, filament position)
MMU_STATUS DETAIL=1 ...Show verbose status including per-gate detail
MMU_STATUS SHOWCONFIG=1 ...Also display the key configuration values in use
MMU_SYNC_FEEDBACK¶
Controls sync feedback and applies filament tension adjustments
Parameters
UNIT = #(int)|_name_ Implied by gate else specify name or number
ENABLE = [1|0] enable/disable sync feedback control
RESET = 1 reset sync controller and return RD to last known good value
ADJUST_TENSION = 1 apply correction to neutralize filament tension
AUTOTUNE = [1|0] allow saving of autotuned rotation distance
(no parameters for status report)
Examples:
MMU_SYNC_FEEDBACK ...Report sync feedback controller status
MMU_SYNC_FEEDBACK ENABLE=1 ...Enable sync feedback control on the active unit
MMU_SYNC_FEEDBACK ENABLE=0 ...Disable sync feedback control
MMU_SYNC_FEEDBACK RESET=1 ...Reset the controller and restore last known good rotation distance
MMU_SYNC_GEAR_MOTOR¶
Sync the MMU gear motor to the extruder stepper
Parameters
SYNC = [0|1] Specify whether to force extruder/mmu syncing out of a print
(no parameters will default SYNC=1)
Examples:
MMU_SYNC_GEAR_MOTOR ...Sync the gear motor to the extruder (SYNC defaults to 1)
MMU_SYNC_GEAR_MOTOR SYNC=1 ...Force the gear motor synced to the extruder
MMU_SYNC_GEAR_MOTOR SYNC=0 ...Unsync the gear motor from the extruder
MMU_TOOL_OVERRIDES¶
Displays, sets or clears tool speed and extrusion factors (M220 & M221)
Parameters
TOOL = t Specifies tool. Defaults to all tools if not specified
M220 = #(1-200) Speed multiplier percent (100 = unchanged)
M221 = #(1-200) Extrusion multiplier percent (100 = unchanged)
RESET = [0|1] Reset overrides to 100%% for tool (defaults to all tools if TOOL is not specified)
(no parameters for status)
Examples:
MMU_TOOL_OVERRIDES ...Show current per-tool speed/extrusion overrides
MMU_TOOL_OVERRIDES TOOL=2 M220=95 M221=98 ...Set tool 2 to 95% speed and 98% extrusion
MMU_TOOL_OVERRIDES RESET=1 ...Reset overrides to 100% for all tools
MMU_TOOL_OVERRIDES TOOL=2 RESET=1 ...Reset overrides to 100% for tool 2 only
MMU_TTG_MAP¶
aka MMU_REMAP_TTG Display or remap a tool to a specific gate and set gate availability
Parameters
QUIET = 1 To minimize console reporting
RESET = 1 To reset filament attributes to configured defaults
DETAIL = 1 Include additional details like EndlessSpool grouping
MAP = g,g,g Comma separated list of gates where index is the tool number. For bulk update
GATE = g
GATE = g Specify the gate
TOOL = t Specify the tool
AVAILABLE = [0|1] Optionally specify the filament availablity in the gate
(no parameters for status report)
Examples:
MMU_TTG_MAP TOOL=2 GATES=5 ...Map T2 to gate 5
MMU_TTG_MAP RESET=1 ...Reset TTG map to configured default (generally, Tx > gate_x for all gates
MMU_TTG_MAP MAP=0,0,0,0 ...Quickly map all tools (on 4 gate MMU) to the same gate 0 (forced MMU print to single filament)
MMU_UNLOAD¶
Unloads filament and parks it at the gate or optionally unloads just the extruder (EXTRUDER_ONLY=1)
Parameters
EXTRUDER_ONLY = [0|1] Act only on extruder (implied for bypass)
SKIP_TIP = [0|1] Force skipping of tip forming / cutting
RESTORE = [0|1] Set to 0 to disable restoring toolhead position after unload
Examples:
MMU_UNLOAD ...Unload filament from current gate
MMU_UNLOAD SKIP_TIP=1 ...Unload filament from current gate skipping purge macro
MMU_UNLOCK¶
Wakeup the MMU prior to resume to restore temperatures and timeouts
Parameters
(no parameters)
Examples:
MMU_UNLOCK ...Wake the MMU after an error/pause to restore heater temperatures and timeouts prior to resume
CALIBRATION/TESTING¶
MMU_CALIBRATE_BOWDEN¶
Calibration of reference bowden length for selected gate
Parameters
REPEATS = #(count) Number of repetitions (default: 3, min: 1, max: 10)
SAVE = [0|1] Save calibration (default: 1)
MANUAL = [0|1] Use manual calibration method (default: 0)
COLLISION = [0|1] Force collision method (requires encoder) (default: 0)
RESET = [0|1] Clear saved bowden length (default: 0)
HOMING_MAX = #(mm) Extruder homing maximum (default: 150)
BOWDEN_LENGTH = #(mm) Approx bowden length (slightly < actual if using COLLISION)
Examples:
MMU_CALIBRATE_BOWDEN ...calibrate bowden in current gate
MMU_CALIBRATE_BOWDEN MANUAL=1 ...calibrate bowden in reverse from manually placed filament at extruder gear
MMU_CALIBRATE_BOWDEN SAVE=0 ...measure bowden using default scheme but don't save the results
MMU_CALIBRATE_BOWDEN RESET=1 ...reset calibrated bowden for current gate. (allows first-time auto calibration)
MMU_CALIBRATE_ENCODER¶
Calibration routine for the MMU encoder
Parameters
UNIT = #(int)|_name_ Specify unit by name, number (optional if single unit)
LENGTH = #(mm) Commanded distance (default: 400)
REPEATS = #(count) Number of repetitions (default: 3, min: 1, max: 10)
SPEED = #(mm/s) Move speed
ACCEL = #(mm/s^2) Move accel
MINSPEED = #(mm/s) Minimum speed, speed of first repeat (default: SPEED)
MAXSPEED = #(mm/s) Maximum speed, speed of last repeat (default: SPEED)
SAVE = [0|1] Save calibration (default: 1)
Examples:
MMU_CALIBRATE_ENCODER LENGTH=200 REPEATS=5 ...average over 5 repetitions with a move length of 200mm
MMU_CALIBRATE_ENCODER SAVE=0 ...perform default calibration but don't save result
MMU_CALIBRATE_ENCODER MINSPEED=100 MAXSPEED=300 ...calibrate over default three moves of increasing speeds
MMU_CALIBRATE_GATE¶
Optional calibration of rotational distance using calibrated encoder and gate 0 reference
Parameters
UNIT = #(int)|_name_ Specify unit by name, number (only required if ALL=1 and multi-unit)
LENGTH = #(mm) Commanded distance (default: 400)
REPEATS = #(count) Number of repetitions (default: 3, min: 1, max: 10)
ALL = [0|1] Calibrate all gates (same as MMU_CALIBRATE_GATES alias)
GATE = #(index) Gate to calibrate (defaults to current gate unless ALL=1)
SAVE = [0|1] Save calibration (default: 1)
RESET = [0|1] Reset gate rotation_distance
Examples:
MMU_CALIBRATE_GATE ...default calibration procedure of rd for current gate
MMU_CALIBRATE_GATE GATE=2 LENGTH=200 ...calibrate rd for gate 2 using a shorter than default 200mm movement
MMU_CALIBRATE_GATE ALL=1 LENGTH=200 SAVE=0 ...calibrate all gates unit in sequence, report but don't save results
MMU_CALIBRATE_GATE RESET=1 ...reset the rotation distance for gate (or current gate) to default
MMU_CALIBRATE_GATE RESET=1 ALL=1 ...reset rd on all gates except first (reference) gate
MMU_CALIBRATE_GEAR¶
Calibration routine for gear stepper rotational distance of selected gate
Parameters
MEASURED = #(mm) Measured moved distance
LENGTH = #(mm) Commanded distance (default: 100, min: 50)
SAVE = [0|1] Save calculated rotation_distance (default: 1)
RESET = [0|1] Reset rotation_distance to default for selected gate (default: 0)
Examples:
MMU_CALIBRATE_GEAR MEASURED=96.5 ...measured 96.5mm on default 100mm move
MMU_CALIBRATE_GEAR LENGTH=200 MEASURED=202 ...moved 200mm and measured 202mm
MMU_CALIBRATE_GEAR RESET=1 ...reset rotation distance for current gate to default
MMU_CALIBRATE_PSENSOR¶
Calibrate analog proportional sync-feedback sensor
Parameters
MOVE = #(mm) Movement range used to search limits (default: buffer_maxrange, min: 1, max: 100)
Examples:
MMU_CALIBRATE_PSENSOR ...perform calibration using default movement
MMU_CALIBRATE_PSENSOR MOVE=30 ...calibrate using a longer filament movement - for larger buffers
(filament must be loaded in extruder before running)
MMU_CALIBRATE_ROTARY_SELECTOR¶
Calibration of the selector positions or position of specified gate
Parameters
UNIT = #(int) Optional if only one unit fitted to printer
GATE = #(int) Optional, default all gates on unit
SAVE = [0|1] Whether to persist the calibration results
SINGLE = [0|1] Set to force the calibration of a single position only
QUICK = [0|1] Calibrate all offsets based on CAD geometry (good for initial setup)
MMU_CALIBRATE_SELECTOR¶
Calibration of the linear selector positions or position for specified gate
Parameters
UNIT = #(int) Optional if only one unit fitted to printer
GATE = #(int) Optional, default all gates on unit
AUTO = [0|1] Force fully automatic calibration (have first gate selected)
SAVE = [0|1] Whether to persist the calibration results (default: 1)
EXTRAPOLATE = [0|1] Whether to try to extrapolate remaining gate positions
RESET = [0|11 To reset all calibration for MMU unit
BYPASS = [0|1] Specify bypass gate instead of regular gate
BYPASS_BLOCK = [0|1] Special: If bypass block exists on ERCFv1.1 only
Examples:
MMU_CALIBRATE_SELECTOR GATE=8 SAVE=0 ...calibrate logical gate 8 position, display but don't save results
MMU_CALIBRATE_SELECTOR UNIT=1 BYPASS=1 ...calibrate the bypass gate position on unit 1
MMU_CALIBRATE_SELECTOR AUTO=1 ...perform fully automatic calibration of all gates (first gate selected)
MMU_CALIBRATE_SELECTOR SAVE=0 ...perform automatic calibration and show results but don't save
MMU_CALIBRATE_SELECTOR GATE=8 EXTRAPOLATE=1 ...calibrate logical gate 8 position, extrapolate other gates if possible
MMU_CALIBRATE_SELECTOR AUTO=1 BYPASS_BLOCK=2 ...auto calibrate old ERCFv1.1 with bypass block on second leg!
MMU_CALIBRATE_SELECTOR_INDEXES¶
Calibrate selector index gate sequence and endstop widths
Parameters
UNIT = #(int) Optional if only one unit fitted to printer
SAVE = [0|1] Whether to persist the calibration results (default: 1)
RESET = [0|1] Reset selector index calibration
Examples:
MMU_CALIBRATE_SELECTOR_INDEXES ...detect selector index gate order and endstop widths
MMU_CALIBRATE_SELECTOR_INDEXES SAVE=0 ...detect and report results but don't save
MMU_CALIBRATE_SELECTOR_INDEXES UNIT=1 ...calibrate selector indexes on unit 1
MMU_CALIBRATE_SELECTOR_INDEXES RESET=1 ...reset selector index calibration
MMU_CALIBRATE_SERVO_SELECTOR¶
Calibration of the selector servo angle for specified gate(s)
Parameters
UNIT = #(int) Optional if only one unit fitted to printer
ANGLE = #(int) Move servo to designated angle
GATE = #(int) Specify the gate by it's global logical index
LGATE = #(int) Speficy gate by the local mmu unit index (same as GATE with single MMU unit)
SAVE = 1 To persist the calibration results else they will just be reported
SINGLE = 1 To force the calibration of a single gate only
SPACING = #(int) Angle between gates for quick setting all gates
BYPASS = 1 To specify intention to define the bypass gate angle (if fitted)
RELEASE = 1 To specify intention to define a fixed release angle
RESET = 1 To remove calibrated settings and default to configured starting values
(no options to show the current calibration)
Examples:
MMU_CALIBRATE_SERVO_SELECTOR ...Report on current calibration
MMU_CALIBRATE_SERVO_SELECTOR ANGLE=83 ...Set servo to angle of 83°
MMU_CALIBRATE_SERVO_SELECTOR GATE=5 SINGLE=1 ...Save current servo angle as position for gate 2
MMU_CALIBRATE_SERVO_SELECTOR LGATE=0 SPACING=25 SAVE=0 ...Use current angle for local gate 0, space others at 25° intervals. Report but don't save results
MMU_CALIBRATE_SERVO_SELECTOR RELEASE=1 ...Save the current angle for a fixed release position
MMU_CALIBRATE_TOOLHEAD¶
Automated measurement of key toolhead parameters
Parameters
UNIT = #(int)|_name_ Specify unit by name, number (optional if single unit)
CLEAN = [0|1] Measure clean nozzle dimensions (after cold pull)
DIRTY = [0|1] Measure residual filament (dirty nozzle)
CUT = [0|1] Measure blade position (hold cutter closed)
SAVE = [0|1] Persist results in active config (default: 1)
Reminder - run with this sequence of options:
1) CLEAN=1 with clean extruder for: toolhead_extruder_to_nozzle, toolhead_sensor_to_nozzle (and toolhead_entry_to_extruder)
2) DIRTY=1 with dirty extruder (uncut tip fragment) for: toolhead_residual_filament (and toolhead_entry_to_extruder)
3) CUT=1 holding blade in for: variable_blade_pos
Desired gate should be selected but the filament unloaded
(SAVE=0 to run without persisting results)
Note: On Type-B MMUs you might experience noise/grinding as movement limits are explored
(select bypass or reduce gear stepper current if a problem)
Examples:
MMU_CALIBRATE_TOOLHEAD CLEAN=1 ...Step 1: measure clean nozzle dimensions (after cold pull)
MMU_CALIBRATE_TOOLHEAD DIRTY=1 ...Step 2: measure residual filament with a dirty nozzle
MMU_CALIBRATE_TOOLHEAD CUT=1 ...Step 3: measure blade position (hold the cutter closed)
MMU_CALIBRATE_TOOLHEAD CLEAN=1 SAVE=0 ...Measure but don't persist the result to config
MMU_SOAKTEST_LOAD_SEQUENCE¶
Soak test tool load/unload sequence
Parameters
UNIT = #(int)|_name_ Optional to constrain test to specific unit
LOOP = #(int) How many times to do complete T0-Tx test loops (default 1)
RANDOM = 1 Randomize tool selection (tools may be skipped)
FULL = [0|1] Whether to perform full load to extruder enntry or quick partial bowden load
Examples:
MMU_SOAKTEST_LOAD_SEQUENCE LOOP=2 ...Loop sequentially through all tools twice performing partial bowden load
MMU_SOAKTEST_LOAD_SEQUENCE UNIT=1 FULL=1 ...Loop through all tools on unit 1 loading filament to extruder entrance each time
MMU_SOAKTEST_SELECTOR¶
Soak test of selector movement
Parameters
UNIT = #(int) Optional if only one unit fitted to printer
LOOP = #(int) Test loops (default 10)
GRIP = [0|1] Force filament gripping after selection where optional
HOME = [0|1] Randomized homing
Examples:
MMU_SOAKTEST_SELECTOR UNIT=1 LOOP=1000 ...make 1000 gate selections on unit 1
MMU_SOAKTEST_SELECTOR HOME=1 ...randomly home whilst testing selection on current unit
MMU_SOAKTEST_SELECTOR GRIP=1 ...force filament grip after selection (where servo/gripping available)
MMU_TEST_BUZZ_MOTOR¶
Simple buzz the selected motor (default gear) for setup testing
Parameters
MOTOR = [gear|gears|<selector_motor_name>]
Examples:
MMU_TEST_BUZZ_MOTOR ...Buzz the gear motor (default) to confirm wiring/direction
MMU_TEST_BUZZ_MOTOR MOTOR=gears ...Buzz the gear motor at every gate in turn
MMU_TEST_BUZZ_MOTOR MOTOR=selector ...Buzz the selector motor (exact name depends on MMU type)
MMU_TEST_CONFIG¶
Runtime adjustment of MMU configuration for testing or in-print tweaking purposes
Parameters
UNIT = #(int)|_name_ Specify unit by name, number (optional if single unit or changing shared parameters))
ALL = [0|1] Report all parameters even if not in user configfile (i.e system default values)
QUIET = [0|1] Suppress non essential console messages
(no parameters to dump of current settings)
Examples:
MMU_TEST_CONFIG extruder_homing_max=150 log_level=2 ...set the extruder_homing_max parameter to 150 and console logging to 2 (debug) level
MMU_TEST_CONFIG toolhead_ooze_reduction=2.5 QUIET=1 ...silently set toolhead_ooze_reduction
MMU_TEST_CONFIG UNIT=1 sync_to_extruder=1 ...turn on extruder syncing for mmu unit 1
MMU_TEST_FORM_TIP¶
Convenience macro for calling the standalone tip forming functionality (or cutter logic)
Parameters
RESET = 1 To reset macro parameters to defaults
SHOW = [0|1]
RUN = [0|1]
EXTRUDER_ONLY = 1 To prevent syncing with MMU
(also accepts macro variable overrides; can use 'variable_' prefix or omit it)
Examples:
MMU_TEST_FORM_TIP ...Run the standalone tip forming sequence for tuning
MMU_TEST_FORM_TIP SHOW=1 ...Display the current tip forming macro parameters
MMU_TEST_FORM_TIP EXTRUDER_ONLY=1 ...Form a tip without syncing the MMU gear motor
MMU_TEST_FORM_TIP RESET=1 ...Reset the tip forming macro parameters to their defaults
MMU_TEST_GRIP¶
Test the MMU grip for a Tool
Examples:
MMU_TEST_GRIP ...Exercise the filament grip/servo for the current tool to verify operation
MMU_TEST_HOMING_MOVE¶
Test filament homing move to help debug setup / options
Parameters
ALLOW_BYPASS = [0|1] Ignore bypass check
MOVE = mm Specify the move distance (default 100)
ENDSTOP = _endstop_name_
ENDSTOPS = Comma separated list of endstops (only physical switch endstop possible)
STOP_ON_ENDSTOP = [-1|0|1] 1 for extrude, -1 for retract, 0 for don't stop
SPEED = mm/s Optionally override the default speed
ACCEL = mm/s^2 Optionally override the default accelarateion
MOTOR = [gear|extruder|gear+extruder] Select motor to operation on (default: gear)
WAIT = [0|1] Wait for move to complete (make move synchronous)
DEBUG = [0|1] Turn on developer stepper movement debugging
Examples:
MMU_TEST_HOMING_MOVE MOVE=50 ENDSTOP=extruder STOP_ON_ENDSTOP=1 ...Home up to 50mm in the extrude direction onto the extruder entry sensor
MMU_TEST_HOMING_MOVE MOVE=100 MOTOR=gear ENDSTOP=encoder STOP_ON_ENDSTOP=1 ...Home the gear motor up to 100mm using the encoder as endstop
MMU_TEST_HOMING_MOVE MOVE=-100 ENDSTOP=toolhead STOP_ON_ENDSTOP=-1 ...Home up to 100mm in the retract direction off the toolhead sensor
MMU_TEST_LOAD¶
For quick testing filament loading from gate to the extruder
Parameters
FULL = [0|1]
LENGTH = #(float) Bowden move length (when FULL=0)
Examples:
MMU_TEST_LOAD ...Test load a short default distance from the gate
MMU_TEST_LOAD LENGTH=50 ...Test load 50mm of bowden movement from the gate
MMU_TEST_LOAD FULL=1 ...Test a full load from gate to the extruder
MMU_TEST_MOVE¶
Test filament move to help debug setup / options
Parameters
ALLOW_BYPASS = [0|1] Ignore bypass check
MOVE = mm Specify the move distance (default 100)
SPEED = mm/s Optionally override the default speed
ACCEL = mm/s^2 Optionally override the default accelarateion
MOTOR = [gear|extruder|gear+extruder|synced] Select motor to operation on (default: gear)
GRIP = 1 To retain grip on filament after move for type-A testing
WAIT = 0 Don't wait for move to complete (default 1 makes move synchronous)
DEBUG = 1 Turn on developer stepper movement debugging
Examples:
MMU_TEST_MOVE SPEED=100 ...Move filament default 100mm at 100mm/s speed
MMU_TEST_MOVE MOVE=50 MOTOR=gear+extruder ...Move filament 50mm sync extruder synced to gear
MMU_TEST_MOVE MOVE=100 GRIP=1 ...Move filament 100mm retaining filament grip (useful for MMU_CALIBRATE_GEAR on type-A)
MMU_TEST_PURGE¶
Convenience macro for calling the standalone purging macro
Parameters
LAST_TOOL = t
NEXT_TOOL = t
EXTRUDER_ONLY = 1 To prevent syncing with MMU
Examples:
MMU_TEST_PURGE ...Run the standalone purge macro for the current tool
MMU_TEST_PURGE LAST_TOOL=0 NEXT_TOOL=2 ...Purge using the volume calculated for a change from tool 0 to tool 2
MMU_TEST_PURGE EXTRUDER_ONLY=1 ...Purge without syncing the MMU gear motor
MMU_TEST_RUNOUT¶
Manually invoke the clog/runout detection logic for testing
Parameters
TYPE = _event_type_ (optional, e.g. runout or clog)
Examples:
MMU_TEST_RUNOUT ...Simulate a filament runout to test detection/EndlessSpool handling
MMU_TEST_RUNOUT TYPE=clog ...Simulate a clog event instead of a runout
MMU_TEST_TRACKING¶
Test the tracking of gear feed and encoder sensing
Parameters
DIRECTION = [-1|1] Move in retract or extruder direction
STEP = #(float) mm of filament movement between encoder samples
SENSITIVITY = #(float) Override the default/calibrated encoder resolution
Examples:
MMU_TEST_TRACKING ...Run the gear-feed vs encoder tracking test
MMU_TEST_TRACKING STEP=2 ...Sample the encoder every 2mm of filament movement
MMU_TEST_TRACKING DIRECTION=-1 STEP=1 ...Test tracking in the retract direction with 1mm steps
MACROS¶
MMU_CHANGE_TOOL_STANDALONE¶
Convenience macro for inclusion in print_start for initial tool load
MMU_END¶
Called when ending print to finalize MMU
MMU_PRINT_END¶
Forces clean up of state after after print end
Parameters
IDLE_TIMEOUT = [0|1] Internally set if called by klipper idle_timeout
STATE = [complete|error|cancelled|ready|standby] End state, defaults to complete
Call without parameters at the end of your print in the slicer's gcode end block
Examples:
MMU_PRINT_END ...Clean up MMU state after a normal (complete) print
MMU_PRINT_END STATE=cancelled ...Clean up after a cancelled print
MMU_PRINT_START¶
Forces initialization of MMU state ready for print (usually automatic)
Call at the start of your print in the slicer's gcode start block
Examples:
MMU_PRINT_START ...Initialize MMU state ready for a print
MMU_START_CHECK¶
Helper macro. Can be called to perform pre-start checks on MMU based on slicer requirements
MMU_START_LOAD_INITIAL_TOOL¶
Helper to load initial tool if not paused
MMU_START_SETUP¶
Called when starting print to setup MMU
MMU_UPDATE_HEIGHT¶
Record maximum toolhead height for z-hop base (call on layer change for sequential printing)
CALLBACKS/HOOKS¶
_MMU_ACTION_CHANGED¶
Called when an action has changed
_MMU_EVENT¶
Called when certain MMU actions occur
_MMU_POST_FORM_TIP¶
Optional post tip forming/cutting routing
_MMU_POST_LOAD¶
Optional post load routine for filament change
_MMU_POST_PRELOAD¶
Optional post preload routine for filament change
_MMU_POST_UNLOAD¶
Optional post unload routine for filament change
_MMU_PRE_LOAD¶
Optional pre load routine for filament change
_MMU_PRE_UNLOAD¶
Optional pre unload routine for filament change
_MMU_PRINT_STATE_CHANGED¶
Called when print state changes
OTHER/ALIAS¶
MMU_SELECT_BYPASS¶
Select the filament bypass (alias for MMU_SELECT BYPASS=1)
Examples:
MMU_SELECT_BYPASS ...Select the bypass so filament can be loaded straight into the extruder