Per i dispositivi con Android 13 o versioni successive, Android supporta più profili abilitati (MEP) per l'eUICC. Questa funzionalità consente ai dispositivi di supportare la dual SIM utilizzando un singolo chip eSIM, che può avere più profili SIM e connettersi a due operatori diversi contemporaneamente. I produttori di dispositivi devono collaborare con i fornitori di SoC e di chipset eSIM per integrare questa funzionalità nei loro dispositivi.
Sfondo
Sui dispositivi con Android 12 e versioni precedenti, AOSP offre un supporto limitato che consente a una singola eSIM di supportare più profili contemporaneamente. Nonostante il notevole risparmio di spazio e costi offerto dalla eSIM, questa mancanza di supporto dual SIM impedisce ai produttori di dispositivi di adottare dispositivi solo eSIM. Per fornire il supporto dual SIM su un dispositivo solo eSIM, i produttori di dispositivi devono inserire due elementi eSIM nel dispositivo, il che aumenta i costi della distinta materiali e porta a esperienze utente scadenti 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 della radice del dominio di sicurezza dell'emittente (ISD-R) e la selezione delle porte eSIM come specificato in GSMA SGP V22 3.0. Di seguito vengono descritti i modelli di selezione ISD-R MEP-A1 e MEP-B.
MEP-A1: ISD-R è selezionato sulla porta 0 (la porta dei comandi è 0) e i profili sono selezionati sulle porte eSIM 1 e successive. I comandi ES10 vengono sempre inviati alla porta 0 e la porta dei comandi e la porta di destinazione sono sempre diverse. L'LPA seleziona la porta.
Figura 1. Modello di selezione MEP-A1 ISD-R
MEP-B: ISD-R è selezionato su qualsiasi porta e a qualsiasi porta può essere assegnato un profilo. I comandi di attivazione e disattivazione vengono inviati alla porta in cui il profilo deve essere attivato o disattivato (dove è in attesa un aggiornamento). La porta di comando e la porta di destinazione sono sempre le stesse.
Figura 2. Modello di selezione MEP-B ISD-R
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, una singola eUICC (un singolo slot fisico) supporta la tecnologia Dual SIM Dual Standby (DSDS) collegando ogni porta eUICC a una banda base del modem. L'HAL e le API di Android 13 sono indipendenti dalla variante MEP.
Figura 3. Architettura del chip eSIM con supporto 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 eSIM supporta un solo profilo abilitato alla volta e il dispositivo non può supportare la funzionalità 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 una eUICC con più
porte, un singolo oggetto UiccSlot
e un oggetto UiccCard
vengono mappati a
più istanze UiccPort
. Ogni istanza UiccPort
può essere collegata a un massimo di un'istanza UiccProfile
. Questo flusso consente a UiccPort
di mappare uno slot logico e
UiccSlot
(slot fisico) di mappare più slot logici.
Figura 5. Flusso di informazioni per l'eUICC con supporto MEP
Implementazione
Questa sezione descrive come implementare la funzionalità MEP, inclusi i dettagli su requisiti HAL, API e interfaccia utente. I produttori di dispositivi devono collaborare con i fornitori di SoC e di chipset eSIM per supportare MEP.
Requisiti HAL
Per supportare MEP per eUICC, implementa le seguenti API HAL IRadio AIDL, che si trovano
in
/platform/hardware/interfaces/radio/aidl/aidl_api
.
I dispositivi con Android 14 o versioni successive devono utilizzare la versione 2.1 delle interfacce HAL
che utilizzano
MultipleEnabledProfileMode
(modello di selezione ISD-R supportato dal modem o dall'eUICC) e trasmettere le informazioni dei comandi APDU ES10
durante le operazioni del canale logico ICC.
CardStatus
Il modem deve supportare l'API
CardStatus
come risposta al metodo
getIccCardStatusResponse
. La risposta deve includere l'indice della porta e l'indice dello slot fisico
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 dello slot 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 con tutti gli eventi CardStatus.
setSimSlotMapping
Il metodo
setSimSlotMapping
deve passare un array di
SimPortSlotMapping
.
L'indice dell'array è lo slot logico e
SimPortSlotMapping
specifica la porta mappata e l'indice dello slot fisico
corrispondenti. Il metodo setSimSlotMapping
imposta il mapping 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 un valore che indica 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 una eSIM che non supporta MEP, restituisce un elenco di un elemento. - (ritirata)
getIccId
: restituisce un ICCID. Poiché una UICC può avere più di un ICCID per i dispositivi con MEP, utilizzaUiccPortInfo.getIccId()
.
(Android 13 e versioni successive) UiccPortInfo
getIccId
: Restituisce l'ICCID se è presente un abbonamento attivo su questa porta.getPortIndex
: Restituisce l'indice della porta.getLogicalSlotIndex
: Restituisce l'indice dello stack del modem logico attivo.
SubscriptionInfo
- (Android 13 e versioni successive)
getPortIndex
: Restituisce l'indice della porta su cui è attivato l'abbonamento. Se l'abbonamento è disattivato, restituisceINVALID_PORT_ID -1
.
EuiccManager
switchToSubscription
: Passa a un determinato abbonamento. Utilizzato dalle app che non dispongono di privilegi dell'operatore per gli abbonamenti attivi. Quando viene chiamato, la piattaforma risolve internamente l'indice della porta tramite una selezione a tre opzioni finestra di dialogo 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 disattivare un abbonamento passando 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 chiamate con privilegi dell'operatore sulle iscrizioni attive possono specificare su quale porta attivare l'iscrizione. - (Android 13 e versioni successive)
isSimPortAvailable
: Restituisce un valore che indica se l'indice della porta di trasmissione è disponibile. Una porta è disponibile se non ha un abbonamento attivo o se l'app di chiamata ha il privilegio dell'operatore sull'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)
(obsoleto) passa solo l'indice dello slot fisico per ottenere un oggettosimApplicationState
. - (Android 13 e versioni successive)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Mappa gli slot logici agli slot e alle porte fisici. - (Android 13 e versioni successive)
Collection<UiccSlotMapping> getSimSlotMapping
: Recupera il mapping dagli slot logici agli slot SIM fisici e agli indici delle porte.
Interfaccia utente
Per risolvere l'ambiguità della selezione della porta eSIM, sui dispositivi che supportano MEP, gli utenti devono essere in grado di disattivare uno degli abbonamenti attivi per attivare un nuovo abbonamento. In Android 13, AOSP include un flusso utente con una finestra di dialogo a tre opzioni che può essere applicata ai flussi utente di attivazione degli abbonamenti dall'app Impostazioni. La Figura 6 mostra un esempio di questo flusso UX.
Figura 6. Flusso utente per l'attivazione dell'abbonamento SIM
Flag funzionalità
Per supportare MEP, i dispositivi devono dichiarare i seguenti flag di funzionalità:
Implementazione di LPA
Per supportare MEP, assicurati che l'implementazione LPA soddisfi i seguenti requisiti:
- Implementa le API di EuiccService per supportare più porte.
- Utilizza le API per la selezione della porta 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 scenari 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 garantire che il dispositivo possa:
- È possibile attivare due profili eSIM e collegarli a due reti diverse.
- I profili eSIM possono essere attivati e disattivati su qualsiasi porta eSIM.
- Esiste un flusso UX attivato dall'app dell'operatore che consente agli utenti di cambiare profilo.
Consiglio per i corrieri
Per garantire che gli utenti non perdano il servizio quando spostano i profili eSIM da una porta all'altra, consigliamo agli operatori di fornire supporto per quanto segue:
- Mappatura dinamica di IMEI e SIM
- Più ICCID o SIM per ogni identificatore eUICC (EID)