Android 13 veya üstünü çalıştıran cihazlarda, Android, eUICC için birden fazla etkin profili (MEP) destekler. Bu özellik, cihazların birden fazla SIM profiline sahip olabilen ve aynı anda iki farklı operatöre bağlanabilen tek bir eSIM yongası kullanarak çift SIM desteğine sahip olmasını sağlar. Cihaz üreticileri, bu özelliği cihazlarına entegre etmek için SoC satıcıları ve eSIM yonga seti satıcılarıyla birlikte çalışmalıdır.
Arka plan
Android 12 ve daha önceki sürümleri çalıştıran cihazlarda AOSP, tek bir eSIM'in aynı anda birden fazla profili desteklemesine izin verme konusunda sınırlı destek sağlar. eSIM'in sunduğu önemli alan ve maliyet tasarrufuna rağmen, çift SIM desteğinin olmaması, cihaz üreticilerinin yalnızca eSIM özellikli cihazları benimsemesini engelliyor. Yalnızca eSIM içeren bir cihazda çift SIM desteği sağlamak için cihaz üreticilerinin cihaza iki eSIM öğesi yerleştirmesi gerekir; bu da malzeme listesi (BOM) maliyetlerini artırır ve abonelik yönetimi açısından kötü kullanıcı deneyimlerine yol açar. Android 13'ten itibaren AOSP'de bulunan MEP özelliği bu sorunu giderir.
eUICC mimarisi
Bu bölüm, farklı Android sürümleri için MEP'li cihazlar için eSIM çip mimarisini ve MEP'siz cihazlar için eSIM çip mimarisini açıklamaktadır.
Android14
Android 14 veya üstünü çalıştıran cihazlar için Android, GSMA SGP V22 3.0'da belirtildiği gibi veren güvenlik etki alanı kökünün (ISD-R) seçimi ve eSIM bağlantı noktalarının seçimi için MEP-A1 ve MEP-B seçeneklerini destekler. Aşağıda MEP-A1 ve MEP-B ISD-R seçim modelleri açıklanmaktadır.
MEP-A1: Bağlantı noktası 0'da ISD-R seçilir (komut bağlantı noktası 0'dır) ve eSIM bağlantı noktaları 1 ve üzeri profiller seçilir. ES10 komutları her zaman bağlantı noktası 0'a gönderilir ve komut bağlantı noktası ile hedef bağlantı noktası her zaman farklıdır. LPA bağlantı noktasını seçer.
Şekil 1. MEP-A1 ISD-R seçim modeli
MEP-B: Herhangi bir portta ISD-R seçilir ve her porta bir profil atanabilir. Etkinleştirme ve devre dışı bırakma komutları, profilin etkinleştirilmesi veya devre dışı bırakılması gereken (yenilemenin beklendiği) bağlantı noktasına gönderilir. Komut portu ve hedef portu her zaman aynıdır.
Şekil 2. MEP-B ISD-R seçim modeli
Android 13
Android 13 veya üzeri sürümlerde, MEP'yi destekleyen cihazlarda eSIM yuvası, can bağlantı noktasının etkin bir profile sahip olabileceği birden fazla eUICC bağlantı noktası içerir. Şekil 3'te gösterildiği gibi, bu mimariyle tek bir eUICC (tek bir fiziksel yuva), her eUICC bağlantı noktasının bir modem taban bandına bağlanmasıyla ikili SIM ikili beklemeyi (DSDS) destekler. Android 13 HAL ve API'ler MEP varyantından bağımsızdır.
Şekil 3. MEP destekli eSIM çip mimarisi (Android 13 veya üzeri)
Android 12 ve altı
Şekil 4'te gösterildiği gibi MEP'siz Android 12 veya daha eski bir sürümü çalıştıran cihazlarda, eSIM yuvası aynı anda yalnızca tek bir etkin profili destekler ve cihaz DSDS'yi destekleyemez.
Şekil 4. MEP desteği olmayan eSIM çip mimarisi (Android 12 veya altı)
Birden çok etkin profil için API bilgi akışı
Şekil 5, Android 13'te eUICC için MEP'ye yönelik bilgi akışını açıklamaktadır. Telefon çerçevesi, eUICC'deki fiziksel yapıyı temsil eden UiccPort
sınıfını içerir. UiccPort
sınıfı tüm SIM kart türleri için kullanılır: fiziksel SIM (pSIM), tümleşik SIM (iSIM) ve yerleşik SIM (eSIM). Birden fazla bağlantı noktasına sahip bir eUICC için, tek bir UiccSlot
nesnesi ve UiccCard
nesnesi, birden fazla UiccPort
örneğiyle eşleşir. Her UiccPort
örneği en fazla bir UiccProfile
örneğine bağlanabilir. Bu akış UiccPort
mantıksal bir yuvaya eşlenmesine ve UiccSlot
(fiziksel yuva) birden fazla mantıksal yuvaya eşlenmesine olanak tanır.
Şekil 5. MEP destekli eUICC için bilgi akışı
Uygulama
Bu bölümde HAL gereksinimleri, API'ler ve kullanıcı arayüzüyle ilgili ayrıntılar da dahil olmak üzere MEP özelliğinin nasıl uygulanacağı açıklanmaktadır. Cihaz üreticileri, MEP'yi desteklemek için SoC satıcıları ve eSIM yonga seti satıcılarıyla birlikte çalışmalıdır.
HAL gereksinimleri
eUICC için MEP'yi desteklemek üzere /platform/hardware/interfaces/radio/aidl/aidl_api
konumunda bulunan aşağıdaki IRadio AIDL HAL API'lerini uygulayın.
Android 14 veya üstünü çalıştıran cihazlar, MultipleEnabledProfileMode
(modem veya eUICC tarafından desteklenen ISD-R seçim modeli) kullanan ve ICC mantıksal kanal işlemleri sırasında ES10 APDU komut bilgilerini aktaran HAL arayüzlerinin IRadio 2.1 sürümünü kullanmalıdır.
Kart Durumu
Modemin getIccCardStatusResponse
yöntemine yanıt olarak CardStatus
API'sini desteklemesi gerekir. Yanıt, SimPortSlotMapping
tarafından belirtilen bağlantı noktası dizinini ve fiziksel yuva dizinini içermelidir.
Android 14 veya üstünü çalıştıran cihazlar için modemin, tüm CardStatus olaylarıyla birlikte desteklenen MEP modunu geçmesi gerekir.
SimSlot Durumu
Modemin, getSimSlotsStatus
yöntemine yanıt olarak SimSlotStatus
API'sini desteklemesi gerekir. SIM yuvası durumu, bağlantı noktası indeksini, etkin profil için ICCID'yi ve bağlantı noktası durumunu içeren bir SimPortInfo
arayüzü dizisini içerir. Modemin en az iki SimPortInfo
nesnesi döndürmesi gerekir.
Android 14 veya üstünü çalıştıran cihazlar için modemin, tüm CardStatus olaylarıyla birlikte desteklenen MEP modunu geçmesi gerekir.
setSimSlotMapping
setSimSlotMapping
yönteminin bir SimPortSlotMapping
dizisini iletmesi gerekir. Dizinin dizini mantıksal yuvadır ve SimPortSlotMapping
karşılık gelen eşlenen bağlantı noktasını ve fiziksel yuva dizinini belirtir. setSimSlotMapping
yöntemi, bağlantı noktalarından mantıksal yuvalara eşlemeyi ayarlar. LPA uygulaması etkin bağlantı noktasını seçmek için bu yöntemi kullanır.
eUICC için MEP'yi destekleyen API'ler
AOSP telefon yığınının bir parçası olarak birden çok etkin profili destekleyen Android cihazlarının aşağıdaki API'leri desteklemesi gerekir.
UiccCardInfo
- (Android 13 ve üzeri)
isMultipleEnabledProfilesSupported
: Bu UICC'nin MEP'yi destekleyip desteklemediğini döndürür. - (Android 13 ve üzeri)
getPorts
: Belirli bir UICC için olası tüm bağlantı noktalarının listesini döndürür. UICC, MEP'yi desteklemeyen bir pSIM veya eSIM ise bir öğenin listesini döndürür. - (Kullanımdan kaldırıldı)
getIccId
: Bir ICCID döndürür. Bir UICC, MEP'li cihazlar için birden fazla ICCID'ye sahip olabileceğinden, bunun yerineUiccPortInfo.getIccId()
kullanın.
(Android 13 ve üzeri) UiccPortInfo
-
getIccId
: Bu bağlantı noktasında etkin bir abonelik varsa ICCID'yi döndürür. -
getPortIndex
: Bağlantı noktası dizinini döndürür. -
getLogicalSlotIndex
: Etkin mantıksal modem yığını dizinini döndürür.
Abonelik Bilgileri
- (Android 13 ve üzeri)
getPortIndex
: Aboneliğin etkinleştirildiği bağlantı noktası dizinini döndürür. Abonelik devre dışı bırakılırsaINVALID_PORT_ID -1
değerini döndürür.
Euicc Yöneticisi
-
switchToSubscription
: Belirli bir aboneliğe geçiş yapar. Etkin aboneliklerde operatör ayrıcalığına sahip olmayan uygulamalar tarafından kullanılır. Platform çağrıldığında, kullanılabilir bağlantı noktası yoksa seçilen etkin aboneliği devre dışı bırakmak için üç seçenekli bir seçim iletişim kutusu aracılığıyla bağlantı noktası dizinini dahili olarak çözer. Android 13 ve üstünü hedefleyen uygulamalar , geçersiz bir abonelik kimliği ileterek bir aboneliği devre dışı bırakmak için bu API'yi kullanmamalıdır; bunun yerine belirtilen bağlantı noktası dizini ileswitchToSubscription
yöntemini (Android 13'te eklenmiştir) kullanmaları gerekir. - (Android 13 ve üzeri)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: Belirli bir aboneliğe geçiş yapar. Etkin abonelikler üzerinde operatör ayrıcalığına sahip uygulamaları çağırmak, aboneliğin hangi bağlantı noktasında etkinleştirileceğini belirtebilir. - (Android 13 ve üzeri)
isSimPortAvailable
: Geçen bağlantı noktası dizininin mevcut olup olmadığını döndürür. Abonelik etkin değilse veya arayan uygulamanın, seçilen bağlantı noktasında yüklü abonelik üzerinde operatör ayrıcalığı varsa, bağlantı noktası kullanılabilir.
EuiccService
- (Android 13 ve üzeri)
onSwitchToSubscriptionWithPort
: Belirtilen bağlantı noktasındaki belirli bir aboneliğe geçiş yapar. LPA uygulamasının bunu Android 13 ve sonraki sürümlerde desteklemesi gerekir.
Telefon Yöneticisi
- (Android 13 ve üzeri)
getSimApplicationState
: Kart uygulamasının durumunu gösteren bir sabit döndürür. Bu API, hem fiziksel slot indeksini hem de port indeksini iletir.getSimApplicationState(int physicalSlotIndex)
yöntemi (kullanımdan kaldırıldı), birsimApplicationState
nesnesi almak için yalnızca fiziksel yuva dizinini geçirir. - (Android 13 ve üzeri)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Mantıksal yuvaları fiziksel yuvalar ve bağlantı noktalarıyla eşler. - (Android 13 ve üzeri)
Collection<UiccSlotMapping> getSimSlotMapping
: Mantıksal yuvalardan fiziksel sim yuvalarına ve bağlantı noktası dizinlerine eşlemeyi alır.
Kullanıcı arayüzü
eSIM bağlantı noktası seçimi konusundaki belirsizliği çözmek için, MEP'yi destekleyen cihazlarda kullanıcıların yeni bir aboneliği etkinleştirmek üzere etkin aboneliklerden birini devre dışı bırakabilmesi gerekir. Android 13'te AOSP, Ayarlar uygulamasından kullanıcı akışlarını etkinleştiren aboneliğe uygulanabilen üç seçenekli iletişim kutusuna sahip bir kullanıcı akışı içerir. Şekil 6'da bu UX akışının bir örneği gösterilmektedir.
Şekil 6. SIM aboneliğini etkinleştirmek için kullanıcı akışı
Özellik bayrakları
MEP'yi desteklemek için cihazların aşağıdaki özellik bayraklarını bildirmesi gerekir:
LPA uygulaması
MEP'yi desteklemek için LPA uygulamanızın aşağıdaki gereksinimleri karşıladığından emin olun:
- Birden fazla bağlantı noktasını desteklemek için EuiccService'in API'lerini uygular.
- Bağlantı noktası seçimi ve profil etkinleştirme için API'leri kullanır.
- Operatör uygulamalarının seçilen bağlantı noktalarında profilleri etkinleştirmesine olanak tanıyan UX sağlar.
Doğrulama
MEP özelliği uygulamanızı test etmek için yapıların aşağıdaki CTS test senaryolarını (genel API'ler için) geçtiğinden emin olun /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
Cihaz üreticileri ayrıca cihazın aşağıdakileri yapabildiğinden emin olmak için modem, eUICC yongası ve eSIM işletim sistemi satıcılarıyla da çalışmalıdır:
- İki eSIM profili etkinleştirilebilir ve iki farklı ağa eklenebilir.
- eSIM profilleri herhangi bir eSIM bağlantı noktasında etkinleştirilebilir ve devre dışı bırakılabilir.
- Operatör uygulaması tarafından tetiklenen ve kullanıcıların profil değiştirmesine olanak tanıyan bir UX akışı vardır.
Taşıyıcılar için öneri
Kullanıcıların eSIM profillerini bir bağlantı noktasından diğerine taşıdığında hizmeti kaybetmemelerini sağlamak için operatörlerin aşağıdaki konularda destek sağlamasını öneririz:
- IMEI ve SIM'in sıvı haritalaması
- Her eUICC tanımlayıcısı (EID) için birden fazla ICCID veya SIM