Per i dispositivi con Android 13 o versioni successive, Android supporta più profili abilitati (MEP) per eUICC. Questa funzionalità consente ai dispositivi di supportare la dual SIM utilizzando un singolo chip eSIM, che può avere più profili SIM e connettersi contemporaneamente a due operatori diversi. I produttori di dispositivi devono collaborare con i fornitori di SoC e chipset eSIM per integrare questa funzionalità nei loro dispositivi.
Background
Sui dispositivi con Android 12 e versioni precedenti, AOSP offre supporto limitato consentendo a una singola eSIM di supportare più profili contemporaneamente. Nonostante il notevole spazio e i risparmi sui costi offerti dall'eSIM, questa mancanza di supporto della doppia SIM impedisce ai produttori di adottare dispositivi solo eSIM. Per fornire il supporto dual SIM su un dispositivo solo eSIM, i produttori di dispositivi devono includere due elementi eSIM, il che aumenta i costi della distinta componenti e comporta esperienze utente negative per la gestione degli abbonamenti. La funzionalità MEP disponibile in AOSP a partire da Android 13 risolve questo problema.
Architettura eUICC
Questa sezione descrive l'architettura del chip eSIM per i dispositivi con MEP per diverse versioni di Android e l'architettura del chip eSIM per i dispositivi senza MEP.
Android 14
Per i dispositivi con Android 14 o versioni successive, Android supporta le opzioni MEP-A1 e MEP-B per la selezione del dominio di sicurezza dell'emittente (ISD-R) e la selezione delle porte eSIM come specificato in GSMA SGP V22 3.0. Di seguito sono descritti i modelli di selezione ISD-R MEP-A1 e MEP-B.
MEP-A1: ISD-R è selezionato sulla porta 0 (la porta di comando è 0) e i profili sono selezionati sulle porte eSIM 1 e successive. I comandi ES10 vengono sempre inviati alla porta 0 e la porta di comando e la porta di destinazione sono sempre diverse. L'LPA seleziona la porta.
Figura 1. Modello di selezione MEP-A1 ISD-R
MEP-B: la porta ISD-R è selezionata su qualsiasi porta ed è possibile assegnare un profilo a ogni porta. I comandi di abilitazione e disattivazione vengono inviati alla porta in cui deve essere attivato o disattivato il profilo (dove è in attesa un aggiornamento). La porta di comando e la porta di destinazione sono sempre le stesse.
Figura 2. Modello di selezione ISD-R MEP-B
Android 13
In Android 13 o versioni successive, sui dispositivi che supportano MEP, lo slot eSIM contiene più porte eUICC in cui ogni porta può avere un profilo abilitato. Come mostrato nella Figura 3, con questa architettura, un singolo eUICC (un singolo slot fisico) supporta la tecnologia dual SIM dual standby (DSDS) collegando ogni porta eUICC a una baseband del modem. Le API e l'HAL di Android 13 sono indipendenti dalla variante MEP.
Figura 3. Architettura del chip eSIM con supporto per MEP (Android 13 o versioni successive)
Android 12 e versioni precedenti
Per i dispositivi con Android 12 o versioni precedenti senza MEP, come mostrato nella Figura 4, lo slot della eSIM supporta un solo profilo abilitato alla volta e il dispositivo non può supportare DSDS.
Figura 4. Architettura del chip eSIM senza supporto MEP (Android 12 o versioni precedenti)
Flusso di informazioni dell'API per più profili abilitati
La Figura 5 descrive il flusso di informazioni per MEP per eUICC in Android 13. Il framework di telefonia include la classe UiccPort
, che rappresenta la struttura fisica sull'eUICC. La classe UiccPort
viene utilizzata per tutti i tipi di schede SIM: SIM fisica (pSIM), SIM integrata (iSIM) e SIM incorporata (eSIM). Per un eUICC con più porte, un singolo oggetto UiccSlot
e un singolo oggetto UiccCard
vengono mappati a più istanze UiccPort
. Ogni istanza UiccPort
può collegarsi a un massimo di un'istanza UiccProfile
. Questo flusso consente a UiccPort
di mappare uno slot logico e a
UiccSlot
(slot fisico) di mappare più slot logici.
Figura 5. Flusso di informazioni per eUICC con supporto MEP
Implementazione
Questa sezione descrive come implementare la funzionalità MEP, inclusi dettagli su requisiti, API e interfaccia utente HAL. I produttori di dispositivi devono collaborare con i fornitori di SoC e i fornitori di chipset eSIM per supportare l'MEP.
Requisiti HAL
Per supportare MEP per eUICC, implementa le seguenti API HAL IRadio AIDL, disponibili
in
/platform/hardware/interfaces/radio/aidl/aidl_api
.
I dispositivi con Android 14 o versioni successive devono utilizzare la versione IRadio 2.1 delle interfacce HAL, che utilizzano MultipleEnabledProfileMode
(modello di selezione ISD-R supportato dal modem o dall'eUICC) e trasmettono le informazioni sui comandi APDU ES10 durante le operazioni del canale logico ICC.
Stato Carta
Il modem deve supportare l'API
CardStatus
come risposta al metodo
getIccCardStatusResponse
. La risposta deve includere l'indice della porta e l'indice della posizione fisica
specificati da
SimPortSlotMapping
.
Per i dispositivi con Android 14 o versioni successive, il modem deve superare la modalità MEP supportata con tutti gli eventi CardStatus.
SimSlotStatus
Il modem deve supportare l'API
SimSlotStatus
come risposta al metodo
getSimSlotsStatus
. Lo stato dell'alloggiamento della SIM include un array dell'interfaccia SimPortInfo
, che include l'indice della porta, l'ICCID per il profilo abilitato e lo stato della porta. Il modem deve restituire almeno due oggetti SimPortInfo
.
Per i dispositivi con Android 14 o versioni successive, il modem deve superare la modalità MeP supportata per tutti gli eventi CardStatus.
setSimSlotMapping
Il metodo
setSimSlotMapping
deve passare un array di
SimPortSlotMapping
.
L'indice dell'array è lo slot logico e SimPortSlotMapping
specifica l'indice della porta e dello slot fisico mappato corrispondente. Il metodo setSimSlotMapping
imposta la mappatura dalle porte agli slot logici. L'app LPA utilizza questo metodo per selezionare la porta attiva.
API che supportano MEP per eUICC
I dispositivi Android che supportano più profili abilitati nell'ambito dello stack di telefonia AOSP devono supportare le seguenti API.
UiccCardInfo
- (Android 13 e versioni successive)
isMultipleEnabledProfilesSupported
: restituisce se questa UICC supporta MEP. - (Android 13 e versioni successive)
getPorts
: restituisce l'elenco di tutte le porte possibili per una determinata UICC. Se la UICC è una pSIM o un'eSIM che non supporta MEP, restituisce un elenco di un elemento. - (Ritiro)
getIccId
: restituisce un ICCID. Poiché una scheda UICC può avere più di un codice ICCID per i dispositivi con MEP, utilizzaUiccPortInfo.getIccId()
.
(Android 13 e versioni successive) UiccPortInfo
getIccId
: restituisce l'ICCID se su questa porta è presente un abbonamento abilitato.getPortIndex
: restituisce l'indice della porta.getLogicalSlotIndex
: restituisce l'indice dello stack del modem logico attivo.
Informazioni sull'abbonamento
- (Android 13 e versioni successive)
getPortIndex
: restituisce l'indice della porta su cui è attivata l'iscrizione. Se l'abbonamento è disattivato, viene restituitoINVALID_PORT_ID -1
.
EuiccManager
switchToSubscription
: passa a un determinato abbonamento. Utilizzato dalle app che non dispongono del privilegio dell'operatore per gli abbonamenti attivi. Quando viene chiamata, la piattaforma risolve internamente l'indice della porta tramite una finestra di dialogo di selezione con tre opzioni per disattivare l'abbonamento attivo selezionato se non sono disponibili porte. Le app che hanno come target Android 13 e versioni successive non devono utilizzare questa API per disabilitare un abbonamento trasmettendo un ID abbonamento non valido; devono invece utilizzare il metodoswitchToSubscription
(aggiunto in Android 13) con l'indice di porta specificato.- (Android 13 e versioni successive)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: passa a un determinato abbonamento. Le app di chiamata con privilegio dell'operatore sulle sottoscrizioni attive possono specificare su quale porta attivare la sottoscrizione. - (Android 13 e versioni successive)
isSimPortAvailable
: Restituisce se l'indice di porta di passaggio è disponibile. È disponibile una porta se non è abilitato alcun abbonamento o se l'app per le chiamate dispone dei privilegi dell'operatore rispetto all'abbonamento installato sulla porta selezionata.
EuiccService
- (Android 13 e versioni successive)
onSwitchToSubscriptionWithPort
: passa a un determinato abbonamento su una porta specificata. L'implementazione di LPA deve supportare questa funzionalità su Android 13 e versioni successive.
TelephonyManager
- (Android 13 e versioni successive)
getSimApplicationState
: restituisce una costante che indica lo stato della richiesta della carta. Questa API trasmette sia un indice di slot fisico sia un indice di porta. Il metodogetSimApplicationState(int physicalSlotIndex)
(deprecato) passa solo l'indice dello slot fisico per ottenere un oggettosimApplicationState
. - (Android 13 e versioni successive)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: mappa gli slot logici su slot e porte fisici. - (Android 13 e versioni successive)
Collection<UiccSlotMapping> getSimSlotMapping
: Ottiene la mappatura dagli slot logici agli slot SIM fisici e agli indici di porta.
Interfaccia utente
Per risolvere l'ambiguità della selezione delle porte eSIM, sui dispositivi che supportano MEP gli utenti devono essere in grado di disabilitare uno degli abbonamenti attivi per abilitare un nuovo abbonamento. In Android 13, AOSP include un flusso utente con una finestra di dialogo a tre opzioni da applicare ai flussi utente che abilitano gli abbonamenti dall'app Impostazioni. La Figura 6 mostra un esempio di questo flusso UX.
Figura 6. Flusso utente per attivare l'abbonamento alla SIM
Flag funzionalità
Per supportare MEP, i dispositivi devono dichiarare i seguenti flag di funzionalità:
Implementazione LPA
Per supportare i PEP, assicurati che la tua implementazione LPA soddisfi i seguenti requisiti:
- Implementa le API di EuiccService per supportare più porte.
- Utilizza le API per la selezione delle porte e l'attivazione del profilo.
- Fornisce un'esperienza utente che consente alle app degli operatori di attivare i profili su porte selezionate.
Convalida
Per testare l'implementazione della funzionalità MEP, assicurati che le build superino i seguenti casi di test CTS (per le API pubbliche):
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
I produttori di dispositivi devono anche collaborare con i fornitori di modem, chip eUICC e sistema operativo eSIM per assicurarsi che il dispositivo possa:
- È possibile abilitare e collegare due profili eSIM a due reti diverse.
- I profili eSIM possono essere attivati e disattivati su qualsiasi porta eSIM.
- L'app dell'operatore ha un flusso UX che consente agli utenti di cambiare profilo.
Consiglio per gli operatori
Per garantire che gli utenti non perdano il servizio quando spostano i profili eSIM da una porta all'altra, consigliamo agli operatori di fornire assistenza per quanto segue:
- Mappatura fluida di IMEI e SIM
- Più ICCID o SIM per ogni identificatore eUICC (EID)