Automatic filament metadata sync and spool tracking via Spoolman.
Enable via Fluidd/Mainsail settings under Snapmaker Components > Spoolman Integration, set the Spoolman host, and reboot. Set the same toggle to Disabled to turn it off.
Community apps that support SpoolLink, so scanning a tag resolves its spool automatically when the filament is loaded:
| App | Author | Platform | Reads | SpoolLink support | Legacy Spools | Source | Support the author |
|---|---|---|---|---|---|---|---|
| SpoolLink (Android) | paxx12 | Android (releases; or build from source) | OpenSpool; any tag by UID (NTAG, Mifare Classic) | Reference implementation — links tags to spools by UID, pre-fills from OpenSpool tags | ✅ (see notes) | GitHub (GPL-3.0) | — |
| SpoolLink (iOS) | paxx12 | iOS (releases IPA — sideload via AltStore or similar; building from source requires a paid Apple Developer account for the NFC entitlement) | OpenSpool; any tag by UID (NTAG only — no Mifare Classic on iOS) | Reference implementation — links tags to spools by UID, pre-fills from OpenSpool tags | ✅ (see notes) | GitHub (GPL-3.0) | — |
| SpoolPainter | ni4223 | Android (Google Play) | OpenSpool; Bambu Lab, Snapmaker, QIDI, Anycubic, Elegoo, Creality (vendor decode + prefill; Bambu Lab and Creality need a per-brand key); any tag by UID for pairing | Links tags to spools; create-and-pair spools, multi-tag binding, vendor tag pairing | ✅ (see notes) | GitHub (GPL-3.0) | |
| SpoolKid | Marco | iOS (TestFlight beta; build from source) | OpenSpool, OpenTag3D, ELEGOO, Anycubic ACE; any other tag by UID (including Mifare Classic) | Links tag UIDs to spools, including UID-only linking for Mifare Classic and other tags it can’t otherwise read | – | GitHub (MIT) | |
| SpoolTagger | NiftyBits | Windows, Linux (desktop, ACR122U USB NFC reader; releases) | OpenSpool (NTAG); Mifare Classic by UID only | Links tags to spools (up to 2 tags per spool) | ✅ (see notes) | Codeberg (MIT) | |
| 3DMRP | MKloberg | Self-hosted (Windows; releases), phone via Chrome on Android | Any tag by UID (Web NFC scan-to-select; no content parsing) | Print-farm manager — links tags to spools, NFC scan-to-select; also AFC lane control and U1 touchscreen mirror | – (see notes) | GitHub (source) | |
| Spool Studio | GeorgHo | Android | OpenSpool; Bambu Lab (with user-provided key); legacy Spool Studio tags (for conversion); any tag by UID | Links tags to spools via NFC card UID; writes Paxx12-compatible OpenSpool tags and shows the printer-reported toolhead status | ✅ (see notes) | GitHub (MIT) | — |
Notes:
spool_id is linked to that spool automatically.spool_id
resolves its spool and offers to re-pair it.Community hardware readers push detected tags to the same
filament_detect/set webhook the printer’s built-in readers use. For a tag
to resolve a Spoolman spool by UID, the reader must report the UID for every
detected tag — even one it can’t otherwise read — the same way
OpenRFID falls back to a UID-only report
when a tag can’t be parsed:
| Project | Author | SpoolLink support | Source | Support the author |
|---|---|---|---|---|
| External - wasikuss: snapmaker-u1-remote-rfid-reader | wasikuss | Partial — only reports a tag when its payload validates as OpenSpool JSON; unreadable, blank, or vendor-format tags are never reported, so those spools can’t be resolved by UID | GitHub (MIT) | — |
| External - baze: snapmaker-u1-drybox-nfc-reader | baze | Full — reports the UID for every detected tag by default (“UID-only” mode); can optionally switch to a full-read mode that also sends OpenSpool metadata, but then skips tags that aren’t valid OpenSpool | GitLab (CC BY-NC 4.0) | — |
Hardware and setup details for both readers are in RFID Format & Reader Design.
SET_SPOOL_IDAssign a Spoolman spool to an AFC lane. Reads the lane’s RFID card UID, binds it to the spool (so a later scan resolves automatically), and applies the filament metadata to the channel:
SET_SPOOL_ID LANE=E0 SPOOL_ID=5
| Parameter | Default | Description |
|---|---|---|
LANE |
— | AFC lane name (e.g. E0) |
SPOOL_ID |
0 |
Spoolman spool ID; 0 clears the assignment |
Leftover pre-SpoolLink Spoolman macros. If Spoolman was previously
wired up by hand (e.g. a community spoolman_multi_tool-style Klipper
include with CHANGE_SPOOL and related macros) before switching to
SpoolLink, that file conflicts with the integration and can leave
Klipper failing to start with an error such as:
[Errno 2] No such file or directory: '/printer_data/config/variables.cfg'
Rename or remove the old include (e.g. add a .bak suffix) before
enabling Spoolman here. See
#567
for a reported case and workaround.
Basic for Snapmaker-branded filaments when not
set in Spoolman; empty for all other vendors.For the wire format, custom fields, and component flow see the
design notes. For AFC lane status that surfaces
spool_id see AFC-Lite.