สำหรับอุปกรณ์ที่ใช้ Android 13 ขึ้นไป Android รองรับโปรไฟล์ที่เปิดใช้งานหลายโปรไฟล์ (MEP) สำหรับ eUICC คุณสมบัตินี้ช่วยให้อุปกรณ์ต่างๆ รองรับซิมคู่โดยใช้ชิป eSIM ตัวเดียว ซึ่งสามารถมีหลายโปรไฟล์ SIM และสามารถเชื่อมต่อกับผู้ให้บริการสองรายพร้อมกันได้ ผู้ผลิตอุปกรณ์ต้องทำงานร่วมกับผู้จำหน่าย SoC และผู้จำหน่ายชิปเซ็ต eSIM เพื่อรวมคุณสมบัตินี้เข้ากับอุปกรณ์ของตน
พื้นหลัง
ในอุปกรณ์ที่ใช้ Android 12 และต่ำกว่า AOSP ให้การสนับสนุนอย่างจำกัดในการอนุญาตให้ eSIM เดียวรองรับหลายโปรไฟล์พร้อมกัน แม้ว่า eSIM จะช่วยประหยัดพื้นที่และต้นทุนได้มาก แต่การรองรับซิมคู่นี้ทำให้ผู้ผลิตอุปกรณ์ไม่สามารถใช้อุปกรณ์ที่มีเฉพาะ eSIM เท่านั้น เพื่อให้การสนับสนุนซิมคู่บนอุปกรณ์ eSIM เท่านั้น ผู้ผลิตอุปกรณ์จะต้องบรรจุองค์ประกอบ eSIM สองรายการลงในอุปกรณ์ ซึ่งจะเพิ่มต้นทุนรายการวัสดุ (BOM) และทำให้ผู้ใช้ได้รับประสบการณ์ที่ไม่ดีสำหรับการจัดการการสมัครสมาชิก ฟีเจอร์ MEP ที่พร้อมใช้งานใน AOSP จาก Android 13 แก้ไขปัญหานี้
สถาปัตยกรรม eUICC
ส่วนนี้จะอธิบายสถาปัตยกรรมชิป eSIM สำหรับอุปกรณ์ที่มี MEP สำหรับ Android เวอร์ชันต่างๆ และสถาปัตยกรรมชิป eSIM สำหรับอุปกรณ์ที่ไม่มี MEP
แอนดรอยด์ 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 รูปแบบการเลือก MEP-B ISD-R
แอนดรอยด์ 13
ใน Android 13 ขึ้นไป ในอุปกรณ์ที่รองรับ MEP สล็อต eSIM จะมีพอร์ต eUICC หลายพอร์ตซึ่งพอร์ตสามารถมีโปรไฟล์ที่เปิดใช้งานได้ ดังแสดงในรูปที่ 3 ด้วยสถาปัตยกรรมนี้ eUICC เดียว (สล็อตฟิสิคัลเดียว) รองรับ dual SIM dual standby (DSDS) โดยให้แต่ละพอร์ต eUICC ลิงก์ไปยังเบสแบนด์ของโมเด็ม Android 13 HAL และ API เป็นตัวแปร 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 จริง (pSIM), SIM ในตัว (iSIM) และ SIM แบบฝัง (eSIM) สำหรับ eUICC ที่มีหลายพอร์ต ออบเจ็กต์ UiccSlot
เดียวและออบเจ็ UiccCard
จะแมปกับอินสแตนซ์ UiccPort
หลายรายการ แต่ละอินสแตนซ์ UiccPort
สามารถลิงก์ไปยังอินสแตนซ์ UiccProfile
ได้สูงสุด 1 รายการ โฟลว์นี้อนุญาตให้ UiccPort
แมปกับสล็อตลอจิคัลและ UiccSlot
(สล็อตจริง) เพื่อแมปกับสล็อตลอจิคัลหลายช่อง
รูปที่ 5 การไหลของข้อมูลสำหรับ eUICC ที่รองรับ MEP
การนำไปปฏิบัติ
ส่วนนี้อธิบายวิธีการใช้คุณสมบัติ MEP รวมถึงรายละเอียดเกี่ยวกับข้อกำหนด HAL, API และอินเทอร์เฟซผู้ใช้ ผู้ผลิตอุปกรณ์ควรทำงานร่วมกับผู้จำหน่าย SoC และผู้จำหน่ายชิปเซ็ต eSIM เพื่อรองรับ MEP
ข้อกำหนดของฮาล
หากต้องการสนับสนุน MEP สำหรับ eUICC ให้ใช้ IRadio AIDL HAL API ต่อไปนี้ ซึ่งอยู่ใน /platform/hardware/interfaces/radio/aidl/aidl_api
อุปกรณ์ที่ใช้ Android 14 หรือสูงกว่าต้องใช้อินเทอร์เฟซ HAL เวอร์ชัน IRadio 2.1 ซึ่งใช้ MultipleEnabledProfileMode
(โมเดลการเลือก ISD-R ที่โมเด็มหรือ eUICC รองรับ) และส่งข้อมูลคำสั่ง ES10 APDU ในระหว่างการดำเนินการช่องสัญญาณแบบลอจิคัลของ ICC
สถานะบัตร
โมเด็มต้องรองรับ CardStatus
API เพื่อตอบสนองต่อเมธอด getIccCardStatusResponse
การตอบกลับจะต้องมีดัชนีพอร์ตและดัชนีสล็อตฟิสิคัลที่ระบุโดย SimPortSlotMapping
สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป โมเด็มจะต้องผ่าน โหมด MEP ที่รองรับพร้อมกับเหตุการณ์ CardStatus ทั้งหมด
SimSlotStatus
โมเด็มต้องรองรับ SimSlotStatus
API เพื่อตอบสนองต่อเมธอด getSimSlotsStatus
สถานะช่องใส่ SIM ประกอบด้วยอาร์เรย์ของอินเทอร์เฟซ SimPortInfo
ซึ่งรวมถึงดัชนีพอร์ต ICCID สำหรับโปรไฟล์ที่เปิดใช้งาน และสถานะพอร์ต โมเด็มต้องส่งคืนวัตถุ SimPortInfo
อย่างน้อยสองวัตถุ
สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป โมเด็มจะต้องผ่าน โหมด MEP ที่รองรับพร้อมกับเหตุการณ์ CardStatus ทั้งหมด
setSimSlotMapping
เมธอด 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 ได้มากกว่าหนึ่ง ICCID สำหรับอุปกรณ์ที่มี MEP ให้ใช้UiccPortInfo.getIccId()
แทน
(Android 13 และสูงกว่า) UiccPortInfo
-
getIccId
: ส่งคืน ICCID หากมีการสมัครสมาชิกที่เปิดใช้งานบนพอร์ตนี้ -
getPortIndex
: ส่งคืนดัชนีพอร์ต -
getLogicalSlotIndex
: ส่งคืนดัชนีสแต็กโมเด็มแบบลอจิคัลที่ใช้งานอยู่
ข้อมูลการสมัครสมาชิก
- (Android 13 ขึ้นไป)
getPortIndex
: ส่งคืนดัชนีพอร์ตที่เปิดใช้งานการสมัครสมาชิก หากการสมัครสมาชิกถูกปิดใช้งาน จะส่งกลับINVALID_PORT_ID -1
Euicผู้จัดการ
-
switchToSubscription
: สลับเป็นการสมัครสมาชิกที่กำหนด ใช้โดยแอปที่ไม่มีสิทธิ์ของผู้ให้บริการในการสมัครสมาชิกที่ใช้งานอยู่ เมื่อเรียก แพลตฟอร์มจะแก้ไขดัชนีพอร์ตภายในผ่าน กล่องโต้ตอบ การเลือกสามตัวเลือกเพื่อปิดใช้งานการสมัครสมาชิกที่ใช้งานอยู่ที่เลือก หากไม่มีพอร์ตที่พร้อมใช้งาน แอปที่มีเป้าหมายเป็น Android 13 ขึ้นไปจะต้องไม่ใช้ API นี้เพื่อปิดใช้การสมัครใช้บริการโดยส่ง รหัสการสมัครใช้บริการที่ไม่ถูกต้อง แต่จะต้องใช้วิธีswitchToSubscription
(เพิ่มใน Android 13) แทนโดยระบุดัชนีพอร์ต - (Android 13 และสูงกว่า)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: สลับเป็นการสมัครสมาชิกที่กำหนด การโทรแอปที่มีสิทธิ์ของผู้ให้บริการเหนือการสมัครรับข้อมูลที่ใช้งานอยู่สามารถระบุพอร์ตที่จะเปิดใช้งานการสมัครรับข้อมูลได้ - (Android 13 และสูงกว่า)
isSimPortAvailable
: ส่งคืนว่ามีดัชนีพอร์ตที่ส่งผ่านหรือไม่ พอร์ตจะใช้งานได้หากไม่มีการเปิดใช้งานการสมัครสมาชิกหรือแอปที่โทรมีสิทธิ์ของผู้ให้บริการมากกว่าการสมัครสมาชิกที่ติดตั้งบนพอร์ตที่เลือก
ยูอิคเซอร์วิส
- (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
: รับการแมปจากสล็อตลอจิคัลไปจนถึงสล็อตซิมจริงและดัชนีพอร์ต
หน้าจอผู้ใช้
เพื่อแก้ไขความคลุมเครือของการเลือกพอร์ต eSIM บนอุปกรณ์ที่รองรับ MEP ผู้ใช้จะต้องสามารถปิดการใช้งานการสมัครรับข้อมูลที่ใช้งานอยู่รายการใดรายการหนึ่งเพื่อเปิดใช้งานการสมัครรับข้อมูลใหม่ ใน Android 13 AOSP มีโฟลว์ผู้ใช้พร้อม กล่องโต้ตอบ 3 ตัวเลือกที่สามารถนำไปใช้กับการสมัครรับข้อมูลเพื่อเปิดใช้งานโฟลว์ผู้ใช้จากแอปการตั้งค่า รูปที่ 6 แสดงตัวอย่างโฟลว์ UX นี้
รูปที่ 6 ขั้นตอนการใช้งานสำหรับการเปิดใช้งานการสมัครสมาชิก SIM
คุณลักษณะธง
เพื่อรองรับ MEP อุปกรณ์จะต้องประกาศแฟล็กคุณสมบัติต่อไปนี้:
การดำเนินการ LPA
เพื่อสนับสนุน MEP ตรวจสอบให้แน่ใจว่าการใช้งาน LPA ของคุณตรงตามข้อกำหนดต่อไปนี้:
- นำ API จาก EuiccService ไปใช้เพื่อรองรับหลายพอร์ต
- ใช้ API สำหรับการเลือกพอร์ตและการเปิดใช้งานโปรไฟล์
- ให้ UX ที่อนุญาตให้แอปของผู้ให้บริการเปิดใช้งานโปรไฟล์บนพอร์ตที่เลือก
การตรวจสอบ
หากต้องการทดสอบการใช้งานฟีเจอร์ MEP ตรวจสอบให้แน่ใจว่าบิลด์ผ่านกรณีทดสอบ CTS ต่อไปนี้ (สำหรับ API สาธารณะ): /platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
ผู้ผลิตอุปกรณ์ควรทำงานร่วมกับโมเด็ม, ชิป eUICC และผู้จำหน่าย eSIM OS เพื่อให้แน่ใจว่าอุปกรณ์สามารถทำสิ่งต่อไปนี้ได้:
- สามารถเปิดใช้งานโปรไฟล์ eSIM สองโปรไฟล์และแนบกับเครือข่ายสองเครือข่ายที่แตกต่างกันได้
- โปรไฟล์ eSIM สามารถเปิดใช้งานและปิดใช้งานบนพอร์ต eSIM ใดก็ได้
- มีโฟลว์ UX ที่เรียกใช้โดยแอปของผู้ให้บริการ ทำให้ผู้ใช้สามารถสลับโปรไฟล์ได้
ข้อแนะนำสำหรับผู้ให้บริการ
เพื่อให้แน่ใจว่าผู้ใช้จะไม่สูญเสียการบริการเมื่อย้ายโปรไฟล์ eSIM จากพอร์ตหนึ่งไปยังอีกพอร์ตหนึ่ง เราขอแนะนำให้ผู้ให้บริการเครือข่ายให้การสนับสนุนดังต่อไปนี้:
- การทำแผนที่ของเหลวของ IMEI และ SIM
- ICCID หรือ SIM หลายอันสำหรับตัวระบุ eUICC แต่ละตัว (EID)