Untuk perangkat yang menjalankan Android 13 atau yang lebih tinggi, Android mendukung beberapa profil yang diaktifkan (MEP) untuk eUICC. Fitur ini memungkinkan perangkat memiliki dukungan SIM ganda menggunakan satu chip eSIM, yang dapat memiliki beberapa profil SIM dan dapat terhubung ke dua operator yang berbeda secara bersamaan. Produsen perangkat harus bekerja sama dengan vendor SoC dan vendor chipset eSIM untuk mengintegrasikan fitur ini di perangkat mereka.
Latar belakang
Di perangkat yang menjalankan Android 12 dan yang lebih rendah, AOSP memberikan dukungan terbatas dalam memungkinkan satu eSIM mendukung beberapa profil secara bersamaan. Meskipun menawarkan penghematan ruang dan biaya yang signifikan, kurangnya dukungan dual SIM ini mencegah produsen perangkat mengadopsi perangkat khusus eSIM. Untuk memberikan dukungan SIM ganda di perangkat khusus eSIM, produsen perangkat harus mengemas dua elemen eSIM ke dalam perangkat, yang meningkatkan biaya bill of material (BOM) dan menyebabkan pengalaman pengguna yang buruk untuk pengelolaan langganan. Fitur MEP yang tersedia di AOSP dari Android 13 mengatasi masalah ini.
Arsitektur eUICC
Bagian ini menjelaskan arsitektur chip eSIM untuk perangkat dengan MEP untuk berbagai versi Android dan arsitektur chip eSIM untuk perangkat tanpa MEP.
Android 14
Untuk perangkat yang menjalankan Android 14 atau yang lebih tinggi, Android mendukung opsi MEP-A1 dan MEP-B untuk pemilihan root domain keamanan penerbit (ISD-R) dan pemilihan port eSIM seperti yang ditentukan dalam GSMA SGP V22 3.0. Berikut ini menjelaskan model pemilihan ISD-R MEP-A1 dan MEP-B.
MEP-A1: ISD-R dipilih di port 0 (port perintah adalah 0) dan profil dipilih di port eSIM 1 dan yang lebih tinggi. Perintah ES10 selalu dikirim ke port 0, dan port perintah serta port target selalu berbeda. LPA memilih port.
Gambar 1. Model pemilihan ISD-R MEP-A1
MEP-B: ISD-R dipilih di port mana pun dan profil dapat ditetapkan ke port mana pun. Perintah aktifkan dan nonaktifkan dikirim ke port tempat profil perlu diaktifkan atau dinonaktifkan (tempat penyegaran tertunda). Port perintah dan port target selalu sama.
Gambar 2. Model pemilihan ISD-R MEP-B
Android 13
Di Android 13 atau yang lebih tinggi, pada perangkat yang mendukung MEP, slot eSIM berisi beberapa port eUICC yang setiap portnya dapat memiliki profil yang diaktifkan. Seperti yang ditunjukkan pada Gambar 3, dengan arsitektur ini, satu eUICC (satu slot fisik) mendukung dual SIM dual standby (DSDS) dengan setiap port eUICC ditautkan ke baseband modem. HAL dan API Android 13 tidak bergantung pada varian MEP.
Gambar 3. Arsitektur chip eSIM dengan dukungan MEP (Android 13 atau yang lebih tinggi)
Android 12 dan yang lebih lama
Untuk perangkat yang menjalankan Android 12 atau yang lebih rendah tanpa MEP seperti yang ditunjukkan pada Gambar 4, slot eSIM hanya mendukung satu profil yang diaktifkan dalam satu waktu dan perangkat tidak dapat mendukung DSDS.
Gambar 4. Arsitektur chip eSIM tanpa dukungan MEP (Android 12 atau yang lebih rendah)
Alur informasi API untuk beberapa profil yang diaktifkan
Gambar 5 menjelaskan alur informasi untuk MEP untuk eUICC di
Android 13. Framework teleponi mencakup class
UiccPort
, yang merepresentasikan struktur fisik di eUICC. Class
UiccPort
digunakan untuk semua jenis kartu SIM: SIM fisik (pSIM),
SIM terintegrasi (iSIM), dan eSIM. Untuk eUICC dengan beberapa
port, satu objek UiccSlot
dan objek UiccCard
dipetakan ke
beberapa instance UiccPort
. Setiap instance UiccPort
dapat ditautkan ke paling banyak satu instance
UiccProfile
. Alur ini memungkinkan UiccPort
dipetakan ke slot logis dan
UiccSlot
(slot fisik) dipetakan ke beberapa slot logis.
Gambar 5. Alur informasi untuk eUICC dengan dukungan MEP
Implementasi
Bagian ini menjelaskan cara menerapkan fitur MEP, termasuk detail tentang persyaratan HAL, API, dan antarmuka pengguna. Produsen perangkat harus bekerja sama dengan vendor SoC dan vendor chipset eSIM untuk mendukung MEP.
Persyaratan HAL
Untuk mendukung MEP untuk eUICC, terapkan IRadio AIDL HAL API berikut, yang berada
di
/platform/hardware/interfaces/radio/aidl/aidl_api
.
Perangkat yang menjalankan Android 14 atau yang lebih tinggi harus menggunakan antarmuka HAL versi IRadio 2.1, yang menggunakan
MultipleEnabledProfileMode
(model pemilihan ISD-R yang didukung oleh modem atau eUICC) dan meneruskan informasi perintah APDU ES10 selama operasi saluran logis ICC.
CardStatus
Modem harus mendukung
CardStatus
API sebagai respons terhadap
metode getIccCardStatusResponse
. Respons harus menyertakan indeks port dan indeks slot fisik yang ditentukan oleh
SimPortSlotMapping
.
Untuk perangkat yang menjalankan Android 14 atau yang lebih tinggi, modem harus lulus mode MEP yang didukung dengan semua peristiwa CardStatus.
SimSlotStatus
Modem harus mendukung
SimSlotStatus
API sebagai respons terhadap
metode getSimSlotsStatus
. Status slot SIM mencakup array antarmuka
SimPortInfo
, yang mencakup indeks port, ICCID untuk profil yang diaktifkan, dan
status port. Modem harus menampilkan minimal dua objek SimPortInfo
.
Untuk perangkat yang menjalankan Android 14 atau yang lebih tinggi, modem harus lulus mode MEP yang didukung dengan semua peristiwa CardStatus.
setSimSlotMapping
Metode
setSimSlotMapping
harus meneruskan array
SimPortSlotMapping
.
Indeks array adalah slot logis dan
SimPortSlotMapping
menentukan indeks slot fisik dan port yang dipetakan yang sesuai. Metode setSimSlotMapping
menetapkan pemetaan dari port ke slot
logis. Aplikasi LPA menggunakan
metode ini untuk memilih port aktif.
API yang mendukung MEP untuk eUICC
Perangkat Android yang mendukung beberapa profil aktif sebagai bagian dari stack teleponi AOSP harus mendukung API berikut.
UiccCardInfo
- (Android 13 dan yang lebih tinggi)
isMultipleEnabledProfilesSupported
: Menampilkan apakah UICC ini mendukung MEP. - (Android 13 dan yang lebih tinggi)
getPorts
: Menampilkan daftar semua kemungkinan port untuk UICC tertentu. Jika UICC adalah pSIM atau eSIM yang tidak mendukung MEP, akan menampilkan daftar satu elemen. - (Tidak digunakan lagi)
getIccId
: Menampilkan ICCID. Karena UICC dapat memiliki lebih dari satu ICCID untuk perangkat dengan MEP, gunakanUiccPortInfo.getIccId()
sebagai gantinya.
(Android 13 dan yang lebih baru) UiccPortInfo
getIccId
: Menampilkan ICCID jika ada langganan yang diaktifkan di port ini.getPortIndex
: Menampilkan indeks port.getLogicalSlotIndex
: Menampilkan indeks tumpukan modem logis aktif.
SubscriptionInfo
- (Android 13 dan yang lebih tinggi)
getPortIndex
: Menampilkan indeks port tempat langganan diaktifkan. Jika langganan dinonaktifkan,INVALID_PORT_ID -1
akan ditampilkan.
EuiccManager
switchToSubscription
: Beralih ke langganan tertentu. Digunakan oleh aplikasi yang tidak memiliki hak istimewa operator pada langganan aktif. Saat dipanggil, platform secara internal menyelesaikan indeks port melalui pemilihan tiga opsi dialog untuk menonaktifkan langganan aktif yang dipilih jika tidak ada port yang tersedia. Aplikasi yang menargetkan Android 13 dan yang lebih tinggi tidak boleh menggunakan API ini untuk menonaktifkan langganan dengan meneruskan ID langganan yang tidak valid; sebaliknya, aplikasi harus menggunakan metodeswitchToSubscription
(ditambahkan di Android 13) dengan indeks port yang ditentukan.- (Android 13 dan yang lebih tinggi)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: Beralih ke langganan tertentu. Aplikasi yang memanggil dengan hak istimewa operator melalui langganan aktif dapat menentukan port mana yang akan mengaktifkan langganan di port tersebut. - (Android 13 dan yang lebih tinggi)
isSimPortAvailable
: Menampilkan apakah indeks port yang diteruskan tersedia. Port tersedia jika tidak ada langganan yang diaktifkan atau aplikasi yang memanggil memiliki hak istimewa operator atas langganan yang diinstal di port yang dipilih.
EuiccService
- (Android 13 dan yang lebih tinggi)
onSwitchToSubscriptionWithPort
: Beralih ke langganan tertentu di port yang ditentukan. Implementasi LPA harus mendukungnya di Android 13 dan yang lebih tinggi.
TelephonyManager
- (Android 13 dan yang lebih tinggi)
getSimApplicationState
: Menampilkan konstanta yang menunjukkan status aplikasi kartu. API ini meneruskan indeks slot fisik dan indeks port. MetodegetSimApplicationState(int physicalSlotIndex)
(tidak digunakan lagi) hanya meneruskan indeks slot fisik untuk mendapatkan objeksimApplicationState
. - (Android 13 dan yang lebih tinggi)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Memetakan slot logis ke slot dan port fisik. - (Android 13 dan yang lebih tinggi)
Collection<UiccSlotMapping> getSimSlotMapping
: Mendapatkan pemetaan dari slot logis ke slot SIM fisik dan indeks port.
Antarmuka pengguna
Untuk mengatasi ambiguitas pemilihan transfer eSIM, di perangkat yang mendukung MEP, pengguna harus dapat menonaktifkan salah satu langganan aktif untuk mengaktifkan langganan baru. Di Android 13, AOSP menyertakan alur pengguna dengan dialog tiga pilihan yang dapat diterapkan ke alur pengguna yang mengaktifkan langganan dari aplikasi Setelan. Gambar 6 menunjukkan contoh alur UX ini.
Gambar 6. Alur pengguna untuk mengaktifkan langganan SIM
Feature flags
Untuk mendukung MEP, perangkat harus mendeklarasikan tanda fitur berikut:
Penerapan LPA
Untuk mendukung MEP, pastikan penerapan LPA Anda memenuhi persyaratan berikut:
- Menerapkan API dari EuiccService untuk mendukung beberapa port.
- Menggunakan API untuk pemilihan port dan pengaktifan profil.
- Menyediakan UX yang memungkinkan aplikasi operator mengaktifkan profil di port yang dipilih.
Validasi
Untuk menguji penerapan fitur MEP, pastikan build lulus kasus pengujian CTS berikut (untuk API publik):
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
Produsen perangkat juga harus bekerja sama dengan vendor modem, chip eUICC, dan OS eSIM mereka untuk memastikan perangkat dapat melakukan hal berikut:
- Dua profil eSIM dapat diaktifkan dan terhubung ke dua jaringan yang berbeda.
- Profil eSIM dapat diaktifkan dan dinonaktifkan di port eSIM mana pun.
- Ada alur UX yang dipicu oleh aplikasi operator yang memungkinkan pengguna beralih profil.
Rekomendasi untuk operator
Untuk memastikan pengguna tidak kehilangan layanan saat memindahkan profil eSIM dari satu port ke port lain, sebaiknya operator memberikan dukungan untuk hal berikut:
- Pemetaan IMEI dan SIM yang lancar
- Beberapa ICCID atau SIM untuk setiap ID eUICC (EID)