Plusieurs profils activés

Pour les appareils équipés d'Android 13 ou version ultérieure, Android est compatible avec plusieurs profils activés (MEP) pour l'eUICC. Cette fonctionnalité permet aux appareils de prendre en charge la double carte SIM à l'aide d'une seule puce eSIM, qui peut contenir plusieurs profils SIM et se connecter à deux opérateurs différents en même temps. Les fabricants d'appareils doivent collaborer avec les fournisseurs de SoC et de chipsets eSIM pour intégrer cette fonctionnalité à leurs appareils.

Arrière-plan

Sur les appareils équipés d'Android 12 ou version antérieure, AOSP offre une prise en charge limitée permettant à une seule eSIM de prendre en charge plusieurs profils en même temps. Malgré les économies importantes d'espace et de coûts offertes par l'eSIM, ce manque de prise en charge de la double carte SIM empêche les fabricants d'appareils d'adopter des appareils uniquement eSIM. Pour fournir une prise en charge de la double carte SIM sur un appareil uniquement eSIM, les fabricants d'appareils doivent intégrer deux éléments eSIM dans l'appareil, ce qui augmente les coûts de la nomenclature et entraîne une mauvaise expérience utilisateur pour la gestion des abonnements. La fonctionnalité MEP disponible dans AOSP à partir d'Android 13 résout ce problème.

Architecture eUICC

Cette section décrit l'architecture de la puce eSIM pour les appareils avec MEP pour différentes versions d'Android, ainsi que l'architecture de la puce eSIM pour les appareils sans MEP.

Android 14

Pour les appareils équipés d'Android 14 ou version ultérieure, Android est compatible avec les options MEP-A1 et MEP-B pour la sélection de la racine du domaine de sécurité de l'émetteur (ISD-R) et la sélection des ports eSIM, comme spécifié dans GSMA SGP V22 3.0. Les modèles de sélection ISD-R MEP-A1 et MEP-B sont décrits ci-dessous :

  • MEP-A1 : l'ISD-R est sélectionné sur le port 0 (le port de commande est 0) et les profils sont sélectionnés sur les ports eSIM 1 et supérieurs. Les commandes ES10 sont toujours envoyées au port 0, et le port de commande et le port cible sont toujours différents. Le LPA sélectionne le port.

    Modèle de sélection MEP-A1 ISD-R

    Figure 1. Modèle de sélection ISD-R MEP-A1

  • MEP-B : l'ISD-R est sélectionné sur n'importe quel port, et n'importe quel port peut être attribué à un profil. Les commandes d'activation et de désactivation sont envoyées au port où le profil doit être activé ou désactivé (où une actualisation est en attente). Le port de commande et le port cible sont toujours les mêmes.

    Modèle de sélection MEP-B ISD-R

    Figure 2. Modèle de sélection ISD-R MEP-B

Android 13

Dans Android 13 ou version ultérieure, sur les appareils compatibles avec MEP, l'emplacement eSIM contient plusieurs ports eUICC où chaque port peut avoir un profil activé. Comme illustré dans la figure 3, avec cette architecture, une seule eUICC (un seul emplacement physique) est compatible avec la double carte SIM en mode veille (DSDS), car chaque port eUICC est lié à une bande de base de modem. Les API et HAL Android 13 sont indépendants de la variante MEP.

Architecture de la puce eSIM avec prise en charge MEP

Figure 3. Architecture de la puce eSIM avec prise en charge de MEP (Android 13 ou version ultérieure)

Android 12 et versions antérieures

Pour les appareils équipés d'Android 12 ou version antérieure sans MEP, comme illustré dans la figure 4, l'emplacement eSIM n'est compatible qu'avec un seul profil activé à la fois. Cela signifie que l'appareil n'est pas compatible avec DSDS.

Architecture de la puce eSIM sans prise en charge de MEP

Figure 4. Architecture de la puce eSIM sans prise en charge de MEP (Android 12 ou version antérieure)

