Devices launching with Android 11 or higher can provide support for multiple public land mobile networks (PLMNs). Android 11 includes methods in the cell identification APIs to get information about a cell's supported PLMNs to distinguish between cellular service providers and network operators.
Multi-PLMN support provides flexibility to mobile network operators (MNOs) by allowing them to broadcast multiple identities. This is primarily required to support sharing agreements where common hardware or towers are used by multiple MNOs. In a multi-PLMN scenario, when a device chooses to register using a particular tower, it selects the PLMN to use for that registration, which locks the device's profile to that PLMN for all ensuing communication. The getRegisteredPlmn method retrieves the registered PLMN for the device.
Implementation
To support multi-PLMN on devices running Android 11 or higher, implement the functions in the following locations in IRadio.
IRadio.hal and IRadioResponse.hal
In the Radio 1.5 HAL, to support multi-PLMN, information about the network the device registers on is reported differently than previous versions. First, the registered PLMN (RPLMN) is reported separately because on multi-PLMN cells, the RPLMN might not be the primary PLMN-ID. And in the CellIdentity structures, the cell provides a primary PLMN-ID and a list of additional PLMN-IDs. The RPLMN must be the primary PLMN-ID or one of the additional PLMN-IDs indicated in the CellIdentity structure.
The changes in the Radio 1.5 HAL impact the following two HAL methods in IRadio.hal (and their corresponding response methods in IRadioResponse.hal).
getDataRegState_1_5andgetDataRegStateResult_1_5(RegStateResult result)getVoiceRegState_1_5andgetVoiceRegStateResult_1_5(RegStateresult result)
types.hal
Implement the following in types.hal:
ClosedSubscriberGroupInfo: Included optionally with everyCellIdentityinstance. This structure is used to provide details about the closed subscriber group to which a cell belongs, if any. This is commonly used to identity small cells such as personal LTE devices. It can also be used in deployments such as CBRS LTE.CellIdentityLte: Supports a list of additional PLMN-IDs.CellIdentityWcdma: Supports a list of additional PLMN-IDs.CellIdentityTdscdma: Supports a list of additional PLMN-IDs.RegStateResult: Includes an updatedCellIdentitystructure and a field to indicate the RPLMN.
Validation
To test your implementation, run the following CTS test: CellInfoTest while registered to a multi-operator radio access network (MORAN) or multi-operator core network (MOCN).