For Android and Linux users evaluating open source eSIM tooling, worldwide.
Open source eSIM LPA
Every argument about whether eSIM works on a de-Googled phone is really an argument about one component. It is called the local profile assistant, and understanding it turns a confusing question into a checkable one.

- An LPA is the system component that downloads and installs eSIM profiles
- AOSP ships no general purpose LPA, so it has to be added to each build
- Android picks one LPA by permission and declared manifest priority
- OpenEUICC is the open source Android LPA; privileged builds reach internal eSIMs
- The unprivileged variant reaches only removable chips that allowlist its certificate
- lpac, libeuicc, EasyLPAC, lpa-gtk and hermes cover desktop, Linux mobile and ChromeOS
The chip in your phone that stores eSIM profiles is called a eUICC, and by itself it does nothing. Something has to read an activation code, work out which provisioning server it names, run the GSMA protocol against that server, and write the resulting profile into secure storage on the chip. That something is the local profile assistant, or LPA. It is the whole ballgame: standard chip, standard code, standard server, and the only variable is whether an LPA is present and able to reach the chip.
Google's Android documentation describes the LPA as a standalone system app that should be included in the Android build image, and says device manufacturers can implement their own and hook it up to the Android eUICC APIs. Read that carefully and the entire de-Googled eSIM situation falls out of it. AOSP does not hand you one. Somebody has to put one in the build. When nobody did, the phone has working eSIM hardware and no way to use it.
How Android decides which LPA is in charge
The public interface applications use is EuiccManager, in the android.telephony.euicc package. Behind it, whoever implements profile handling extends EuiccService and declares that service in their manifest. The framework then queries the package manager for apps holding the WRITE_EMBEDDED_SUBSCRIPTIONS permission that declare a service for the android.service.euicc.EuiccService action, and selects the one with the highest priority declared in its manifest. Only one can be the working LPA at a time.
There is a hard requirement bundled into that. An LPA app has to be a system app, included in the system image, in order to call the relevant system APIs at all. This is not gatekeeping by Google so much as a consequence of what the component does: it writes to a secure element that holds carrier credentials. It does mean, though, that you cannot solve a missing LPA by downloading something, which is the single most common misunderstanding in this area.
The open source implementations that actually exist
There are more than people expect, and the Osmocom eUICC and eSIM developer manual maintains the closest thing to a canonical index of them. On Android the significant one is OpenEUICC, described by its authors as a fully free and open-source local profile assistant implementation for Android, shipped in two variants. The privileged variant must be installed as a system app, signed with the platform certificate and placed in the system partition, and the project supplies a privileged-app allowlist file for ROM builders to include. Once privileged it can manage internal eSIMs, external eSIMs and chips reached over USB CCID readers.
The second variant, EasyEUICC, runs as an ordinary unprivileged app, and its limits are worth understanding because they are frequently misreported. It cannot touch the eUICC soldered into your phone. It can only access removable eSIM chips whose ARA-M field proactively grants access to its signing certificate, which means the chip vendor has to have allowlisted it. Away from Android there is lpac, a C library and command line utility, with libeuicc as its core; EasyLPAC as a desktop front end; lpa-gtk for Linux mobile; and hermes, the eSIM daemon used on Chromium OS. Several are cross-platform. None of them changes the rule that on Android, reaching the internal chip requires system privilege.
Which builds ship one, and how to tell
Naming builds is where most articles on this subject go wrong, because the answer changes with releases and differs per device even within one project. What can be said reliably: stock manufacturer builds on eSIM-capable hardware generally include an LPA, frequently a proprietary one from the vendor or from Google. Hardened Android systems built on that same hardware often keep it working, sometimes behind a setting that is off by default. Community builds derived from LineageOS have historically been the weak spot, with reports of the add-eSIM control being absent, or present and completely inert, on official builds. A ROM including OpenEUICC has to have chosen to, and that is a per-build decision.
So rather than trusting a list, test the device. The presence of a working add-eSIM flow that reaches a QR scanner or a manual activation code field is direct evidence that some LPA is installed and functioning, regardless of which one it is or who wrote it. The absence of that flow, or a control that does nothing when tapped, is equally direct evidence in the other direction. That test costs nothing and is more current than any page.
Why this matters commercially, and what we can promise
Every eSIM anyone sells you, including ours, is the same object at this layer: a GSMA activation code pointing at a provisioning server. There is no such thing as an eSIM that is compatible with more LPAs than another, and any seller claiming special compatibility with de-Googled systems is describing something that does not exist in the specification. What differs between sellers is whether they are honest about the boundary. Ours is that the profile is ours and the LPA is yours.
Concretely, we sell a real UK +44 mobile carrier line as an eSIM QR, not VoIP and not a shared pool number, with unlimited incoming SMS and calls worldwide over roaming and no mobile data at all. It is $25 once, first six months included, then $15 every six months, with nothing renewing automatically because we store no card. Travel data is separate, from $1.99 across 190+ countries, data only. Payment is crypto only across twelve methods, with no KYC, no account and no email, and an 8-character lookup code in the AB12-CDEF format. The UK number QR is single use and is never reissued, so the check below is not a formality. And to be plain about the ceiling: no KYC at purchase removes paperwork, not your device IMEI, your IP address, or a carrier's records of an active line.
How to work out what your build has
- 1
Confirm the hardware first. Find your EID, the 32-digit identifier belonging to the eUICC, under Settings, Network and internet, SIMs on the eSIM entry, or by dialling *#06# and reading the numbers beside the IMEI. If you have adb, adb shell pm list features should show android.hardware.telephony.euicc on a device with the chip.
- 2
Look for the entry point. In Settings, Network and internet, SIMs, an option to download a SIM, add an eSIM, or a plus button beside the SIM entries indicates the build exposes an eSIM installer.
- 3
Prove it is live. Start that flow and get as far as a QR scanner or a manual activation code field. Reaching that screen means an LPA is installed and responding. A control that is present but does nothing when tapped means the screen exists without a working assistant behind it, which is a known pattern.
- 4
If you want to know which LPA you have, check your installed system applications for a profile assistant package. On a build that ships an open source one it will be visible as a system app rather than something you installed, and the project's own documentation is a better guide than guesswork about what it can do.
- 5
If there is no LPA, be realistic about the fix. The privileged open source assistant has to be built into the ROM, signed with the platform certificate and allowlisted as a privileged app, so it is a ROM builder's job rather than a user install. The unprivileged variant only reaches removable eSIM chips that allowlist its certificate, never the internal eUICC.
- 6
Only when the flow works does buying make sense. Our UK +44 number installs through that same screen as an ordinary activation code, and if you are unsure, ask before paying, because that QR is single use and never reissued.
Questions & answers
What is an LPA in eSIM?
The local profile assistant, the software that turns an activation code into an installed profile. It parses the code, contacts the provisioning server named in it, runs the GSMA protocol and writes the profile onto the eUICC chip. Without one, the chip is unreachable no matter how good it is, and that is what people are really encountering when an eSIM will not install on a custom build.
Is there an open source LPA for Android?
Yes. OpenEUICC describes itself as a fully free and open-source local profile assistant implementation for Android and comes in two variants. The privileged one must be installed as a system app, signed with the platform certificate and placed in the system partition, and can then manage internal and external eSIMs. The unprivileged variant runs as a normal app but cannot access the eSIM built into a phone.
Why can I not just install an LPA from an app store?
Because reaching the eUICC requires system privilege. Android requires an LPA to be a system app included in the system image before it can call the relevant APIs, and the unprivileged open source variant is restricted by design to removable chips that explicitly allowlist its signing certificate. That restriction protects a secure element holding carrier credentials, so it is unlikely to be relaxed.
Are there open source LPAs outside Android?
Several. lpac is a C library with a command line utility, built on libeuicc, and there are desktop front ends such as EasyLPAC, a GTK client for Linux mobile devices, and hermes, the eSIM daemon used on Chromium OS. The Osmocom eUICC and eSIM developer manual maintains a list of known implementations across platforms, which is the best starting point if you want the current state.
Does the eSIM I buy depend on which LPA I use?
No. Any eSIM is a standard GSMA activation code pointing at a provisioning server, and no seller can make a profile more or less compatible with a particular assistant. If a seller claims special compatibility with de-Googled systems, they are describing something that is not in the specification. What we can say is that our profiles are issued as plain activation codes with no device approval list, and that whether your build can download one is decided by your build.
More topics
Open source eSIM LPA
Every argument about whether eSIM works on a de-Googled phone is really an argument about one component. It is called the local profile assistant, and understanding it turns a confusing question into a checkable one.
Buy UK eSIM - $25