IHV Guidance for Implementing Multimode and Multicarrier Capable MB Devices
This topic provides information about implementing support for multiple Radio Access Technologies (RAT) and multiple operators in Windows. It supplements the USB NCM Mobile Broadband Interface Model (MBIM) V1.0 specification that outlines the CIDs required for supporting the multimode multicarrier scenario.
The information in this topic applies to:
- Windows 8
Supporting multimode devices with firmware switching
This topic provides guidance to IHVs for implementing support for multiple Radio Access Technologies (RAT) and multiple operators in Windows. A short summary of the most relevant sections of the spec is provided below.
A multimode network has multiple RATs or cellular classes. A multicarrier device is able to support multiple network providers within the same device. One of the many networks supported can be a multimode network.
In many places in this document it is required that multicarrier providers reported by a multicarrier device as part of CID processing must be set-able as home providers. This section describes how to determine if a provider is settable as a home provider. The ability to set a provider as a home provider may depend on many factors that are device dependent such as being visible, having firmware support for the provider, and having a SIM or equivalent to register with the provider. There may be additional factors. The device should ensure that the device requirements are met for a multicarrier provider before reporting it as a settable home provider
10.4.1 CID_MBIM_DEVICE_CAPS
The capable device will report multiple supported cellular classes in bmCellularClass of MBIM_DEVICE_CAPS as specified in Table 10-13 of the specification. It will also report support for multiple carriers via the MBIMCtrlCapsMultiCarrier Mask in MBIM_CTRL_CAPS (Table 10-13).
Single-carrier multi-mode devices must behave like GSM devices. Such devices must not set any CDMA related capabilities in their MBIM_DEVICE_CAPS_INFO.
10.4.6 CID_MBIM_HOME_PROVIDER
The home provider can be set as specified in 10.3.6.4.
10.4.8 CID_MBIM_VISIBLE_PROVIDERS
The visible providers CID contain an Action field that specifies whether the host is expecting:
- Value 0, where device performs a full scan in the context of current home provider.
- Value 1, where device is being queried to locate visible multicarrier providers that are settable as home providers. The device may choose to accomplish this via a full scan, partial scan, or static list. The multicarrier preferred providers should be tagged as MBIM_PROVIDER_STATE_PREFERRED_MULTICARRIER in the visible providers result as specified in Table 10-34 of the specification.
When devices report a static list of visible multicarrier providers based on location information, programmed using CID_MBIM_LOCATION_INFO, the list should only contain providers valid for that location. As an extension of the above rule, devices should not report the currently registered provider if the location represented by its MCC (Mobile Country Code) is different than the location currently programmed in the device.
10.4.9 CID_MBIM_REGISTER_STATE
The device indicates the current cellular class using the dwCurrentCellularClass field of MBIM_REGISTRATION_STATE in Table 10-48 of the specification.
10.4.30 CID_MBIM_DEVICE_SERVICES
Multicarrier devices are required to report the UUID_MULTICARRIER (described below) device service in response to this CID.
Single-carrier multimode devices are not required to report UUID_MULTICARRIER device service in response to this CID.
10.4.39 CID_MBIM_MULTICARRIER_PROVIDERS
The device uses this CID to report the current and previously added preferred multicarrier providers. This CID is supported when device supports MBIMCtrlCapsMultiCarrier. When the host sets a multicarrier preferred provider, it is not required that the provider is settable as home provider. But when the list is queried by the host, the device should only return multicarrier preferred providers that are settable as home providers.
The following figure provides a sequence diagram of the steps involved in switching a device from its current mode based on a location hint specified by the host. The operation requires the use of a device service described below to get/set additional information from the device. One specific requirement is that the device should ensure that the host has had a chance to recover the pending notification from the device prior to it falling off the bus. The diagram also specifies the time bounds and performance expectations of the various operations.
MULTI-CARRIER DEVICE SERVICE
The IHV device will implement and report the following device service when queried by CID_MBIM_DEVICE_SERVICES. The existing well-known services are defined in the NCM MBIM spec in section 10.1. It is extended it to define the following service.
Service Name | UUID | UUID Value |
---|---|---|
Multi-carrier |
UUID_MULTICARRIER |
8b569648- 628d-4653-9b9f- 1025404424e1 |
Specifically, the following CIDs are defined for UUID_MULTICARRIER device service.
CID | Command Code | Query | Set | Event | Set InformationBuffer payload | Query InformationBuffer payload | Completion InformationBuffer payload |
---|---|---|---|---|---|---|---|
CID_MBIM_MULTICARRIER_CAPABILITIES |
1 |
Y |
N |
N |
N/A |
N/A |
MBIM_MULTICARRIER_CAPABILITIES |
CID_MBIM_LOCATION_INFO |
2 |
Y |
Y |
N |
MBIM_LOCATION_INFO |
N/A |
MBIM_LOCATION_INFO |
CID_MBIM_MULTICARRIER_CURRENT_CID_LIST |
3 |
Y |
N |
N |
N/A |
UUID |
MBIM_MULTICARRIERMODE_CURRENT_CID_LIST |
CID_MBIM_MULTICARRIER_CAPABILITIES
The command returns information about a MB device's multi-carrier capabilities. A device that requires a firmware reboot, and correspondingly a device removal/arrival should provide the host with a hint using the appropriate flag to enable the host to provide the appropriate user experience.
Query = InformationBuffer on MBIM_COMMAND_MSG not used. MBIM_MULTICARRIER_CAPABILITIES returned in InformationBuffer MBIM_COMMAND_DONE
Set = Unsupported
Unsolicited Event = Unsupported
MBIM_MC_FLAGS_NONE | 0h | No flags set |
---|---|---|
MBIM_MC_FLAGS_STATIC_SCAN |
1h |
Indicates that the results reported for visible providers in scan results aren’t obtained from a full network scan. The result may be obtained from a hardcoded list. |
MBIM_MC_FLAGS_¬¬FW_REQUIRES_REBOOT |
2h |
Indicates that the device requires powering cycle and rebooting to switch firmware. |
Offset | Size | Field | Description |
---|---|---|---|
0 |
4 |
dwCapabilities |
Returns the capabilities from MBIM_MULTICARRIER_FLAGS |
CID_MBIM_LOCATION_INFO
The command is used to set/query the current location information of the host. This is useful to the device if it needs to filter the list of static (no physical scan) visible providers to the ones relevant to the current user location.
Query = InformationBuffer on MBIM_COMMAND_MSG not used. MBIM_LOCATION_INFO returned in InformationBuffer MBIM_COMMAND_DONE
Set = InformationBuffer on MBIM_COMMAND_MSG contains MBIM_LOCATION_INFO
Unsolicited Event = Unsupported
The country code specified by the host will be based on the Geographical Location GEOID available on Windows. For more information, see Table of Geographical Locations (Windows).
Offset | Size | Field | Description |
---|---|---|---|
0 |
4 |
Country |
Geographical Location based on GEOID. |
CID_MBIM_MULTICARRIER_CURRENT_CID_LIST
This command is used to query the CIDs currently supposed by a device service.
Query = InformationBuffer on MBIM_COMMAND_MSG is a UUID for the device service. MBIM_MULTICARRIERMODE_CURRENT_CID_LIST returned in InformationBuffer MBIM_COMMAND_DONE
Set = Unsupported
Unsolicited Event = Unsupported
Offset | Size | Field | Type | Description |
---|---|---|---|---|
0 |
4 |
CidCount |
UINT32 |
Number of CIDs supported for this device service. |
4 |
DataBuffer |
DATABUFFER |
CidList: List of CIDs supported for this device service. There must be CID Count number of entries in this list. Each CID is of type UINT32. |
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for