פרופילים מרובים שהופעלו

במכשירים עם Android מגרסה 13 ואילך, מערכת Android תומכת במספר פרופילים מופעלים (MEP) ל-eUICC. התכונה הזו מאפשרת למכשירים לתמוך בשני כרטיסי SIM באמצעות צ'יפ eSIM אחד, שיכול להכיל כמה פרופילים של כרטיסי SIM ולהתחבר לשני ספקים שונים בו-זמנית. יצרני המכשירים צריכים לעבוד עם ספקי SoC וספקי שבבי eSIM כדי לשלב את התכונה הזו במכשירים שלהם.

רקע

במכשירים עם Android מגרסה 12 ומטה, מערכת AOSP מספקת תמיכה מוגבלת שמאפשרת ל-eSIM יחיד לתמוך בכמה פרופילים בו-זמנית. למרות החיסכון המשמעותי במקום ובעלויות שמציע eSIM, חוסר התמיכה בשני כרטיסי 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. בהמשך מפורטים המודלים לבחירת ISD-R של MEP-A1 ו-MEP-B.

  • MEP-A1: ה-ISD-R נבחר ביציאה 0 (יציאת הפקודה היא 0) והפרופילים נבחרים ביציאות eSIM 1 ומעלה. פקודות ES10 תמיד נשלחות ליציאה 0, ויציאת הפקודה ויציאת היעד תמיד שונות. ה-LPA בוחר את היציאה.

    מודל הבחירה של MEP-A1 ISD-R

    איור 1. מודל הבחירה של MEP-A1 ISD-R

  • MEP-B: ה-ISD-R נבחר בכל יציאה, וניתן להקצות פרופיל לכל יציאה. הפקודות להפעלה ולהשבתה נשלחות לשקע שבו צריך להפעיל או להשבית את הפרופיל (שבו רענון בהמתנה). יציאת הפקודה ויציאת היעד תמיד זהות.

    מודל הבחירה של MEP-B ISD-R

    איור 2. מודל הבחירה של MEP-B ISD-R

Android 13

ב-Android 13 ואילך, במכשירים שתומכים ב-MEP, חריץ ה-eSIM מכיל כמה יציאות eUICC, שבכל אחת מהן יכול להיות מוגדר פרופיל. כפי שמוצג באיור 3, בארכיטקטורה הזו, כרטיס eUICC יחיד (חריץ פיזי יחיד) תומך בשני כרטיסי SIM במצב המתנה (DSDS) באמצעות קישור של כל יציאת eUICC למעבד בסיס של מודם. ממשקי ה-API ו-HAL של Android 13 לא תלויים בגרסה של MEP.

ארכיטקטורת צ'יפ eSIM עם תמיכה ב-MEP

איור 3. ארכיטקטורת צ'יפ eSIM עם תמיכה ב-MEP (Android 13 ואילך)

Android מגרסה 12 ומטה

במכשירים עם Android מגרסה 12 ומטה ללא MEP, כפי שמוצג באיור 4, חריץ ה-eSIM תומך רק בפרופיל מופעל אחד בכל פעם, והמכשיר לא יכול לתמוך ב-DSDS.

ארכיטקטורת צ'יפ eSIM ללא תמיכה ב-MEP

איור 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 (מק"ט פיזי) למפות למספר מק"טים לוגיים.

זרימת המידע של MEP

איור 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, הפונקציה מחזירה רשימה של אלמנט אחד.
  • (הוחלפה) 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 הזה כדי להשבית מינוי על ידי העברת מזהה מינוי לא חוקי. במקום זאת, צריך להשתמש ב-method‏ switchToSubscription (נוסף ב-Android 13) עם ציון של מדד היציאה.
  • (Android מגרסה 13 ואילך) switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback): מעבר למינוי נתון. אפליקציות שמבצעות קריאה עם הרשאת ספק דרך המינויים הפעילים יכולות לציין באיזה יציאה להפעיל את המינוי.
  • (Android מגרסה 13 ואילך) isSimPortAvailable: החזרת הערך 'true' אם מדד היציאה שעובר זמין, או 'false' אחרת. יציאה זמינה אם אין לה מינוי מופעל או אם לאפליקציית השיחה יש הרשאת ספק על המינוי שמותקן ביציאה שנבחרה.

EuiccService

  • (Android מגרסה 13 ואילך) onSwitchToSubscriptionWithPort: מעבר למינוי נתון ביציאה מסוימת. הטמעת LPA חייבת לתמוך בכך ב-Android מגרסה 13 ואילך.

TelephonyManager

ממשק משתמש

כדי לפתור את אי-הבהירות בבחירת יציאת eSIM, במכשירים שתומכים ב-MEP המשתמשים צריכים להיות מסוגלים להשבית אחד מהמינויים הפעילים כדי להפעיל מינוי חדש. ב-Android 13, AOSP כולל תהליך משתמש עם תיבת דו-שיח עם שלוש אפשרויות, שניתן להחיל על תהליכי משתמש להפעלת מינויים מאפליקציית ההגדרות. באיור 6 מוצגת דוגמה לתהליך חוויית המשתמש הזה.

מסלול המשתמש למינוי ל-MEP SIM

איור 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)