Wiele włączonych profili

W przypadku urządzeń z Androidem 13 lub nowszym Android obsługuje wiele włączonych profili (MEP) dla eUICC. Ta funkcja umożliwia urządzeniom obsługę dual SIM za pomocą pojedynczego układu eSIM, który może mieć wiele profili SIM i może łączyć się z 2 różnymi operatorami jednocześnie. Aby zintegrować tę funkcję z urządzeniami, producenci urządzeń muszą współpracować z dostawcami układów SoC i układów eSIM.

Tło

W przypadku urządzeń z Androidem 12 lub starszym AOSP zapewnia ograniczoną obsługę umożliwiającą jednoczesne korzystanie z wielu profili na jednej karcie eSIM. Pomimo znacznych oszczędności miejsca i kosztów, jakie oferuje eSIM, brak obsługi dual SIM uniemożliwia producentom urządzeń stosowanie urządzeń tylko z eSIM. Aby zapewnić obsługę dual SIM na urządzeniu tylko z eSIM, producenci urządzeń muszą umieścić w urządzeniu 2 elementy eSIM, co zwiększa koszty materiałów i prowadzi do słabych wrażeń użytkowników związanych z zarządzaniem subskrypcjami. Problem ten rozwiązuje funkcja MEP dostępna w AOSP od Androida 13.

Architektura eUICC

W tej sekcji opisujemy architekturę układu eSIM w przypadku urządzeń z MEP w różnych wersjach Androida oraz architekturę układu eSIM w przypadku urządzeń bez MEP.

Android 14

W przypadku urządzeń z Androidem 14 lub nowszym Android obsługuje opcje MEP-A1 i MEP-B do wyboru głównej domeny bezpieczeństwa wystawcy (ISD-R) oraz portów eSIM zgodnie ze specyfikacją GSMA SGP V22 3.0. Poniżej opisujemy modele wyboru ISD-R MEP-A1 i MEP-B:

  • MEP-A1: ISD-R jest wybierany na porcie 0 (port poleceń to 0), a profile są wybierane na portach eSIM 1 i nowszych. Polecenia ES10 są zawsze wysyłane do portu 0, a port poleceń i port docelowy są zawsze różne. Port wybiera LPA.

    Model wyboru MEP-A1 ISD-R

    Rysunek 1. Model wyboru ISD-R MEP-A1

  • MEP-B: ISD-R jest wybierany na dowolnym porcie, a do dowolnego portu można przypisać profil. Polecenia włączania i wyłączania są wysyłane do portu, w którym należy włączyć lub wyłączyć profil (w którym oczekuje się odświeżenia). Port poleceń i port docelowy są zawsze takie same.

    Model wyboru MEP-B ISD-R

    Rysunek 2. Model wyboru ISD-R MEP-B

Android 13

W Androidzie 13 lub nowszym na urządzeniach obsługujących MEP gniazdo eSIM zawiera wiele portów eUICC, z których każdy może mieć włączony profil. Jak pokazano na rysunku 3, w tej architekturze pojedynczy eUICC (pojedyncze gniazdo fizyczne) obsługuje dual SIM dual standby (DSDS), ponieważ każdy port eUICC jest połączony z pasmem podstawowym modemu. Interfejs HAL i interfejsy API w Androidzie 13 są niezależne od wariantu MEP.

Architektura chipu eSIM z obsługą MEP

Rysunek 3. Architektura układu eSIM z obsługą MEP (Android 13 lub nowszy)

Android 12 i starsze wersje

W przypadku urządzeń z Androidem 12 lub starszym bez MEP, jak pokazano na rysunku 4, gniazdo eSIM obsługuje tylko 1 włączony profil naraz. Oznacza to, że urządzenie nie może obsługiwać DSDS.

Architektura chipa eSIM bez obsługi MEP

Rysunek 4. Architektura układu eSIM bez obsługi MEP (Android 12 lub starszy)

Przepływ informacji o interfejsie API w przypadku wielu włączonych profili

