במכשירים עם Android מגרסה 13 ואילך, מערכת Android תומכת במספר פרופילים מופעלים (MEP) ל-eUICC. התכונה הזו מאפשרת למכשירים לתמוך ב-Dual SIM באמצעות שבב eSIM יחיד, שיכול להכיל כמה פרופילים של כרטיסי SIM ולהתחבר לשני ספקים שונים בו-זמנית. יצרני מכשירים צריכים לעבוד עם ספקי SoC וספקי ערכות שבבים של eSIM כדי לשלב את התכונה הזו במכשירים שלהם.
רקע
במכשירים עם Android 12 ומטה, מערכת AOSP מספקת תמיכה מוגבלת שמאפשרת ל-eSIM יחיד לתמוך בכמה פרופילים בו-זמנית. למרות החיסכון המשמעותי במקום ובעלויות ש-eSIM מציע, היעדר תמיכה ב-Dual SIM מונע מיצרני מכשירים לאמץ מכשירים עם eSIM בלבד. כדי לספק תמיכה בשני כרטיסי SIM במכשיר עם כרטיס eSIM בלבד, יצרני המכשירים צריכים לארוז שני רכיבי eSIM במכשיר, מה שמגדיל את עלויות רשימת החומרים (BOM) ומוביל לחוויית משתמש לא טובה בניהול המינויים. התכונה MEP שזמינה ב-AOSP מגרסה Android 13 פותרת את הבעיה הזו.
ארכיטקטורת eUICC
בקטע הזה מתוארת ארכיטקטורת שבב ה-eSIM במכשירים עם MEP לגרסאות שונות של Android, וארכיטקטורת שבב ה-eSIM במכשירים ללא MEP.
Android 14
במכשירים עם Android 14 ואילך, מערכת Android תומכת באפשרויות MEP-A1 ו-MEP-B לבחירת שורש תחום האבטחה של המנפיק (ISD-R) ולבחירת יציאות eSIM, כפי שמפורט ב-GSMA SGP V22 3.0. בהמשך מפורטים מודלי הבחירה MEP-A1 ו-MEP-B ISD-R.
MEP-A1: האפשרות ISD-R נבחרה ביציאה 0 (יציאת הפקודה היא 0) ופרופילים נבחרו ביציאות eSIM 1 ומעלה. פקודות ES10 תמיד נשלחות ליציאה 0, ויציאת הפקודה ויציאת היעד תמיד שונות. ה-LPA בוחר את היציאה.
איור 1. מודל הבחירה MEP-A1 ISD-R
MEP-B: ISD-R נבחר בכל יציאה, ואפשר להקצות פרופיל לכל יציאה. פקודות ההפעלה וההשבתה נשלחות ליציאה שבה צריך להפעיל או להשבית את הפרופיל (כאשר יש רענון בהמתנה). יציאת הפקודה ויציאת היעד תמיד זהות.
איור 2. מודל לבחירת ISD-R של MEP-B
Android 13
ב-Android מגרסה 13 ואילך, במכשירים שתומכים ב-MEP, חריץ ה-eSIM מכיל כמה יציאות eUICC, וכל יציאה יכולה להכיל פרופיל מופעל. כפי שמוצג באיור 3, עם הארכיטקטורה הזו, כרטיס eUICC יחיד (חריץ פיזי יחיד) תומך במצב Dual SIM Dual Standby (DSDS) כי כל יציאת eUICC מקושרת לפס בסיס של מודם. ממשקי ה-API ו-HAL של Android 13 לא תלויים בווריאנט MEP.
איור 3. ארכיטקטורת שבב eSIM עם תמיכה ב-MEP (Android 13 ואילך)
Android מגרסה 12 ומטה
במכשירים עם Android מגרסה 12 ומטה ללא MEP, כמו שמוצג באיור 4, חריץ ה-eSIM תומך רק בפרופיל מופעל אחד בכל פעם, והמכשיר לא יכול לתמוך ב-DSDS.
איור 4. ארכיטקטורת שבב eSIM ללא תמיכה ב-MEP (Android 12 ומטה)
זרימת מידע של API עבור כמה פרופילים מופעלים
איור 5 מתאר את זרימת המידע של MEP עבור eUICC ב-Android 13. מסגרת הטלפוניה כוללת את המחלקה UiccPort
, שמייצגת את המבנה הפיזי ב-eUICC. הסיווג UiccPort
משמש לכל סוגי כרטיסי ה-SIM: כרטיס SIM פיזי (pSIM), כרטיס SIM משולב (iSIM) וכרטיס SIM מוטמע (eSIM). במקרה של כרטיס eUICC עם כמה יציאות, אובייקט UiccSlot
אחד ואובייקט UiccCard
אחד ממופים לכמה מופעים של UiccPort
. כל מופע של UiccPort
יכול להיות מקושר למופע אחד לכל היותר של UiccProfile
. התהליך הזה מאפשר ל-UiccPort
למפות למשבצת לוגית ול-UiccSlot
(משבצת פיזית) למפות לכמה משבצות לוגיות.
איור 5. זרימת המידע ב-eUICC עם תמיכה ב-MEP
הטמעה
בקטע הזה מוסבר איך מטמיעים את התכונה MEP, כולל פרטים על דרישות HAL, ממשקי API וממשק משתמש. יצרני מכשירים צריכים לעבוד עם ספקי SoC וספקי ערכות שבבים של eSIM כדי לתמוך ב-MEP.
דרישות HAL
כדי לתמוך ב-MEP עבור eUICC, צריך להטמיע את ממשקי ה-API הבאים של IRadio AIDL HAL, שנמצאים ב-/platform/hardware/interfaces/radio/aidl/aidl_api
.
במכשירים עם Android מגרסה 14 ואילך, צריך להשתמש בגרסה IRadio 2.1 של ממשקי HAL, שמשתמשת ב-MultipleEnabledProfileMode
(מודל בחירת ISD-R שנתמך על ידי המודם או eUICC) ומעבירה מידע על פקודת ES10 APDU במהלך פעולות של ערוץ לוגי ICC.
CardStatus
המודם צריך לתמוך ב-API CardStatus
כתשובה ל-method getIccCardStatusResponse
. התגובה צריכה לכלול את אינדקס היציאה ואת אינדקס החריץ הפיזי שצוינו על ידי SimPortSlotMapping
.
במכשירים עם Android מגרסה 14 ואילך, המודם צריך לעבור את מצב MEP הנתמך עם כל האירועים של CardStatus.
SimSlotStatus
המודם צריך לתמוך ב-API SimSlotStatus
כתשובה ל-method getSimSlotsStatus
. סטטוס חריץ ה-SIM כולל מערך של ממשק SimPortInfo
, שכולל את אינדקס היציאה, את ה-ICCID של הפרופיל המופעל ואת מצב היציאה. המודם צריך להחזיר לפחות שני אובייקטים מסוג SimPortInfo
.
במכשירים עם Android מגרסה 14 ואילך, המודם צריך לעבור את מצב MEP הנתמך עם כל האירועים של CardStatus.
setSimSlotMapping
השיטה
setSimSlotMapping
צריכה להעביר מערך של
SimPortSlotMapping
.
האינדקס של המערך הוא המשבצת הלוגית, וSimPortSlotMapping
מציין את היציאה הממופה המתאימה ואת אינדקס המשבצת הפיזית. השיטה setSimSlotMapping
מגדירה את המיפוי מיציאות לחריצים לוגיים. אפליקציית ה-LPA משתמשת בשיטה הזו כדי לבחור את היציאה הפעילה.
ממשקי API שתומכים ב-MEP ל-eUICC
מכשירי Android שתומכים במספר פרופילים מופעלים כחלק מחבילת הטלפוניה של AOSP, נדרשים לתמוך בממשקי ה-API הבאים.
UiccCardInfo
- (Android מגרסה 13 ואילך)
isMultipleEnabledProfilesSupported
: מחזירה אם כרטיס ה-UICC הזה תומך ב-MEP. - (Android מגרסה 13 ומעלה)
getPorts
: מחזירה את רשימת כל היציאות האפשריות ל-UICC מסוים. אם ה-UICC הוא pSIM או eSIM שלא תומך ב-MEP, הפונקציה מחזירה רשימה עם רכיב אחד. - (Deprecated)
getIccId
: מחזירה ICCID. בגלל שב-UICC יכול להיות יותר מ-ICCID אחד למכשירים עם MEP, צריך להשתמש ב-UiccPortInfo.getIccId()
.
(Android מגרסה 13 ואילך) UiccPortInfo
-
getIccId
: מחזירה את מספר ה-ICCID אם יש מינוי פעיל ביציאה הזו. getPortIndex
: מחזירה את אינדקס היציאה.-
getLogicalSlotIndex
: מחזירה את האינדקס של מחסנית המודם הלוגית הפעילה.
SubscriptionInfo
- (Android מגרסה 13 ואילך)
getPortIndex
: מחזירה את אינדקס היציאה שבו המינוי מופעל. אם המינוי מושבת, הפונקציה מחזירהINVALID_PORT_ID -1
.
EuiccManager
-
switchToSubscription
: מעבר למינוי נתון. ההרשאה הזו משמשת אפליקציות שאין להן הרשאת ספק במינויים פעילים. כשמתקשרים, הפלטפורמה פותרת באופן פנימי את אינדקס היציאה באמצעות תיבת דו-שיח עם שלוש אפשרויות, כדי להשבית את המינוי הפעיל שנבחר אם אין יציאות זמינות. באפליקציות שמטרגטות ל-Android 13 ומעלה, אסור להשתמש ב-API הזה כדי להשבית מינוי באמצעות העברת מזהה מינוי לא תקין. במקום זאת, צריך להשתמש בשיטהswitchToSubscription
(נוספה ב-Android 13) עם אינדקס היציאה שצוין. - (Android מגרסה 13 ואילך)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: מעבר למינוי נתון. אפליקציות לביצוע שיחות עם הרשאת ספק לגבי המינויים הפעילים יכולות לציין באיזה פורט להפעיל את המינוי. - (Android מגרסה 13 ומעלה)
isSimPortAvailable
: מחזירה אם אינדקס היציאה שעבר זמין. הניוד זמין אם לא מופעל בו מינוי או אם לאפליקציית השיחות יש הרשאת ספק על המינוי שמותקן ביציאה שנבחרה.
EuiccService
- (Android מגרסה 13 ואילך)
onSwitchToSubscriptionWithPort
: מעבר למינוי נתון ביציאה שצוינה. ההטמעה של LPA צריכה לתמוך בזה ב-Android מגרסה 13 ואילך.
TelephonyManager
- (Android מגרסה 13 ואילך)
getSimApplicationState
: מחזירה קבוע שמציין את מצב אפליקציית הכרטיס. ה-API הזה מעביר גם אינדקס של חריץ פיזי וגם אינדקס של יציאה. השיטהgetSimApplicationState(int physicalSlotIndex)
(שהוצאה משימוש) מעבירה רק את האינדקס של החריץ הפיזי כדי לקבל אובייקטsimApplicationState
. - (Android מגרסה 13 ואילך)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: מיפוי של החריצים הלוגיים לחריצים ולפורטים פיזיים. - (Android מגרסה 13 ואילך)
Collection<UiccSlotMapping> getSimSlotMapping
: מקבל את המיפוי מחריצים לוגיים לחריצי SIM פיזיים ומאינדקסים של יציאות.
ממשק משתמש
כדי לפתור את הבעיה של בחירת מספר לניוד ב-eSIM, במכשירים שתומכים ב-MEP, המשתמשים צריכים להשבית אחד מהמינויים הפעילים כדי להפעיל מינוי חדש. ב-Android 13, AOSP כולל תהליך למשתמש עם תיבת דו-שיח עם שלוש אפשרויות שאפשר להחיל על תהליכים למשתמש להפעלת מינויים מתוך אפליקציית ההגדרות. באיור 6 מוצג תהליך לדוגמה של חוויית המשתמש הזו.
איור 6. מסלול המשתמש באפליקציה להפעלת מינוי לכרטיס SIM
מתגי feature flag
כדי לתמוך ב-MEP, המכשירים צריכים להצהיר על דגלי התכונות הבאים:
הטמעה של LPA
כדי לתמוך ב-MEP, צריך לוודא שההטמעה של LPA עומדת בדרישות הבאות:
- מיישם את ממשקי ה-API מ-EuiccService כדי לתמוך בכמה יציאות.
- משתמש בממשקי API לבחירת יציאה ולהפעלת פרופיל.
- מספקת חוויית משתמש שמאפשרת לאפליקציות של ספקים להפעיל פרופילים ביציאות נבחרות.
אימות
כדי לבדוק את ההטמעה של התכונה MEP, צריך לוודא שה-builds עוברים את מקרי הבדיקה הבאים של CTS (עבור ממשקי API ציבוריים):
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
יצרני מכשירים צריכים גם לעבוד עם ספקי המודם, שבב ה-eUICC ומערכת ההפעלה של ה-eSIM כדי לוודא שהמכשיר יכול לבצע את הפעולות הבאות:
- אפשר להפעיל שני פרופילים של eSIM ולצרף אותם לשתי רשתות שונות.
- אפשר להפעיל ולהשבית פרופילים של eSIM בכל יציאת eSIM.
- יש תהליך UX שמופעל על ידי אפליקציית הספק ומאפשר למשתמשים לעבור בין פרופילים.
המלצה לחברות תובלה
כדי לוודא שהמשתמשים לא יאבדו את השירות כשהם מעבירים פרופילי eSIM מיציאה אחת ליציאה אחרת, מומלץ לספקי הסלולר לספק תמיכה בפעולות הבאות:
- מיפוי גמיש של IMEI ו-SIM
- כמה מספרי ICCID או כרטיסי SIM לכל מזהה eUICC (EID)