Skip to content

fix: send the SGP.32 Terminal Capability and make it best effort - #41

Draft
benjaminbruun wants to merge 1 commit into
bb/clang-formatfrom
bb/es10-terminal-capability
Draft

fix: send the SGP.32 Terminal Capability and make it best effort#41
benjaminbruun wants to merge 1 commit into
bb/clang-formatfrom
bb/es10-terminal-capability

Conversation

@benjaminbruun

@benjaminbruun benjaminbruun commented Sep 2, 2026

Copy link
Copy Markdown
Member

SGP.32 section 3.8.2 has the IoT Device report IPAd support with the Terminal Capability command before SELECT ISD-R: template tag A9, tag 84 for the eUICC-related capabilities, b1 set for IPAd. The eUICC only enables the ES10 functions when it sees that bit. The IPAd sent the SGP.22 LPA template instead (tag 83 with the LUId, LPDd and LDSd bits).

The specification does not say what to do when the command is rejected, and in practice three things happen: some eUICCs answer 6D00 (INS not supported) yet serve ES10 normally, some answer fine, and the nRF91 modem refuses to carry the command at all, answering AT+CSIM with ERROR (the bench 9151 DK fails the very first APDU with -77 EBADMSG, which is why the old Zephyr port had the call commented out). The command is therefore best effort on every path: transport error, malformed response and non-success status word are all logged and ignored, and MANAGE CHANNEL right after it remains the real link check that still fails hard. Bench: stock image and this chain both open channel 1 and select the ISD-R on the Kigen 9151 DK.

SGP.32 section 3.8.2 requires the IoT Device to report IPAd support with
the Terminal Capability command before SELECT ISD-R, using tag 84 with b1
set; the eUICC only enables the ES10 functions when it sees that bit. The
IPAd sent the SGP.22 LPA template (tag 83) instead.

The specification leaves a rejected command unspecified, some eUICCs
answer 6D00 (INS not supported) while still serving ES10, and some
transports refuse to carry the command at all - the nRF91 modem answers
AT+CSIM with ERROR for it. All three cases are now logged and ignored
rather than aborting the ES10 bring-up; MANAGE CHANNEL right after it is
the real link check and still fails hard.

Signed-off-by: Benjamin Bruun <bb@onomondo.com>
@benjaminbruun
benjaminbruun force-pushed the bb/es10-terminal-capability branch from e86c428 to 37e77a8 Compare September 2, 2026 17:33
@benjaminbruun benjaminbruun changed the title fix(euicc): send the SGP.32 Terminal Capability and tolerate its rejection fix(euicc): send the SGP.32 Terminal Capability and make it best effort Sep 2, 2026
@benjaminbruun benjaminbruun changed the title fix(euicc): send the SGP.32 Terminal Capability and make it best effort fix: send the SGP.32 Terminal Capability and make it best effort Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant