Profili abilitati multipli

Per i dispositivi con Android 13 o versioni successive, Android supporta più profili abilitati (MEP) per eUICC. Questa funzionalità consente ai dispositivi di avere supporto dual SIM utilizzando un singolo chip eSIM, che può avere più profili SIM e può 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à sui propri dispositivi.

Sfondo

Sui dispositivi con Android 12 e versioni precedenti, AOSP fornisce un supporto limitato consentendo a una singola eSIM di supportare più profili contemporaneamente. Nonostante i notevoli risparmi in termini di spazio e costi offerti dall’eSIM, questa mancanza di supporto per la doppia SIM impedisce ai produttori di dispositivi di adottare dispositivi solo eSIM. Per fornire 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 base (BOM) e porta a un'esperienza utente insoddisfacente per la gestione degli abbonamenti. La funzionalità MEP disponibile in AOSP da Android 13 risolve questo problema.

Architettura dell’UICC

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.

Androide 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 MEP-A1 e MEP-B ISD-R.

  • 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 del comando e la porta di destinazione sono sempre diverse. L'LPA seleziona la porta.

    Modello di selezione ISD-R MEP-A1

    Figura 1. Modello di selezione ISD-R MEP-A1

  • MEP-B: ISD-R è selezionato su qualsiasi porta ed è possibile assegnare un profilo a qualsiasi porta. I comandi di abilitazione e disabilitazione vengono inviati alla porta in cui il profilo deve essere abilitato o disabilitato (dove è in sospeso un aggiornamento). La porta di comando e la porta di destinazione sono sempre le stesse.

    Modello di selezione ISD-R MEP-B

    Figura 2. Modello di selezione ISD-R MEP-B

Androide 13

In Android 13 o versioni successive, sui dispositivi che supportano MEP, lo slot eSIM contiene più porte eUICC dove la porta può avere un profilo abilitato. Come mostrato nella Figura 3, con questa architettura, un singolo eUICC (un singolo slot fisico) supporta la doppia SIM dual standby (DSDS) avendo ciascuna porta eUICC collegata a una banda base del modem. L'HAL e le API di Android 13 sono indipendenti dalla variante MEP.

Architettura del chip eSIM con supporto MEP

Figura 3. Architettura del chip eSIM con supporto MEP (Android 13 o versione successiva)

Android 12 e versioni precedenti

Per i dispositivi che eseguono Android 12 o versioni precedenti senza MEP, come mostrato nella Figura 4, lo slot eSIM supporta solo un singolo profilo abilitato alla volta e il dispositivo non può supportare DSDS.

Architettura del chip eSIM senza supporto MEP

Figura 4. Architettura del chip eSIM senza supporto MEP (Android 12 o precedente)

Flusso di informazioni 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 su 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 oggetto UiccCard vengono mappati a più istanze UiccPort . Ciascuna istanza UiccPort può collegarsi al massimo a un'istanza UiccProfile . Questo flusso consente UiccPort di mapparsi su uno slot logico e UiccSlot (slot fisico) di mapparsi su più slot logici.

Flusso informativo degli eurodeputati

Figura 5. Flusso di informazioni per eUICC con il supporto del MEP

Implementazione

Questa sezione descrive come implementare la funzionalità MEP, inclusi i dettagli sui requisiti HAL, sulle API e sull'interfaccia utente. I produttori di dispositivi dovrebbero collaborare con i fornitori di SoC e di chipset eSIM per supportare il MEP.

Requisiti HAL

Per supportare MEP per eUICC, implementare le seguenti API HAL IRadio AIDL, situate in /platform/hardware/interfaces/radio/aidl/aidl_api .

I dispositivi che eseguono 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 eUICC) e trasmettono informazioni sul comando APDU ES10 durante le operazioni del canale logico ICC.

Stato della carta

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.

StatoSlotSim

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 corrispondente e l'indice dello slot fisico. 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 come parte dello stack di telefonia AOSP devono supportare le seguenti API.

UiccCardInfo

  • (Android 13 e versioni successive) isMultipleEnabledProfilesSupported : restituisce se questo UICC supporta MEP.
  • (Android 13 e versioni successive) getPorts : restituisce l'elenco di tutte le porte possibili per un particolare UICC. Se l'UICC è una pSIM o eSIM che non supporta MEP, restituisce un elenco di un elemento.
  • (Deprecato) getIccId : restituisce un ICCID. Poiché un UICC può avere più di un ICCID per i dispositivi con MEP, utilizzare invece UiccPortInfo.getIccId() .

(Android 13 e versioni successive) UiccPortInfo

  • getIccId : restituisce l'ICCID se è presente un abbonamento abilitato su questa porta.
  • getPortIndex : restituisce l'indice della porta.
  • getLogicalSlotIndex : restituisce l'indice dello stack logico del modem attivo.

Informazioni sull'abbonamento

  • (Android 13 e versioni successive) getPortIndex : restituisce l'indice della porta su cui è abilitato l'abbonamento. Se la sottoscrizione è disabilitata, restituisce INVALID_PORT_ID -1 .

EuiccManager

  • switchToSubscription : passa a un determinato abbonamento. Utilizzato dalle app che non dispongono del privilegio dell'operatore sugli abbonamenti attivi. Quando viene chiamata, la piattaforma risolve internamente l'indice della porta attraverso una finestra di dialogo di selezione a tre scelte per disabilitare l'abbonamento attivo selezionato se non ci sono porte disponibili. Le app destinate ad Android 13 e versioni successive non devono utilizzare questa API per disattivare un abbonamento trasmettendo un ID abbonamento non valido ; devono invece utilizzare il metodo switchToSubscription (aggiunto in Android 13) con l'indice della porta specificato.
  • (Android 13 e versioni successive) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback) : passa a un determinato abbonamento. Le app chiamanti con privilegio dell'operatore sugli abbonamenti attivi possono specificare su quale porta abilitare l'abbonamento.
  • (Android 13 e versioni successive) isSimPortAvailable : restituisce se l'indice della porta di passaggio è disponibile. Una porta è disponibile se non ha un abbonamento abilitato o se l'app chiamante ha privilegi di 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 LPA deve supportare questa funzionalità su Android 13 e versioni successive.

Responsabile della telefonia

Interfaccia utente

Per risolvere l'ambiguità della selezione della porta 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 scelte che può essere applicata all'abbonamento abilitando i flussi utente dall'app Impostazioni. La Figura 6 mostra un esempio di questo flusso UX.

Flusso utenti per abbonamento SIM MEP

Figura 6. Flusso utente per abilitare l'abbonamento alla SIM

Flag di funzionalità

Per supportare MEP, i dispositivi devono dichiarare i seguenti flag di funzionalità:

Implementazione dell'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'abilitazione del profilo.
  • Fornisce UX che consente alle app degli operatori di abilitare i profili sulle porte selezionate.

Validazione

Per testare l'implementazione della funzionalità MEP, assicurati che le build superino i seguenti test case CTS (per API pubbliche): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts .

I produttori di dispositivi dovrebbero inoltre collaborare con i fornitori di modem, chip eUICC e sistema operativo eSIM per garantire che il dispositivo possa eseguire le seguenti operazioni:

  • È possibile abilitare 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.

Raccomandazione per i vettori

Per garantire che gli utenti non perdano il servizio quando spostano i profili eSIM da una porta a un'altra, consigliamo agli operatori di fornire supporto per quanto segue:

  • Mappatura fluida di IMEI e SIM
  • Più ICCID o SIM per ciascun identificatore eUICC (EID)
,

Per i dispositivi con Android 13 o versioni successive, Android supporta più profili abilitati (MEP) per eUICC. Questa funzionalità consente ai dispositivi di avere supporto dual SIM utilizzando un singolo chip eSIM, che può avere più profili SIM e può 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à sui propri dispositivi.

Sfondo

Sui dispositivi con Android 12 e versioni precedenti, AOSP fornisce un supporto limitato consentendo a una singola eSIM di supportare più profili contemporaneamente. Nonostante i notevoli risparmi in termini di spazio e costi offerti dall’eSIM, questa mancanza di supporto per la doppia SIM impedisce ai produttori di dispositivi di adottare dispositivi solo eSIM. Per fornire 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 base (BOM) e porta a un'esperienza utente insoddisfacente per la gestione degli abbonamenti. La funzionalità MEP disponibile in AOSP da Android 13 risolve questo problema.

Architettura dell’UICC

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.

Androide 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 MEP-A1 e MEP-B ISD-R.

  • 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 del comando e la porta di destinazione sono sempre diverse. L'LPA seleziona la porta.

    Modello di selezione ISD-R MEP-A1

    Figura 1. Modello di selezione ISD-R MEP-A1

  • MEP-B: ISD-R è selezionato su qualsiasi porta ed è possibile assegnare un profilo a qualsiasi porta. I comandi di abilitazione e disabilitazione vengono inviati alla porta in cui il profilo deve essere abilitato o disabilitato (dove è in sospeso un aggiornamento). La porta di comando e la porta di destinazione sono sempre le stesse.

    Modello di selezione ISD-R MEP-B

    Figura 2. Modello di selezione ISD-R MEP-B

Androide 13

In Android 13 o versioni successive, sui dispositivi che supportano MEP, lo slot eSIM contiene più porte eUICC dove la porta può avere un profilo abilitato. Come mostrato nella Figura 3, con questa architettura, un singolo eUICC (un singolo slot fisico) supporta la doppia SIM dual standby (DSDS) avendo ciascuna porta eUICC collegata a una banda base del modem. L'HAL e le API di Android 13 sono indipendenti dalla variante MEP.

Architettura del chip eSIM con supporto MEP

Figura 3. Architettura del chip eSIM con supporto MEP (Android 13 o versione successiva)

Android 12 e versioni precedenti

Per i dispositivi che eseguono Android 12 o versioni precedenti senza MEP, come mostrato nella Figura 4, lo slot eSIM supporta solo un singolo profilo abilitato alla volta e il dispositivo non può supportare DSDS.

Architettura del chip eSIM senza supporto MEP

Figura 4. Architettura del chip eSIM senza supporto MEP (Android 12 o precedente)

Flusso di informazioni 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 su 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 oggetto UiccCard vengono mappati a più istanze UiccPort . Ciascuna istanza UiccPort può collegarsi al massimo a un'istanza UiccProfile . Questo flusso consente UiccPort di mapparsi su uno slot logico e UiccSlot (slot fisico) di mapparsi su più slot logici.

Flusso informativo degli eurodeputati

Figura 5. Flusso di informazioni per eUICC con il supporto del MEP

Implementazione

Questa sezione descrive come implementare la funzionalità MEP, inclusi i dettagli sui requisiti HAL, sulle API e sull'interfaccia utente. I produttori di dispositivi dovrebbero collaborare con i fornitori di SoC e di chipset eSIM per supportare il MEP.

Requisiti HAL

Per supportare MEP per eUICC, implementare le seguenti API HAL IRadio AIDL, situate in /platform/hardware/interfaces/radio/aidl/aidl_api .

I dispositivi che eseguono 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 eUICC) e trasmettono informazioni sul comando APDU ES10 durante le operazioni del canale logico ICC.

Stato della carta

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.

StatoSlotSim

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 corrispondente e l'indice dello slot fisico. 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 come parte dello stack di telefonia AOSP devono supportare le seguenti API.

UiccCardInfo

  • (Android 13 e versioni successive) isMultipleEnabledProfilesSupported : restituisce se questo UICC supporta MEP.
  • (Android 13 e versioni successive) getPorts : restituisce l'elenco di tutte le porte possibili per un particolare UICC. Se l'UICC è una pSIM o eSIM che non supporta MEP, restituisce un elenco di un elemento.
  • (Deprecato) getIccId : restituisce un ICCID. Poiché un UICC può avere più di un ICCID per i dispositivi con MEP, utilizzare invece UiccPortInfo.getIccId() .

(Android 13 e versioni successive) UiccPortInfo

  • getIccId : restituisce l'ICCID se è presente un abbonamento abilitato su questa porta.
  • getPortIndex : restituisce l'indice della porta.
  • getLogicalSlotIndex : restituisce l'indice dello stack logico del modem attivo.

Informazioni sull'abbonamento

  • (Android 13 e versioni successive) getPortIndex : restituisce l'indice della porta su cui è abilitato l'abbonamento. Se la sottoscrizione è disabilitata, restituisce INVALID_PORT_ID -1 .

EuiccManager

  • switchToSubscription : passa a un determinato abbonamento. Utilizzato dalle app che non dispongono del privilegio dell'operatore sugli abbonamenti attivi. Quando viene chiamata, la piattaforma risolve internamente l'indice della porta attraverso una finestra di dialogo di selezione a tre scelte per disabilitare l'abbonamento attivo selezionato se non ci sono porte disponibili. Le app destinate ad Android 13 e versioni successive non devono utilizzare questa API per disattivare un abbonamento trasmettendo un ID abbonamento non valido ; devono invece utilizzare il metodo switchToSubscription (aggiunto in Android 13) con l'indice della porta specificato.
  • (Android 13 e versioni successive) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback) : passa a un determinato abbonamento. Le app chiamanti con privilegio dell'operatore sugli abbonamenti attivi possono specificare su quale porta abilitare l'abbonamento.
  • (Android 13 e versioni successive) isSimPortAvailable : restituisce se l'indice della porta di passaggio è disponibile. Una porta è disponibile se non ha un abbonamento abilitato o se l'app chiamante ha privilegi di 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 LPA deve supportare questa funzionalità su Android 13 e versioni successive.

Responsabile della telefonia

Interfaccia utente

Per risolvere l'ambiguità della selezione della porta 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 scelte che può essere applicata all'abbonamento abilitando i flussi utente dall'app Impostazioni. La Figura 6 mostra un esempio di questo flusso UX.

Flusso utenti per abbonamento SIM MEP

Figura 6. Flusso utente per abilitare l'abbonamento alla SIM

Flag di funzionalità

Per supportare MEP, i dispositivi devono dichiarare i seguenti flag di funzionalità:

Implementazione dell'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'abilitazione del profilo.
  • Fornisce UX che consente alle app degli operatori di abilitare i profili sulle porte selezionate.

Validazione

Per testare l'implementazione della funzionalità MEP, assicurati che le build superino i seguenti casi di test CTS (per API pubbliche): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts .

I produttori di dispositivi dovrebbero inoltre collaborare con i fornitori di modem, chip eUICC e sistema operativo eSIM per garantire che il dispositivo possa eseguire le seguenti operazioni:

  • È possibile abilitare 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.

Raccomandazione per i vettori

Per garantire che gli utenti non perdano il servizio quando spostano i profili eSIM da una porta a un'altra, consigliamo agli operatori di fornire supporto per quanto segue:

  • Mappatura fluida di IMEI e SIM
  • Più ICCID o SIM per ciascun identificatore eUICC (EID)