Flux d'informations de l'API pour plusieurs profils activés

La figure 5 décrit le flux d'informations pour MEP pour eUICC dans Android 13. Le framework de téléphonie inclut la classe UiccPort, qui représente la structure physique sur l'eUICC. La classe UiccPort est utilisée pour tous les types de cartes SIM : SIM physique (pSIM), SIM intégrée (iSIM) et SIM intégrée (eSIM). Pour une eUICC avec plusieurs ports, un seul objet UiccSlot et un seul objet UiccCard sont mappés à plusieurs instances UiccPort. Chaque instance UiccPort peut être liée à une instance UiccProfile au maximum. Ce flux permet à UiccPort de mapper un emplacement logique et à UiccSlot (emplacement physique) de mapper plusieurs emplacements logiques.

Flux d'informations du MEP

Figure 5. Flux d'informations pour eUICC avec prise en charge de MEP

Implémentation

Cette section explique comment implémenter la fonctionnalité MEP, y compris des informations sur les exigences HAL, les API et l'interface utilisateur. Les fabricants d'appareils doivent collaborer avec les fournisseurs de SoC et de chipsets eSIM pour prendre en charge MEP.

Exigences HAL

Pour prendre en charge MEP pour eUICC, implémentez les API HAL IRadio AIDL suivantes, situées dans /platform/hardware/interfaces/radio/aidl/aidl_api.

Les appareils équipés d'Android 14 ou version ultérieure doivent utiliser la version IRadio 2.1 des interfaces HAL, qui utilisent MultipleEnabledProfileMode (modèle de sélection ISD-R compatible avec le modem ou l'eUICC) et transmettent les informations de commande APDU ES10 lors des opérations de canal logique ICC.

CardStatus

Le modem doit être compatible avec l'API CardStatus en réponse à la méthode getIccCardStatusResponse. La réponse doit inclure l'index du port et l'index de l'emplacement physique spécifiés par SimPortSlotMapping.

Pour les appareils équipés d'Android 14 ou version ultérieure, le modem doit transmettre le mode MEP compatible avec tous les événements CardStatus.

SimSlotStatus

Le modem doit être compatible avec l'API SimSlotStatus en réponse à la méthode getSimSlotsStatus. L'état de l'emplacement SIM inclut un tableau de l' SimPortInfo interface, qui comprend l'index du port, l'ICCID pour le profil activé et l'état du port. Le modem doit renvoyer au moins deux objets SimPortInfo.

Pour les appareils équipés d'Android 14 ou version ultérieure, le modem doit transmettre le mode MEP compatible avec tous les événements CardStatus.

setSimSlotMapping

La setSimSlotMapping méthode doit transmettre un tableau de SimPortSlotMapping. L'index du tableau est l'emplacement logique, et SimPortSlotMapping spécifie le port mappé et l'index de l'emplacement physique correspondants. La méthode setSimSlotMapping définit le mappage des ports aux emplacements logiques. L'application LPA utilise cette méthode pour sélectionner le port actif.

API compatibles avec MEP pour eUICC

Les appareils Android compatibles avec plusieurs profils activés dans la pile de téléphonie AOSP doivent être compatibles avec les API suivantes.

UiccCardInfo

  • (Android 13 ou version ultérieure) isMultipleEnabledProfilesSupported: indique si cette UICC est compatible avec MEP.
  • (Android 13 ou version ultérieure) getPorts: renvoie la liste de tous les ports possibles pour une UICC particulière. Si l'UICC est une pSIM ou une eSIM qui n'est pas compatible avec MEP, renvoie une liste d'un seul élément.
  • (Obsolète) getIccId : renvoie un ICCID. Étant donné qu'une UICC peut avoir plusieurs ICCID pour les appareils avec MEP, utilisez plutôt UiccPortInfo.getIccId().

(Android 13 ou version ultérieure) UiccPortInfo

