feat(lf): force device debug quiet during identify

identify_lf now sets the device debug level to NONE (hw.dbg(0)) before its LF captures.
On debug-heavy firmware a raised g_dbglevel makes LF acquisition emit device-side Dbprintf
frames over USB, which interleave with the sample download and desync it. This is the
device-side knob (g_dbglevel), distinct from the C client's g_debugMode terminal spam;
quieting it removes a source of async frames during pm3py's own reads.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
michael
2026-07-14 17:55:02 -07:00
parent 26da98ede6
commit e57e6ed268

View File

@@ -120,6 +120,12 @@ def identify_lf(device, emit=None) -> dict | None:
if device is None:
return None
# Force the device debug level to NONE for the duration: on debug-heavy firmware a raised
# g_dbglevel makes LF acquisition emit Dbprintf frames over USB, which interleave with the
# sample download and desync it. This is the device-side knob (not the C client's g_debugMode
# spam), and pm3py's own reads are what matter here.
_try(lambda: device.hw.dbg(0), None)
config = read_config(device) # T55xx? -> chip + emulation
emitted = read_emitted(device) # what's on the air -> EM4100 ID (etc.)