Skip to content

TigerTag: read colors 2 and 3 for multi-color filaments - #36

Open
TigerTag-Project wants to merge 1 commit into
suchmememanyskill:mainfrom
TigerTag-Project:tigertag-multicolor
Open

TigerTag-Project wants to merge 1 commit into
suchmememanyskill:mainfrom
TigerTag-Project:tigertag-multicolor

Conversation

@TigerTag-Project

@TigerTag-Project TigerTag-Project commented Oct 13, 2026 •

Copy link
Copy Markdown

TigerTag stores up to three colors: Color 1 (RGBA, +16), Color 2 (RGB, +36) and Color 3 (RGB, +40). OpenRFID only read Color 1, so bicolor, tricolor and rainbow filaments were reported as a single color. Several other processors (Bambu, Snapmaker, OpenTag3D, SpoolEase) already fill colors with multiple entries; this brings TigerTag in line.

How the number of colors is chosen

This follows section 2.5 of the TigerTag spec: the multi-color aspect decides how many colors are on the chip. Writers put it on Aspect 1 or Aspect 2 indifferently, so both are checked and the highest color count wins, whatever the order.

Aspect ID Colors read
Bicolor 252 1, 2
Tricolor 24 1, 2, 3
Rainbow 145 1, 2, 3
anything else 1 (unchanged)

The aspects are matched by id (MULTICOLOR_ASPECT_COLOR_COUNT in constants.py), not by label, so a label renamed in id_aspect.json cannot break it. Colors 2 and 3 are RGB on the chip, so they reuse the alpha of Color 1.

Unique id

All colors are now part of the unique id, so two multi-color spools that only differ by a secondary color are told apart. For single-color spools the id is unchanged.

Tests

Five copies of the eSun TigerTag+ dump: Bicolor and Tricolor on Aspect 2, Bicolor and Rainbow on Aspect 1, and Bicolor + Tricolor on both aspects (3 colors). Only the aspect and color bytes change; they are outside the signed region, so the TigerTag+ signature still verifies.

105 passed, 1 skipped.

When Aspect 1 or Aspect 2 is Bicolor, Tricolor or Rainbow, also read
Color 2 (+36) and Color 3 (+40), as described in section 2.5 of the
TigerTag spec. A multi-color aspect can be on either aspect, so both are
checked and the highest color count wins. The aspects are matched by id
(252, 24, 145), not by label, so renaming a label in id_aspect.json
cannot break it. Colors 2 and 3 are stored as RGB and reuse the alpha of
color 1.

All colors are included in the unique id, so two multi-color spools that
only differ by a secondary color get different ids. Single-color ids
are unchanged.

Tests: copies of the eSun TigerTag+ dump with Bicolor and Tricolor on
Aspect 2, Bicolor and Rainbow on Aspect 1, and Bicolor + Tricolor on both
aspects. The bytes changed are outside the signed region.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant