Plusieurs profils activés

Pour les appareils exécutant Android 13 ou version ultérieure, Android prend en charge plusieurs profils activés (MEP) pour eUICC. Cette fonctionnalité permet aux appareils de prendre en charge la double carte SIM à l'aide d'une seule puce eSIM, qui peut avoir plusieurs profils SIM et se connecter à deux opérateurs différents en même temps. Les fabricants d'appareils doivent travailler 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 et versions antérieures, AOSP offre une prise en charge limitée en permettant à une seule eSIM de prendre en charge plusieurs profils en même temps. Malgré les économies significatives d'espace et de coûts qu'offre 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 double SIM sur un appareil eSIM uniquement, les fabricants d'appareils doivent intégrer deux éléments eSIM dans l'appareil, ce qui augmente les coûts de nomenclature (BOM) et conduit à 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 et l'architecture de la puce eSIM pour les appareils sans MEP.

Android 14

Pour les appareils exécutant 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 GSMA SGP V22 3.0 . Ce qui suit décrit les modèles de sélection MEP-A1 et MEP-B ISD-R.

  • MEP-A1 : 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 MEP-A1 ISD-R

  • MEP-B : ISD-R est sélectionné sur n’importe quel port et n’importe quel port peut se voir attribuer 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 MEP-B ISD-R

Android 13

Sous Android 13 ou version ultérieure, sur les appareils prenant en charge MEP, l'emplacement eSIM contient plusieurs ports eUICC sur lesquels le port peut avoir un profil activé. Comme le montre la figure 3, avec cette architecture, un seul eUICC (un seul emplacement physique) prend en charge la double veille double SIM (DSDS) en faisant en sorte que chaque port eUICC soit relié à une bande de base de modem. La HAL et les API d'Android 13 sont indépendantes des variantes MEP.

Architecture de puce eSIM avec prise en charge MEP

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

Android 12 et versions antérieures

Pour les appareils exécutant Android 12 ou version antérieure sans MEP, comme le montre la figure 4, l'emplacement eSIM ne prend en charge qu'un seul profil activé à la fois et l'appareil ne peut pas prendre en charge DSDS.

Architecture de puce eSIM sans prise en charge MEP

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

Flux d'informations API pour plusieurs profils activés

La figure 5 décrit le flux d'informations pour MEP pour eUICC dans Android 13. Le cadre de téléphonie inclut la classe UiccPort , qui représente la structure physique sur eUICC. La classe UiccPort est utilisée pour tous les types de cartes SIM : SIM physique (pSIM), SIM intégrée (iSIM) et SIM embarquée (eSIM). Pour un 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 à au plus une instance UiccProfile . Ce flux permet à UiccPort de mapper à un emplacement logique et UiccSlot (emplacement physique) de mapper à plusieurs emplacements logiques.

Flux d’informations des députés européens

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

Mise en œuvre

Cette section décrit comment implémenter la fonctionnalité MEP, y compris des détails sur les exigences HAL, les API et l'interface utilisateur. Les fabricants d’appareils doivent travailler 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 IRadio AIDL HAL suivantes, situées dans /platform/hardware/interfaces/radio/aidl/aidl_api .

Les appareils exécutant 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 pris en charge par le modem ou eUICC) et transmettre les informations de commande ES10 APDU pendant les opérations du canal logique ICC.

Statut de la carte

Le modem doit prendre en charge 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 exécutant Android 14 ou version ultérieure, le modem doit passer le mode MEP pris en charge avec tous les événements CardStatus.

StatutSlotSim

Le modem doit prendre en charge l'API SimSlotStatus en réponse à la méthode getSimSlotsStatus . L'état de l'emplacement SIM comprend un tableau de l'interface SimPortInfo , qui comprend 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 exécutant Android 14 ou version ultérieure, le modem doit passer le mode MEP pris en charge avec tous les événements CardStatus.

setSimSlotMapping

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

API prenant en charge MEP pour eUICC

Les appareils Android prenant en charge plusieurs profils activés dans le cadre de la pile téléphonique AOSP doivent prendre en charge les API suivantes.

UiccCardInfo

  • (Android 13 et versions ultérieures) isMultipleEnabledProfilesSupported : indique si cet UICC prend en charge MEP.
  • (Android 13 et supérieur) getPorts : Renvoie la liste de tous les ports possibles pour un UICC particulier. Si l'UICC est un pSIM ou un eSIM qui ne prend pas en charge MEP, renvoie une liste d'un élément.
  • (Obsolète) getIccId : renvoie un ICCID. Étant donné qu’un UICC peut avoir plusieurs ICCID pour les appareils avec MEP, utilisez plutôt UiccPortInfo.getIccId() .

(Android 13 et supérieur) UiccPortInfo

Infos sur l'abonnement

  • (Android 13 et supérieur) 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 : Bascule vers 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 plateforme résout en interne l'index du port via une boîte de dialogue de sélection à trois choix pour désactiver l'abonnement actif sélectionné s'il n'y a pas de ports disponibles. Les applications ciblant Android 13 et versions ultérieures ne doivent pas utiliser cette API pour désactiver un abonnement en transmettant un identifiant d'abonnement non valide ; à la place, ils doivent utiliser la méthode switchToSubscription (ajoutée dans Android 13) avec l'index de port spécifié.
  • (Android 13 et supérieur) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback) : Bascule vers un abonnement donné. L'appel d'applications bénéficiant du privilège de l'opérateur sur les abonnements actifs peut spécifier sur quel port activer l'abonnement.
  • (Android 13 et versions ultérieures) isSimPortAvailable : indique si l'index du port de transmission est disponible. Un port est disponible si aucun abonnement n'est activé ou si l'application appelante dispose du privilège de l'opérateur sur l'abonnement installé sur le port sélectionné.

EuiccService

  • (Android 13 et supérieur) onSwitchToSubscriptionWithPort : Bascule vers un abonnement donné sur un port spécifié. La mise en œuvre de LPA doit prendre en charge cela sur Android 13 et versions ultérieures.

Gestionnaire de téléphonie

Interface utilisateur

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

Flux d'utilisateurs pour l'abonnement MEP SIM

Figure 6. Flux utilisateur pour activer l'abonnement SIM

Indicateurs de fonctionnalités

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

Implémentation de l'APL

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

  • Implémente les API d' EuiccService pour prendre en charge plusieurs ports.
  • Utilise les API pour la sélection du port et l'activation du profil.
  • Fournit une UX permettant aux applications des 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 travailler avec leurs fournisseurs de modem, de puce eUICC et de système d'exploitation eSIM pour garantir que l'appareil peut effectuer les opérations suivantes :

  • Deux profils eSIM peuvent être activés et attachés à deux réseaux différents.
  • Les profils eSIM peuvent être activés et désactivés sur n’importe quel port eSIM.
  • Il existe un flux UX déclenché par l'application de l'opérateur permettant aux utilisateurs de changer de profil.

Recommandation aux transporteurs

Pour garantir que les utilisateurs ne perdent pas le 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 :

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