Merge pull request #3577 from mfcarroll/t55xx-psk3-ambiguity

lf t55xx: correctly report the psk2/psk3 ambiguity
This commit is contained in:
Iceman
2026-09-02 14:51:24 +07:00
committed by GitHub
3 changed files with 359 additions and 53 deletions
+2
View File
@@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file.
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
## [unreleased][unreleased]
- Fixed `lf t55xx detect` - dropped the psk3 candidates, which run the same demodulation as the psk2 one beside them and so can never match a psk3 tag, only fire on demodulation errors (@mfcarroll)
- Fixed `lf t55xx detect` - a psk3 tag read back as psk2 with a block 0 one bit out, and a freshly wiped psk2 tag was reported as psk3 on no evidence; the two are now reported as ambiguous where the waveform cannot separate them, and block 0 is narrowed using the subcarrier, the broadcast period and whether password mode is in use (@mfcarroll)
- Added doc/md/PM5_Start_Here/Getting_Started_With_PM5.md now exists as a starting point for those who have their PM5 (@innocentbystanderproxmark)
- Fixed `tools/ePassport` - the personal number read from the MRZ optional-data field showed a filler character where a space belonged, and a document number longer than nine characters left its overflow there (@pkilar)
- Fixed `tools/ePassport` - the detail tabs named the files their data came from as fixed text, so a document without EF_DG11 was told otherwise, and the personal-number caption wrapped (@pkilar)
+353 -53
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -158,6 +158,10 @@ typedef struct {
} bitrate;
bool Q5;
bool ST;
uint8_t psk_carrier; // observed psk subcarrier in field clocks, 2/4/8. 0 = not measured
uint8_t broadcast_blocks; // measured blocks per regular-read cycle. 0 = not measured
bool psk3_favoured; // data blocks lean psk3, but do not settle it
bool pwd_known; // usepwd below reflects a live detect, not a default
bool usepwd;
uint32_t pwd;
enum {