eSIM & eUICC Architecture: The Complete Technical Guide

Published July 28, 2026 · ~10,000 words · Smart Card & Embedded SIM Engineering

In this guide: The full eSIM/eUICC stack — from GSMA SGP.22 architecture and LPA (Local Profile Assistant) implementation, to ISD-R/ISD-P security domains, SM-DP+ server integration, eSIM profile download APDU sequences, M2M vs consumer profile differences, and physical eUICC chip internals. Every section includes real APDU command examples and protocol diagrams.

1. What Is an eSIM? The eUICC Distinction

The term eSIM (embedded SIM) is often used loosely to refer to two distinct things: the physical eUICC chip soldered onto a device PCB, and the consumer-facing "eSIM" feature that lets users download carrier profiles over-the-air. Understanding the distinction is fundamental.

An eUICC (Embedded Universal Integrated Circuit Card) is a tamper-resistant secure element — a smart card chip permanently soldered to a device's motherboard. It runs a GlobalPlatform-compliant card operating system that supports remote profile provisioning. The eUICC can store multiple MNO profiles (operator subscriptions), each isolated in its own security domain. Unlike a traditional removable SIM card (UICC), the eUICC is not physically swappable — instead, profiles are downloaded, enabled, and deleted over-the-air through a standardized protocol called Remote SIM Provisioning (RSP).

Key specifications governing eUICC:

2. GSMA SGP.22 — The Consumer eSIM Standard

GSMA SGP.22 defines the end-to-end architecture for consumer eSIM provisioning. This is the standard that powers eSIM on Apple iPhone (XS and later), Google Pixel, Samsung Galaxy, and most consumer eSIM-capable devices.

Architecture Components

+------------------+       +------------------+       +------------------+
|   LPA (Device)  |       |   SM-DP+         |       |   MNO Backend    |
|  (LPAd + LPAe)  |<---->| (Profile Server)  |<---->|  (BSS/OSS)       |
+------------------+       +------------------+       +------------------+
        |                          |
        | ES10a/b/c               | ES2+
        v                          v
+------------------+       +------------------+
|   eUICC Chip     |       |   SM-DS          |
|  (ISD-R + ISD-Ps)|       | (Discovery Srv)  |
+------------------+       +------------------+
GSMA SGP.22 Consumer eSIM Architecture — Logical Components and Interfaces

SGP.22 Interfaces

InterfaceBetweenProtocolPurpose
ES10aLPAd → eUICCAPDU (ISO 7816)Get eUICC information (EID, profiles list)
ES10bLPAd → eUICCAPDUProfile download, enable, disable, delete
ES10cLPAd → eUICCAPDUeUICC management: memory reset, platform management
ES11LPAe → SM-DP+HTTPSProfile download request, authentication, confirmation
ES12LPAe → SM-DSHTTPSPoll for pending profiles
ES2+MNO → SM-DP+HTTPSMNO orders profile for a specific EID

3. LPA (Local Profile Assistant) Deep Dive

The LPA (Local Profile Assistant) is the client-side software component that mediates between the user/OS and the eUICC. In the SGP.22 architecture, it is split into two functional modules:

LPAd (LPA in Device)

The LPAd runs on the device's application processor (Android/Linux/iOS userspace). It provides the user-facing UI for profile management — scanning QR codes for activation, showing installed profiles, letting users switch between carriers. The LPAd talks to the eUICC through APDU commands over the device's ISO 7816 physical interface.

LPAe (LPA eSIM) — Formerly "LPA in eUICC"

The LPAe runs within a dedicated applet on the eUICC itself. Despite its misleading name (it was renamed from "LPA in eUICC"), it handles the HTTPS-based communication with SM-DP+ and SM-DS servers. The LPAe establishes TLS sessions, authenticates with profile servers, and orchestrates the ES11 mutual authentication handshake. The split design keeps the cryptographic heavy-lifting and network I/O separate from the constrained eUICC execution environment.

LPA ↔ eUICC Communication: modem AT Commands

On devices with an integrated modem, the LPAd typically routes APDUs to the eUICC through the modem's AT command interface (3GPP TS 27.007). The key AT commands are:

LPAe ↔ SM-DP+ Protocol: ES11

The ES11 interface is a four-step mutual authentication protocol:

  1. InitiateAuthentication — LPAe sends eUICC challenge and EID to SM-DP+
  2. SM-DP+ responds with server challenge, signed profile metadata, and DP+ certificate chain
  3. LPAe verifies SM-DP+ certificate (PKI chain validation up to GSMA CI root)
  4. LPAe sends GetBoundProfilePackage with eUICC-signed confirmation
  5. SM-DP+ delivers the Bound Profile Package (BPP — the encrypted eSIM profile)

4. ISD-R and ISD-P Security Domains

