다중 지원 프로필

Android 13 이상을 실행하는 기기의 경우 Android는 eUICC에서 다중 지원 프로필(MEP)을 지원합니다. 이 기능을 사용하면 기기에서 단일 eSIM 칩을 사용하여 듀얼 SIM을 지원할 수 있습니다. 그러면 여러 개의 SIM 프로필을 갖고 동시에 두 개의 이동통신사에 연결할 수 있습니다. 기기 제조업체는 SoC 공급업체 및 eSIM 칩셋 공급업체와 협력하여 기기에 이 기능을 통합해야 합니다.

배경

Android 12 이하를 실행하는 기기에서 AOSP는 단일 eSIM이 동시에 여러 프로필을 지원할 수 있도록 제한적으로 지원합니다. eSIM이 상당한 공간 및 비용을 절감함에도 듀얼 SIM을 지원하지 않기 때문에 기기 제조업체는 eSIM 전용 기기를 채택하지 못합니다. eSIM 전용 기기에서 듀얼 SIM 지원을 제공하려면 기기 제조업체가 두 개의 eSIM 요소를 기기에 적용해야 합니다. 이렇게 하면 재료(BOM) 비용이 증가하고 구독 관리 사용자 환경이 저하됩니다. Android 13의 AOSP에서 사용할 수 있는 MEP 기능은 이 문제를 해결합니다.

eUICC 아키텍처 변경사항

이 섹션에서는 Android 13을 실행하는 MEP가 있는 기기와 Android 12 이하를 실행하는 MEP가 없는 기기의 eSIM 칩 아키텍처를 비교합니다. 그림 1과 같이 MEP를 지원하는 기기의 경우 eSIM 슬롯에는 각 포트가 사용 설정된 프로필을 가질 수 있는 여러 eUICC 포트가 있습니다. 이 아키텍처에서는 단일 eUICC(단일 물리적 슬롯)가 각 eUICC 포트를 모뎀 베이스밴드에 연결하여 듀얼 SIM 듀얼 대기(DSDS)를 지원합니다. 그림 2에서는 MEP가 없는 기기의 eSIM 칩 아키텍처를 보여줍니다.

MEP를 지원하는 eSIM 칩 아키텍처

그림 1. MEP를 지원하는 eSIM 칩 아키텍처(Android 13 이상)

MEP를 지원하지 않는 eSIM 칩 아키텍처

그림 2. MEP를 지원하지 않는 eSIM 칩 아키텍처(Android 12 및 이전 버전)

다중 지원 프로필의 API 정보 흐름

그림 3에서는 Android 13의 eUICC용 MEP 정보 흐름을 보여줍니다. 전화 통신 프레임워크에는 eUICC의 물리적 구조를 나타내는 UiccPort 클래스가 있습니다. UiccPort 클래스는 물리적 SIM(pSIM), 통합 SIM(iSIM), 임베디드 SIM(eSIM)과 같은 모든 유형의 SIM 카드에서 사용됩니다. 다중 포트가 있는 eUICC의 경우 단일 UiccSlot 객체와 UiccCard 객체가 여러 UiccPort 인스턴스에 매핑됩니다. 각 UiccPort 인스턴스는 최대 1개의 UiccProfile 인스턴스에 연결될 수 있습니다. 이 흐름에서는 UiccPort가 하나의 논리 슬롯에 매핑되고 UiccSlot(물리적인 슬롯)이 여러 개의 논리 슬롯에 매핑될 수 있습니다.

MEP 정보 흐름

그림 3. MEP를 지원하는 eUICC 정보 흐름

구현

이 섹션에서는 HAL 요구사항, API, 사용자 인터페이스에 관한 세부정보를 비롯하여 MEP 기능을 구현하는 방법을 설명합니다. 기기 제조업체는 SoC 공급업체 및 eSIM 칩셋 공급업체와 협력하여 MEP를 지원해야 합니다.

HAL 요구사항

