Tap a spool on the box. The filament lands in the right printer slot.
A 2.0" touchscreen, a PN532 reader, and no typing.
What it is · Before you start · Quick start · Build one
The TigerTag system. A TigerSpool is the device that takes a spool's identity and puts it into a printer's slot.
TigerSpool RFID is open-source firmware for a small box that sits next to your 3D printer. Hold a spool carrying a TigerTag NFC chip against it, pick a slot on the touchscreen, and the box writes the filament into that slot on the printer — material, brand, colour and temperatures. No app, no keyboard, no retyping what the tag already knows.
MIT licensed. Built with PlatformIO for the ESP32-S3.
Your printer already has a slot list. Your filament already carries its own identity. TigerSpool is the thirty centimetres between them.
- Tap, pick, done. Hold the spool to the box, tap a slot, confirm. The assignment reaches the printer over its own protocol.
- Your printers come from your account. They are configured once, in Tiger Studio Manager, and every TigerSpool you own reads the same list.
- It speaks eight languages and asks which one before anything else.
- It updates itself. Over the air, verified, from this repository's releases.
This is the part that catches people out, so it is first.
A TigerSpool has no keyboard and no way to type a printer's address, and that is deliberate — it reads your printers from your TigerTag account instead. Which means two things have to exist before the box is useful:
Tiger Studio Manager is the desktop application for the ecosystem. Install it and create an account there. That account is what the TigerSpool signs in to — by e-mail, or with Google through a QR code, so you never type a password on a 2" screen.
Without an account, the box gets through Wi-Fi setup and then has nothing to sign in to.
Tiger Studio Manager. Your filaments and your printers live here — the box reads this list, it does not build it.
Adding a printer means Tiger Studio finds it on your network, or you enter its address and access code, and stores it against your account.
If you have not done this, the printer list on the box will be empty. That is not a fault and there is nothing to fix on the device — it is showing you exactly what your account contains. Add the printer in Tiger Studio, and it appears on the box at the next sync.
The same is true for the details: the access code, the IP address, the brand and model all come from there. TigerSpool reads that list; it does not build it.
In short: Tiger Studio Manager → create an account → add your printers → then set up the box.
Plug the board into your computer → click Install → wait a minute. Use the button at the top of this page. It writes the bootloader, the partition table, the boot selector and the firmware.
Chrome, Edge or Opera, on a desktop or laptop. Safari and Firefox do not implement WebSerial and no mobile browser does — the page says so rather than failing quietly.
- Pick your language. Eight of them, before anything else.
- Join Wi-Fi. The box shows a QR code. Scan it with your phone, and a page opens listing the networks it can see. Pick yours, type the password on your phone, and the box joins — no reboot, nothing typed on the small screen.
- Sign in. E-mail and password, or Google through a second QR code.
- Your printers arrive. From your account, as configured in Tiger Studio.
Then hold a tagged spool against the box, tap the slot you want, and confirm.
From then on it updates itself over the air.
git clone https://github.com/TigerTag-Project/TigerSpool-RFID.git
cd TigerSpool-RFID
bash scripts/flash.sh --monitorThat builds the firmware, flashes it over USB and opens the serial console. Requires PlatformIO Core.
An ordinary flash keeps your Wi-Fi credentials, your account session and your
printers — nothing it writes touches the NVS partition. --erase wipes the
chip and is how you get a genuine first-boot again.
One board, one reader, four wires. The electronics are identical for every printer brand — only the 3D-printed shell changes.
| Part | Notes |
|---|---|
| Waveshare ESP32-S3 2inch Capacitive Touch Display development board | 240×320 IPS, ESP32-S3R8, 16 MB flash, 8 MB octal PSRAM. Screen, touch and MCU on one board. |
| PN532 NFC module, V3 with DIP switches | Set to HSU (UART) — not I²C, not SPI. Both switches 0 / OFF. |
| A USB-C to USB-A cable that carries data | Powers and flashes the board. A charge-only cable makes a working board look dead — no serial port ever appears. |
| Four jumper wires | 3V3, GND, TX, RX. Supplied with the PN532 — nothing to buy. |
| A 3D-printed case | models/ — one per printer brand, plus a desktop stand |
About 40 € in total, plus filament. Parts, links and prices: hardware/BOM.md.
Full parts list: hardware/BOM.md · Wiring: docs/WIRING.md and hardware/pinout.md
Interactive schematic in Cirkit Designer
The reader goes on GPIO43/44. Not GPIO6/7 — that pair is an I²C bus with pull-ups on this board. A PN532 wired there powers up, answers, and returns random UIDs with failing reads. It looks like a bad tag or a bad antenna. It is neither, and it costs a day. Follow docs/WIRING.md exactly.
"Any printer" is the goal, not a claim about today. The current state of every brand is in docs/PRINTER-COMPATIBILITY.md, which grades each on three levels — ✅ automatic, ⚙️ one setup step, 🧪 experimental. Read it before buying parts for a specific printer.
| Brand | Firmware support | Transport |
|---|---|---|
| Creality | ✅ implemented, proven on hardware | WebSocket |
| FlashForge | ✅ implemented, proven on hardware | HTTP |
| Bambu Lab | ✅ implemented, proven on hardware - LAN and cloud mode | MQTT over TLS |
| Snapmaker | ✅ implemented, proven on hardware | Moonraker over WebSocket |
| Elegoo | ✅ implemented, reading proven on hardware | MQTT |
| Anycubic | ✅ implemented, reading proven on hardware - LAN mode | MQTT over TLS |
A Bambu Lab printer in cloud mode is read-only: its spools are shown, but a tag cannot be written to it - Bambu's cloud does not accept the command. Switch the printer to LAN mode to write.
Slot names match the ones the printer and Tiger Studio use — Ext. plus
1A–1D on Creality and FlashForge, A1–A4 then B1–B4 on Bambu,
E1–E4 on Snapmaker, S1–S4 on Elegoo, A1–A4 per ACE unit on
Anycubic. The table and its two traps are in the compatibility document.
The limit is not a number of printers - it is how much memory their connections take. One TigerSpool has a fixed budget of 160 load slots, where one load slot is one kilobyte of the chip's internal RAM, and each printer takes what its connection costs:
| Printer | Load slots |
|---|---|
| First Bambu Lab in cloud mode | 50 |
| Each further Bambu Lab in cloud mode | 4 - they share one connection |
| Bambu Lab in LAN mode | 50 |
| Anycubic | 41 |
| Creality | 6 |
| Snapmaker | 5 |
| Elegoo | 3 |
| FlashForge | 2 |
The difference is encryption: a Bambu or an Anycubic talks over TLS, which is what memory goes on; the others do not. So ten Elegoos fit where three LAN Bambus do not.
Settings > Printers shows how full the budget is as a percentage. A printer that would not fit is refused when you switch it on, with the reason on the screen, rather than connecting and failing later. The measurements, the reasons for 160, and what the budget does not account for are in docs/CONNECTION-BUDGET.md.
| ARCHITECTURE.md | Layering, the state machine, why a backend knows nothing about the screen |
| ONBOARDING.md | The first-boot journey, screen by screen |
| WIFI-PROVISIONING.md | The QR code and the captive portal |
| ACCOUNT-PAIRING.md | E-mail and Google sign-in, and why RFC 8628 was rejected |
| ACCOUNT-DATA.md | The shape a printer arrives in |
| OTA.md | Partitions, the manifest, and what is settled before the first release |
| PRINTER-COMPATIBILITY.md | Per-brand status and slot naming |
| CONNECTION-BUDGET.md | How many printers at once: load slots, every measurement behind them, why 160 |
| WIRING.md | The four wires |
| ROADMAP.md | What is deliberately not done yet, and what has to be decided first |
Contributors and agents start at AGENTS.md and CODEMAP.md.
Written down rather than discovered.
- The firmware is not signed. Its update connection is verified against the root certificate store, so the box knows who it is talking to — but not who produced the image. The reasoning and the condition for changing that are in docs/OTA.md.
- At most three printers that use TLS at once - Bambu Lab in LAN mode and Anycubic, with every cloud Bambu on an account counting as one. It is the chip's internal RAM, and the load budget enforces it; see docs/CONNECTION-BUDGET.md. The two ways past it are in docs/ROADMAP.md.
- Anycubic in cloud mode is not supported, only LAN mode.
- A printer is identified by its position in your account's list. Reordering it in Tiger Studio can move a per-printer setting to the wrong machine. Tracked in docs/reviews/.
TigerTag is an open NFC identification standard for 3D-printing materials. A spool carries its own identity, and every device in the system reads the same one.
- Tiger Studio Manager — desktop printer and filament manager. Start here: it is where an account is created and printers are declared.
- TigerTag-RFID-Guide — the protocol specification and public registry
- TigerSystem-Docs — ecosystem source of truth
- Tiger-Scale-V3 — the connected filament scale
- TigerPOD — open desktop NFC reader/writer
- SDKs — Python · JavaScript
Issues and pull requests are welcome. CONTRIBUTING.md has the
conventions; the short version is that bash scripts/verify.sh passes before
anything is reported as done, and everything committed is in English.
Security reports: SECURITY.md.
MIT — build it, sell it, fork it.
Third-party components keep their own licenses; see THIRD_PARTY_LICENSES.md. "TigerTag" and "TigerSpool" are project names, not a license to imply endorsement — the terms for using them on a product you sell are in TRADEMARK.md.