The eUICC's GlobalPlatform card OS uses a hierarchy of security domains to isolate profiles and manage the provisioning state machine:

ISD-R (Issuer Security Domain — Root)

The ISD-R is the root security domain of the eUICC. It has Card Manager privileges and controls the lifecycle of all other security domains. The ISD-R:

ISD-P (Issuer Security Domain — Profile)

Each installed MNO profile gets its own ISD-P. The ISD-P is the container that holds:

eUICC State Machine

  [Empty] --Download--> [Disabled] --Enable--> [Enabled]
                              ^                    |
                              |____Disable_________|
                              |
                          [Deleted] (GC reclaims memory)
eUICC Profile Lifecycle State Machine
StateMeaningAPDU Command
CREATEDISD-P allocated, profile not yet downloadedES10b CreateISDP
DISABLEDProfile installed but inactiveES10b EnableProfile
ENABLEDProfile active, modem attached to MNO networkES10b DisableProfile
DELETEDISD-P deleted, memory reclaimedES10b DeleteProfile

5. SM-DP+ and SM-DS — Profile Delivery Servers

SM-DP+ (Subscription Manager — Data Preparation+)

The SM-DP+ is the server that securely generates, encrypts, and delivers eSIM profiles. It is operated by the MNO or a third-party eSIM platform vendor (e.g., Idemia, G+D, Thales, Truphone, Kigen). The SM-DP+:

SM-DS (Subscription Manager — Discovery Server)

The SM-DS is an optional intermediary that acts as a "push notification" service for eSIM profiles. Instead of requiring the user to scan a QR code with the SM-DP+ address directly, the SM-DP+ registers a pending profile event with the SM-DS. The LPAe periodically polls the SM-DS. When a matching event is found (by EID or notification ID), the LPAe retrieves the SM-DP+ address and initiates the profile download. This is the mechanism behind "carrier activation" where a profile appears automatically.

Root SM-DS vs Alternative SM-DS: The GSMA operates a production Root SM-DS that any MNO can register with. Device manufacturers can also configure additional alternative SM-DS addresses. The LPAe polls all configured SM-DS addresses in sequence.

6. eSIM Profile Structure and Download Flow

Profile Package Format

An eSIM profile package (Profile Package — PP) is a TLV-encoded blob containing:

Full Profile Download Sequence

LPAe                                SM-DP+                    eUICC (ISD-R)
 |                                    |                         |
 |-- ES11 InitiateAuthentication ---->|                         |
 |   (eUICCChallenge, EID, Info1)     |                         |
 |                                    |                         |
 |<-- Server response ---------------|                         |
 |   (TransactionId, DpSigned,        |                         |
 |    DpCertificateChain, ServerChlg) |                         |
 |                                    |                         |
 |-- Verify DP+ cert chain --------->|                         |
 |   (against GSMA CI root)           |                         |
 |                                    |                         |
 |                                    |     ES10b PrepareDownload(BPP)
 |<-- ES11 GetBoundProfilePackage --->|<-----> eUICC decrypts, installs
 |   (eUICC-signed confirmation)       |       ISD-P, profile content
 |                                    |
 |<-- Profile installed, ISD-P created
 |
 |-- ES10b EnableProfile(ICCID) ----> eUICC switches to new profile
 |-- Modem refresh (REFRESH proactive command)
Complete eSIM Profile Download and Activation Sequence

BPP (Bound Profile Package)

The BPP is the key security mechanism. It is a profile encrypted specifically for one eUICC. The SM-DP+ generates a session key using ECDH key agreement with the eUICC's ephemeral public key (from the eUICC challenge). The BPP cannot be installed on any other eUICC, even if the encrypted blob is intercepted. This is the "bound" in Bound Profile Package — it is cryptographically bound to one specific EID.

7. M2M eUICC (SGP.02) vs Consumer eUICC (SGP.22)

FeatureConsumer (SGP.22)M2M (SGP.02)
Use caseSmartphones, tablets, wearablesIoT sensors, smart meters, automotive, industrial
Profile initiationUser-initiated (QR scan, carrier app)Server-initiated (push from SM-DP)
LPA locationOn-device (LPAd + LPAe on eUICC)Off-device (LPA in network / module)
SM-DS usageOptional (alternative activation path)Not used; direct SM-DP push
Profile switchingUser-drivenAutomated by platform rules
GSMA specSGP.22 v2.4 (2023)SGP.02 v4.3 (2023)
Memory profile2-4 profiles typical, <1 MB each1-2 profiles, factory-provisioned + fallback
eUICC OSGlobalPlatform Card v2.3+GlobalPlatform Card v2.2+
HTTPS stackLPAe on eUICC (TLS, HTTP client)External LPA (on module MCU)
EID prefix89049032... (EUM + ICCID)89049032... (same EID format)

8. eUICC APDU Commands Reference

