eSIM & iSIM Technology — Remote SIM Provisioning Guide
In this tutorial, you'll learn about esim & isim technology. We cover key concepts, practical examples, and best practices.
eSIM (embedded Subscriber Identity Module) and iSIM (integrated SIM) replace the physical plastic SIM card with a programmable secure element — eSIM is a dedicated chip soldered to the device, while iSIM integrates the SIM function directly into the device's main application processor or modem chipset.
What You'll Learn
- eSIM architecture: eUICC, LPA, SM-DP+, SM-DS
- GSMA Remote SIM Provisioning (RSP) flow for consumer devices
- M2M eSIM vs Consumer eSIM differences
- iSIM: integration into SoC, security, and market outlook
- Profile switching and multi-IMSI use cases
Why eSIM Matters
The physical SIM card has been unchanged for 30 years. eSIM eliminates the need to handle, ship, and swap plastic cards. Users can activate a mobile plan without visiting a store — scan a QR code or download via app. For IoT devices, eSIM means OTA profile switching without physical access. The global eSIM market reached $10 billion in 2026, with over 2 billion eSIM-capable devices shipped.
DodaZIP uses eSIM-like remote provisioning for its enterprise licensing — license profiles are downloaded and activated OTA, eliminating physical license keys.
Learning Path
flowchart LR A[Physical SIM History] --> B[eSIM Architecture
You are here] B --> C[GSMA RSP Process] B --> D[M2M vs Consumer eSIM] C --> E[iSIM & Future] style B fill:#f90,color:#fff
eSIM Architecture
flowchart TD
subgraph Device[UE / IoT Device]
eUICC[eUICC
Embedded UICC]
LPA[LPA
Local Profile Assistant]
App[LPA App / UI]
end
subgraph Network[SIM Remote Provisioning]
SM_DP[SM-DP+
Subscription Manager Data Preparation]
SM_DS[SM-DS
Subscription Manager Discovery]
end
subgraph Operator[MNO Systems]
OSS_BSS[OSS/BSS]
ENT[Entitlement Server]
end
App --> LPA
LPA --> eUICC
LPA -. HTTPS .-> SM_DP
LPA -. HTTPS .-> SM_DS
SM_DP --> OSS_BSS
SM_DP --> ENT
| Component | Role |
|---|---|
| eUICC | Embedded secure element that stores and runs multiple operator profiles |
| LPA | Local Profile Assistant — device software that manages profile download and installation |
| SM-DP+ | Subscription Manager Data Preparation — generates, secures, and delivers profiles to eUICC |
| SM-DS | Subscription Manager Discovery Server — optional relay for push notification when device is offline |
Consumer eSIM Activation Flow
When a user scans a QR code to activate an eSIM plan:
sequenceDiagram
User->>LPA: Scan QR code (activation code)
LPA->>SM-DS: Initiate profile download
LPA->>SM-DP+: HTTPS GET /profile
SM-DP+->>LPA: Signed profile package (bound to eUICC cert)
LPA->>eUICC: Install profile (authenticated)
eUICC->>eUICC: Decrypt profile with eUICC private key
eUICC->>LPA: Profile installed (ICCID + IMSI active)
LPA->>User: Profile ready
eUICC->>MNO: Attach to network (IMSI authenticated)
class ESIMProfileManager:
def __init__(self):
self.profiles = {}
self.active_profile = None
def download_profile(self, activation_code, eid):
print(f"[LPA] Activation code: {activation_code}")
print(f"[LPA] Resolve SM-DP+ from activation code")
print(f"[LPA] Establish HTTPS + mutual TLS with SM-DP+")
print(f"[SM-DP+] Bind profile to EID {eid}")
profile_id = f"PROFILE-{hash(activation_code)%10000}"
self.profiles[profile_id] = {
"state": "installed", "eid": eid
}
print(f"[eUICC] Profile {profile_id} decrypted and installed")
self.active_profile = profile_id
return profile_id
def switch_profile(self, profile_id):
if profile_id not in self.profiles:
print(f"[LPA] Profile {profile_id} not found")
return False
if self.active_profile:
self.profiles[self.active_profile]["state"] = "disabled"
self.profiles[profile_id]["state"] = "active"
self.active_profile = profile_id
print(f"[LPA] Switched to profile {profile_id}")
print(f"[eUICC] Detach from old network, attach with new IMSI")
return True
mgr = ESIMProfileManager()
p1 = mgr.download_profile("SCP:891.049.000...", "EID-8901234567890123456789")
mgr.switch_profile(p1)
Expected output:
[LPA] Activation code: SCP:891.049.000...
[LPA] Resolve SM-DP+ from activation code
[LPA] Establish HTTPS + mutual TLS with SM-DP+
[SM-DP+] Bind profile to EID EID-8901234567890123456789
[eUICC] Profile PROFILE-8142 decrypted and installed
[LPA] Switched to profile PROFILE-8142
[eUICC] Detach from old network, attach with new IMSI
M2M vs Consumer eSIM
| Aspect | Consumer eSIM (GSMA SGP.22) | M2M eSIM (GSMA SGP.02) |
|---|---|---|
| Trigger | User-initiated (QR code, app) | Network-initiated (SM-SR push) |
| Discovery | SM-DS optional | SM-SR always present |
| Profile download | Direct HTTPS to SM-DP+ | SM-SR relays to eUICC |
| User interaction | Yes (LPA UI) | None (headless) |
| Devices | Phones, tablets, smartwatches | Sensors, meters, cars |
iSIM (Integrated SIM)
iSIM moves the SIM function from a separate chip into the device's SoC or modem:
| Feature | Traditional SIM | eSIM | iSIM |
|---|---|---|---|
| Form factor | Removable card | Soldered chip | Integrated in SoC |
| Size | 12x15 mm (plug) | 4x4 mm | <1 mm² (in silicon) |
| Security | Dedicated secure element | Dedicated secure element | TrustZone / secure enclave |
| Cost | $0.50-1.00 | $0.30-0.80 | $0.05-0.20 |
| GSMA standard | NA | SGP.22 / SGP.02 | SGP.41 (iUICC) |
iSIM eliminates the separate eSIM chip entirely, reducing BOM cost and PCB space by 50%+ — critical for low-cost IoT devices. GSMA released the iUICC specification (SGP.41) in 2023, and Qualcomm, MediaTek, and Samsung already ship iSIM-capable chipsets.
Profile Switching Use Cases
- Travel: Download a local profile when arriving in another country, keep home profile active for calls
- Dual SIM: Two active profiles on one eUICC — personal and business lines
- IoT roaming: Switch between home and visited network profiles based on location or cost
Common Errors
1. Confusing eSIM with eUICC
eSIM is the technology. eUICC is the secure element chip. The term "eSIM" is commonly used for both, but they are different.
2. Assuming eSIM Profiles Are Reusable
A profile is bound to a specific eUICC (EID). You cannot transfer a downloaded profile to another device. Delete the profile on the old device and issue a new one.
3. Underestimating LPA Integration Effort
LPA is a complex software stack. Device OEMs must integrate GSMA-certified LPA libraries, test with multiple SM-DP+ vendors, and handle error cases (network failures, expired activation codes).
Practice Questions
What is the role of SM-DP+? Subscription Manager Data Preparation — generates operator profiles, encrypts them for the target eUICC, and delivers them over HTTPS.
How does eSIM differ from iSIM? eSIM is a separate soldered chip. iSIM integrates the SIM secure element into the device SoC or modem, reducing size and cost.
What is the LPA? Local Profile Assistant — the device-side software that manages eSIM profile download, installation, and user interaction.
Challenge: Design an eSIM provisioning system for a global IoT fleet of 100,000 asset trackers. Specify: M2M vs consumer approach, SM-DP+ selection, profile switching triggers (geofence-based), and an OTA fallback mechanism for devices with no cellular connectivity.
FAQ
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. Updated 2026-06-24.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro