Hi @Kan_Li — closing this out. **It was our side, and the diagnosis was wrong from the start.** Posting the resolution in case it helps someone else.
The part is fine. Once I instrumented a whole-boot APDU trace instead of reading
individual results, a clean power-up gave 83 APDUs with 80 of them 0x9000 — object
creation, secp256k1 key generation, `ReadObject` and ECDSA signing all working. The only
non-0x9000 responses were benign and already handled by our own code:
80 01 0B 04 CreateECCurve(secp256k1) -> 6985 curve already exists
80 01 61 00 WriteECKey -> 6A80 object exists, wrong type
80 04 00 27 CheckObjectExists -> 9000
80 04 00 28 DeleteSecureObject -> 9000
80 01 61 00 WriteECKey -> 9000 succeeds after the delete
**What I was actually looking at.** The SE was already in a wedged state when each of my
test boots started, left there by an earlier session. Once wedged, *every* APDU returns
0x6985 — `GetRandom`, `GetVersion`, `GetFreeMemory` included — and the state survives an
MCU reset, a T=1 interface reset, and a re-`SELECT` that itself returns 0x9000. Only
removing power clears it. So every measurement I reported was of the wedge, not of a
blocked feature, and my "GetRandom is the only command that works" and "GetVersion is
refused" claims were both artifacts of that. Apologies for the noise.
For the record, on a healthy boot this part reports:
* `GetVersion` → `07 02 00 3F FF FF FF` — applet **7.2.0**, AppletConfig `0x3FFF`
* `GetFreeMemory(PERSISTENT)` → `0x3E0C` = **15,884 bytes** free
* Platform SCP03 authenticates on the default key set for **OEF 0005A8FA (SE051C)**
**One thing that may still be worth your comment**, since it is the part I do not
understand and it has shipping implications for us:
While wedged, GP security-domain commands keep working — `80 50 00 00` INITIALIZE
UPDATE and `84 82 33 00` EXTERNAL AUTHENTICATE both return 0x9000 — while the IoT
applet refuses everything. Is there a documented applet error state with that shape,
and is there any way to detect or clear it **without cutting power**? A deployed device
cannot power-cycle its secure element independently, so if a host can drive the applet
into this state we need to know how to get back out.
Thanks for the quick response earlier.