Android 13 veya sonraki sürümleri çalıştıran cihazlarda Android, eUICC için birden fazla etkin profil (MEP) destekler. Bu özellik, cihazların tek bir eSIM çipi kullanarak çift SIM desteğine sahip olmasına olanak tanır. Bu çip, birden fazla SIM profiline sahip olabilir ve aynı anda iki farklı operatöre bağlanabilir. Cihaz üreticileri, bu özelliği cihazlarına entegre etmek için SoC tedarikçileri ve eSIM yonga seti tedarikçileri ile birlikte çalışmalıdır.
Arka plan
Android 12 ve ö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 tasarruflarına rağmen, çift SIM desteğinin olmaması cihaz üreticilerinin yalnızca eSIM'li cihazları benimsemesini engelliyor. Yalnızca eSIM kullanan bir cihazda çift SIM desteği sağlamak için cihaz üreticilerinin cihaza iki eSIM öğesi paketlemesi gerekir. Bu da malzeme faturasını (BOM) artırır ve abonelik yönetimi için kötü bir kullanıcı deneyimine yol açar. Android 13'ten itibaren AOSP'de bulunan MEP özelliği bu sorunu giderir.
eUICC mimarisi
Bu bölümde, farklı Android sürümleri için MEP'ye sahip cihazlarda eSIM çip mimarisi ve MEP içermeyen cihazlar için eSIM çip mimarisi açıklanmaktadır.
Android 14
Android 14 veya sonraki sürümleri çalıştıran cihazlarda Android, GSMA SGP V22 3.0'da belirtildiği gibi, yayıncı güvenlik alanı kökü (ISD-R) 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: 0. bağlantı noktasında ISD-R (komut noktası 0) ve 1 ve sonraki eSIM bağlantı noktalarında profiller seçilir. ES10 komutları her zaman 0 numaralı bağlantı noktasına gönderilir. Komut bağlantı noktası ve 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 bağlantı noktasında ISD-R seçilir ve herhangi bir bağlantı noktasına profil atanabilir. Etkinleştirme ve devre dışı bırakma komutları, profilin etkinleştirilmesi veya devre dışı bırakılması gereken bağlantı noktasına (yeniden yüklemenin beklemede olduğu bağlantı noktası) gönderilir. Komut bağlantı noktası ve hedef bağlantı noktası her zaman aynıdır.
Şekil 2. MEP-B ISD-R seçim modeli
Android 13
Android 13 veya sonraki sürümlerde, MEP'yi destekleyen cihazlarda eSIM yuvasında birden fazla eUICC bağlantı noktası bulunur. Bu bağlantı noktalarında etkin bir profil olabilir. Şekil 3'te gösterildiği gibi, bu mimaride tek bir eUICC (tek bir fiziksel yuva), her bir eUICC bağlantı noktasının bir modem ana bandına bağlanmasını sağlayarak çift SIM ikili bekleme (DSDS) özelliğini destekler. Android 13 HAL ve API'leri MEP varyantından bağımsızdır.
Şekil 3. MEP desteğine sahip eSIM çip mimarisi (Android 13 veya sonraki sürümler)
Android 12 ve önceki sürümler
Şekil 4'te gösterildiği gibi MEP olmadan Android 12 veya daha eski sürümleri ç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 önceki sürümler)
Birden fazla etkin profil için API bilgi akışı
Şekil 5'te, Android 13'teki eUICC için MEP'nin bilgi akışı açıklanmaktadı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), entegre 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şlenir. Her UiccPort
örneği en fazla bir UiccProfile
örneğine bağlanabilir. Bu akış, UiccPort
'ün mantıksal bir yuvayla eşlenmesine ve UiccSlot
'un (fiziksel yuva) birden fazla mantıksal yuvayla eşlenmesine olanak tanır.
Şekil 5. MEP desteğine sahip eUICC için bilgi akışı
Uygulama
Bu bölümde, HAL şartları, 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 tedarikçileri ve eSIM yonga seti tedarikçileri ile birlikte çalışmalıdır.
HAL gereksinimleri
eUICC için MEP'yi desteklemek üzere /platform/hardware/interfaces/radio/aidl/aidl_api
adresinde bulunan aşağıdaki IRadio AIDL HAL API'lerini uygulayın.
Android 14 veya sonraki sürümleri çalıştıran cihazlar, HAL arayüzlerinin IRadio 2.1 sürümünü kullanmalıdır. Bu sürüm, MultipleEnabledProfileMode
(modem veya eUICC tarafından desteklenen ISD-R seçim modeli) kullanır ve ICC mantıksal kanal işlemleri sırasında ES10 APDU komut bilgilerini iletir.
CardStatus
Modem, getIccCardStatusResponse
yöntemine yanıt olarak CardStatus
API'yi desteklemelidir. Yanıt, SimPortSlotMapping
tarafından belirtilen bağlantı noktası dizini ve fiziksel yuva dizini içermelidir.
Android 14 veya sonraki sürümleri çalıştıran cihazlarda modem, tüm CardStatus etkinlikleriyle desteklenen MEP modunu iletmelidir.
SimSlotStatus
Modem, getSimSlotsStatus
yöntemine yanıt olarak SimSlotStatus
API'yi desteklemelidir. SIM yuvası durumu; bağlantı noktası dizinini, etkinleştirilen profilin ICCID'sini ve bağlantı noktası durumunu içeren bir SimPortInfo
arayüzü dizisini içerir. Modem en az iki SimPortInfo
nesnesi döndürmelidir.
Android 14 veya sonraki sürümleri çalıştıran cihazlarda modemin tüm CardStatus etkinlikleriyle desteklenen MEP modunu geçmesi gerekir.
setSimSlotMapping
setSimSlotMapping
yöntemi, SimPortSlotMapping
dizisi geçirmelidir.
Dizinin dizini mantıksal yuvadır ve SimPortSlotMapping
, karşılık gelen eşlenen bağlantı noktasını ve fiziksel slot 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 fazla etkin profili destekleyen Android cihazların aşağıdaki API'leri desteklemesi gerekir.
UiccCardInfo
- (Android 13 ve sonraki sürümler)
isMultipleEnabledProfilesSupported
: Bu UICC'nin MEP'yi destekleyip desteklemediğini döndürür. - (Android 13 ve sonraki sürümler)
getPorts
: Belirli bir UICC için kullanılabilecek tüm bağlantı noktalarının listesini döndürür. UICC, MEP'yi desteklemeyen bir pSIM veya eSIM ise tek bir öğenin listesini döndürür. - (Desteği sonlandırıldı)
getIccId
: ICCID döndürür. UICC'nin, MEP'li cihazlar için birden fazla ICCID'si olabileceğinden bunun yerineUiccPortInfo.getIccId()
değerini kullanın.
(Android 13 ve sonraki sürümler) 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.
SubscriptionInfo
- (Android 13 ve sonraki sürümler)
getPortIndex
: Aboneliğin etkinleştirildiği bağlantı noktası dizesini döndürür. Abonelik devre dışı bırakılırsaINVALID_PORT_ID -1
değerini döndürür.
EuiccManager
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çili etkin aboneliği devre dışı bırakmak için üç seçenekli bir iletişim kutusu aracılığıyla bağlantı noktası dizini için dahili çözüm üretir. Android 13 ve sonraki sürümleri hedefleyen uygulamalar, geçersiz abonelik kimliği ileterek bir aboneliği devre dışı bırakmak için bu API'yi kullanmamalıdır. Bunun yerine, bağlantı noktası diziniyleswitchToSubscription
yöntemini (Android 13'te eklenen) kullanmalıdır.- (Android 13 ve sonraki sürümler)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: Belirli bir aboneliğe geçiş yapar. Etkin abonelikler yerine operatör ayrıcalığı olan uygulamaları çağırmak, aboneliğin hangi bağlantı noktasında etkinleştirileceğini belirtebilir. - (Android 13 ve sonraki sürümler)
isSimPortAvailable
: Geçiş bağlantı noktası dizininin kullanılabilir olup olmadığını döndürür. Etkin aboneliği olmayan veya arayan uygulamanın, seçilen bağlantı noktasına yüklenen abonelik üzerinde operatör ayrıcalığı olan bağlantı noktaları kullanılabilir.
EuiccService
- (Android 13 ve sonraki sürümler)
onSwitchToSubscriptionWithPort
: Belirli bir bağlantı noktasındaki belirli bir aboneliğe geçiş yapar. LPA uygulaması, Android 13 ve sonraki sürümlerde bunu desteklemelidir.
Telefon Yöneticisi
- (Android 13 ve sonraki sürümler)
getSimApplicationState
: Kart başvurusunun durumunu belirten bir sabit döndürür. Bu API hem fiziksel bir yuva dizini hem de bağlantı noktası dizini iletir.getSimApplicationState(int physicalSlotIndex)
yöntemi (desteği sonlandırılmış),simApplicationState
nesnesi almak için yalnızca fiziksel alan dizinini iletir. - (Android 13 ve sonraki sürümler)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Mantıksal yuvaları fiziksel yuvalara ve bağlantı noktalarına eşler. - (Android 13 ve sonraki sürümler)
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çimiyle ilgili belirsizliği gidermek 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 abonelik etkinleştirme kullanıcı akışlarına uygulanabilecek üç seçenekli bir iletişim kutusu içeren bir kullanıcı akışı içerir. Şekil 6'da bu kullanıcı deneyimi akışına bir örnek gösterilmektedir.
Şekil 6. SIM aboneliğini etkinleştirmek için kullanıcı işlemleri akışı
Özellik işaretleri
Cihazların MEP'yi desteklemek için aşağıdaki özellik bayraklarını bildirmesi gerekir:
LPA uygulaması
MEP'yi desteklemek için LPA uygulamanızın aşağıdaki koşulları karşıladığından emin olun:
- Birden fazla bağlantı noktasını desteklemek için EuiccService API'lerini uygular.
- Bağlantı noktası seçimi ve profil etkinleştirme için API'leri kullanır.
- Operatör uygulamalarının, seçili bağlantı noktalarında profilleri etkinleştirmesine olanak tanıyan kullanıcı deneyimi sunar.
Doğrulama
MEP özelliğini uygulamanızı test etmek için derlemelerin aşağıdaki CTS testlerinden geçtiğinden emin olun (herkese açık API'ler için):
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
Cihaz üreticileri, cihazın aşağıdakileri yapabildiğinden emin olmak için modemleri, eUICC çipi ve eSIM OS tedarikçileriyle de birlikte çalışmalıdır:
- İki eSIM profili etkinleştirilebilir ve iki farklı ağa bağlanabilir.
- eSIM profilleri herhangi bir eSIM bağlantı noktasında etkinleştirilebilir ve devre dışı bırakılabilir.
- Operatör uygulaması tarafından tetiklenen bir kullanıcı deneyimi akışı vardır. Bu akış, kullanıcıların profil değiştirmesine olanak tanır.
Operatörler için öneri
Kullanıcıların eSIM profillerini bir bağlantı noktasından diğerine taşırken hizmet kesintisi yaşamamaları için operatörlerin aşağıdakiler konusunda destek sağlamalarını öneririz:
- IMEI ve SIM'in akışkan eşlenmesi
- Her eUICC tanımlayıcısı (EID) için birden fazla ICCID veya SIM