สำหรับอุปกรณ์ที่ใช้ Android 13 ขึ้นไป Android รองรับโปรไฟล์ที่เปิดใช้หลายรายการ (MEP) สำหรับ eUICC ฟีเจอร์นี้ช่วยให้อุปกรณ์ รองรับ 2 ซิมได้โดยใช้ชิป eSIM เดียว ซึ่งมีโปรไฟล์ซิมได้หลายโปรไฟล์ และเชื่อมต่อกับผู้ให้บริการ 2 รายที่แตกต่างกันได้ในเวลาเดียวกัน ผู้ผลิตอุปกรณ์ ต้องทำงานร่วมกับผู้ให้บริการ SoC และผู้ให้บริการชิปเซ็ต eSIM เพื่อผสานรวมฟีเจอร์นี้ในอุปกรณ์ของตน
ฉากหลัง
ในอุปกรณ์ที่ใช้ Android 12 และต่ำกว่า AOSP มี การรองรับแบบจำกัดในการอนุญาตให้ eSIM เดียวรองรับหลายโปรไฟล์ในเวลา เดียวกัน แม้ว่า eSIM จะช่วยประหยัดพื้นที่และค่าใช้จ่ายได้อย่างมาก แต่การไม่รองรับ Dual SIM ทำให้ผู้ผลิตอุปกรณ์ไม่สามารถนำอุปกรณ์ที่ใช้ eSIM เท่านั้นมาใช้ หากต้องการรองรับ 2 ซิมในอุปกรณ์ที่ใช้ eSIM เท่านั้น ผู้ผลิตอุปกรณ์ ต้องใส่ eSIM 2 รายการลงในอุปกรณ์ ซึ่งจะเพิ่ม ต้นทุนรายการวัสดุ (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 จะเลือกพอร์ต
รูปที่ 1 โมเดลการเลือก MEP-A1 ISD-R
MEP-B: เลือก ISD-R ในพอร์ตใดก็ได้และกำหนดโปรไฟล์ให้กับพอร์ตใดก็ได้ ระบบจะส่งคำสั่งเปิดและปิดไปยังพอร์ตที่ต้องเปิดหรือปิดใช้โปรไฟล์ (ที่รอการรีเฟรช) พอร์ตคำสั่งและพอร์ตเป้าหมายจะเหมือนกันเสมอ
รูปที่ 2 รูปแบบการเลือก MEP-B ISD-R
Android 13
ใน Android 13 ขึ้นไป ในอุปกรณ์ที่รองรับ MEP ช่อง eSIM จะมีพอร์ต eUICC หลายพอร์ต ซึ่งแต่ละพอร์ตจะมีโปรไฟล์ที่เปิดใช้ได้ ดังที่แสดงในรูปที่ 3 สถาปัตยกรรมนี้ช่วยให้ eUICC เดียว (ช่องเสียบจริงช่องเดียว) รองรับ Dual SIM Dual Standby (DSDS) โดยการลิงก์พอร์ต eUICC แต่ละพอร์ตกับเบสแบนด์โมเด็ม HAL และ API ของ 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
ใช้สำหรับซิมการ์ดทุกประเภท ได้แก่ ซิมจริง (pSIM),
ซิมในตัว (iSIM) และซิมฝัง (eSIM) สำหรับ eUICC ที่มีพอร์ตหลายพอร์ต ออบเจ็กต์ UiccSlot
เดียวและออบเจ็กต์ UiccCard
จะแมปกับอินสแตนซ์ UiccPort
หลายรายการ อินสแตนซ์ UiccPort
แต่ละรายการจะลิงก์กับอินสแตนซ์ UiccProfile
ได้สูงสุด 1 รายการ โฟลว์นี้ช่วยให้ UiccPort
แมปกับสล็อตเชิงตรรกะ และ
UiccSlot
(สล็อตจริง
) แมปกับสล็อตเชิงตรรกะหลายรายการได้
รูปที่ 5 ขั้นตอนการไหลของข้อมูลสำหรับ eUICC ที่รองรับ MEP
การใช้งาน
ส่วนนี้อธิบายวิธีติดตั้งใช้งานฟีเจอร์ MEP รวมถึงรายละเอียด เกี่ยวกับข้อกำหนด HAL, API และอินเทอร์เฟซผู้ใช้ ผู้ผลิตอุปกรณ์ควร ทำงานร่วมกับผู้ให้บริการ SoC และผู้ให้บริการชิปเซ็ต eSIM เพื่อรองรับ MEP
ข้อกำหนดของ HAL
หากต้องการรองรับ 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 ของ
CardStatus
เพื่อตอบสนองต่อเมธอด
getIccCardStatusResponse
การตอบกลับต้องมีดัชนีพอร์ตและดัชนีสล็อตจริง
ที่ระบุโดย
SimPortSlotMapping
สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป โมเด็ม ต้องผ่านโหมด MEP ที่รองรับ พร้อมกับเหตุการณ์ CardStatus ทั้งหมด
SimSlotStatus
โมเด็มต้องรองรับ API ของ
SimSlotStatus
เพื่อตอบสนองต่อเมธอด
getSimSlotsStatus
สถานะช่องใส่ซิมประกอบด้วยอาร์เรย์ของอินเทอร์เฟซ
SimPortInfo
ซึ่งรวมถึงดัชนีพอร์ต, ICCID สำหรับโปรไฟล์ที่เปิดใช้ และ
สถานะพอร์ต โมเด็มต้องแสดงออบเจ็กต์ SimPortInfo
อย่างน้อย 2 รายการ
สำหรับอุปกรณ์ที่ใช้ 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 ระบบจะแสดงผลรายการที่มีองค์ประกอบ 1 รายการ - (เลิกใช้งานแล้ว)
getIccId
: แสดงผล ICCID เนื่องจาก UICC อาจมี ICCID มากกว่า 1 รายการสำหรับอุปกรณ์ที่มี MEP ให้ใช้UiccPortInfo.getIccId()
แทน
(Android 13 ขึ้นไป) UiccPortInfo
getIccId
: แสดง ICCID หากมีการสมัครใช้บริการที่เปิดใช้ในพอร์ตนี้getPortIndex
: แสดงผลดัชนีพอร์ตgetLogicalSlotIndex
: แสดงดัชนีสแต็กลอจิกัลโมเด็มที่ใช้งานอยู่
SubscriptionInfo
- (Android 13 ขึ้นไป)
getPortIndex
: แสดงดัชนีพอร์ตที่เปิดใช้การสมัครใช้บริการ หากปิดใช้การสมัครใช้บริการ ระบบจะแสดงผลINVALID_PORT_ID -1
EuiccManager
switchToSubscription
: เปลี่ยนไปใช้การสมัครใช้บริการที่ระบุ ใช้โดยแอปที่ไม่มีสิทธิ์ระดับผู้ให้บริการ ในการสมัครใช้บริการที่ใช้งานอยู่ เมื่อมีการเรียกใช้ แพลตฟอร์มจะ แก้ไขดัชนีพอร์ตภายในผ่านการเลือก 3 ตัวเลือก กล่องโต้ตอบ เพื่อปิดใช้งานการสมัครใช้บริการที่ใช้งานอยู่ซึ่งเลือกไว้ หากไม่มีพอร์ตที่พร้อมใช้งาน แอปที่กำหนดเป้าหมายเป็น 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
: รับการแมปจากสล็อตเชิงตรรกะไปยังสล็อตซิมจริงและดัชนีพอร์ต
ส่วนติดต่อผู้ใช้
หากต้องการแก้ไขความคลุมเครือในการเลือกพอร์ต eSIM ในอุปกรณ์ที่รองรับ MEP ผู้ใช้ต้องปิดใช้การสมัครใช้บริการที่ใช้งานอยู่รายการใดรายการหนึ่งเพื่อเปิดใช้การสมัครใช้บริการใหม่ได้ ใน Android 13, AOSP มีโฟลว์ของผู้ใช้ พร้อมกล่องโต้ตอบ แบบ 3 ตัวเลือก ที่ใช้กับโฟลว์ของผู้ใช้ที่เปิดใช้การสมัครใช้บริการจากแอปการตั้งค่าได้ รูปที่ 6 แสดงตัวอย่างโฟลว์ UX นี้
รูปที่ 6 โฟลว์ผู้ใช้สำหรับการเปิดใช้การสมัครใช้บริการซิม
แฟล็กฟีเจอร์
อุปกรณ์ต้องประกาศฟีเจอร์แฟล็กต่อไปนี้เพื่อรองรับ MEP
การใช้งาน LPA
หากต้องการรองรับ MEP โปรดตรวจสอบว่าการติดตั้งใช้งาน LPA เป็นไปตามข้อกำหนดต่อไปนี้
- ใช้ API จาก EuiccService เพื่อรองรับหลายพอร์ต
- ใช้ API สำหรับการเลือกพอร์ตและการเปิดใช้โปรไฟล์
- มอบ UX ที่ช่วยให้แอปของผู้ให้บริการเปิดใช้โปรไฟล์ในพอร์ตที่เลือกได้
การตรวจสอบความถูกต้อง
หากต้องการทดสอบการใช้งานฟีเจอร์ MEP ให้ตรวจสอบว่าบิลด์ผ่านกรณีทดสอบ CTS ต่อไปนี้ (สำหรับ API สาธารณะ)
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
ผู้ผลิตอุปกรณ์ควรทำงานร่วมกับผู้ให้บริการโมเด็ม ชิป eUICC และระบบปฏิบัติการ eSIM เพื่อให้แน่ใจว่าอุปกรณ์จะทำสิ่งต่อไปนี้ได้
- คุณเปิดใช้โปรไฟล์ eSIM 2 โปรไฟล์และเชื่อมต่อกับ 2 เครือข่ายที่แตกต่างกันได้
- คุณเปิดและปิดใช้งานโปรไฟล์ eSIM ได้ในพอร์ต eSIM ใดก็ได้
- มีโฟลว์ UX ที่ทริกเกอร์โดยแอปของผู้ให้บริการซึ่งอนุญาตให้ผู้ใช้เปลี่ยนโปรไฟล์
คำแนะนำสำหรับผู้ให้บริการ
เราขอแนะนำให้ผู้ให้บริการรองรับสิ่งต่อไปนี้เพื่อให้มั่นใจว่าผู้ใช้จะไม่สูญเสียบริการเมื่อย้ายโปรไฟล์ eSIM จากพอร์ตหนึ่งไปยังอีกพอร์ตหนึ่ง
- การแมป IMEI และซิมอย่างราบรื่น
- ICCID หรือ SIM หลายรายการสำหรับตัวระบุ eUICC (EID) แต่ละรายการ