SCP11 eIM Local
SCP11/eim_local/ is the eIM-side shell for SGP.32 IoT RSP work. It layers
eIM package authoring, hotfolder queues, poll campaigns, response logging, and
handover helpers on top of the local SCP11 stack, and exposes a standalone
IPAd runner suitable for export.
On this page
Underlying concept
Read RSP Architecture first. This page assumes the SGP.32 eIM/IPA split is understood.
When to use it
ADD-INITIAL-EIM,ADD-EIM,GET-EIM-CONFIG,DELETE-EIMLOAD-EIM-PACKAGEdirect to ISD-R- localized IPAd runs through live or test relay orchestrators
- localized IPAe polling with a plugin-backed path
- hotfolder-driven package campaigns
- poll campaign execution, export, and aggregate reporting
- counter and error-code inspection
- response log capture, filtering, and clear-out
- handover orchestration between Auth, Download, and status verbs
- direct-to-ISD-R package validation without polling
Entry points
python -m SCP11.eim_local
python -m SCP11.eim_local --cmd "STATUS; PATHS; EXIT"
yggdrasim-scp11-eim-local
python main/main.py and pick the SCP11 eIM Local entry.
Command surface, grouped
Diagnostics and paths
| Command | Purpose |
|---|---|
STATUS |
session and shell status |
PATHS |
resolved paths for identity, packages, logs, certs |
COUNTERS |
list known eIM counters |
COUNTER <eim_id> |
inspect or set a specific counter |
ERROR-CODES |
list configured error-code overrides |
ERROR-CODE-SET <code> <meaning> |
override or inspect an error code |
RESP-LOG |
print the response log |
RESP-LOG-FILTER <filter> |
filter response-log output |
RESP-LOG-CLEAR |
clear the response log |
NOTIF-HYGIENE |
notification list hygiene |
eIM lifecycle (direct card)
| Command | Purpose |
|---|---|
ADD-INITIAL-EIM |
seed BF55 identity via the eIM path |
ADD-EIM |
add or rotate eIM entries |
GET-EIM-CONFIG |
read eIM configuration data from the card |
DELETE-EIM |
remove an eIM entry |
EUICC-MEMORY-RESET |
trigger the eUICC memory reset flow |
ISDR-ADD-INITIAL-EIM |
direct-to-ISD-R variant of add-initial-eim |
ISDR-ADD-EIM |
direct-to-ISD-R variant of add-eim |
ISDR-GET-EIM-CONFIG |
direct-to-ISD-R variant of get-eim-config |
ISDR-DELETE-EIM |
direct-to-ISD-R variant of delete-eim |
LOAD-EIM-PACKAGE |
load a generated eIM package onto the card |
IPAd and IPAe
| Command | Purpose |
|---|---|
IPAD-DISCOVER |
IPAd discovery via orchestrator |
IPAD-LIVE |
localized IPAd run through live orchestrator |
IPAD-TEST |
localized IPAd run through test orchestrator |
IPAE-AUTHENTICATE |
direct IPAe auth against the local eIM/SM-DP+ |
IPAE-DOWNLOAD |
direct IPAe download handover |
IPAE-LIVE |
plugin-backed localized IPAe via live orchestrator |
IPAE-TEST |
plugin-backed localized IPAe via test orchestrator |
HANDOVER-STATUS |
inspect the current handover state |
Queues and campaigns
| Command | Purpose |
|---|---|
POLL-CAMPAIGN |
run a poll campaign |
POLL-EXPORT |
export audit trails |
POLL-AGGREGATE |
print aggregate stats |
HOTFOLDER |
manage the hotfolder |
HOTFOLDER-LIST |
list pending packages |
HOTFOLDER-POLL |
poll the hotfolder for new packages |
HOTFOLDER-FETCH |
fetch a specific hotfolder package |
EIM-ACKNOWLEDGE |
explicit eIM acknowledgement |
Identity split to remember
Workspace/LocalEIM/eim_identity.jsondefines the Local eIM and SM-DP+ side of the shell.Workspace/SIMCARD/eim_identity.jsondefines the simulated card's default BF55 eIM identity.Workspace/SIMCARD/isdr_config.jsonwitheim_entriesdefines a full custom card-side eIM layout when the single default is not enough.
The Local eIM identity does not silently rewrite the simulator-side BF55 row. Keep them aligned on purpose.
Runtime dependencies
- a reader with an eUICC, or the simulator backend
- local SCP11 certificates for the direct-to-ISD-R flows
- local eIM certificates under
SCP11/eim_local/certs/ - the shared SQLite inventory for per-
eim_idstate - optional
pollingplugin forIPAE-LIVEandIPAE-TEST
State the shell writes
| Location | Contents |
|---|---|
state/device_inventory.sqlite3 |
per-eim_id counters and runtime markers |
SCP11/eim_local/eim_packages/ |
authored packages and templates |
SCP11/eim_local/eim_packages/hotfolder/ |
hotfolder queue |
| JSONL response logs | response-log evidence retained under the runtime root |
Common recipes
First-time eIM bring-up
[eSIM eIM] > STATUS
[eSIM eIM] > ADD-INITIAL-EIM
[eSIM eIM] > GET-EIM-CONFIG
Hotfolder poll loop
python -m SCP11.eim_local --cmd "HOTFOLDER-LIST; HOTFOLDER-POLL; EXIT"
Export a campaign audit
[eSIM eIM] > POLL-CAMPAIGN
[eSIM eIM] > POLL-AGGREGATE
[eSIM eIM] > POLL-EXPORT
Pitfalls
ADD-INITIAL-EIMcan only run when the target BF55 row is empty or the card-side configuration explicitly allows overwrite. Check the simulatorisdr_config.jsonbefore retrying.- The optional
pollingplugin is mandatory forIPAE-LIVEandIPAE-TEST. Without it, the shell will either hide those verbs or emit a clean runtime error. - Hotfolder artifacts live under the writable runtime root on frozen builds, not under the source tree.
- Counter overrides through
COUNTER <eim_id> <value>persist until changed again; they do not auto-reset on shell exit.
Related pages
- RSP Architecture
- SCP11 Local Access
- Write a Plugin
SCP11/eim_local/GUIDE.mdfor the full authored eIM-local guide