Moonraker + Spoolman
FilaSpool Integration Guide

How to connect Spoolman, Moonraker, Orca Slicer, and FilaSpool for automatic spool tracking on supported Klipper printers.

Third-Party Software Notice

FilaSpool is not affiliated with, endorsed by, or a contributor to Spoolman, Moonraker, Klipper, Snapmaker, FlashForge, Orca Slicer, xblax firmware, or any other third-party project mentioned on this page.

Important Disclaimer

This setup has been tested on:
  • Snapmaker U1 running PAXX12 extended firmware
  • FlashForge AD5M / AD5M Pro running the xblax Klipper mod

Other printers, firmware versions, or Moonraker setups may behave differently.

The AD5M setup is simpler because the printer is single-tool and does not require slicer tool/color-slot mapping.

What This Setup Does

Supported Configurations

Printer Firmware Multi-Tool
Snapmaker U1 PAXX12 Extended Firmware Yes
FlashForge AD5M / AD5M Pro xblax Klipper Mod No

Step 1 — Configure Moonraker

[spoolman]
server: http://192.168.40.158:7912
sync_rate: 5

Restart Moonraker after saving the file.

Snapmaker U1 — Multi-Tool Macro File

[gcode_macro SET_TOOL_SPOOL]
description: Assign Spoolman spool ID to slicer tool/color slot
variable_spool_map: {0: None, 1: None, 2: None, 3: None}
gcode:
  {% set tool = params.TOOL|int %}
  {% set spool = params.ID|int %}
  {% set new_map = printer["gcode_macro SET_TOOL_SPOOL"].spool_map.copy() %}
  {% set _ = new_map.update({tool: spool}) %}
  SET_GCODE_VARIABLE MACRO=SET_TOOL_SPOOL VARIABLE=spool_map VALUE="{new_map}"

[gcode_macro ACTIVATE_SPOOL_FOR_TOOL]
gcode:
  {% set tool = params.TOOL|int %}
  {% set spool_map = printer["gcode_macro SET_TOOL_SPOOL"].spool_map %}
  {% set spool_id = spool_map[tool] %}

  {% if spool_id != None %}
    {action_call_remote_method(
       "spoolman_set_active_spool",
       spool_id=spool_id
    )}
  {% endif %}
Do not override T0/T1/T2/T3 macros on the Snapmaker U1 firmware.

AD5M / AD5M Pro — Spoolman Macros

[gcode_macro SET_ACTIVE_SPOOL]
description: Set active spool in Spoolman
gcode:
    {% if params.ID %}
        {action_call_remote_method(
            "spoolman_set_active_spool",
            spool_id=params.ID|string)}
    {% endif %}

[gcode_macro CLEAR_ACTIVE_SPOOL]
description: Clear active spool
gcode:
    {action_call_remote_method(
        "spoolman_set_active_spool",
        spool_id="")}

Add this line to printer.cfg:

[include spoolman.cfg]

AD5M / AD5M Pro — Orca Slicer Setup

Setting Value
G-code Flavor Klipper
Host Type Moonraker
Moonraker Port 7125

Recommended Start G-code:

START_PRINT EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single]

Recommended End G-code:

END_PRINT
Remove the stock FlashForge start/end G-code when switching to the xblax Klipper mod.

Testing

Test Spoolman activation from the Klipper console:

SET_ACTIVE_SPOOL ID=27

For Snapmaker U1:

SET_TOOL_SPOOL TOOL=0 ID=27
ACTIVATE_SPOOL_FOR_TOOL TOOL=0

Optional — Remote Access with Tailscale

The AD5M and AD5M Pro can optionally be connected to Tailscale for secure remote access to:

The xblax firmware runs on a lightweight Buildroot Linux environment. Some standard Linux tools and package managers may not be available.

Summary

Snapmaker U1:
FilaSpool → Moonraker → Klipper multi-tool macros → Spoolman

FlashForge AD5M / AD5M Pro:
FilaSpool → Moonraker → Klipper macros → Spoolman

FilaSpool assigns Spoolman spool IDs to the printer. Moonraker and Klipper then activate and track the correct spool automatically during printing.