Skip to content

material-tags v0.1.4 and rfid-anycubic v0.2.0 - #7

Open
Mauker1 wants to merge 6 commits into
devfrom
feature/correctly-read-ac-fields
Open

material-tags v0.1.4 and rfid-anycubic v0.2.0 #7
Mauker1 wants to merge 6 commits into
devfrom
feature/correctly-read-ac-fields

Conversation

@Mauker1

@Mauker1 Mauker1 commented Aug 31, 2026

Copy link
Copy Markdown
Collaborator

What this changes

rfid-anycubic's decoder went from decoding only the fields the public reverse engineering
agreed on (brand, material, nozzle/bed max temp) to decoding nearly everything a real
Anycubic ACE tag carries: SKU, color, diameter, length, weight, bed minimum temperature, and
print speed (when the tag carries it). Along the way, two things turned out to be wrong in
the original assumptions and are corrected here:

  • The tag is a plaintext Mifare Ultralight C card, not generic NTAG21x. Ultralight C has a
    smaller page count, so the magic-scan and block-length logic needed a version-tolerant scan
    (7B 00 <version> 00, accepting 0x64 and 0x65) instead of a single fixed magic value.
  • The color byte order is alpha, then blue, green, red, not alpha-red-green-blue. The first
    sample tested (black) couldn't distinguish the two orders, since its red and blue channels
    are identical; a second, non-symmetric sample (peach pink) broke the tie, and this was
    independently reinforced by that same tag's own SKU, which names the same color.

Every newly decoded field is confirmed against three independently sourced real tag dumps
spanning three product lines (PLA+, PLA Spezial, ASA), not synthetic data alone. Test
coverage now includes both field-by-field synthetic tests and three regression tests that
replay those exact real dumps byte for byte, so a future change that silently alters a
confirmed decode fails loudly.

Ships as rfid-anycubic 0.2.0, promoted from the experiment channel to the release candidate
channel, and bumps the all-the-tags collection to 0.1.4 to pick it up.

User story

As a printer owner with an Anycubic ACE-tagged spool, I want the plugin to report the
spool's real color, weight, diameter, length, and SKU, not just its brand, material, and
temperatures, so the printer and Spoolman show accurate spool information instead of a
partial record.

Checklist

  • Scoped to the story above; no unrelated changes. Touches rfid-anycubic's own decoder
    files (anycubic_fields.py, rfid_tag_anycubic.py, test_anycubic_fields.py), its own
    docs (doc/README.md, doc/CHANGELOG.md, root README.md, ATTRIBUTIONS.md) and
    manifest.json (description, tagline, and embedded attributions brought in line with
    current decoder scope), plus the all-the-tags collection's manifest.json (version
    and member-version bump), doc/README.md (member-list bullet), and doc/CHANGELOG.md
    (new entry), since the collection surfaces this plugin's status directly.
  • The repo gate passes green locally (18/18).
  • Ships a regression test that fails on the old behavior and passes on the fix. Three
    real-dump regression tests pin the exact confirmed output for each of the three
    independently sourced tags.
  • No em-dash or en-dash anywhere (RULE ZERO); the gate enforces it.
  • Docs updated if this changes behavior, a boundary, or configuration.
  • No real secret, token, key, or LAN address in the diff.

Notes for the reviewer

Two things still genuinely open, not blockers, flagged for anyone reading the diff who
wonders why they aren't decoded:

  • SKU field width (12 vs 16 bytes) is unresolved. Every confirmed sample so far null-pads
    well short of either boundary; only a PLA+ Refill-line tag (AHPLP<color>-A108, exactly 12
    characters, no slack) would settle it.
  • Weight, diameter, and length are confirmed correct in position on three tags, but all
    three happen to be a standard 1kg/1.75mm/330m spool, so the scale factors are unproven on
    anything else. A differently sized spool is the one sample that would confirm they
    generalize.

A fixed marker byte immediately after the decoded fields sits at a different page depending
on product line (page 41 for the PLA+ sample tested directly, page 40 for the other two).
Still undecoded, doesn't affect anything shipped here, noted in the source comments for
whoever picks it up next.

@Mauker1
Mauker1 requested a review from unlucio August 31, 2026 17:54
@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown

b3-packages preview (build only, not published). Download the packed .b3 set, its atoms, and the assembled index: b3-packages-material-tags. Rebuilt for commit 489b919a18dcbdba7807ea051be055a9a5c2f456. Build log.

@Mauker1 Mauker1 changed the title Feature/correctly read ac fields material-tags v0.1.4 and rfid-anycubic v0.2.0 Sep 2, 2026
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