STATUS: use P2=0C (phone-like, no FCP echo); v1.9.12

_send_status sent F2 00 00 -> the card echoes the FCP of the currently
selected DF on every poll/one-shot STATUS. Phones use P2=0C (no
response expected) to avoid that overhead. Keep P1=00 and the SIM/UICC
P3 distinction (SIM=0x23, UICC=0x00):

  CLA F2 00 0C P3

Affects one-time /api/status-poll and the automatic polling timer.

Version 1.9.11 -> 1.9.12 everywhere; SW cache otaman-v22 -> otaman-v23
This commit is contained in:
2026-08-27 01:11:55 +03:00
parent 4f8dae041d
commit 629c9101bc
5 changed files with 9 additions and 7 deletions
+5 -3
View File
@@ -18,7 +18,7 @@ from osmocom.construct import GsmOrUcs2Adapter
from osmocom.tlv import BER_TLV_IE
VERSION = '1.9.11'
VERSION = '1.9.12'
# Static file serving (the PWA lives in <repo>/frontend, served by this server
@@ -885,9 +885,11 @@ def _reset_proactive_log():
def _send_status(scc):
"""STATUS (F2) with correct P3 per card type: SIM=0x23, UICC=0x00."""
"""STATUS (F2) with correct P3 per card type: SIM=0x23, UICC=0x00.
P2=0C mirrors phone behavior - no FCP of the selected DF returned
(plain F2 00 00 would echo the FCP, which is unnecessary overhead)."""
p3 = '23' if scc.cat_cla == 'a0' else '00'
return scc._tp.send_apdu('%sf20000%s' % (scc.cat_cla, p3))
return scc._tp.send_apdu('%sf2000c%s' % (scc.cat_cla, p3))
def _send_event_download(scc, event_type, event_data=None):