eUICC용 MEP를 지원하려면 다음과 같은 IRadio 2.0 AIDL HAL API를 구현합니다.

CardStatus

모뎀은 getIccCardStatusResponse 메서드에 대한 응답으로 CardStatus API를 지원해야 합니다. 응답은 SimPortSlotMapping에 지정된 포트 인덱스와 물리적인 슬롯 인덱스를 포함해야 합니다.

SimSlotStatus

모뎀은 getSimSlotsStatus 메서드에 대한 응답으로 SimSlotStatus API를 지원해야 합니다. SIM 슬롯 상태는 포트 인덱스, 사용 설정된 프로필의 ICCID 및 포트 상태를 포함하는 SimPortInfo 인터페이스 배열을 포함합니다. 모뎀은 둘 이상의 SimPortInfo 객체를 반환해야 합니다.

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인 경우 요소 한 개의 목록을 반환합니다.
  • (지원 중단됨) getIccId: ICCID를 반환합니다. UICC는 MEP를 지원하는 기기에서 둘 이상의 ICCID를 가질 수 있으므로 대신 UiccPortInfo.getIccId()를 사용합니다.

(Android 13 이상) UiccPortInfo

  • getIccId: 이 포트에 사용 설정된 구독이 있는 경우 ICCID를 반환합니다.
  • getPortIndex: 포트 인덱스를 반환합니다.
  • getLogicalSlotIndex: 활성 논리 모뎀 스택 인덱스를 반환합니다.

SubscriptionInfo

  • (Android 13 이상) getPortIndex: 구독이 사용 설정된 포트 인덱스를 반환합니다. 구독이 사용 중지되면 INVALID_PORT_ID -1을 반환합니다.

EuiccManager

  • switchToSubscription: 지정된 구독으로 전환합니다. 활성 구독에 이동통신사 권한이 없는 앱에서 사용됩니다. 호출되면 플랫폼은 사용 가능한 포트가 없는 경우 3가지 옵션 선택 대화상자를 통해 내부적으로 포트 인덱스를 확인하여 선택된 활성 구독을 사용 중지합니다. Android 13 이상을 타겟팅하는 앱은 이 API를 사용하여 잘못된 구독 ID를 전달하는 방식으로 구독을 사용 중지하는 대신 포트 인덱스가 지정된 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에는 설정 앱에서 사용자 흐름을 사용 설정하도록 구독에 적용할 수 있는 3가지 옵션 대화상자가 있는 사용자 흐름이 있습니다. 그림 4에서는 이 UX 흐름의 예를 보여줍니다.

MEP SIM 구독의 사용자 흐름

그림 4. SIM 구독 사용 설정 사용자 흐름

기능 플래그

MEP를 지원하려면 기기가 다음 기능 플래그를 선언해야 합니다.

LPA 구현

MEP를 지원하려면 LPA 구현이 다음 요구사항을 충족해야 합니다.

  • 여러 포트를 지원하도록 EuiccService의 API를 구현합니다.
  • API를 사용하여 포트를 선택하고 프로필을 사용 설정합니다.
  • 이동통신사 앱이 선택한 포트에서 프로필을 사용 설정할 수 있도록 지원하는 UX를 제공합니다.

유효성 검사

MEP 기능의 구현을 테스트하려면 빌드가 (공개 API의 경우) 다음 CTS 테스트 사례를 통과해야 합니다(/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts).

기기 제조업체는 모뎀, eUICC 칩, eSIM OS 공급업체와 협력하여 기기가 다음을 실행할 수 있도록 해야 합니다.

  • 두 개의 eSIM 프로필을 사용 설정하여 두 개의 서로 다른 네트워크에 연결할 수 있습니다.
  • eSIM 포트에서 eSIM 프로필을 사용 설정 및 사용 중지할 수 있습니다.
  • 이동통신사 앱에서 트리거되어 사용자가 프로필을 전환할 수 있는 UX 흐름이 있습니다.