Vários perfis ativados

Para dispositivos com o Android 13 ou versões mais recentes, o Android oferece suporte a vários perfis ativados (MEPs) para eUICC. Esse recurso permite que os dispositivos tenham suporte a dois chips usando um único chip eSIM, que pode ter vários perfis de chip e se conectar a duas operadoras diferentes ao mesmo tempo. Os fabricantes de dispositivos precisam trabalhar com fornecedores de SoC e de chipsets eSIM para integrar esse recurso aos dispositivos.

Contexto

Em dispositivos com o Android 12 e versões anteriores, o AOSP oferece suporte limitado para que um único eSIM ofereça suporte a vários perfis ao mesmo tempo. Apesar da economia de espaço e custo que o eSIM oferece, essa falta de suporte a dois chips impede que os fabricantes de dispositivos adotem dispositivos somente para eSIM. Para oferecer suporte a dois chips em um dispositivo exclusivo para eSIM, os fabricantes precisam empacotar dois elementos de eSIM no dispositivo, o que aumenta os custos de BOM e leva a experiências ruins do usuário para o gerenciamento de assinaturas. O recurso MEP disponível no AOSP do Android 13 resolve esse problema.

Arquitetura eUICC

Esta seção descreve a arquitetura do chip eSIM para dispositivos com MEP para diferentes versões do Android e a arquitetura do chip eSIM para dispositivos sem MEP.

Android 14

Para dispositivos com o Android 14 ou versões mais recentes, o Android oferece suporte às opções MEP-A1 e MEP-B para a seleção de raiz do domínio de segurança do emissor (ISD-R) e a seleção de portas eSIM, conforme especificado em GSMA SGP V22 3.0. A seguir, são descritos os modelos de seleção de ISD-R dos MEP-A1 e MEP-B.

  • MEP-A1:o ISD-R é selecionado na porta 0 (a porta de comando é 0) e os perfis são selecionados nas portas eSIM 1 e mais recentes. Os comandos ES10 são sempre enviados para a porta 0, e a porta de comando e a porta de destino são sempre diferentes. O LPA seleciona a porta.

    Modelo de seleção de ISD-R MEP-A1

    Figura 1. Modelo de seleção de ISD-R MEP-A1

  • MEP-B:o ISD-R é selecionado em qualquer porta, e qualquer porta pode receber um perfil. Os comandos de ativação e desativação são enviados para a porta em que o perfil precisa ser ativado ou desativado (em que uma atualização está pendente). A porta de comando e a porta de destino são sempre as mesmas.

    Modelo de seleção de ISD-R do MEP-B

    Figura 2. Modelo de seleção de ISD-R do MEP-B

Android 13

No Android 13 ou versões mais recentes, em dispositivos com suporte a MEP, o slot do eSIM contém várias portas eUICC, em que a porta pode ter um perfil ativado. Conforme mostrado na Figura 3, com essa arquitetura, um único eUICC (um único slot físico) oferece suporte ao modo de espera duplo com dois chips (DSDS, na sigla em inglês) fazendo com que cada porta eUICC se conecte a uma baseband de modem. As APIs e HAL do Android 13 são independentes da variante MEP.

Arquitetura de chip eSIM com suporte a MEP

Figura 3.Arquitetura do chip eSIM com suporte a MEP (Android 13 ou mais recente)

Android 12 e versões anteriores

Para dispositivos com o Android 12 ou versões anteriores sem MEP, conforme mostrado na Figura 4, o slot de eSIM só oferece suporte a um único perfil ativado por vez, e o dispositivo não pode oferecer suporte ao DSDS.

Arquitetura de chip eSIM sem suporte a MEP

Figura 4.Arquitetura do chip eSIM sem suporte a MEP (Android 12 ou anterior)

Fluxo de informações da API para vários perfis ativados

A Figura 5 descreve o fluxo de informações do MEP para eUICC no Android 13. O framework de telefonia inclui a classe UiccPort, que representa a estrutura física no eUICC. A classe UiccPort é usada para todos os tipos de chips: físico (pSIM), integrado (iSIM) e integrado (eSIM). Para um eUICC com várias portas, um único objeto UiccSlot e um objeto UiccCard são mapeados para várias instâncias de UiccPort. Cada instância UiccPort pode vincular a no máximo uma instância UiccProfile. Esse fluxo permite que UiccPort seja mapeado para um slot lógico e UiccSlot (slot físico) para vários slots lógicos.

Fluxo de informações do MEP

Figura 5. Fluxo de informações para eUICC com suporte a MEP

Implementação

Esta seção descreve como implementar o recurso MEP, incluindo detalhes sobre os requisitos do HAL, APIs e a interface do usuário. Os fabricantes de dispositivos precisam trabalhar com fornecedores de SoC e de chipsets eSIM para oferecer suporte ao MEP.

Requisitos da HAL

Para oferecer suporte ao MEP para eUICC, implemente as seguintes APIs IRadio AIDL HAL, localizadas em /platform/hardware/interfaces/radio/aidl/aidl_api.

Os dispositivos com o Android 14 ou versões mais recentes precisam usar a versão IRadio 2.1 das interfaces HAL, que usam MultipleEnabledProfileMode (modelo de seleção ISD-R compatível com o modem ou eUICC) e transmitem informações de comando APDU ES10 durante as operações de canal lógico do ICC.

CardStatus

