本主题提供具体的实施指南,以帮助移动宽带设备制造商为 Windows 生产合规的 USB 设备。 它应与 USB-IF 设备工作组发布的 USB NCM 移动宽带接口模型 (MBIM) V1.0 规范 结合使用。
本主题中的信息适用于:
- Windows 8
- Windows 8.1
延迟 MBIM 打开
当 MBIM 设备收到来自主机的 MBIM OPEN 消息时,可能需要一段时间才能完成初始化。 在响应 MBIM OPEN 消息之前,设备应等待其初始化完成。 设备不应响应错误状态为“MBIM_STATUS_BUSY”的消息,并期望主机使用 MBIM OPEN 消息轮询设备。 响应状态为 MBIM_STATUS_SUCCESS 以外的 MBIM OPEN 会终止主机上的初始化过程。
多运营商\多订阅
有关详细信息,请参阅 实现支持多模式和多载流功能的 MB 设备的 IHV 指南 。
MBIM_CID_HOME_PROVIDER
在上述情况下,MBIM 设备不得使 SET MBIM_CID_HOME_PROVIDER请求失败,并具有以下列出的状态代码。 以下状态对 QUERY MBIM_CID_HOME_PROVIDER请求有效,但不适用于 SET 请求。
- MBIM_STATUS_SIM_NOT_INSERTED - 如果存在新家庭提供商的 SIM,但未插入旧家庭提供商的 SIM 卡,则 MBIM 设备不得使状态为 MBIM_STATUS_SIM_NOT_INSERTED 的 SET MBIM_CID_HOME_PROVIDER 请求失败。
- MBIM_STATUS_BAD_SIM - 如果新家庭提供商的 SIM 卡良好,但旧家庭提供商的 SIM 不坏,则 MBIM 设备不得使 SET MBIM_CID_HOME_PROVIDER 请求失败并MBIM_STATUS_BAD_SIM。
- MBIM_STATUS_PIN_REQUIRED - 无论旧 SIM 卡是固定锁定还是新 SIM 卡,MBIM 设备都不得MBIM_STATUS_PIN_REQUIRED使 SET MBIM_CID_HOME_PROVIDER 请求失败。
MBIM_CID_VISIBLE_PROVIDERS
- MBIM_STATUS_SIM_NOT_INSERTED - 当MBIM_VISIBLE_PROVIDERS_ACTION设置为 MBIMVisibleProvidersActionRestrictedScan 时,MBIM 设备不得MBIM_CID_VISIBLE_PROVIDERS请求失败,MBIM_STATUS_SIM_NOT_INSERTED,因为当前家庭提供商的 SIM 卡不存在。
- MBIM_STATUS_PIN_REQUIRED - 当MBIM_VISIBLE_PROVIDERS_ACTION设置为 MBIMVisibleProvidersActionRestrictedScan 时,MBIM 设备不得MBIM_CID_VISIBLE_PROVIDERS请求失败,并MBIM_STATUS_PIN_REQUIRED,因为当前家庭提供商的 SIM 卡已 PIN 锁定。
响应 Pin 操作
MBIM 设备在响应 MBIMPinOperationEnter 请求时必须遵循以下准则:
对于成功的 MBIMPinOperationEnter 请求,当设备不再需要 PIN 时,设备必须将状态设置为 MBIM_STATUS_SUCCESS,并在 Type 中将MBIM_PIN_INFO::P 设置为 MBIMPinTypeNone。
当 PIN 已处于请求状态时,设备必须将 pin 启用和 PIN 禁用操作的状态设置为MBIM_STATUS_SUCCESS。 设备必须将 MBIM_PIN_INFO::P inType 设置为 MBIMPinTypeNone。 将忽略其他成员。
当 PIN 模式从“已禁用”更改为“已启用”时,PIN 状态应为 MBIMPinStateUnlocked。
如果启用了 PIN1,则设备通电时,PIN 状态将变为 MBIMPinStateLocked 。
对于所有其他 PIN,PIN 状态可以从 MBIMPinStateUnlocked 更改为 MBIMPinStateLocked ,具体取决于移动宽带设备的特定条件。
PIN 不支持:如果设备不支持 PIN 操作,则设备必须将状态设置为MBIM_STATUS_NO_DEVICE_SUPPORT。 例如,移动宽带设备通常不支持启用和禁用 PIN2,因此必须返回上述错误代码。 将忽略所有其他成员。
必须输入 PIN:如果 PIN 操作需要输入 PIN,设备必须将状态设置为 MBIM_STATUS_PIN_REQUIRED,并将 MBIM_PIN_INFO::P inType 设置为 MBIMPinTypeXxx。 将忽略其他成员。
PIN 更改操作:如果设备仅在处于启用状态时才限制更改 PIN 值,则必须使用MBIM_STATUS_PIN_DISABLED返回更改禁用状态的请求。
PIN 重试:失败时,设备必须将状态设置为MBIM_STATUS_FAILURE,并将 MBIM_PIN_INFO::P inType 设置为 MBIM_SET_PIN中指定的相同值。 除 MBIM_PIN_INFO::RemainingAttempts 外,将忽略其他成员。 输入错误的 PIN 时,可能会发生这种情况。
PIN 阻止:当 MBIM_PIN_INFO::RemainingAttempts 的数量为零时,将阻止 PIN。 如果 PIN 取消阻止操作不可用,设备必须将状态设置为 MBIM_STATUS_FAILURE,并将 MBIM_PIN_INFO::P inType 设置为 MBIMPinTypeNone。 MBIM_PIN_INFO::RemainingAttempts 应设置为 0,并忽略所有其他成员。 注意 如果设备支持 PIN 取消阻止操作,则设备应按照 PIN 取消阻止步骤响应请求。
取消阻止 PIN:当 MBIM_PIN_INFO::RemainingAttempts 为零时阻止 PIN。 若要取消阻止 PIN,设备可能会请求相应的 PUK(如果适用)。 在这种情况下,设备必须将状态设置为 MBIM_STATUS_FAILURE, MBIM_PIN_INFO::P inType 设置为相应的 MBIMPinTypeXxxPUK, 将 PinState 设置为 MBIMPinStateLocked, 并且MBIM_PIN_INFO::RemainingAttempts 应具有允许输入有效 PUK 的尝试次数。
如果 PIN 阻止导致设备或 SIM 卡受阻,设备必须发送MBIM_CID_SUBSCRIBER_READY_STATUS通知,并将 ReadyState 设置为 MBIMSubscriberReadyStateDeviceLocked。
如果在阻止 PIN1 时存在活动的 PDP 上下文,则设备必须停用 PDP 上下文,并将有关 PDP 停用和链接状态更改的通知发送到操作系统。
对于成功的请求,设备必须将状态设置为MBIM_STATUS_SUCCESS。 将忽略其他成员。
对于失败的 MBIMPinOperationEnter 请求,设备必须将状态设置为MBIM_STATUS_FAILURE,并按照以下详细信息包含适用的数据:
PIN 已禁用或 PIN 不预期:对于 MBIMPinOperationEnter 设置请求,当设备禁用或当前不需要相应的 PIN 时,设备必须将 MBIM_PIN_INFO::P inType 设置为 MBIMPinTypeNone。 将忽略所有其他成员。
不支持 PIN:如果设备不支持给定的 PIN,设备必须将状态设置为MBIM_STATUS_NO_DEVICE_SUPPORT。
PIN 重试:在此模式下,设备需要重新输入 PIN,因为对于此特定类型的 PIN, MBIM_PIN_INFO::RemainingAttempts 值仍不为零。 设备必须将 MBIM_PIN_INFO::P inType 设置为与 MBIM_SET_PIN 中的MBIM_PIN_INFO::P inType 的值相同。
PIN 阻止:MBIM_PIN_INFO ::RemainingAttempts 为零时阻止 PIN。 如果 PIN 取消阻止操作不可用,设备必须将状态设置为 MBIM_STATUS_FAILURE,并将 MBIM_PIN_INFO::P inType 设置为 MBIMPinTypeNone。 将忽略所有其他成员。 注意 如果设备支持 PIN 取消阻止操作,则设备应按照 PIN 取消阻止步骤响应请求。
PIN 取消阻止:当 MBIM_PIN_INFO::RemainingAttempts 为零时,将阻止 PIN。 若要取消阻止 PIN,设备可能会请求相应的 PIN 解锁密钥 (PUK) (如果适用)。 在这种情况下,设备必须将 MBIM_PIN_INFO::P inType 设置为具有相关详细信息的相应 MBIMPinTypeXxxPUK 。
阻止的 PUK:如果失败的试验数超过输入 MBIMPinTypeXxxPUK 的预设值,则 PUK 将被阻止。 设备必须通过将状态设置为 MBIM_STATUS_FAILURE 并将 MBIM_PIN_INFO::P inType 设置为 MBIMPinTypeNone 来发出此信号。 如果 PUK1 被阻止,设备必须发送一个MBIM_CID_SUBSCRIBER_READY_STATUS,并将 ReadyState 设置为 MBIMSubscriberReadyStateBadSim。
MBIM 设备在响应 MBIMPinOperationEnable、MBIMPinOperationDisable 或 MBIMPinOperationChange 请求时必须遵循这些准则。
自动数据包服务附加
支持自动数据包服务附加的 MBIM 设备可自行从移动网络管理数据包服务的附加和分离。 主机仍可根据用户请求向此类设备发送附加请求。 当设备收到来自主机的附加请求时,它应按如下所示进行处理:
- 如果设备未连接且未处于附加操作的中间,并且能够连接,则它应使用移动网络启动新的附加过程。
- 如果设备未连接,但在自动附加操作中,它应等待自动附加操作完成,并完成主机的附加请求,状态为自动附加操作。
- 如果设备已附加,则它应成功完成来自主机的附加请求。
信号强度丢失和数据连接丢失
当设备失去信号强度时,设备必须按该顺序指示 MBIMActivationStateDeactivated ,然后指示 MBIMPacketServiceStateDetached 后跟 MBIMRegisterStateDeregistered 。 如果设备在上下文激活时丢失数据包服务,则设备必须按该顺序指示 MBIMActivationStateDeactivated ,后跟 MBIMPacketServiceStateDetached 。 以下序列图显示了主机和设备之间的交互。
DNS 服务器信息
当通过 MBIM_CID_IP_CONFIGURATION 提供 MBIM 部分 10.5.20.1) 中定义的基本 IP 信息 (时,也可以通过 MBIM_CID_IP_CONFIGURATION 提供 (MBIM 节 10.5.20.1) 中定义的 DNS 服务器信息。 更新 DNS 服务器信息时,MBIM_CID_IP_CONFIGURAITON必须具有之前获取的完整基本 IP 信息。 DNS 服务器信息只能通过 MBIM_CID_IP_CONFIGURATION即使没有通过 MBIM_CID_IP_CONFIGURATION 提供基本 IP 信息也是如此。 这适用于 IPv4 和 IPv6。
IPv6
对于 MBIM 部分 10.5.20.1) 中定义的基本 IP 信息 (,预期的 IP 层配置机制来自路由器播发 (RA) 。 对于 (MBIM 部分 10.5.20.1) 中定义的 DNS 服务器信息,预期的 IP 层配置机制为 DHCPv6。
- 来自 RA 的基本 IP 信息 - 如果移动网络提供通过 RA) MBIM 部分 10.5.20.1 (定义的基本 IP 信息,则 MBIM 设备必须允许将 RA 数据包转发到主机,并且不得截获 RA 数据包或通过MBIM_CID_IP_CONFIGURATION提供 RA 数据包中存在的基本 IP 信息。
- 来自 RA 的 DNS 服务器信息 - WINDOWS 支持) MBIM 第 10.5.20.1 节中定义的 DNS 服务器信息 (的唯一 IP 层配置机制是 DHCPv6。 MBIM 设备必须通过MBIM_CID_IP_CONFIGURATION配置 DNS 服务器信息,即使 RA 中也存在。
- DHCPv6 中的基本 IP 信息和 DNS 服务器信息 - 如果移动网络提供基本 IP 信息和 DNS 服务器信息, (MBIM 节 10.5.20.1) 从 DHCPv6, 则 MBIM 设备必须允许将 DHCPv6 数据包转发到主机,并且不得截获 DHCPv6 数据包,或者通过MBIM_CID_IP_CONFIGURATION提供 DHCPv6 数据包中的基本 IP 信息和 DNS 服务器信息。
MBIM_CID_RADIO_STATE
当 SIM 不存在时,MBIM 设备不得MBIM_CID_RADIO_STATE状态为 MBIM_STATUS_SIM_NOT_INSERTED 的操作失败。 无线电操作不得因 SIM 卡缺失而失败。
身份验证 CID 的 Byte-Ordering 要求
下面列出的字节数组字段中的数据必须采用主机字节顺序。
MBIM_CID_SIM_AUTH
MBIM_SIM_AUTH_REQ
- Rand1
- Rand2
- Rand3
MBIM_CID_AKA_AUTH
MBIM_AKA_AUTH_REQ
- Rand
- Autn
MBIM_AKA_AUTH_INFO
- 响应
- 益
- CK
- Auts
MBIM_CID_AKAP_AUTH
MBIM_AKAP_AUTH_REQ
- Rand
- Autn
MBIM_AKAP_AUTH_INFO
- 响应
- 益
- CK
- Auts
设置链接 MTU
Windows 仅支持在设备初始化期间配置链接最大传输单元 (MTU) 。 Windows 不会根据使用 MBIM_CID_IP_CONFIGURATION 报告的 MTU 更新链接 MTU。 设备必须使用 MBIM_FUNCTIONAL_DESCRIPTOR.wMaxSegmentSize 与网络支持的链接 MTU 通信。 以这种方式报告的链接 MTU 值应至少为 1280,最多应为 1500。