Em 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 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 chipset de eSIM para integrar esse recurso aos dispositivos.
Contexto
Em dispositivos com Android 12 e versões anteriores, o AOSP oferece suporte limitado para permitir que um único eSIM aceite vários perfis ao mesmo tempo. Apesar da economia significativa de espaço e custos que o eSIM oferece, essa falta de suporte a dois chips impede que os fabricantes de dispositivos adotem dispositivos somente com eSIM. Para oferecer suporte a dois chips em um dispositivo somente com eSIM, os fabricantes precisam incluir dois elementos de eSIM no dispositivo, o que aumenta os custos da lista de materiais (BOM, na sigla em inglês) e prejudica a experiência do usuário no gerenciamento de assinaturas. O recurso MEP disponível no AOSP desde o Android 13 resolve esse problema.
Arquitetura da eUICC
Nesta seção, descrevemos a arquitetura do chip eSIM para dispositivos com MEP em diferentes versões do Android e a arquitetura do chip eSIM para dispositivos sem MEP.
Android 14
Para dispositivos com Android 14 ou versões mais recentes, o Android oferece suporte para as 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, descrevemos os modelos de seleção de ISD-R 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 superiores. 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.
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 à porta em que o perfil precisa ser ativado ou desativado (onde uma atualização está pendente). A porta de comando e a porta de destino são sempre as mesmas.
Figura 2. Modelo de seleção MEP-B ISD-R
Android 13
No Android 13 ou versões mais recentes, em dispositivos compatíveis com MEP, o slot do eSIM contém várias portas eUICC, e cada uma delas pode ter um perfil ativado. Como mostrado na Figura 3, com essa arquitetura, um único eUICC (um único slot físico) oferece suporte a dois chips em modo de espera (DSDS) porque cada porta eUICC se vincula a uma banda de base do modem. A HAL e as APIs do Android 13 são independentes da variante 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 Android 12 ou versões anteriores sem MEP, conforme mostrado na Figura 4, o slot de eSIM só aceita um perfil ativado por vez, e o dispositivo não é compatível com DSDS.
Figura 4: arquitetura do chip eSIM sem suporte a MEP (Android 12 ou versões anteriores)
Fluxo de informações da API para vários perfis ativados
A Figura 5 descreve o fluxo de informações para 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 incorporado (eSIM). Para uma eUICC com várias portas, um único objeto UiccSlot
e um objeto UiccCard
são mapeados para várias instâncias UiccPort
. Cada instância de UiccPort
pode ser vinculada a no máximo uma instância de UiccProfile
. Esse fluxo permite que UiccPort
seja mapeado para um slot lógico e UiccSlot
(slot físico) para vários slots lógicos.
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 requisitos de HAL, APIs e interface do usuário. Os fabricantes de dispositivos precisam trabalhar com fornecedores de SoC e de chipsets de eSIM para oferecer suporte a 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
.
Dispositivos com Android 14 ou versões mais recentes precisam usar a versão 2.1 das interfaces HAL
do IRadio, 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 operações de canal lógico ICC.
CardStatus
O modem precisa ser compatível com a
API
CardStatus
como resposta ao método
getIccCardStatusResponse
. A resposta precisa incluir o índice da porta e o índice do slot físico especificados por SimPortSlotMapping
.
Em dispositivos com o Android 14 ou versões mais recentes, o modem precisa passar pelo modo MEP compatível com todos os eventos CardStatus.
SimSlotStatus
O modem precisa ser compatível com a
API
SimSlotStatus
como resposta ao método
getSimSlotsStatus
. O status do slot de 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
.
Em dispositivos com o Android 14 ou versões mais recentes, o modem precisa passar pelo modo MEP compatível 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 correspondente e o índice do slot físico. 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 ser compatíveis com as seguintes APIs.
UiccCardInfo
- (Android 13 e versões mais recentes)
isMultipleEnabledProfilesSupported
: retorna se este UICC é compatível com MEP. - (Android 13 e versões mais recentes)
getPorts
:retorna a lista de todas as portas possíveis para um determinado UICC. Se o UICC for um pSIM ou eSIM que não oferece suporte a MEP, vai retornar uma lista de um elemento. - (Descontinuado)
getIccId
:retorna um ICCID. Como um UICC pode ter mais de um ICCID para dispositivos com MEP, useUiccPortInfo.getIccId()
.
(Android 13 e versões mais recentes) UiccPortInfo
getIccId
:retorna o ICCID se houver uma assinatura ativada nessa porta.getPortIndex
:retorna o índice da porta.getLogicalSlotIndex
Retorna o índice da pilha de modem lógico ativo.
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, vai retornarINVALID_PORT_ID -1
.
EuiccManager
switchToSubscription
:muda 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 da porta usando uma caixa de diálogo de seleção com 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étodoswitchToSubscription
(adicionado no Android 13) com o índice de porta especificado.- (Android 13 e versões mais recentes)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
:muda para uma determinada assinatura. Os apps de chamadas com privilégio de operadora nas assinaturas ativas podem especificar em qual porta ativar a assinatura. - (Android 13 e versões mais recentes)
isSimPortAvailable
:retorna se o índice de porta transmitido está disponível. Uma porta está disponível se não tiver uma assinatura ativada ou se o app de chamada tiver privilégio da operadora sobre a assinatura instalada na porta selecionada.
EuiccService
- (Android 13 e versões mais recentes)
onSwitchToSubscriptionWithPort
:muda para uma determinada assinatura em uma porta especificada. A implementação de LPA precisa oferecer suporte a isso no Android 13 e versões mais recentes.
TelephonyManager
- (Android 13 e versões mais recentes)
getSimApplicationState
:retorna uma constante que indica o estado do aplicativo de cartão. Essa API transmite um índice de slot físico e um índice de porta. O métodogetSimApplicationState(int physicalSlotIndex)
(descontinuado) transmite apenas o índice do slot físico para receber um objetosimApplicationState
. - (Android 13 e versões mais recentes)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
:mapeia os slots lógicos para slots e portas físicas. - (Android 13 e versões mais recentes)
Collection<UiccSlotMapping> getSimSlotMapping
:recebe o mapeamento de slots lógicos para slots de SIM físicos e índices de porta.
Interface do usuário
Para resolver a ambiguidade da seleção de porta do eSIM, em dispositivos compatíveis com 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ários com uma caixa de diálogo de três opções que pode ser aplicada aos fluxos de usuários de ativação de assinatura no app Configurações. A Figura 6 mostra um exemplo desse fluxo de UX.
Figura 6. Fluxo do usuário para ativar a assinatura do chip
Flags de recursos
Para oferecer suporte ao MEP, os dispositivos precisam declarar as seguintes flags de recursos:
Implementação da LPA
Para oferecer suporte ao MEP, verifique se a implementação da LPA atende aos seguintes requisitos:
- Implementa as APIs de EuiccService para oferecer suporte a várias portas.
- Usa as APIs para seleção de porta e ativação de perfil.
- Fornece uma UX que permite que os apps das operadoras ativem perfis em portas selecionadas.
Validação
Para testar sua 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 eUICC e SO do eSIM para garantir que o dispositivo possa fazer o seguinte:
- Dois perfis de eSIM podem ser ativados e anexados 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 aos usuários trocar de perfil.
Recomendação para transportadoras
Para garantir que os usuários não percam o serviço ao mover perfis de eSIM de uma porta para outra, recomendamos que as operadoras ofereçam suporte ao seguinte:
- Mapeamento fluido de IMEI e SIM
- Vários ICCIDs ou SIMs para cada identificador de eUICC (EID)