Varios perfiles habilitados

En el caso de los dispositivos que ejecutan Android 13 o versiones posteriores, Android admite varios perfiles habilitados (MEP) para eUICC. Esta función permite que los dispositivos tengan compatibilidad con dos tarjetas SIM mediante un solo chip eSIM, que puede tener varios perfiles de SIM y conectarse a dos operadores diferentes al mismo tiempo. Los fabricantes de dispositivos deben trabajar con los proveedores de SoC y los proveedores de chipsets de eSIM para integrar esta función en sus dispositivos.

Fondo

En dispositivos que ejecutan Android 12 y versiones anteriores, AOSP proporciona compatibilidad limitada para permitir que una sola eSIM admita varios perfiles al mismo tiempo. A pesar del importante ahorro de espacio y costos que ofrece la eSIM, esta falta de compatibilidad con dos tarjetas SIM impide que los fabricantes de dispositivos adopten dispositivos solo con eSIM. Para proporcionar compatibilidad con dos tarjetas SIM en un dispositivo solo con eSIM, los fabricantes de dispositivos deben empaquetar dos elementos de eSIM en el dispositivo, lo que aumenta los costos de la lista de materiales (BOM) y genera experiencias del usuario deficientes para la administración de suscripciones. La función MEP disponible en AOSP desde Android 13 aborda este problema.

Arquitectura de eUICC

En esta sección, se describe la arquitectura del chip eSIM para dispositivos con MEP para diferentes versiones de Android y la arquitectura del chip eSIM para dispositivos sin MEP.

Android 14

En el caso de los dispositivos que ejecutan Android 14 o versiones posteriores, Android admite las opciones MEP-A1 y MEP-B para la selección de la raíz del dominio de seguridad del emisor (ISD-R) y la de los puertos de eSIM como se indica en GSMA SGP V22 3.0. A continuación, se describen los modelos de selección de ISD-R MEP-A1 y MEP-B:

  • MEP-A1: ISD-R se selecciona en el puerto 0 (el puerto de comando es 0) y los perfiles se seleccionan en los puertos de eSIM 1 y superiores. Los comandos ES10 siempre se envían al puerto 0, y el puerto de comando y el puerto de destino siempre son diferentes. El LPA selecciona el puerto.

    Modelo de selección de ISD-R de MEP-A1

    Figura 1: Modelo de selección de ISD-R MEP-A1

  • MEP-B: ISD-R se selecciona en cualquier puerto y se le puede asignar un perfil. Los comandos de habilitación e inhabilitación se envían al puerto en el que se debe habilitar o inhabilitar el perfil (donde hay una actualización pendiente). El puerto de comando y el puerto de destino siempre son los mismos.

    Modelo de selección de ISD-R de MEP-B

    Figura 2: Modelo de selección de ISD-R MEP-B

Android 13

En Android 13 o versiones posteriores, en dispositivos que admiten MEP, la ranura de eSIM contiene varios puertos eUICC en los que cada puerto puede tener un perfil habilitado. Como se muestra en la Figura 3, con esta arquitectura, una sola eUICC (una sola ranura física) admite el modo de espera doble de dos tarjetas SIM (DSDS) al tener cada puerto eUICC vinculado a una banda base de módem. La HAL y las APIs de Android 13 son independientes de la variante de MEP.

Arquitectura de chip eSIM con compatibilidad para MEP

Figura 3: Arquitectura del chip eSIM con compatibilidad con MEP (Android 13 o versiones posteriores)

Android 12 y versiones anteriores

En el caso de los dispositivos que ejecutan Android 12 o versiones anteriores sin MEP, como se muestra en la Figura 4, la ranura de eSIM solo admite un solo perfil habilitado a la vez. Esto significa que el dispositivo no puede admitir DSDS.

Arquitectura de chip eSIM sin compatibilidad con MEP

Figura 4: Arquitectura del chip eSIM sin compatibilidad con MEP (Android 12 o versiones anteriores)

Flujo de información de la API para varios perfiles habilitados

En la Figura 5, se describe el flujo de información para MEP para eUICC en Android 13. El framework de telefonía incluye la clase UiccPort, que representa la estructura física en eUICC. La clase UiccPort se usa para todos los tipos de tarjetas SIM: SIM física (pSIM), SIM integrada (iSIM) y SIM incorporada (eSIM). Para una eUICC con varios puertos, un solo objeto UiccSlot y un objeto UiccCard se asignan a varias instancias de UiccPort. Cada instancia de UiccPort puede vincularse a, como máximo, una instancia de UiccProfile. Este flujo permite que UiccPort se asigne a una ranura lógica y que UiccSlot (ranura física) se asigne a varias ranuras lógicas.

Flujo de información del MEP

Figura 5: Flujo de información para eUICC con compatibilidad con MEP

Implementación

En esta sección, se describe cómo implementar la función MEP, incluidos los detalles sobre los requisitos de HAL, las APIs y la interfaz de usuario. Los fabricantes de dispositivos deben trabajar con los proveedores de SoC y los proveedores de chipsets de eSIM para admitir MEP.

Requisitos de HAL

Para admitir MEP para eUICC, implementa las siguientes APIs de IRadio AIDL HAL, que se encuentran en /platform/hardware/interfaces/radio/aidl/aidl_api.

