A fully free and open-source Local Profile Assistant implementation for Android devices.
There are two variants of this project, OpenEUICC and EasyEUICC:
| OpenEUICC | EasyEUICC | |
|---|---|---|
| Privileged | Must be installed as system app | No |
| Internal eSIM | Supported | Unsupported |
| External eSIM [^1] | Supported | Supported |
| USB Readers | Supported | Supported |
| Requires allowlisting by eSIM | No | Yes -- except USB |
| System Integration | Partial [^2] | No |
| Minimum Android Version | Android 11 or higher | Android 9 or higher |
[^1]: Also known as "Removable eSIM" [^2]: Carrier Partner API unimplemented yet
Some side notes:
T=0 readers that use the standard USB CCID protocol are supported.2A2FA878BC7C3354C2CF82935A5945A3EDAE4AFA.This project is Free Software licensed under GNU GPL v3, WITHOUT the "or later" clause. Any modification and derivative work MUST be released under the SAME license, which means, at the very least, that the source code MUST be available upon request.
If you are releasing a modification of this app, you are kindly asked to make changes to at least the app name and package name.
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
There are two ways to include OpenEUICC in your AOSP-based system image:
manifest.xml is required, remember to set the sync-s option to clone submodules.OpenEUICC. You can include it in PRODUCT_PACKAGES, or simply build it standalone using mm.Android.bp is provided for this case but it should be straightforward to write.privapp_whitelist_im.angry.openeuicc.xml as well.Q: Do you provide prebuilt binaries for OpenEUICC? \
A: Debug-mode APKs and Magisk modules are available continuously as an artifact of the Actions CI used by this project. However, these debug-mode APKs are not intended for inclusion inside system images, nor are they supported by the developer in any sense. 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: 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.
Everything except libs/lpac-jni and art/:
Copyright 2022-2024 OpenEUICC contributors
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, version 3.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
libs/lpac-jni:
Copyright (C) 2022-2024 OpenEUICC contributiors
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation, version 2.1.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
art/: Courtesy of Aikoyori, CC NC-SA 4.0.