All eUICC management commands use APDUs addressed to the ISD-R AID (A0 00 00 05 59 10 10 FF FF FF FF 89 00 00 01 00). Below is a summary of the key ES10a/b/c commands:

ES10a — eUICC Information

FunctionCLA/INSDescription
GetEuiccInfo180 BF 3F 00Returns eUICC version, SVN (subject verification number), available memory
GetEuiccInfo280 BF 3F 01Returns EID, GSMA certificate, EUM certificate, PK values for key agreement
GetProfilesInfo80 BF 3F 02Lists all installed profiles: ICCID, ISD-P AID, profile state, nickname
GetEID80 CB 00 00Returns the 30-digit EID (eUICC Identifier) as hex string

ES10b — Profile Management

FunctionCLA/INSDescription
PrepareDownload80 E2 00 01Passes BPP metadata to eUICC. eUICC validates and prepares ISD-P slot.
LoadBoundProfilePackage80 E2 00 02Streams encrypted BPP data blocks. Multiple APDUs. eUICC decrypts and installs.
EnableProfile80 E6 00 03Enables a profile (deactivates current). Triggers REFRESH.
DisableProfile80 E6 00 04Disables a profile. Modem detaches from network.
DeleteProfile80 E4 00 05Deletes ISD-P. Memory reclaimed after garbage collection.
SetNickname80 E2 00 06Sets a user-readable nickname for a profile (e.g., "Work", "Travel")

ES10c — Platform Management

FunctionCLA/INSDescription
MemoryReset80 E4 00 10Factory reset — deletes all profiles and resets eUICC to factory state
GetEuiccChallenge80 84 00 00Returns a 16-byte random challenge for SM-DP+ authentication handshake

Example: Get EID — APDU Exchange

>> 00 A4 04 00 0F A0 00 00 05 59 10 10 FF FF FF FF 89 00 00 01 00   [SELECT ISD-R]
<< 90 00

>> 80 CB 00 00 00                                                [GET EID, Le=00 (max)]
<< 1E 38 39 30 34 39 30 33 32 30 30 30 30 30 30 30   [EID: 890490320000000...]
    30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
    90 00
APDU trace: Reading the eUICC EID. SELECT the ISD-R, then issue GET EID.

9. eUICC Chip Internals and Hardware

The eUICC chip is a secure microcontroller built on smart card silicon. Leading eUICC chip vendors include Infineon (SLC37 series), STMicroelectronics (ST33G), NXP (SN110), Samsung (S3K250AF), and Thales/G+D/Idemia for the OS layer.

Hardware Architecture

EID (eUICC Identifier)

The EID is a globally unique 32-digit identifier for each eUICC chip. Format:

EID = EUM_Code (5 digits) + ICCID_Prefix (4 digits) + IndividualNumber (21 digits) + CheckDigit (2 digits)

The EID is laser-engraved into the eUICC silicon or stored in one-time programmable (OTP) memory. It is analogous to the ICCID of a physical SIM but permanently bound to the chip. The EID is what the user provides to the MNO for profile ordering — the carrier uses it to tell the SM-DP+ "generate a profile for this specific chip."

10. Android & iOS LPA Implementation

Android EuiccManager API

Since Android 9 (API 28), Android provides the EuiccManager system service as part of the telephony framework. Key API operations:

// Get EuiccManager instance
EuiccManager em = context.getSystemService(EuiccManager.class);

// Check if device supports eSIM
boolean enabled = em.isEnabled();

// Start resolution activity (QR scan or carrier activation)
Intent intent = new Intent(EuiccManager.ACTION_START_RESOLUTION_ACTIVITY);
// ...

// Switch to a profile
em.switchToSubscription(subscriptionId, callback);

// Delete a profile
em.deleteSubscription(subscriptionId, callback);

The Android LPA implementation delegates ES10x APDUs to the modem through the Radio Interface Layer (RIL). The EuiccService (part of the proprietary LPA implementation by the device OEM or Google) translates Android API calls into APDUs sent to the eUICC.

iOS Core Telephony + eSIM

Apple's eSIM implementation is closed-source, but the public APIs include:

GSMA Activation Code Format

The QR code that users scan to activate an eSIM contains a GSMA-defined activation code:

LPA:1$smdp.example.com$MNO-ACTIVATION-CODE-12345

Or for SM-DS activation:

LPA:1$SMDS$mno-activation-code-67890

Summary

The eSIM ecosystem is a complex stack spanning hardware (eUICC chip), firmware (GlobalPlatform card OS + ISD-R/ISD-P), client software (LPA), network servers (SM-DP+/SM-DS), and carrier backends (MNO BSS). Understanding each layer — from the APDU on the wire to the GSMA PKI certificate chain — is essential for anyone working on embedded SIM development, eSIM testing, or eUICC platform integration.

Key takeaways: