diff --git a/.forgejo/workflows/build-debug.yml b/.forgejo/workflows/build-debug.yml
index 9dbe845..0818b8b 100644
--- a/.forgejo/workflows/build-debug.yml
+++ b/.forgejo/workflows/build-debug.yml
@@ -2,8 +2,6 @@ on:
push:
branches:
- '*'
- tags:
- - '*'
jobs:
build-debug:
diff --git a/README.md b/README.md
index 80ab300..8a67e41 100644
--- a/README.md
+++ b/README.md
@@ -18,30 +18,17 @@ There are two variants of this project, OpenEUICC and EasyEUICC:
[^2]: Carrier Partner API unimplemented yet
Some side notes:
+1. When privileged, OpenEUICC supports any eUICC chip that implements the SGP.22 standard, internal or external. However, there is __no guarantee__ that external (removable) eSIMs actually follow the standard. Please __DO NOT__ submit bug reports for non-functioning removable eSIMs. They are __NOT__ officially supported unless they also support / are supported by EasyEUICC, the unprivileged variant.
+2. Both variants support accessing eUICC chips through USB CCID readers, regardless of whether the chip contains the correct ARA-M hash to allow for unprivileged access. However, only `T=0` readers that use the standard [USB CCID protocol](https://en.wikipedia.org/wiki/CCID_(protocol)) are supported.
+3. Prebuilt release-mode EasyEUICC apks can be downloaded [here](https://gitea.angry.im/PeterCxy/OpenEUICC/releases). For OpenEUICC, no official release is currently provided and only debug mode APKs and Magisk modules can be found in the [CI page](https://gitea.angry.im/PeterCxy/OpenEUICC/actions).
+4. For removable eSIM chip vendors: to have your chip supported by official builds of EasyEUICC when inserted, include the ARA-M hash `2A2FA878BC7C3354C2CF82935A5945A3EDAE4AFA`.
-1. When privileged, OpenEUICC supports any eUICC chip that implements the [SGP.22] standard, internal or external.
- However, there is **no guarantee** that external (removable) eSIMs actually follow the standard.
- Please **DO NOT** submit bug reports for non-functioning removable eSIMs.
- They are **NOT** officially supported unless they also support / are supported by EasyEUICC, the unprivileged variant.
-2. Both variants support accessing eUICC chips through USB CCID readers,
- regardless of whether the chip contains the correct ARA-M hash to allow for unprivileged access.
- However, only `T=0` readers that use the standard [USB CCID protocol][usb-ccid] are supported.
-3. Prebuilt release-mode EasyEUICC apks can be downloaded [here][releases].
- For OpenEUICC, no official release is currently provided and only debug mode APKs and Magisk modules can be found in the [CI page][actions].
-4. For removable eSIM chip vendors: to have your chip supported by official builds of EasyEUICC when inserted,
- include the ARA-M hash `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.
-[sgp.22]: https://www.gsma.com/solutions-and-impact/technologies/esim/gsma_resources/sgp-22-v2-2-2/ "SGP.22 v2.2.2"
-[usb-ccid]: https://en.wikipedia.org/wiki/CCID_%28protocol%29 "USB CCID Protocol"
-[releases]: https://gitea.angry.im/PeterCxy/OpenEUICC/releases "EasyEUICC Releases"
-[actions]: https://gitea.angry.im/PeterCxy/OpenEUICC/actions "OpenEUICC Actions"
+__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.__
-**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.**
-
-# Building (Gradle)
+Building (Gradle)
+===
Make sure you have all submodules cloned and updated by running
@@ -74,7 +61,8 @@ For EasyEUICC:
./gradlew :app-unpriv:assembleRelease
```
-# Building (AOSP)
+Building (AOSP)
+===
There are two ways to include OpenEUICC in your AOSP-based system image:
@@ -84,22 +72,22 @@ There are two ways to include OpenEUICC in your AOSP-based system image:
- Compilation of this project is **only** tested against the latest AOSP release version. The app itself should be compatible with older AOSP versions, but the source may not compile against an older AOSP source tree.
2. If compilation against AOSP source tree is not possible, consider [building with gradle](#building-gradle) and import the apk as a prebuilt.
- No official `Android.bp` is provided for this case but it should be straightforward to write.
- - You might want to include [`privapp_whitelist_im.angry.openeuicc.xml`] as well.
+ - You might want to include `privapp_whitelist_im.angry.openeuicc.xml` as well.
-[`privapp_whitelist_im.angry.openeuicc.xml`]: privapp_whitelist_im.angry.openeuicc.xml "OpenEUICC Privapp Whitelist"
+FAQs
+===
-# FAQs
+- Q: Do you provide prebuilt binaries for OpenEUICC?
+- A: Debug-mode APKs and Magisk modules are available continuously as an artifact of the [Actions](https://gitea.angry.im/PeterCxy/OpenEUICC/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: 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: 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.
-- 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.
-
-# Copyright
+Copyright
+===
Everything except `libs/lpac-jni` and `art/`:
@@ -139,4 +127,4 @@ 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](https://github.com/Aikoyori), CC NC-SA 4.0.
+`art/`: Courtesy of [Aikoyori](https://github.com/Aikoyori), CC NC-SA 4.0.
\ No newline at end of file
diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/SimplifiedErrorMessages.kt b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/SimplifiedErrorMessages.kt
index 71dff8a..8ce5740 100644
--- a/app-common/src/main/java/im/angry/openeuicc/ui/wizard/SimplifiedErrorMessages.kt
+++ b/app-common/src/main/java/im/angry/openeuicc/ui/wizard/SimplifiedErrorMessages.kt
@@ -43,10 +43,6 @@ enum class SimplifiedErrorMessages(
R.string.download_wizard_error_profile_unreleased,
R.string.download_wizard_error_suggest_contact_reissue
),
- UnavailableProfile(
- R.string.download_wizard_error_profile_unavailable,
- R.string.download_wizard_error_suggest_contact_carrier
- ),
MatchingIDRefused(
R.string.download_wizard_error_matching_id_refused,
R.string.download_wizard_error_suggest_contact_carrier
@@ -86,39 +82,21 @@ enum class SimplifiedErrorMessages(
companion object {
private val httpErrors = buildMap {
- // @formatter:off
- // Stage: InitiateAuthentication
- put("8.8.1" to "3.8", UnknownHost) // Invalid SM-DP+ Address.
- put("8.8.2" to "3.1", UnsupportedProfile) // None of the proposed Public Key Identifiers is supported by the SM-DP+.
- put("8.8.3" to "3.1", UnsupportedProfile) // The SVN indicated by the eUICC is not supported by the SM-DP+.
- put("8.8.4" to "3.7", UnsupportedProfile) // The SM-DP+ has no CERT.DPAuth.ECDSA signed by one of the GSMA CI Public Key supported by the eUICC.
-
// Stage: AuthenticateClient
- put("8.1" to "4.8", InsufficientMemory) // eUICC does not have sufficient space for this Profile.
- put("8.1.1" to "2.1", EIDNotSupported) // eUICC does not support the EID.
- put("8.1.1" to "3.8", EIDMismatch) // EID doesn't match the expected value.
- put("8.1.2" to "6.1", UnsupportedProfile) // EUM Certificate is invalid.
- put("8.1.2" to "6.3", UnsupportedProfile) // EUM Certificate has expired.
- put("8.1.3" to "6.1", UnsupportedProfile) // eUICC Certificate is invalid.
- put("8.1.3" to "6.3", UnsupportedProfile) // eUICC Certificate has expired.
- put("8.2" to "1.2", UnreleasedProfile) // Profile has not yet been released.
- put("8.2.5" to "4.3", UnavailableProfile) // No eligible Profile for this eUICC/Device.
- put("8.2.6" to "3.8", MatchingIDRefused) // MatchingID (AC_Token or EventID) is refused.
- put("8.8" to "4.2", EIDNotSupported) // eUICC is not supported by the SM-DP+.
- put("8.8.5" to "6.4", ProfileRetriesExceeded) // The maximum number of retries for the Profile download order has been exceeded.
- put("8.10.1" to "3.9", UnsupportedProfile) // The RSP session identified by the TransactionID is unknown.
- put("8.11.1" to "3.9", UnsupportedProfile) // Unknown CI Public Key.
+ put("8.1" to "4.8", InsufficientMemory)
+ put("8.1.1" to "2.1", EIDNotSupported)
+ put("8.1.1" to "3.8", EIDMismatch)
+ put("8.2" to "1.2", UnreleasedProfile)
+ put("8.2.6" to "3.8", MatchingIDRefused)
+ put("8.8.5" to "6.4", ProfileRetriesExceeded)
// Stage: GetBoundProfilePackage
- put("8.2" to "3.7", UnavailableProfile) // BPP is not available for a new binding.
- put("8.2.7" to "2.2", ConfirmationCodeMissing) // Confirmation Code is missing.
- put("8.2.7" to "3.8", ConfirmationCodeRefused) // Confirmation Code is refused.
- put("8.2.7" to "6.4", ConfirmationCodeRetriesExceeded) // The maximum number of retries for the Confirmation Code has been exceeded.
+ put("8.2.7" to "2.2", ConfirmationCodeMissing)
+ put("8.2.7" to "3.8", ConfirmationCodeRefused)
+ put("8.2.7" to "6.4", ConfirmationCodeRetriesExceeded)
// Stage: AuthenticateClient, GetBoundProfilePackage
- put("8.1" to "6.1", UnsupportedProfile) // eUICC Signature is invalid.
- put("8.8.5" to "4.10", ProfileExpired) // The Download order has expired.
- // @formatter:on
+ put("8.8.5" to "4.10", ProfileExpired)
}
fun fromDownloadError(exc: LocalProfileAssistant.ProfileDownloadException) = when {
diff --git a/app-common/src/main/res/values-ja/strings.xml b/app-common/src/main/res/values-ja/strings.xml
index 3958120..b171972 100644
--- a/app-common/src/main/res/values-ja/strings.xml
+++ b/app-common/src/main/res/values-ja/strings.xml
@@ -166,33 +166,33 @@
通知
eSIM のプロファイル操作により、通信事業者に通知が送信されます。必要に応じてこの動作を微調整できます。
ダウンロード
- プロファイルをダウンロード中の通知を送信します。
+ プロファイルをダウンロード中の通知を送信します
削除
- プロファイルを削除中の通知を送信します。
+ プロファイルを削除中の通知を送信します
切り替え中
- プロファイルを切り替え中の通知を送信します。\nこのタイプの通知は信頼できないことに注意してください。
+ プロファイルを切り替え中の通知を送信します\nこのタイプの通知は信頼できないことに注意してください。
高度な設定
プロファイルの無効化と削除を許可
デフォルトでは、このアプリでデバイスに挿入されたリムーバブル eSIM の有効なプロファイルを無効化することを防いでいます。なぜなのかというと時々アクセスができなくなるからです。\nこのチェックボックスを ON にすることで、この保護機能を解除します。
詳細ログ
詳細ログを有効化します。これには個人的な情報が含まれている可能性があります。この機能を ON にした後は、信頼できるユーザーとのみログを共有してください。
言語
- アプリの言語を設定します。
+ アプリの言語
ログ
- アプリの最新デバッグログを表示します。
+ アプリの最新デバッグログを表示します
開発者オプション
モデムに更新コマンドを送信
プロファイルを切り替えた後にモデムに更新コマンドを送信するかどうかを設定します。クラッシュが発生する場合は、この機能を無効化してください。
- 未フィルタリングのプロファイルリストを表示
- 非運用のプロファイルも含めるようにします。
+ フィルタリングされていないプロファイル一覧を表示
+ 非運用のプロファイルも含めます
SM-DP+ TLS 証明書を無視する
- RSP サーバーで使用される TLS 証明書を受け入れます。
+ RSP サーバーで使用される TLS 証明書を受け入れます
eUICC の消去を許可
これは危険な操作であり、デフォルトでは非表示になっています。代わりとしてすべてのプロファイルを手動で削除することもできます。
- グローバル ES10x MSS を設定します。
+ グローバル ES10x MSS
- - 高効率
- - 高い互換性
+ - 高速
+ - 互換モード
ISD-R AID リストをカスタマイズ
一部ブランドのリムーバブル eUICC は独自の非標準な ISD-R AID を使用しているため、サードパーティー製アプリからアクセスできない場合があります。このリストに追加された非標準な AID の使用を試みますが、動作の保証はできません。
diff --git a/app-common/src/main/res/values/strings.xml b/app-common/src/main/res/values/strings.xml
index a152ae7..39a762f 100644
--- a/app-common/src/main/res/values/strings.xml
+++ b/app-common/src/main/res/values/strings.xml
@@ -111,7 +111,6 @@
The EID of your device or eSIM chip is unsupported by your carrier.
This eSIM profile has been downloaded on another device.
This eSIM profile has been revoked.
- This eSIM profile has been unavailable.
The activation code is invalid.
The maximum number of download attempts for the eSIM profile has been exceeded.
Confirmation code is required to download this profile.
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 4cd54e2..920801c 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -9,7 +9,7 @@
論理スロット %d:
スロット %1$d ポート %2$d
使用しているデバイスは、%1$d 個の論理 SIM スロットと %2$d 個の物理 SIM スロットがあります。%3$s\n\n各論理スロットに対応する物理スロットまたはポートを選択してください。すべてのマッピングモードがハードウェアでサポートされているわけではないことにご注意ください。
- \n\n物理スロット %1$d は、複数の有効なプロファイル (MEP) をサポートしています。この機能を使用するには、%2$d の仮想ポートを上記の異なる論理スロットに割り当てます。\n\nMEP を有効化すると、ポートは共有プロファイルのリストを除いて OpenEUICC の個別の eSIM スロットのように動作します。
+ \n\n物理スロット %1$d は、複数の有効なプロファイル (MEP) をサポートしています。この機能を使用するには、%2$d の仮想ポートを上記の異なる論理スロットに割り当てます。\n\nMEP を有効化すると、ポートは共有プロファイルの一覧を除いて OpenEUICC の個別の eSIM スロットのように動作します。
\nデュアル SIM モードはサポートされていますが、無効化されています。デバイスに内部 eSIM チップが搭載されている場合は、デフォルトで有効化されていない可能性があります。上記のマッピングを変更するか、デュアル SIM を有効化して eSIM にアクセスしてください。
新しいスロットマッピングが設定されました。モデムがスロットを更新するまでお待ちください。
指定されたマッピングが無効化されているか、ハードウェアがサポートをしていない可能性があります。