feat: add IDTECK PSK1 tag type support#843
feat: add IDTECK PSK1 tag type support#843matteoscrugli wants to merge 1 commit intoGameTec-live:mainfrom
Conversation
GameTec-live
left a comment
There was a problem hiding this comment.
Nothing jumps out to me. Dont have a IDTECK card tho, so someone please test.
|
I've already tried it out mate. If you want more details I can give them to you. |
|
Not like I dont trust you, but more that "yup, works on my machine" and then it doesnt work for other people is a very common scenario. While not as prevalent here, as basically everything is handled by firmware, its still a potential concern. |
|
welp... looks like, as all 3 PRs are similar and based off the same branch, merging one creates a few merge conflicts... |
For what it’s worth, I’ve tried three different versions of IDTECK on my PC and on two phones. Unfortunately, it’s not a very widespread standard; I hope to see this feature on the official channel soon. Thank you for your work. |
If it would be helpful, I’ll create a single pull request based on the current state |
Adds IDTECK to the supported LF protocols on the GUI side, matching the firmware support added upstream. - TagType.idteck (310) in the PSK range, matching the firmware enum - IdteckCard model (8-byte 64-bit frame: 32-bit preamble + 32-bit payload) - ChameleonCommand entries: writeIdteckToT5577 (3017), setIdteckEmulatorID (5010), getIdteckEmulatorID (5011) - Bridge RPC wrappers following the Viking pattern - Wired into the LF type list, display name, card factory, and slot manager "add card" flow, plus the T55xx write helper - uidSizeForLfTag returns 8 for IDTECK No read path: firmware-side PSK demodulation is not implemented yet (the tag-emulation ADC is envelope-only at 125kHz), so the GUI does not expose a "read IDTECK" action. Emulation and T55xx clone work. Depends on firmware PR GameTec-live#407 landing for the command IDs.
f3487d7 to
2e3735e
Compare
|
Consolidated into #844 as you suggested, that PR bundles PAC and IDTECK into a single change set, so there are no merge conflicts between parallel branches anymore. Closing this in favour of the unified PR. Thanks for the heads-up! |
Summary
Adds GUI support for the IDTECK PSK1 LF tag type, mirroring the firmware implementation from RfidResearchGroup/ChameleonUltra#407. Lets users save, emulate, and T55xx-clone IDTECK cards directly from the app.
Motivation
The firmware supports IDTECK emulation and T55xx writing, but the GUI has no knowledge of the
TAG_TYPE_IDTECK = 310tag type nor of the three newDATA_CMD_IDTECK_*command IDs. Slots provisioned as IDTECK via CLI currently render as "unknown" in the slot manager, and there is no way to save an IDTECK card from a CardSave dump.Changes
helpers/definitions.dartTagType.idteck(310)ChameleonCommand.writeIdteckToT5577(3017),setIdteckEmulatorID(5010),getIdteckEmulatorID(5011)IdteckCard extends LFCard(modeled onVikingCard)bridge/chameleon.dartsetIdteckEmulatorID,writeIdteckToT55XX,getIdteckEmulatorIDreadIdteck— PSK demodulation is not implemented in the firmware yethelpers/general.dartgetLFCardFromUIDfactory,uidSizeForLfTag= 8 bytes (preamble + payload)helpers/write.dart,helpers/t55xx/write/base.dartreadIdteckdoes not exist)gui/page/slot_manager.dart,gui/menu/dialogs/slot/edit.dart,gui/menu/dialogs/slot/export.dartgui/page/home.dartsetVikingEmulatorIDtosetIdteckEmulatorID, so users on older firmware get the "please update" promptDependencies
This PR depends on firmware PR RfidResearchGroup/ChameleonUltra#407. Merging before that firmware ships will cause the capability check to fail against all currently-released firmware builds.
Testing
flutter analyze lib/clean (no new issues)flutter build macos --debugsucceedsTAG_TYPE_IDTECKrenders as "IDTECK" (was "unknown")Note: the Write Card flow requires the sibling one-line fix in a parallel PR (
fix: switch to reader mode before T55xx write) to work correctly when the device starts in tag-emulation mode. That fix is a pre-existing bug unrelated to IDTECK but affects every T55xx write path including this one.Not included
readIdteck()— PSK1 demodulation onLF_OA_OUTis feasible but out of scope (firmware DSP work). Tracked as future firmware roadmap in the Visualize found keys when reading card. #407 description.Pattern
The implementation follows the
Vikingintegration 1:1 (simplest existing LF tag with raw-hex UID). Same file touches, same else-if chain placement.