Multi-operator network support

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 and getDataRegStateResult_1_5(RegStateResult result)
  • getVoiceRegState_1_5 and getVoiceRegStateResult_1_5(RegStateresult result)

types.hal

Implement the following in types.hal:

  • ClosedSubscriberGroupInfo: Included optionally with every CellIdentity 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 updated CellIdentity 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).