eSIM LPA (Local Profile Assistant) implementation for Android. System privilege or ARA-M allowlisting required.
Go to file
2023-12-28 21:38:39 -05:00
.idea Introducing EasyEUICC, the unprivileged version of OpenEUICC 2023-12-28 21:21:37 -05:00
app Introducing EasyEUICC, the unprivileged version of OpenEUICC 2023-12-28 21:21:37 -05:00
app-common Introducing EasyEUICC, the unprivileged version of OpenEUICC 2023-12-28 21:21:37 -05:00
app-unpriv Introducing EasyEUICC, the unprivileged version of OpenEUICC 2023-12-28 21:21:37 -05:00
gradle/wrapper chore: Upgrade gradle plugin 2023-11-12 17:01:20 -05:00
libs [11/n] lpac-jni: Fix validity check for LPA 2023-12-17 11:18:45 -05:00
.gitignore build.gradle: Refactor to allow platform signing for debug builds 2023-11-14 16:59:51 -05:00
.gitmodules refactor: [1/n] Introduce the lpac project and lpac_jni 2023-11-14 20:59:27 -05:00
Android.bp Fixup Android.bp build after app-common split 2023-12-01 17:51:18 -05:00
Android.mk Implement Android.bp building with AOSP for lpac_jni 2023-11-27 16:54:49 -05:00
build.gradle refactor: [1/n] Introduce the lpac project and lpac_jni 2023-11-14 20:59:27 -05:00
COPYING relicense under GPLv2 *only* 2022-05-02 14:25:43 -04:00
gradle.properties chore: Upgrade gradle plugin 2023-11-12 17:01:20 -05:00
gradlew initial commit 2022-04-29 17:09:34 -04:00
gradlew.bat initial commit 2022-04-29 17:09:34 -04:00
helpers.gradle refactor: [8/n] Extract git-based versioning logic 2023-11-28 21:59:03 -05:00
LICENSE relicense under GPLv2 *only* 2022-05-02 14:25:43 -04:00
privapp_whitelist_im.angry.openeuicc.xml Add privapp permission whitelist for production builds 2022-08-13 10:44:34 -04:00
README.md Add README (finally) 2023-12-28 21:38:39 -05:00
settings.gradle Introducing EasyEUICC, the unprivileged version of OpenEUICC 2023-12-28 21:21:37 -05:00

{Open,Easy}EUICC

A fully free and open-source Local Profile Assistant implementation for Android devices.

There are two variants of this project:

  • OpenEUICC: The full-flegded privileged variant. Intended to be run as a privileged system app (inside /system/priv-app) and serve as the system LPA. This can be used to manage all kinds of eSIM chips, embedded or removable.
  • EasyEUICC: Unprivileged version that can run as a user app. An eSIM chip must include the certificate of EasyEUICC in its ARA-M field in order to grant access without system privileges. This is intended for removable eSIM chips such as those provided by eSTK.
    • Prebuilt EasyEUICC apks can be downloaded here
    • For removable eSIM chip vendors: to have your chip supported by official builds of EasyEUICC, include the ARA-M hash 2A2FA878BC7C3354C2CF82935A5945A3EDAE4AFA

Building

Make sure you have all submodules cloned and updated by running

git submodule update --init

A file keystore.properties is required in the root directory. Template:

storePassword=my-store-password
keyPassword=my-password
keyAlias=my-key
unprivKeyPassword=my-unpriv-password
unprivKeyAlias=my-unpriv-key
storeFile=/path/to/android/keystore

Note that you must have a Java-compatible keystore generated first.

To build the privileged OpenEUICC:

./gradlew :app:assembleRelease

For EasyEUICC:

./gradlew :app-unpriv:assembleRelease

FAQs

  • Q: Do you provide prebuilt binaries for OpenEUICC?

  • A: No. If you are a custom ROM developer, either include the entire OpenEUICC repository in your AOSP source tree, or generate an APK using gradle and import that as a prebuilt system app. Note that you might want privapp_whitelist_im.angry.openeuicc.xml as well.

  • Q: AOSP's Settings app seems to be confused by OpenEUICC (for example, disabling / enabling profiles from the Networks page do not work properly)

  • A: When your device has internal eSIM chip(s) and you have inserted a removable eSIM chip, the Settings app can misbehave since it was never designed for this scenario. Please prefer using OpenEUICC's own management interface whenever possible. In the future, there might be an option to exclude removable SIMs from being reported to the Android system.

  • Q: Can EasyEUICC manage my phone's internal eSIM?

  • A: No. For EasyEUICC to work, the eSIM chip MUST proactively grant access via its ARA-M field.

  • Q: Removable eSIMs? Are they a joke?

  • A: No, even though the name "removable embedded SIM" can sound like an oxymoron. In fact, there can be many advantages to these chips compared to fully embedded ones. For example, the ability to transfer eSIM profiles without carrier support or approval, or the ability to use eSIM on devices that do not and may never get the support, such as Wi-Fi hotspots.