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:

  1. Value 0, where device performs a full scan in the context of current home provider.
  2. 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.

Flowchart that shows the steps involved in switching a device from its current mode based on a location hint specified by the host.

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.