O modem precisa oferecer suporte à API CardStatus como uma resposta ao método getIccCardStatusResponse. A resposta precisa incluir o índice da porta e o índice do slot físico especificado por SimPortSlotMapping.

Para dispositivos com o Android 14 ou mais recente, o modem precisa transmitir o modo MEP com todos os eventos CardStatus.

SimSlotStatus

O modem precisa oferecer suporte à API SimSlotStatus como uma resposta ao método getSimSlotsStatus. O status do slot do SIM inclui uma matriz da interface SimPortInfo, que inclui o índice da porta, o ICCID do perfil ativado e o estado da porta. O modem precisa retornar pelo menos dois objetos SimPortInfo.

Para dispositivos com o Android 14 ou mais recente, o modem precisa transmitir o modo MEP com todos os eventos CardStatus.

setSimSlotMapping

O método setSimSlotMapping precisa transmitir uma matriz de SimPortSlotMapping. O índice da matriz é o slot lógico, e SimPortSlotMapping especifica a porta mapeada e o índice de slot físico correspondentes. O método setSimSlotMapping define o mapeamento de portas para slots lógicos. O app LPA usa esse método para selecionar a porta ativa.

APIs que oferecem suporte a MEP para eUICC

Os dispositivos Android que oferecem suporte a vários perfis ativados como parte da pilha de telefonia do AOSP precisam oferecer suporte às APIs abaixo.

UiccCardInfo

  • (Android 13 e versões mais recentes) isMultipleEnabledProfilesSupported : retorna se o UICC oferece suporte ao MEP.
  • (Android 13 e versões mais recentes) getPorts:retorna a lista de todas as portas possíveis para um UICC específico. Se o UICC for um pSIM ou eSIM que não oferece suporte a MEP, uma lista de um elemento será retornada.
  • (Descontinuado) getIccId:retorna um ICCID. Como um UICC pode ter mais de um ICCID para dispositivos com MEP, use UiccPortInfo.getIccId().

(Android 13 e versões mais recentes) UiccPortInfo

SubscriptionInfo

  • (Android 13 e versões mais recentes) getPortIndex:retorna o índice da porta em que a assinatura está ativada. Se a assinatura estiver desativada, retornará INVALID_PORT_ID -1.

EuiccManager

  • switchToSubscription:alterna para uma determinada assinatura. Usado por apps que não têm privilégio de operadora em assinaturas ativas. Quando chamada, a plataforma resolve internamente o índice de porta usando uma caixa de diálogo de seleção de três opções para desativar a assinatura ativa selecionada se não houver portas disponíveis. Os apps direcionados ao Android 13 e versões mais recentes não podem usar essa API para desativar uma assinatura transmitindo um ID de assinatura inválido. Em vez disso, eles precisam usar o método switchToSubscription (adicionado no Android 13) com o índice de porta especificado.
  • (Android 13 e versões mais recentes) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback):alterna para uma determinada assinatura. Chamar apps com privilégio de operadora sobre as assinaturas ativas pode especificar qual porta ativar a assinatura.
  • (Android 13 e versões mais recentes) isSimPortAvailable: retorna se o índice de porta de transmissão está disponível. Uma porta está disponível se não tiver uma assinatura ativada ou se o app de chamada tiver privilégio de operadora sobre a assinatura instalada na porta selecionada.

EuiccService

  • (Android 13 e versões mais recentes) onSwitchToSubscriptionWithPort:alterna para uma determinada assinatura em uma porta especificada. A implementação da LPA precisa oferecer suporte a isso no Android 13 e versões mais recentes.

TelephonyManager

Interface do usuário

Para resolver a ambiguidade da seleção de porta do eSIM, em dispositivos compatíveis com o MEP, os usuários precisam desativar uma das assinaturas ativas para ativar uma nova assinatura. No Android 13, o AOSP inclui um fluxo de usuário com uma caixa de diálogo de três opções que pode ser aplicada à assinatura, ativando fluxos de usuários no app Configurações. A Figura 6 mostra um exemplo desse fluxo de UX.

Fluxo do usuário para a assinatura do MEP SIM

Figura 6. Fluxo do usuário para ativar a assinatura do chip

Flags de recursos

Para oferecer suporte ao MEP, os dispositivos precisam declarar os seguintes flags de recursos:

Implementação de LPA

Para oferecer suporte ao MEP, verifique se a implementação da LPA atende aos seguintes requisitos:

  • Implementa as APIs do EuiccService para oferecer suporte a várias portas.
  • Usa as APIs para seleção de porta e ativação de perfil.
  • Oferece uma UX que permite que os apps de operadoras ativem perfis em portas selecionadas.

Validação

Para testar a implementação do recurso MEP, verifique se os builds passam nos seguintes casos de teste do CTS (para APIs públicas): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts.

Os fabricantes de dispositivos também precisam trabalhar com os fornecedores de modem, chip eSO eSIM para garantir que o dispositivo possa fazer o seguinte:

  • Dois perfis de eSIM podem ser ativados e conectados a duas redes diferentes.
  • Os perfis de eSIM podem ser ativados e desativados em qualquer porta de eSIM.
  • Há um fluxo de UX acionado pelo app da operadora que permite que os usuários mudem de perfil.

Recomendação para operadoras

Para garantir que os usuários não percam o serviço ao mover perfis de eSIM de um puerto para outro, recomendamos que as operadoras ofereçam suporte para o seguinte:

  • Mapeamento fluido de IMEI e chip
  • Vários ICCIDs ou SIMs para cada identificador eUICC (EID)