プロファイルの複数有効化

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 がポートを選択します。

    MEP-A1 の ISD-R 選択モデル

    図 1. MEP-A1 の ISD-R 選択モデル

  • MEP-B: 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 バリアントの影響を受けません。

MEP に対応した eSIM チップ アーキテクチャ

図 3. MEP に対応した eSIM チップ アーキテクチャ(Android 13 以降)

Android 12 以前

Android 12 以前を搭載した MEP に対応していないデバイスの場合、図 4 のとおり、eSIM スロットは一度に 1 つの有効なプロファイルのみをサポートし、デバイスは DSDS に対応できません。

MEP に対応していない eSIM チップ アーキテクチャ

図 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(物理スロット)を複数の論理スロットにマッピングできます。

MEP 情報フロー

図 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

ユーザー インターフェース

eSIM ポート選択のあいまいさを解決するには、MEP をサポートするデバイスで、ユーザーがアクティブなサブスクリプションを無効にして、新しいサブスクリプションを有効にできる必要があります。Android 13 では、AOSP により三択式のダイアログを含むユーザーフローが用意されています。このダイアログは、設定アプリからユーザーフローを有効にするサブスクリプションに適用できます。図 6 は、この UX フローの例を示しています。

MEP をサポートする SIM サブスクリプションのユーザーフロー

図 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