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

במכשירים עם 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 לבחירת הרמה הבסיסית (root) של דומיין האבטחה של המנפיק (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 בוחר את היציאה.

    מודל בחירת ISD-R 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.

סטטוס הכרטיס

המודם צריך לתמוך ב-API‏ CardStatus בתגובה ל-method‏ getIccCardStatusResponse. התגובה חייבת לכלול את אינדקס היציאה ואת אינדקס החריץ הפיזי שצוין על ידי SimPortSlotMapping.

במכשירים עם Android מגרסה 14 ואילך, המודם חייב לעבור את מצב MEP הנתמך עם כל האירועים של CardStatus.

SimSlotStatus

המודם צריך לתמוך ב-API‏ SimSlotStatus בתגובה ל-method‏ getSimSlotsStatus. הסטטוס של חריץ ה-SIM כולל מערך של הממשק SimPortInfo, שכולל את אינדקס היציאה, את ה-ICCID של הפרופיל המופעל ואת מצב היציאה. המודם צריך להחזיר לפחות שני אובייקטים מסוג SimPortInfo.

במכשירים עם Android מגרסה 14 ואילך, המודם חייב לעבור את מצב MEP הנתמך עם כל האירועים של CardStatus.

setSimSlotMapping

ה-method setSimSlotMapping חייבת להעביר מערך של SimPortSlotMapping. האינדקס של המערך הוא החריץ הלוגי, ו-SimPortSlotMapping מציין את היציאה הממופה ואת אינדקס החריץ הפיזי התואם. השיטה setSimSlotMapping מגדירה את המיפוי מהיציאות לשקעים לוגיים. השיטה הזו משמשת את האפליקציה LPA כדי לבחור את היציאה הפעילה.

ממשקי API שתומכים ב-MEP ל-eUICC

מכשירי Android שתומכים במספר פרופילים מופעלים כחלק מסטאק הטלפוניה של AOSP, צריכים לתמוך בממשקי ה-API הבאים.

מידע בכרטיס UiccCard

  • (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: החזרת האינדקס הפעיל של סטאק המודם הלוגי.

פרטי המינוי

  • (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: החזרת הערך שמציין אם מדד היציאה שעובר זמין. יציאה זמינה אם אין לה מינוי מופעל או אם לאפליקציית השיחה יש הרשאת ספק על המינוי שמותקן ביציאה שנבחרה.

EuiccService

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

TelephonyManager

  • (Android 13 ואילך) getSimApplicationState: מחזירה ערך קבוע שמציין את המצב של אפליקציית הכרטיס. ה-API הזה מעביר גם אינדקס משבצת פיזית וגם אינדקס יציאות. ה-method getSimApplicationState(int physicalSlotIndex) (הוצאה משימוש) מעבירה רק את אינדקס יחידת הקיבולת הפיזית כדי לקבל אובייקט simApplicationState.
  • (Android מגרסה 13 ואילך) setSimSlotMapping(Collection<UiccSlotMapping> slots): ממפה את החריצים הלוגיים לחרצים וליציאות פיזיים.
  • (Android מגרסה 13 ואילך) Collection<UiccSlotMapping> getSimSlotMapping: מקבל את המיפוי מחריצי SIM לוגיים לחריצי SIM פיזיים ולמפתחות יציאות.

ממשק משתמש

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

תהליך עבודה של משתמש למינוי SIM ב-MEP

איור 6. מסלול המשתמש להפעלת מינוי לכרטיס SIM

סימוני תכונות

כדי לתמוך ב-MEP, המכשירים צריכים להצהיר על דגלי התכונות הבאים:

הטמעת LPA

כדי לתמוך ב-MEP, צריך לוודא שההטמעה של LPA עומדת בדרישות הבאות:

  • הטמעת ממשקי ה-API מ-EuiccService כדי לתמוך בכמה יציאות.
  • משתמשים בממשקי ה-API לבחירת יציאה ולהפעלת פרופיל.
  • ממשק משתמש שמאפשר לאפליקציות של ספקים להפעיל פרופילים ביציאות נבחרות.

אימות

כדי לבדוק את ההטמעה של תכונת ה-MEP, צריך לוודא שגרסאות ה-build עוברות את מקרי הבדיקה הבאים של 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)