Los dispositivos que ejecutan Android 14 o versiones posteriores deben usar la versión 2.1 de IRadio de las interfaces HAL, que usan MultipleEnabledProfileMode (modelo de selección de ISD-R admitido por el módem o eUICC) y pasan información del comando APDU ES10 durante las operaciones de canal lógico de ICC.

CardStatus

El módem debe admitir la API de CardStatus como respuesta al método getIccCardStatusResponse. La respuesta debe incluir el índice de puerto y el índice de ranura física especificados por SimPortSlotMapping.

En el caso de los dispositivos que ejecutan Android 14 o versiones posteriores, el módem debe pasar el modo MEP admitido con todos los eventos de CardStatus.

SimSlotStatus

El módem debe admitir la API de SimSlotStatus como respuesta al método getSimSlotsStatus. El estado de la ranura SIM incluye un array de la SimPortInfo interfaz, que incluye el índice de puerto, el ICCID para el perfil habilitado y el estado del puerto. El módem debe mostrar al menos dos objetos SimPortInfo.

En el caso de los dispositivos que ejecutan Android 14 o versiones posteriores, el módem debe pasar el modo MEP admitido con todos los eventos de CardStatus.

setSimSlotMapping

El setSimSlotMapping método debe pasar un array de SimPortSlotMapping. El índice del array es la ranura lógica y SimPortSlotMapping especifica el puerto asignado correspondiente y el índice de ranura física. El método setSimSlotMapping establece la asignación de puertos a ranuras lógicas. La app de LPA usa este método para seleccionar el puerto activo.

APIs que admiten MEP para eUICC

Los dispositivos Android que admiten varios perfiles habilitados como parte de la pila de telefonía de AOSP deben admitir las siguientes APIs.

UiccCardInfo

  • (Android 13 y versiones posteriores) isMultipleEnabledProfilesSupported: Muestra si esta UICC admite MEP.
  • (Android 13 y versiones posteriores) getPorts: Muestra la lista de todos los puertos posibles para una UICC en particular. Si la UICC es una pSIM o una eSIM que no admite MEP, muestra una lista de un elemento.
  • (Obsoleto) getIccId: Muestra un ICCID. Debido a que una UICC puede tener más de un ICCID para dispositivos con MEP, usa UiccPortInfo.getIccId() en su lugar.

(Android 13 y versiones posteriores) UiccPortInfo

  • getIccId: Muestra el ICCID si hay una suscripción habilitada en este puerto.
  • getPortIndex: Muestra el índice de puerto.
  • getLogicalSlotIndex: Muestra el índice de pila de módem lógico activo.

SubscriptionInfo

  • (Android 13 y versiones posteriores) getPortIndex: Muestra el índice de puerto en el que está habilitada la suscripción. Si la suscripción está inhabilitada, se muestra INVALID_PORT_ID -1.

EuiccManager

EuiccService

  • (Android 13 y versiones posteriores) onSwitchToSubscriptionWithPort: Cambia a una suscripción determinada en un puerto especificado. La implementación de LPA debe admitir esto en Android 13 y versiones posteriores.

TelephonyManager

Interfaz de usuario

Para resolver la ambigüedad de la selección de puertos de eSIM, en dispositivos que admiten MEP, los usuarios deben poder inhabilitar una de las suscripciones activas para habilitar una nueva. En Android 13, AOSP incluye un flujo de usuarios con un diálogo de tres opciones que se puede aplicar a los flujos de usuarios que habilitan la suscripción desde la app de Configuración. En la Figura 6, se muestra un ejemplo de este flujo de UX.

Flujo de usuarios para la suscripción a la SIM del MEP

Figura 6: Flujo de usuarios para habilitar la suscripción a SIM

Marcas de función

Para admitir MEP, los dispositivos deben declarar las siguientes marcas de función:

Implementación de LPA

Para admitir MEP, asegúrate de que tu implementación de LPA cumpla con los siguientes requisitos:

  • Implementa las APIs de EuiccService para admitir varios puertos.
  • Usa las APIs para la selección de puertos y la habilitación de perfiles.
  • Proporciona UX que permite que las apps de operadores habiliten perfiles en los puertos seleccionados.

Validación

Para probar tu implementación de la función MEP, asegúrate de que las compilaciones pasen los siguientes casos de prueba de CTS (para APIs públicas): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts.

Los fabricantes de dispositivos también deben trabajar con sus proveedores de módem, chip eUICC y SO de eSIM para confirmar que el dispositivo puede hacer lo siguiente:

  • Se pueden habilitar dos perfiles de eSIM y adjuntarlos a dos redes diferentes.
  • Los perfiles de eSIM se pueden activar y desactivar en cualquier puerto de eSIM.
  • Hay un flujo de UX que activa la app del operador y que permite a los usuarios cambiar de perfil.

Recomendación para operadores

Para asegurarnos de que los usuarios no pierdan el servicio cuando mueven perfiles de eSIM de un puerto a otro, recomendamos que los operadores proporcionen compatibilidad con lo siguiente:

  • Asignación fluida de IMEI y SIM
  • Varios ICCIDs o SIMs para cada identificador eUICC (EID)