Auf Geräten mit Android 13 oder höher unterstützt Android mehrere aktivierte Profile (Multiple Enabled Profiles, MEPs) für eUICC. Mit dieser Funktion können Geräte Dual‑SIM mit einem einzigen eSIM-Chip unterstützen, der mehrere SIM-Profile haben und gleichzeitig eine Verbindung zu zwei verschiedenen Mobilfunkanbietern herstellen kann. Gerätehersteller müssen mit SoC-Anbietern und eSIM-Chipsatzanbietern zusammenarbeiten, um diese Funktion in ihre Geräte zu integrieren.
Hintergrund
Auf Geräten mit Android 12 und niedriger bietet AOSP nur begrenzte Unterstützung für die gleichzeitige Verwendung mehrerer Profile auf einer einzelnen eSIM. Trotz der erheblichen Platz- und Kosteneinsparungen, die eSIM bietet, verhindert diese fehlende Dual‑SIM-Unterstützung, dass Gerätehersteller Geräte mit ausschließlich eSIM anbieten. Um Dual‑SIM-Unterstützung auf einem Gerät mit ausschließlich eSIM zu ermöglichen, müssen Gerätehersteller zwei eSIM-Elemente in das Gerät einbauen, was die Materialkosten erhöht und zu einer schlechten Nutzererfahrung bei der Aboverwaltung führt. Das MEP-Feature, das ab Android 13 in AOSP verfügbar ist, behebt dieses Problem.
eUICC-Architektur
In diesem Abschnitt wird die eSIM-Chip-Architektur für Geräte mit MEP für verschiedene Android-Versionen und die eSIM-Chip-Architektur für Geräte ohne MEP beschrieben.
Android 14
Auf Geräten mit Android 14 oder höher unterstützt Android die Optionen MEP-A1 und MEP-B für die Auswahl des Stammzertifikats der Sicherheitsdomain des Ausstellers (Issuer Security Domain Root, ISD-R) und die Auswahl von eSIM-Ports gemäß GSMA SGP V22 3.0. Im Folgenden werden die ISD-R-Auswahlmodelle MEP-A1 und MEP-B beschrieben:
MEP-A1:ISD-R wird auf Port 0 ausgewählt (Befehlsport ist 0) und Profile werden auf eSIM-Ports 1 und höher ausgewählt. ES10-Befehle werden immer an Port 0 gesendet und der Befehlsport und der Zielport sind immer unterschiedlich. Der LPA wählt den Port aus.
Abbildung 1 : Auswahlmodell für MEP-A1 ISD-R
MEP-B:ISD-R wird auf einem beliebigen Port ausgewählt und jedem Port kann ein Profil zugewiesen werden. Die Befehle zum Aktivieren und Deaktivieren werden an den Port gesendet, auf dem das Profil aktiviert oder deaktiviert werden muss (wo eine Aktualisierung aussteht). Der Befehlsport und der Zielport sind immer identisch.
Abbildung 2 : Auswahlmodell für MEP-B ISD-R
Android 13
Auf Geräten mit Android 13 oder höher, die MEP unterstützen, enthält der eSIM-Steckplatz mehrere eUICC-Ports, wobei jeder Port ein aktiviertes Profil haben kann. Wie in Abbildung 3 dargestellt, unterstützt diese Architektur Dual‑SIM Dual Standby (DSDS), da jeder eUICC-Port mit einem Modem-Basisband verbunden ist. Android 13 HAL und APIs sind unabhängig von der MEP-Variante.
Abbildung 3 : eSIM-Chip-Architektur mit MEP-Unterstützung (Android 13 oder höher)
Android 12 und niedriger
Auf Geräten mit Android 12 oder niedriger ohne MEP kann der eSIM-Steckplatz, wie in Abbildung 4 dargestellt, nur ein einziges aktiviertes Profil gleichzeitig unterstützen. Das bedeutet, dass das Gerät DSDS nicht unterstützt.
Abbildung 4 : eSIM-Chip-Architektur ohne MEP-Unterstützung (Android 12 oder niedriger)
API-Informationsfluss für mehrere aktivierte Profile
Abbildung 5 beschreibt den Informationsfluss für MEP für eUICC in Android 13. Das Telefonie-Framework enthält die Klasse UiccPort, die die physische Struktur auf eUICC darstellt. Die Klasse UiccPort wird für alle Arten von SIM-Karten verwendet: physische SIM (pSIM), integrierte SIM (iSIM) und eingebettete SIM (eSIM). Für eine eUICC mit mehreren Ports werden ein einzelnes UiccSlot-Objekt und ein einzelnes UiccCard-Objekt mehreren UiccPort-Instanzen zugeordnet. Jede UiccPort-Instanz kann mit maximal einer UiccProfile-Instanz verknüpft werden. Dieser Fluss ermöglicht die Zuordnung von UiccPort zu einem logischen Steckplatz und von UiccSlot (physischer Steckplatz) zu mehreren logischen Steckplätzen.
Abbildung 5 : Informationsfluss für eUICC mit MEP-Unterstützung
Implementierung
In diesem Abschnitt wird beschrieben, wie Sie das MEP-Feature implementieren. Dazu gehören Details zu HAL-Anforderungen, APIs und Benutzeroberfläche. Gerätehersteller sollten mit SoC-Anbietern und eSIM-Chipsatzanbietern zusammenarbeiten, um MEP zu unterstützen.
HAL-Anforderungen
Implementieren Sie die folgenden IRadio AIDL HAL APIs, die sich in /platform/hardware/interfaces/radio/aidl/aidl_api befinden, um MEP für eUICC zu unterstützen.
Auf Geräten mit Android 14 oder höher muss die
IRadio 2.1-Version der HAL-Schnittstellen verwendet werden, die
MultipleEnabledProfileMode (ISD-R-Auswahlmodell, das vom Modem
oder eUICC unterstützt wird) verwenden und ES10 APDU-Befehlsinformationen während logischer ICC-Kanal
vorgänge übergeben.
CardStatus
Das Modem muss die CardStatus API als Antwort auf die
getIccCardStatusResponse Methode unterstützen. Die Antwort muss den Port
index und den physischen Steckplatzindex enthalten, die von SimPortSlotMapping angegeben werden.
Auf Geräten mit Android 14 oder höher muss das Modem den unterstützten MEP-Modus mit allen CardStatus-Ereignissen übergeben.
SimSlotStatus
Das Modem muss die SimSlotStatus API als Antwort auf die
getSimSlotsStatus Methode unterstützen. Der SIM-Steckplatzstatus enthält ein Array der
SimPortInfo-Schnittstelle, das den Portindex, die ICCID für
das aktivierte Profil und den Portstatus enthält. Das Modem muss mindestens zwei SimPortInfo-Objekte zurückgeben.
Auf Geräten mit Android 14 oder höher muss das Modem den unterstützten MEP-Modus mit allen CardStatus-Ereignissen übergeben.
setSimSlotMapping
Die setSimSlotMapping Methode muss ein Array von
SimPortSlotMapping übergeben. Der Index des Arrays ist der logische Steckplatz und SimPortSlotMapping gibt den entsprechenden zugeordneten Port und den physischen Steckplatzindex an. Die Methode setSimSlotMapping legt die Zuordnung von Ports zu logischen Steckplätzen fest. Die LPA-App verwendet diese Methode, um den aktiven Port auszuwählen.
APIs, die MEP für eUICC unterstützen
Android-Geräte, die mehrere aktivierte Profile als Teil des AOSP-Telefonie-Stacks unterstützen, müssen die folgenden APIs unterstützen.
UiccCardInfo
- (Android 13 und höher)
isMultipleEnabledProfilesSupported: Gibt zurück, ob diese UICC MEP unterstützt. - (Android 13 und höher)
getPorts: Gibt die Liste aller möglichen Ports für eine bestimmte UICC zurück. Wenn die UICC eine pSIM oder eSIM ist, die MEP nicht unterstützt, wird eine Liste mit einem Element zurückgegeben. - (Verworfen)
getIccId: Gibt eine ICCID zurück. Da eine UICC für Geräte mit MEP mehr als eine ICCID haben kann, verwenden Sie stattdessenUiccPortInfo.getIccId().
(Android 13 und höher) UiccPortInfo
getIccId: Gibt die ICCID zurück, wenn auf diesem Port ein aktiviertes Abo vorhanden ist.getPortIndex: Gibt den Portindex zurück.getLogicalSlotIndex: Gibt den aktiven logischen Modem-Stack Index zurück.
SubscriptionInfo
- (Android 13 und höher)
getPortIndex: Gibt den Portindex zurück, auf dem das Abo aktiviert ist. Wenn das Abo deaktiviert ist, wirdINVALID_PORT_ID -1zurückgegeben.
EuiccManager
switchToSubscription: Wechselt zu einem bestimmten Abo. Wird von Apps verwendet, die keine Mobilfunkanbieterberechtigung für aktive Abos haben. Bei Aufruf, löst die Plattform intern den Portindex über ein Auswahlfeld mit drei Optionen auf, um das ausgewählte aktive Abo zu deaktivieren, wenn keine Ports verfügbar sind. Apps, die auf Android 13 und höher ausgerichtet sind, dürfen diese API nicht verwenden, um ein Abo zu deaktivieren, indem sie eine ungültige Abo-ID übergeben. Stattdessen müssen sie die MethodeswitchToSubscription(in Android 13 hinzugefügt) mit dem angegebenen Portindex verwenden.- (Android 13 und höher)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): Wechselt zu einem bestimmten Abo. Aufrufende Apps mit Mobilfunkanbieterberechtigung für die aktiven Abos können angeben, auf welchem Port das Abo aktiviert werden soll. - (Android 13 und höher)
isSimPortAvailable: Gibt zurück, ob der übergebene Portindex verfügbar ist. Ein Port ist verfügbar, wenn kein Abo aktiviert ist oder die aufrufende App eine Mobilfunkanbieterberechtigung für das auf dem ausgewählten Port installierte Abo hat.
EuiccService
- (Android 13 und höher)
onSwitchToSubscriptionWithPort: Wechselt zu einem bestimmten Abo auf einem angegebenen Port. Die LPA-Implementierung muss dies unter Android 13 und höher unterstützen.
TelephonyManager
- (Android 13 und höher)
getSimApplicationState: Gibt eine Konstante zurück, die den Status der Kartenanwendung angibt. Diese API übergibt sowohl einen physischen Steckplatzindex als auch einen Portindex. DiegetSimApplicationState(int physicalSlotIndex)Methode (verworfen) übergibt nur den physischen Steckplatzindex, um einsimApplicationStateObjekt abzurufen. - (Android 13 und höher)
setSimSlotMapping(Collection<UiccSlotMapping> slots): Ordnet die logischen Steckplätze den physischen Steckplätzen und Ports zu. - (Android 13 und höher)
Collection<UiccSlotMapping> getSimSlotMapping: Ruft die Zuordnung von logischen Steckplätzen zu physischen SIM-Steckplätzen und Portindizes ab.
Benutzeroberfläche
Um die Mehrdeutigkeit bei der Auswahl von eSIM-Ports zu beseitigen, müssen Nutzer auf Geräten, die MEP unterstützen, eines der aktiven Abos deaktivieren können, um ein neues Abo zu aktivieren. In Android 13 enthält AOSP einen Nutzerfluss mit einem Auswahlfeld mit drei Optionen, das auf Nutzerflüsse zur Aboaktivierung in der App „Einstellungen“ angewendet werden kann. Abbildung 6 zeigt ein Beispiel für diesen UX-Fluss.
Abbildung 6 : Nutzerfluss für die Aktivierung eines SIM-Abos
Funktions-Flags
Zur Unterstützung von MEP müssen Geräte die folgenden Funktions-Flags deklarieren:
LPA-Implementierung
Damit MEP unterstützt wird, muss Ihre LPA-Implementierung die folgenden Anforderungen erfüllen:
- Implementiert die APIs von EuiccService, um mehrere Ports zu unterstützen.
- Verwendet die APIs für die Portauswahl und die Profilaktivierung.
- Bietet eine Benutzeroberfläche, mit der Mobilfunkanbieter-Apps Profile auf ausgewählten Ports aktivieren können.
Validierung
Um Ihre Implementierung des MEP-Features zu testen, müssen die Builds die
folgenden CTS-Testfälle für öffentliche APIs bestehen:
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts.
Gerätehersteller sollten außerdem mit ihren Modem-, eUICC-Chip- und eSIM-OS-Anbietern zusammenarbeiten, um zu bestätigen, dass das Gerät Folgendes kann:
- Zwei eSIM-Profile können aktiviert und mit zwei verschiedenen Netzwerken verbunden werden.
- eSIM-Profile können auf jedem eSIM-Port aktiviert und deaktiviert werden.
- Es gibt einen UX-Fluss, der von der Mobilfunkanbieter-App ausgelöst wird und Nutzern ermöglicht, Profile zu wechseln.
Empfehlung für Mobilfunkanbieter
Damit Nutzer den Dienst nicht verlieren, wenn sie eSIM-Profile von einem Port zu einem anderen verschieben, empfehlen wir Mobilfunkanbietern, die folgenden Funktionen zu unterstützen:
- Flüssige Zuordnung von IMEI und SIM
- Mehrere ICCIDs oder SIMs für jede eUICC-Kennung (EID)