Đối với các thiết bị chạy Android 13 trở lên, Android hỗ trợ nhiều cấu hình đã bật (MEP) cho eUICC. Tính năng này cho phép thiết bị hỗ trợ 2 SIM thông qua một chip eSIM duy nhất, có thể dùng nhiều SIM hồ sơ và có thể kết nối với hai nhà cung cấp dịch vụ khác nhau cùng một lúc. Thiết bị nhà sản xuất phải làm việc với các nhà cung cấp hệ thống SoC và bộ vi mạch eSIM nhà cung cấp tích hợp tính năng này trên thiết bị của họ.
Thông tin khái quát
Trên các thiết bị chạy Android 12 trở xuống, AOSP cung cấp hỗ trợ hạn chế trong việc cho phép một eSIM duy nhất hỗ trợ nhiều hồ sơ ở . Mặc dù eSIM giúp tiết kiệm không gian và chi phí đáng kể, nhưng việc thiếu tính năng hỗ trợ 2 SIM khiến nhà sản xuất thiết bị không thể dùng eSIM thiết bị. Cách hỗ trợ 2 SIM trên thiết bị chỉ dùng eSIM nhà sản xuất phải đóng gói 2 phần tử eSIM vào thiết bị, điều này làm tăng hoá đơn vật tư (BOM) và dẫn đến trải nghiệm kém cho gói thuê bao của người dùng Google Cloud. Tính năng MEP có trong AOSP từ Android 13 giải quyết được vấn đề này.
Kiến trúc eUICC
Phần này mô tả cấu trúc chip eSIM cho các thiết bị sử dụng MEP các phiên bản Android khác nhau và cấu trúc chip eSIM cho thiết bị không có MEP.
Android 14
Đối với các thiết bị chạy Android 14 trở lên, Android hỗ trợ MEP-A1 và MEP-B để lựa chọn gốc miền bảo mật của nhà phát hành (ISD-R) và lựa chọn cổng eSIM như được chỉ định trong GSMA SGP V22 3.0. Phần sau đây mô tả các mô hình lựa chọn MEP-A1 và MEP-B ISD-R.
MEP-A1: ISD-R được chọn trên cổng 0 (cổng lệnh là 0) và hồ sơ được chọn trên cổng eSIM 1 trở lên. Các lệnh ES10 luôn là được gửi đến cổng 0 và cổng lệnh và cổng đích luôn khác nhau. LPA chọn cổng.
Hình 1. Mô hình lựa chọn MEP-A1 ISD-R
MEP-B: ISD-R được chọn trên bất kỳ cổng nào và mọi cổng đều có thể được gán một hồ sơ. Các lệnh bật và tắt sẽ được gửi tới cổng mà hồ sơ cần được bật hoặc tắt (trong đó quá trình làm mới đang chờ xử lý). Chiến lược phát hành đĩa đơn cổng lệnh và cổng đích luôn giống nhau.
Hình 2. Mô hình lựa chọn MEP-B ISD-R
Android 13
Trong Android 13 trở lên, trên các thiết bị hỗ trợ MEP, khe cắm eSIM chứa nhiều cổng eUICC, nơi có thể bật cổng hồ sơ. Như được trình bày trong Hình 3, với cấu trúc này, một eUICC (một khe cắm vật lý) hỗ trợ chế độ chờ kép SIM kép (DSDS) nhờ có mỗi cổng eUICC liên kết với băng tần cơ sở của modem. Lớp trừu tượng phần cứng (HAL) và API của Android 13 Độc lập với biến thể MEP.
Hình 3. Kiến trúc chip eSIM có hỗ trợ MEP (Android 13 trở lên)
Android 12 trở xuống
Đối với các thiết bị chạy Android 12 trở xuống không có MEP như trong Hình 4, eSIM chỉ hỗ trợ một hồ sơ được bật tại mỗi thời điểm và thiết bị không thể hỗ trợ DSDS.
Hình 4. Kiến trúc chip eSIM không hỗ trợ MEP (Android 12 hoặc thấp hơn)
Luồng thông tin API cho nhiều hồ sơ đã bật
Hình 5 mô tả luồng thông tin cho MEP đối với eUICC trong
Android 13. Khung điện thoại bao gồm
Lớp UiccPort
đại diện cho cấu trúc vật lý trên eUICC. Chiến lược phát hành đĩa đơn
Lớp UiccPort
dùng cho tất cả các loại thẻ SIM: SIM thực (pSIM),
SIM tích hợp (iSIM) và SIM nhúng (eSIM). Đối với eUICC có nhiều
các cổng, một đối tượng UiccSlot
và đối tượng UiccCard
ánh xạ tới
nhiều thực thể UiccPort
. Mỗi thực thể UiccPort
có thể liên kết với tối đa một thực thể
Thực thể UiccProfile
. Luồng này cho phép UiccPort
ánh xạ tới một vùng logic và
UiccSlot
(thực tế
vị trí) để ánh xạ tới nhiều vị trí logic.
Hình 5. Luồng thông tin cho eUICC có hỗ trợ MEP
Triển khai
Phần này mô tả cách triển khai tính năng MEP, bao gồm cả thông tin chi tiết về yêu cầu HAL, API và giao diện người dùng. Nhà sản xuất thiết bị nên hợp tác với các nhà cung cấp hệ thống SoC (SoC) và nhà cung cấp bộ vi mạch eSIM (SIM) để hỗ trợ MEP.
Yêu cầu về HAL
Để hỗ trợ MEP cho eUICC, hãy triển khai các API IRadio AIDL HAL sau, nằm
inch
/platform/hardware/interfaces/radio/aidl/aidl_api
.
Các thiết bị chạy Android 14 trở lên phải sử dụng phiên bản IRadio 2.1 của HAL
Các giao diện này sử dụng
MultipleEnabledProfileMode
(Mô hình lựa chọn ISD-R được modem hoặc eUICC hỗ trợ) và truyền ES10 APDU
thông tin lệnh trong quá trình hoạt động của kênh logic ICC.
Trạng thái thẻ
Modem phải hỗ trợ
CardStatus
làm phản hồi cho
getIccCardStatusResponse
. Phản hồi phải bao gồm chỉ mục cổng và chỉ mục vị trí thực tế
được chỉ định bởi
SimPortSlotMapping
.
Đối với các thiết bị chạy Android 14 trở lên, modem phải vượt qua tham số được hỗ trợ Chế độ MEP với tất cả các sự kiện CardStatus.
SimSlotStatus
Modem phải hỗ trợ
SimSlotStatus
làm phản hồi cho
getSimSlotsStatus
. Trạng thái của khe cắm SIM bao gồm một mảng
SimPortInfo
giao diện, bao gồm chỉ mục cổng, ICCID cho cấu hình đã bật và
trạng thái cổng. Modem phải trả về ít nhất 2 đối tượng SimPortInfo
.
Đối với các thiết bị chạy Android 14 trở lên, modem phải vượt qua tham số được hỗ trợ Chế độ MEP với tất cả các sự kiện CardStatus.
setSimSlotMapping
Chiến lược phát hành đĩa đơn
setSimSlotMapping
phải chuyển một mảng
SimPortSlotMapping
.
Chỉ mục của mảng là khe logic và
SimPortSlotMapping
chỉ định cổng và khe thực tế được liên kết tương ứng
chỉ mục. Phương thức setSimSlotMapping
thiết lập ánh xạ từ các cổng đến logic
vị trí. Ứng dụngLPA sử dụng
phương thức này để chọn cổng đang hoạt động.
Các API hỗ trợ MEP cho eUICC
Thiết bị Android hỗ trợ nhiều hồ sơ được bật như một phần của AOSP (Dự án nguồn mở Android) cần có ngăn xếp điện thoại để hỗ trợ các API sau đây.
UiccCardInfo
- (Android 13 trở lên)
isMultipleEnabledProfilesSupported
: Trả về việc UICC này có hỗ trợ MEP hay không. - (Android 13 trở lên)
getPorts
: Trả lại hàng danh sách tất cả các cổng có thể có cho một UICC cụ thể. Nếu UICC là một pSIM hoặc eSIM không hỗ trợ MEP sẽ trả về danh sách gồm một phần tử. - (Không dùng nữa)
getIccId
: Trả về một ICCID. Vì một UICC có thể có nhiều ICCID cho các thiết bị với MEP, hãy sử dụngUiccPortInfo.getIccId()
.
(Android 13 trở lên) UiccPortInfo
getIccId
: Trả về ICCID nếu có một gói thuê bao đã bật trên cổng này.getPortIndex
: Trả về chỉ mục cổng.getLogicalSlotIndex
: Trả về chỉ mục ngăn xếp modem logic đang hoạt động.
Thông tin đăng ký
- (Android 13 trở lên)
getPortIndex
: Trả về chỉ mục cổng mà trên đó đăng ký được bật. Nếu gói thuê bao đã bị vô hiệu hoá, trả vềINVALID_PORT_ID -1
.
Trình quản lý Euicc
switchToSubscription
: Chuyển sang một gói thuê bao cụ thể. Dùng trong các ứng dụng không có nhà mạng đối với các gói thuê bao đang hoạt động. Khi được gọi, nền tảng giải quyết nội bộ chỉ mục cổng thông qua lựa chọn ba lựa chọn hộp thoại để tắt gói thuê bao đang hoạt động được chọn nếu không có cổng. Ứng dụng nhắm đến Android 13 trở lên không được sử dụng API này để vô hiệu hoá gói thuê bao bằng cách truyền mã nhận dạng gói thuê bao không hợp lệ; thay vào đó, họ phải sử dụngswitchToSubscription
phương thức (được thêm vào Android 13) cùng với chỉ mục cổng đã chỉ định.- (Android 13 trở lên)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: Chuyển sang một gói thuê bao cụ thể. Gọi ứng dụng bằng đặc quyền của nhà mạng các gói thuê bao đang hoạt động có thể chỉ định cổng nào sẽ bật gói thuê bao đó . - (Android 13 trở lên)
isSimPortAvailable
: Trả về xem có chỉ mục cổng truyền trên hay không. Có cổng nếu chưa bật gói thuê bao hoặc ứng dụng gọi có đặc quyền của nhà mạng qua gói thuê bao đã cài đặt trên cổng đã chọn.
Dịch vụ Euicc
- (Android 13 trở lên)
onSwitchToSubscriptionWithPort
: Chuyển sang một gói thuê bao cụ thể trên một cổng được chỉ định. Triển khai LPA phải hỗ trợ tính năng này trên Android 13 trở lên.
TelephonyManager
- (Android 13 trở lên)
getSimApplicationState
: Trả về một hằng số cho biết trạng thái của ứng dụng thẻ. API này chuyển cả chỉ mục vị trí thực tế và chỉ mục cổng. Chiến lược phát hành đĩa đơngetSimApplicationState(int physicalSlotIndex)
(không dùng nữa) chỉ truyền chỉ mục vị trí thực tế để nhận được Đối tượngsimApplicationState
. - (Android 13 trở lên)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: Ánh xạ các khung logic với các khung và cổng thực tế. - (Android 13 trở lên)
Collection<UiccSlotMapping> getSimSlotMapping
: Lấy thông tin ánh xạ từ khe logic đến khe cắm SIM thực và chỉ mục cổng.
Giao diện người dùng
Để giải quyết tình trạng không rõ ràng về việc lựa chọn cổng eSIM, trên các thiết bị hỗ trợ MEP, người dùng phải tắt được một trong các gói thuê bao đang hoạt động để bật của bạn. Trong Android 13, AOSP bao gồm một luồng người dùng với 3 lựa chọn hộp thoại có thể áp dụng cho các luồng người dùng có thể sử dụng gói thuê bao trong ứng dụng Cài đặt. Hình 6 cho thấy một ví dụ về quy trình trải nghiệm người dùng này.
Hình 6. Quy trình người dùng để bật gói thuê bao SIM
Cờ tính năng
Để hỗ trợ MEP, thiết bị phải khai báo các cờ tính năng sau:
Triển khai LPA
Để hỗ trợ MEP, hãy đảm bảo rằng LPA việc triển khai đáp ứng các yêu cầu sau:
- Triển khai các API từ EuiccService hỗ trợ nhiều cổng.
- Sử dụng API để chọn cổng và bật hồ sơ.
- Cung cấp trải nghiệm người dùng để các ứng dụng của nhà mạng bật hồ sơ trên các cổng đã chọn.
Xác nhận kết quả
Để kiểm thử việc triển khai tính năng MEP, hãy đảm bảo các bản dựng vượt qua
các trường hợp kiểm thử CTS sau (đối với API công khai):
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
Ngoài ra, nhà sản xuất thiết bị cũng phải tương tác với modem, chip eUICC và hệ điều hành eSIM để đảm bảo rằng thiết bị có thể làm những việc sau:
- Bạn có thể bật và kết nối 2 hồ sơ eSIM với 2 mạng khác nhau.
- Bạn có thể kích hoạt và huỷ kích hoạt hồ sơ eSIM trên bất kỳ cổng eSIM nào.
- Có một luồng trải nghiệm người dùng được ứng dụng của nhà mạng kích hoạt cho phép người dùng chuyển đổi hồ sơ.
Đề xuất cho nhà mạng
Để đảm bảo người dùng không bị mất dịch vụ khi di chuyển hồ sơ eSIM từ một hồ sơ eSIM chuyển sang một thiết bị khác, chúng tôi khuyên các nhà mạng cung cấp hỗ trợ cho những nội dung sau:
- Ánh xạ linh hoạt của IMEI và SIM
- Nhiều ICCID hoặc SIM cho mỗi giá trị nhận dạng eUICC (EID)