สำหรับอุปกรณ์ที่ใช้ Android 13 ขึ้นไป Android รองรับโปรไฟล์ที่เปิดใช้หลายโปรไฟล์ (MEP) สำหรับ eUICC ฟีเจอร์นี้ช่วยให้อุปกรณ์รองรับ 2 ซิมโดยใช้ชิป eSIM เดียว ซึ่งสามารถมีโปรไฟล์ซิมได้หลายรายการและเชื่อมต่อกับผู้ให้บริการ 2 รายพร้อมกันได้ ผู้ผลิตอุปกรณ์ต้องทำงานร่วมกับผู้ให้บริการ SoC และผู้ให้บริการชิปเซ็ต eSIM เพื่อผสานรวมฟีเจอร์นี้ในอุปกรณ์ของตน
ฉากหลัง
ในอุปกรณ์ที่ใช้ Android 12 และต่ำกว่า AOSP จะรองรับการอนุญาตให้ eSIM 1 รายการรองรับโปรไฟล์หลายรายการพร้อมกันได้แบบจำกัด แม้ว่า eSIM จะประหยัดพื้นที่และค่าใช้จ่ายได้เป็นอย่างมาก แต่การไม่รองรับซิมคู่นี้ทำให้ผู้ผลิตอุปกรณ์ไม่สามารถใช้อุปกรณ์แบบ eSIM เท่านั้นได้ ผู้ผลิตอุปกรณ์จะต้องใส่องค์ประกอบ eSIM 2 ชิ้นลงในอุปกรณ์เพื่อให้รองรับ 2 ซิมสำหรับอุปกรณ์ 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 โมเดลการเลือก 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 รองรับ) และส่งข้อมูลคำสั่ง APDU ของ ES10 ระหว่างการดำเนินการของช่องตรรกะ ICC
CardStatus
โมเด็มต้องรองรับ CardStatus
API เพื่อตอบสนองต่อเมธอด getIccCardStatusResponse
การตอบกลับต้องมีดัชนีพอร์ตและดัชนีสล็อตจริงที่ระบุโดย SimPortSlotMapping
สำหรับอุปกรณ์ที่ใช้ Android 14 ขึ้นไป โมเด็มต้องส่งโหมด MEP ที่รองรับพร้อมเหตุการณ์ CardStatus ทั้งหมด
สถานะช่องซิม
โมเด็มต้องรองรับ SimSlotStatus
API เพื่อตอบสนองต่อเมธอด getSimSlotsStatus
สถานะช่อง SIM มีอาร์เรย์ของอินเทอร์เฟซ 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 ระบบจะแสดงรายการที่มีองค์ประกอบเดียว - (เลิกใช้งานแล้ว)
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 หรือซิมหลายรายการสำหรับตัวระบุ eUICC (EID) แต่ละรายการ