Rysunek 5 przedstawia przepływ informacji o MEP dla eUICC w Androidzie 13. Platforma telefoniczna zawiera klasę UiccPort, która reprezentuje strukturę fizyczną na eUICC. Klasa UiccPort jest używana w przypadku wszystkich typów kart SIM: fizycznych kart SIM (pSIM), zintegrowanych kart SIM (iSIM) i wbudowanych kart SIM (eSIM). W przypadku eUICC z wieloma portami pojedynczy obiekt UiccSlot i obiekt UiccCard są mapowane na wiele instancji UiccPort. Każda instancja UiccPort może być połączona z co najwyżej 1 instancją UiccProfile. Ten przepływ umożliwia mapowanie UiccPort na gniazdo logiczne, a UiccSlot (gniazdo fizyczne) na wiele gniazd logicznych.

Przepływ informacji o MEP

Rysunek 5. Przepływ informacji o eUICC z obsługą MEP

Implementacja

W tej sekcji opisujemy, jak zaimplementować funkcję MEP, w tym szczegóły dotyczące wymagań HAL, interfejsów API i interfejsu użytkownika. Aby obsługiwać MEP, producenci urządzeń powinni współpracować z dostawcami układów SoC i układów eSIM.

Wymagania HAL

Aby obsługiwać MEP dla eUICC, zaimplementuj te interfejsy API IRadio AIDL HAL, które znajdują się w /platform/hardware/interfaces/radio/aidl/aidl_api.

Urządzenia z Androidem 14 lub nowszym muszą używać wersji 2.1 interfejsów HAL IRadio, które używają MultipleEnabledProfileMode (model wyboru ISD-R obsługiwany przez modem lub eUICC) i przekazują informacje o poleceniu ES10 APDU podczas operacji na kanałach logicznych ICC.

CardStatus

Modem musi obsługiwać interfejs API CardStatus jako odpowiedź na metodę getIccCardStatusResponse. Odpowiedź musi zawierać indeks portu i indeks gniazda fizycznego określony przez SimPortSlotMapping.

W przypadku urządzeń z Androidem 14 lub nowszym modem musi przekazywać obsługiwany tryb MEP ze wszystkimi zdarzeniami CardStatus.

SimSlotStatus

Modem musi obsługiwać interfejs API SimSlotStatus jako odpowiedź na metodę getSimSlotsStatus. Stan gniazda SIM zawiera tablicę interfejsu SimPortInfo, która obejmuje indeks portu, identyfikator ICCID dla włączonego profilu i stan portu. Modem musi zwracać co najmniej 2 obiekty SimPortInfo.

W przypadku urządzeń z Androidem 14 lub nowszym modem musi przekazywać obsługiwany tryb MEP ze wszystkimi zdarzeniami CardStatus.

setSimSlotMapping

Metoda setSimSlotMapping musi przekazywać tablicę SimPortSlotMapping. Indeks tablicy to gniazdo logiczne, a SimPortSlotMapping określa odpowiedni zmapowany port i indeks gniazda fizycznego. Metoda setSimSlotMapping ustawia mapowanie portów na gniazda logiczne. Aplikacja LPA używa tej metody do wybierania aktywnego portu.

Interfejsy API obsługujące MEP dla eUICC

Urządzenia z Androidem, które obsługują wiele włączonych profili w ramach stosu telefonicznego AOSP, muszą obsługiwać te interfejsy API.

UiccCardInfo

  • (Android 13 lub nowszy) isMultipleEnabledProfilesSupported: zwraca informację, czy ta karta UICC obsługuje MEP.
  • (Android 13 lub nowszy) getPorts: zwraca listę wszystkich możliwych portów dla danej karty UICC. Jeśli karta UICC to pSIM lub eSIM, która nie obsługuje MEP, zwraca listę z 1 elementem.
  • (Wycofany) getIccId: zwraca identyfikator ICCID. Ponieważ karta UICC może mieć więcej niż 1 identyfikator ICCID w przypadku urządzeń z MEP, użyj zamiast tego UiccPortInfo.getIccId().

(Android 13 lub nowszy) UiccPortInfo

