Android 13 以降を搭載したデバイスでは、eUICC 用の複数の有効なプロファイル(MEP)がサポートされます。この機能により、デバイスは単一の eSIM チップを使用したデュアル SIM をサポートできます。その場合、eSIM チップは複数の SIM プロファイルを持つことができ、2 つの異なる携帯通信会社に同時に接続することが可能です。デバイス メーカーがこの機能をデバイスに組み込むには、SoC ベンダーおよび eSIM チップセット ベンダーと協力する必要があります。
背景
Android 12 以前を搭載したデバイスの場合、AOSP では、単一 eSIM での複数プロファイルの同時サポートは限定的です。eSIM はスペースとコストを大幅に削減する一方、デュアル SIM がサポートされていないことは、デバイス メーカーによる eSIM 専用デバイスの採用を妨げる要因となっています。eSIM 専用デバイスでデュアル SIM をサポートするには、2 つの eSIM 要素をデバイスに組み込む必要があります。これは、部品表(BOM)のコストを増大させ、サブスクリプション管理のユーザー エクスペリエンスの低下を招きます。Android 13 以降では、AOSP で MEP 機能が利用できるようになったことにより、この問題が解決されています。
eUICC アーキテクチャ
このセクションでは、さまざまな Android のバージョンの MEP に対応したデバイスの eSIM チップ アーキテクチャと、MEP に対応していないデバイスの eSIM チップ アーキテクチャについて説明します。
Android 14
Android 14 以降を搭載したデバイスでは、GSMA SGP V22 3.0 で指定されているとおり、発行者セキュリティ ドメインルート(ISD-R)の選択と eSIM ポートの選択において MEP-A1 と MEP-B を選択できます。以下では MEP-A1 と MEP-B の ISD-R 選択モデルを説明します。
MEP-A1: ISD-R はポート 0(コマンドポートは 0)で選択し、プロファイルは eSIM ポート 1 以上で選択します。ES10 コマンドは常にポート 0 に送信され、コマンドポートとターゲット ポートは常に異なります。LPA がポートを選択します。
図 1. MEP-A1 の ISD-R 選択モデル
MEP-B: ISD-R はどのポートでも選択でき、どのポートにもプロファイルを割り当てられます。有効コマンドと無効コマンドはプロファイルを有効または無効にする必要がある(更新が保留になっている)ポートに送信されます。コマンドポートとターゲット ポートは常に同じです。
図 2. MEP-B の ISD-R 選択モデル
Android 13
Android 13 以降の MEP に対応したデバイスの場合、eSIM スロットには複数の eUICC ポートがあり、各ポートは有効なプロファイルを 1 つ保持できます。図 3 のとおり、このアーキテクチャでは、各 eUICC ポートをモデム ベースバンドにリンクすることにより、単一の eUICC(単一の物理スロット)でデュアル SIM デュアル スタンバイ(DSDS)をサポートします。Android 13 HAL と API は MEP バリアントの影響を受けません。
図 3. MEP に対応した eSIM チップ アーキテクチャ(Android 13 以降)
Android 12 以前
Android 12 以前を搭載した MEP に対応していないデバイスの場合、図 4 のとおり、eSIM スロットは一度に 1 つの有効なプロファイルのみをサポートし、デバイスは DSDS に対応できません。
図 4. MEP に対応していない eSIM チップ アーキテクチャ(Android 12 以前)
複数の有効なプロファイルの API 情報フロー
図 5 は、Android 13 における eUICC 用 MEP の情報フローを示しています。テレフォニー フレームワークには、eUICC 上の物理構造を表す UiccPort
クラスがあります。UiccPort
クラスは、物理 SIM(pSIM)、統合 SIM(iSIM)、埋め込み SIM(eSIM)のすべてのタイプの SIM カードで使用されます。複数のポートがある eUICC では、単一の UiccSlot
オブジェクトと UiccCard
オブジェクトが複数の UiccPort
インスタンスにマッピングされます。各 UiccPort
インスタンスがリンクできる UiccProfile
インスタンスは最大で 1 つです。このフローでは、UiccPort
を 1 つの論理スロットにマッピングし、UiccSlot
(物理スロット)を複数の論理スロットにマッピングできます。
図 5. MEP に対応した eUICC の情報フロー
実装
このセクションでは、MEP 機能を実装する方法を示し、HAL の要件、API、ユーザー インターフェースについて詳しく説明します。デバイス メーカーが MEP をサポートするには、SoC ベンダーおよび eSIM チップセット ベンダーと協力する必要があります。
HAL の要件
eUICC 用の MEP をサポートするには、/platform/hardware/interfaces/radio/aidl/aidl_api
にある以下の IRadio AIDL HAL API を実装します。
Android 14 以降を搭載したデバイスは HAL インターフェースの IRadio 2.1 バージョンを使用する必要があります。これは MultipleEnabledProfileMode
(モデムまたは eUICC によってサポートされた ISD-R 選択モデル)を使用して、ICC 論理チャンネル オペレーション時に ES10 APDU コマンド情報を渡します。
CardStatus
モデムは、getIccCardStatusResponse
メソッドへのレスポンスとして、CardStatus
API をサポートする必要があります。レスポンスには SimPortSlotMapping
で指定されるポート インデックスと物理スロット インデックスを含める必要があります。
Android 14 以降を搭載したデバイスの場合、モデムはサポートしている MEP モードをすべての CardStatus イベントと合わせて渡す必要があります。
SimSlotStatus
モデムは、getSimSlotsStatus
メソッドへのレスポンスとして、SimSlotStatus
API をサポートする必要があります。SIM スロット ステータスには、SimPortInfo
インターフェースの配列が含まれます。この配列には、ポート インデックス、有効なプロファイルの ICCID、ポートの状態が格納されています。モデムは少なくとも 2 つの SimPortInfo
オブジェクトを返す必要があります。
Android 14 以降を搭載したデバイスの場合、モデムはサポートしている MEP モードをすべての CardStatus イベントと合わせて渡す必要があります。
setSimSlotMapping
setSimSlotMapping
メソッドは、SimPortSlotMapping
の配列を渡す必要があります。配列のインデックスは論理スロットであり、SimPortSlotMapping
は対応するマッピング済みポートと物理スロット インデックスを指定します。setSimSlotMapping
メソッドは、ポートから論理スロットへのマッピングを設定します。LPA アプリは、このメソッドを使用してアクティブなポートを選択します。
eUICC 用の MEP をサポートする API
AOSP テレフォニー スタックの一部として複数の有効なプロファイルをサポートする Android デバイスは、以下の API をサポートする必要があります。
UiccCardInfo
- (Android 13 以降)
isMultipleEnabledProfilesSupported
: この UICC が MEP をサポートするかどうかを返します。 - (Android 13 以降)
getPorts
: 特定の UICC で使用可能なすべてのポートのリストを返します。UICC が MEP をサポートしない pSIM または eSIM である場合は、1 つの要素のみを含むリストを返します。 - (非推奨)
getIccId
: ICCID を返します。UICC は MEP をサポートするデバイスで複数の ICCID を持つことができるので、代わりにUiccPortInfo.getIccId()
を使用してください。
(Android 13 以降)UiccPortInfo
getIccId
: このポートに有効なサブスクリプションがある場合は、ICCID を返します。getPortIndex
: ポート インデックスを返します。getLogicalSlotIndex
: アクティブな論理モデムスタック インデックスを返します。
SubscriptionInfo
- (Android 13 以降)
getPortIndex
: サブスクリプションが有効になっているポート インデックスを返します。サブスクリプションが無効になっている場合は、INVALID_PORT_ID -1
を返します。
EuiccManager
switchToSubscription
: 指定されたサブスクリプションに切り替えます。アクティブなサブスクリプションに対する携帯通信会社権限がないアプリで使用されます。このメソッドが呼び出されると、プラットフォームは、三択式の選択ダイアログを通じてポート インデックスを内部的に解決し、使用可能なポートがない場合は、選択されたアクティブなサブスクリプションを無効にします。Android 13 以降をターゲットとするアプリでは、無効なサブスクリプション ID を渡してサブスクリプションを無効にするためにこの API を使用しないでください。代わりに、ポート インデックスを指定してswitchToSubscription
(Android 13 で追加されたメソッド)を使用します。- (Android 13 以降)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: 指定のサブスクリプションに切り替えます。アクティブなサブスクリプションに対する携帯通信会社権限を持つアプリを呼び出すことにより、どのポートでサブスクリプションを有効にするかを指定できます。 - (Android 13 以降)
isSimPortAvailable
: ポート インデックスを渡せるかどうかを返します。ポートが使用できるのは、サブスクリプションが有効になっていない場合か、選択されたポートにインストールされているサブスクリプションに対する携帯通信会社権限を呼び出し元アプリが持っている場合です。
EuiccService
- (Android 13 以降)
onSwitchToSubscriptionWithPort
: 指定されたポートで指定されたサブスクリプションに切り替えます。LPA 実装は、Android 13 以降でこれをサポートする必要があります。
TelephonyManager
- (Android 13 以降)
getSimApplicationState
: カードアプリの状態を示す定数を返します。この API は、物理スロット インデックスとポート インデックスの両方を渡します。getSimApplicationState(int physicalSlotIndex)
メソッド(非推奨)は、物理スロット インデックスのみを渡してsimApplicationState
オブジェクトを取得します。 - (Android 13 以降)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: 論理スロットを物理スロットとポートにマッピングします。 - (Android 13 以降)
Collection<UiccSlotMapping> getSimSlotMapping
: 論理スロットから物理 SIM スロットとポート インデックスへのマッピングを取得します。
ユーザー インターフェース
eSIM ポート選択のあいまいさを解決するには、MEP をサポートするデバイスで、ユーザーがアクティブなサブスクリプションを無効にして、新しいサブスクリプションを有効にできる必要があります。Android 13 では、AOSP により三択式のダイアログを含むユーザーフローが用意されています。このダイアログは、設定アプリからユーザーフローを有効にするサブスクリプションに適用できます。図 6 は、この UX フローの例を示しています。
図 6. SIM サブスクリプションを有効にするユーザーフロー
機能フラグ
MEP をサポートするには、デバイスで以下の機能フラグを宣言する必要があります。
LPA 実装
MEP をサポートするには、LPA 実装が以下の要件を満たしていることを確認してください。
- 複数のポートをサポートするために EuiccService の API を実装している。
- ポートの選択とプロファイルの有効化を行う API を使用している。
- 携帯通信会社アプリが選択されたポートでプロファイルを有効にできる UX を提供している。
検証
MEP 機能の実装をテストするには、ビルドが次の CTS テストケースに合格することを確認します(公開 API の場合): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
。
また、デバイス メーカーは、モデム、eUICC チップ、eSIM OS のベンダーと協力して、デバイスで以下を実現する必要があります。
- 2 つの eSIM プロファイルを有効にして 2 つの異なるネットワークに接続できる。
- 任意の eSIM ポートで eSIM プロファイルを有効または無効にできる。
- 携帯通信会社アプリによってトリガーされ、ユーザーがプロファイルを切り替えられる UX フローが存在する。
携帯通信会社に対する推奨事項
ユーザーが eSIM プロファイルをあるポートから別のポートに移動するときにサービスを引き続き利用できるように、携帯通信会社は次のサポートを提供することが推奨されます。
- IMEI と SIM の流動マッピング
- 各 eUICC ID(EID)用の複数の ICCID または SIM