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_5
andgetDataRegStateResult_1_5(RegStateResult result)
getVoiceRegState_1_5
andgetVoiceRegStateResult_1_5(RegStateresult result)
types.hal
Implement the following
in types.hal
:
ClosedSubscriberGroupInfo
: Included optionally with everyCellIdentity
instance. 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 updatedCellIdentity
structure 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).