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 d'être compatibles avec la double carte SIM à l'aide d'une seule puce eSIM, qui peut comporter 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é sur leurs appareils.

Arrière-plan

Sur les appareils exécutant Android 12 ou version antérieure, AOSP offre une compatibilité limitée, car une seule eSIM peut prendre en charge plusieurs profils en même temps. Malgré les économies d'espace et de coûts importantes qu'offre l'eSIM, ce manque de compatibilité avec la double SIM empêche les fabricants d'appareils d'adopter des appareils eSIM uniquement. Pour prendre en charge la double carte SIM sur un appareil compatible uniquement avec les eSIM, les fabricants d'appareils doivent intégrer deux éléments eSIM à 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 de l'eUICC

Cette section décrit l'architecture de la puce eSIM pour les appareils avec MEP pour différentes versions d'Android et 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 prend en charge 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 la version 22.3 du SGP de la GSMA. Vous trouverez ci-dessous une description des modèles de sélection ISD-R MEP-A1 et MEP-B.

  • MEP-A1:ISD-R est sélectionné sur le port 0 (port de commande 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. L'LPA sélectionne le port.

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

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

  • MEP-B:l'ISD-R est sélectionné sur n'importe quel port et un profil peut être attribué à n'importe quel port. Les commandes d'activation et de désactivation sont envoyées au port sur lequel le profil doit être activé ou désactivé (lorsqu'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 MEP-B ISD-R

Android 13

Sous Android 13 ou version ultérieure, sur les appareils compatibles avec le MEP, l'emplacement de l'eSIM contient plusieurs ports eUICC, chacun pouvant avoir un profil activé. Comme illustré dans la figure 3, avec cette architecture, une seule eUICC (une seule fente physique) est compatible avec la technologie Dual SIM Dual Standby (DSDS) en associant chaque port eUICC à une bande de base de modem. Le HAL et les API Android 13 sont indépendants de la variante MEP.

Architecture de la puce eSIM avec prise en charge du MEP

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

Android 12 ou version antérieure

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

Architecture de la puce eSIM sans prise en charge du 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 le MEP pour l'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: carte SIM physique (pSIM), carte SIM intégrée (iSIM) et carte SIM intégrée (eSIM). Pour un eUICC avec plusieurs ports, un objet UiccSlot et un objet UiccCard uniques sont mappés à plusieurs instances UiccPort. Chaque instance UiccPort ne peut être associée qu'à une seule instance UiccProfile. Ce flux permet à UiccPort de se mapper sur un emplacement logique et à UiccSlot (emplacement physique) de se mapper sur plusieurs emplacements logiques.

Flux d'informations MEP

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

Implémentation

Cette section explique comment mettre en œuvre la fonctionnalité MEP, y compris des détails sur les exigences HAL, les API et l'interface utilisateur. Les fabricants d'appareils doivent collaborer avec les fournisseurs de SoC et de chipset eSIM pour prendre en charge le MEP.

Exigences concernant HAL

Pour prendre en charge le MEP pour l'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 IND-R compatible avec le modem ou 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é 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 comprend une série de l'interface SimPortInfo, qui inclut l'index du port, l'ICCID du 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 méthode setSimSlotMapping doit transmettre un tableau de SimPortSlotMapping. L'index du tableau correspond à l'emplacement logique, et SimPortSlotMapping spécifie le port mappé et l'index d'emplacement physique correspondants. La méthode setSimSlotMapping définit le mappage des ports sur les emplacements logiques. L'application LPA utilise cette méthode pour sélectionner le port actif.

API compatibles avec le MEP pour les eUICC

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

Informations sur la carte

  • (Android 13 et versions ultérieures) isMultipleEnabledProfilesSupported : indique si cette UICC est compatible avec le MEP.
  • (Android 13 et versions ultérieures) getPorts:renvoie la liste de tous les ports possibles pour un UICC particulier. Si la UICC est une pSIM ou une eSIM qui n'est pas compatible avec le 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 et versions ultérieures) getPortIndex:renvoie l'index de port sur lequel l'abonnement est activé. Si l'abonnement est désactivé, la valeur INVALID_PORT_ID -1 est renvoyée.

EuiccManager

  • switchToSubscription:permet de passer à un abonnement donné. Utilisé par les applications qui ne disposent pas des droits de l'opérateur sur les abonnements actifs. Lorsqu'elle est appelée, la plate-forme résout l'index de port en interne via une boîte de dialogue de sélection à trois choix pour désactiver l'abonnement actif sélectionné en l'absence 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'indice de port spécifié.
  • (Android 13 ou version ultérieure) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback):permet de passer à un abonnement donné. Les applications d'appel disposant des droits de l'opérateur sur les abonnements actifs peuvent spécifier le port sur lequel activer l'abonnement.
  • (Android 13 et versions ultérieures) isSimPortAvailable:indique si l'indice de port de transmission est disponible. Un port est disponible si aucun abonnement n'est activé ou si l'application appelante dispose d'un droit d'opérateur sur l'abonnement installé sur le port sélectionné.

EuiccService

  • (Android 13 ou version ultérieure) onSwitchToSubscriptionWithPort:bascule vers un abonnement donné sur un port spécifié. L'implémentation LPA doit être compatible avec Android 13 et versions ultérieures.

TelephonyManager

Interface utilisateur

Pour résoudre l'ambiguïté de la sélection du port eSIM, sur les appareils compatibles avec le 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'abonnements à partir de l'application Paramètres. La figure 6 montre un exemple de ce parcours UX.

Parcours utilisateur pour l'abonnement à une carte SIM MEP

Figure 6. Parcours utilisateur pour activer un abonnement via une carte SIM

Feature flags

Pour être compatibles avec le MEP, les appareils doivent déclarer les indicateurs de fonctionnalité suivants:

Implémentation de la LPA

Pour prendre en charge le MEP, assurez-vous que l'implémentation de votre LPA 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 passent 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 s'assurer que l'appareil peut effectuer les opérations suivantes:

  • Vous pouvez activer et associer deux profils eSIM à deux réseaux différents.
  • Les profils eSIM peuvent être activés et désactivés sur n'importe quel port eSIM.
  • Un flux d'expérience utilisateur est déclenché par l'application de l'opérateur, ce qui permet aux utilisateurs de changer de profil.

Recommandation pour les transporteurs

Pour que les utilisateurs ne perdent pas de service lorsqu'ils déplacent des profils eSIM d'un port à un autre, nous recommandons aux opérateurs 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)