SubscriptionInfo

  • (Android 13 ou version ultérieure) getPortIndex: renvoie l'index du port sur lequel l'abonnement est activé. Si l'abonnement est désactivé, renvoie INVALID_PORT_ID -1.

EuiccManager

  • switchToSubscription: passe à un abonnement donné. Utilisé par les applications qui ne disposent pas de privilèges d'opérateur sur les abonnements actifs. Lorsqu'elle est appelée, la plate-forme résout en interne l'index du port via une sélection à trois choix dialogue pour désactiver l'abonnement actif sélectionné s'il n'y a pas de ports disponibles. Les applications ciblant Android 13 ou version ultérieure ne doivent pas utiliser cette API pour désactiver un abonnement en transmettant un ID d'abonnement non valide. Elles doivent plutôt utiliser la méthode switchToSubscription (ajoutée dans Android 13) avec l'index du port spécifié.
  • (Android 13 ou version ultérieure) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): passe à un abonnement donné. Les applications appelantes disposant de privilèges d'opérateur sur les abonnements actifs peuvent spécifier le port sur lequel activer l'abonnement.
  • (Android 13 ou version ultérieure) isSimPortAvailable: indique si l'index du port transmis est disponible. Un port est disponible s'il n'a pas d'abonnement activé ou si l'application appelante dispose de privilèges d'opérateur sur l'abonnement installé sur le port sélectionné.

EuiccService

  • (Android 13 ou version ultérieure) onSwitchToSubscriptionWithPort : passe à un abonnement donné sur un port spécifié. L'implémentation LPA doit être compatible avec cette fonctionnalité sur Android 13 ou version ultérieure.

TelephonyManager

Interface utilisateur

Pour résoudre l'ambiguïté de la sélection du port eSIM sur les appareils compatibles avec MEP, les utilisateurs doivent pouvoir désactiver l'un des abonnements actifs pour activer un nouvel abonnement. Dans Android 13, AOSP inclut un parcours utilisateur avec une boîte de dialogue à trois choix qui peut être appliquée aux parcours utilisateur d'activation d'abonnement à partir de l'application Paramètres. La figure 6 montre un exemple de ce parcours UX.

Parcours utilisateur pour l'abonnement SIM MEP

Figure 6. Parcours utilisateur pour activer un abonnement SIM

Commutateurs de fonctionnalité

Pour prendre en charge MEP, les appareils doivent déclarer les commutateurs de fonctionnalité suivants :

Implémentation LPA

Pour prendre en charge MEP, assurez-vous que votre LPA implémentation répond aux exigences suivantes :

  • Implémente les API de EuiccService pour prendre en charge plusieurs ports.
  • Utilise les API pour la sélection des ports et l'activation des profils.
  • Fournit une expérience utilisateur permettant aux applications d'opérateurs d'activer des profils sur les ports sélectionnés.

Validation

Pour tester votre implémentation de la fonctionnalité MEP, assurez-vous que les builds réussissent les cas de test CTS suivants (pour les API publiques) : /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts.

Les fabricants d'appareils doivent également collaborer avec leurs fournisseurs de modem, de puce eUICC et de système d'exploitation eSIM pour confirmer que l'appareil peut effectuer les opérations suivantes :

  • Deux profils eSIM peuvent être activés et associés à deux réseaux différents.
  • Les profils eSIM peuvent être activés et désactivés sur n'importe quel port eSIM.
  • Un parcours UX est déclenché par l'application de l'opérateur, ce qui permet aux utilisateurs de changer de profil.

Recommandation pour les opérateurs

Pour vous assurer que les utilisateurs ne perdent pas le service lorsqu'ils déplacent des profils eSIM d'un port à un autre, nous vous recommandons de prendre en charge les éléments suivants :

  • Mappage fluide de l'IMEI et de la SIM
  • Plusieurs ICCID ou SIM pour chaque identifiant eUICC (EID)