SubscriptionInfo

  • (Android 13 lub nowszy) getPortIndex: zwraca indeks portu, na którym jest włączona subskrypcja. Jeśli subskrypcja jest wyłączona, zwraca INVALID_PORT_ID -1.

EuiccManager

  • switchToSubscription: przełącza na daną subskrypcję. Używane przez aplikacje, które nie mają uprawnień operatora w przypadku aktywnych subskrypcji. Gdy ta metoda jest wywoływana, platforma wewnętrznie rozwiązuje indeks portu za pomocą okna z 3 opcjami wyboru dialogowego, aby wyłączyć wybraną aktywną subskrypcję, jeśli nie ma dostępnych portów. Aplikacje kierowane na Androida 13 lub nowszego nie mogą używać tego interfejsu API do wyłączania subskrypcji przez przekazywanie nieprawidłowego identyfikatora subskrypcji. Zamiast tego muszą używać metody switchToSubscription (dodanej w Androidzie 13) z określonym indeksem portu.
  • (Android 13 lub nowszy) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): przełącza na daną subskrypcję. Aplikacje wywołujące z uprawnieniami operatora w przypadku aktywnych subskrypcji mogą określić, na którym porcie ma zostać włączona subskrypcja.
  • (Android 13 lub nowszy) isSimPortAvailable: zwraca informację, czy przekazywany indeks portu jest dostępny. Port jest dostępny, jeśli nie ma włączonej subskrypcji lub aplikacja wywołująca ma uprawnienia operatora w przypadku subskrypcji zainstalowanej na wybranym porcie.

EuiccService

  • (Android 13 lub nowszy) onSwitchToSubscriptionWithPort: przełącza na daną subskrypcję na określonym porcie. Implementacja LPA musi obsługiwać tę metodę w Androidzie 13 lub nowszym.

TelephonyManager

Interfejs użytkownika

Aby rozwiązać problem z niejednoznacznością wyboru portu eSIM, na urządzeniach obsługujących MEP użytkownicy muszą mieć możliwość wyłączenia jednej z aktywnych subskrypcji, aby włączyć nową subskrypcję. W Androidzie 13 AOSP zawiera wzorzec przeglądania z oknem z 3 opcjami, który można zastosować do wzorców przeglądania związanych z włączaniem subskrypcji w aplikacji Ustawienia. Rysunek 6 przedstawia przykład tego wzorca przeglądania.

Wzorzec przeglądania subskrypcji karty SIM MEP

Rysunek 6. Wzorzec przeglądania związany z włączaniem subskrypcji SIM

Flagi funkcji

Aby obsługiwać MEP, urządzenia muszą deklarować te flagi funkcji:

Implementacja LPA

Aby obsługiwać MEP, upewnij się, że implementacja LPA spełnia te wymagania:

  • Implementuje interfejsy API z EuiccService, aby obsługiwać wiele portów.
  • Używa interfejsów API do wybierania portów i włączania profili.
  • Zapewnia wzorzec przeglądania umożliwiający aplikacjom operatorów włączanie profili na wybranych portach.

Weryfikacja

Aby przetestować implementację funkcji MEP, upewnij się, że kompilacje przechodzą te testy CTS (w przypadku publicznych interfejsów API): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts.

Producenci urządzeń powinni też współpracować z dostawcami modemów, układów eUICC i systemów operacyjnych eSIM, aby potwierdzić, że urządzenie może wykonywać te czynności:

  • Można włączyć 2 profile eSIM i połączyć je z 2 różnymi sieciami.
  • Profile eSIM można aktywować i dezaktywować na dowolnym porcie eSIM.
  • Aplikacja operatora uruchamia wzorzec przeglądania, który umożliwia użytkownikom przełączanie profili.

Zalecenia dla operatorów

Aby użytkownicy nie tracili dostępu do usług podczas przenoszenia profili eSIM z jednego portu na drugi, zalecamy operatorom obsługę tych funkcji:

  • Płynne mapowanie IMEI i SIM
  • Wiele identyfikatorów ICCID lub kart SIM dla każdego identyfikatora eUICC (EID)