Supported versions
Which versions of Spoolman, FilaBridge and the OpenPrintTag specification this firmware accepts, and what it switches off when it meets a different one.
Spoolman
| Accepted versions | Any 0.26.x or 0.27.x release |
| Rule | The version string from Spoolman's /api/v1/info must parse as MAJOR.MINOR.PATCH (digits only, optional leading v) with major 0 and minor 26 or 27. Suffixes such as -dev do not parse. |
| On any other version | The station stays connected and can still read, write and clear tags. Saving weights is off. |
| Native tag list | Used automatically on 0.27.0 or later (any version that parses and is at least 0.27.0). The two Spool extra fields are then optional. See Spoolman integration. |
What you see on another version:
- Browser, Settings → Integrations:
Spoolman <version> has not been tested with this firmware, so saving weights to Spoolman is turned off. - After Update Spoolman:
Saving weights is turned off: this Spoolman version has not been tested with this firmware, or Spoolman is offline. See Settings.
The check is repeated while the station runs. Changing the Spoolman version takes effect without a restart.
FilaBridge
| Accepted versions | v1.2.2, 1.2.2, v1.2.1, 1.2.1, and development builds that report dev |
| Rule | The version string from FilaBridge's /healthz must be exactly one of the above. |
| On any other version | Printers and toolheads are still shown. Assigning and unassigning are off. |
What you see on another version when you try to assign in the browser:
FilaBridge is connected read-only; mapping capability is unavailable and no assignment was queued.
On the touchscreen the toolhead buttons stay grey.
If FilaBridge reports a different version than at the last full check, assignment is paused
with FilaBridge version changed; use Test backends to verify capabilities.
Press Test on the Integrations card in the browser to check again.
FilaBridge is optional. Without it everything except toolhead assignment works.
OpenPrintTag specification
| Use | Pinned commit |
|---|---|
| Reader field definitions | e0dab1ae16838d2c342e7cfc509455441b7d8eba |
| Writer and blank-image layout | 7e09cc38df1c8e7824a67f5b1ae93071f52519ad |
CI checks out the writer revision of https://github.com/OpenPrintTag/openprinttag-specification and compares the images the station produces with the upstream tools. See OpenPrintTag format.
Hardware
One board is supported: WT32-SC01 Plus (ESP32-S3, 16 MB flash), hardware ID
wt32-sc01-plus-rev-a. A firmware file built for another board is refused by the updater.
Build toolchain
| Component | Version | Pinned in |
|---|---|---|
| PlatformIO Core | 6.1.19 | requirements-dev.txt |
PlatformIO platform espressif32 |
6.13.0 | platformio.ini |
PlatformIO platform native (host tests) |
1.2.1 | platformio.ini |
tool-mklittlefs |
1.203.210628 | platformio.ini |
| LVGL | 8.3.11 | platformio.ini |
| LovyanGFX | 1.2.27 | platformio.ini |
| ArduinoJson | 7.4.3 | platformio.ini |
| Adafruit NAU7802 Library | 1.0.8 | platformio.ini |
| Adafruit BusIO | 1.17.4 | platformio.ini |
| ELECHOUSE NFC-RFAL / ST25R3916 | 1.0.2 / 1.1.1, commit 16eb6c7fb13e502d320924040d768a9e564209b2 |
third_party/ELECHOUSE_ST25R3916/ (copied into the repository) |
| ESP Web Tools (USB installer page) | 10.4.0 | web-flasher/index.html |
| MkDocs / Material for MkDocs (this manual) | 1.6.1 / 9.7.7 | documentation-site/requirements.txt |
| Python (CI) | 3.12 | .github/workflows/ci.yml |
| Node.js (CI) | 24.16.0 | .github/workflows/ci.yml |
| Pillow / Playwright (CI screenshots) | 11.3.0 / 1.62.1 | .github/workflows/ci.yml |
The firmware is built with C++17 on the Arduino framework.
Changing a pinned version
Change the version in the file named above.
A change to platformio.ini, third_party/ or web-flasher/ needs a version bump;
see Contributing changes.
The accepted Spoolman versions are the constants tested_major and tested_minors, and the
native tag threshold is native_tags_minor, all in
src/integrations/spoolman/spoolman_adapter.cpp.
The accepted FilaBridge versions are tested_version plus the literals compared in
FilaBridgeAdapter::probe() in src/integrations/filabridge/filabridge_adapter.cpp.