用于 Intel M.2 PCIe 调制解调器的 IOSM 驱动程序

IOSM(共享内存上的 IPC)驱动程序是为 Linux 或 Chrome 平台开发的 WWAN PCIe 主机驱动程序,用于主机平台和 Intel M.2 调制解调器之间通过 PCIe 接口进行数据交换。该驱动程序公开符合 MBIM 协议 [1] 的接口。任何前端应用程序(例如:Modem Manager)都可以轻松管理 MBIM 接口,以实现与 WWAN 的数据通信。

基本用法

MBIM 功能在未管理时处于非活动状态。IOSM 驱动程序仅提供表示 MBIM 控制通道的用户空间接口 MBIM “WWAN 端口”,并且在管理功能方面不发挥任何作用。用户空间应用程序负责检测端口枚举并启用 MBIM 功能。

以下是一些此类用户空间应用程序的示例:- mbimcli(包含在 libmbim [2] 库中),以及 - Modem Manager [3]

管理应用程序执行以下操作以建立 MBIM IP 会话:- 打开 MBIM 控制通道 - 配置网络连接设置 - 连接到网络 - 配置 IP 网络接口

管理应用程序开发

驱动程序和用户空间接口如下所述。MBIM 协议在 [1] 移动宽带接口模型 v1.0 勘误表-1 中描述。

MBIM 控制通道用户空间 ABI

/dev/wwan0mbim0 字符设备

该驱动程序通过实现 MBIM WWAN 端口,向 MBIM 功能公开 MBIM 接口。控制通道管道的用户空间端是一个 /dev/wwan0mbim0 字符设备。应用程序应使用此接口进行 MBIM 协议通信。

分段

根据 MBIM 规范,用户空间应用程序负责所有控制消息的分段和重组。

/dev/wwan0mbim0 write()

来自管理应用程序的 MBIM 控制消息不得超过协商的控制消息大小。

/dev/wwan0mbim0 read()

管理应用程序必须接受最大为协商的控制消息大小的控制消息。

MBIM 数据通道用户空间 ABI

wwan0-X 网络设备

IOSM 驱动程序公开类型为 “wwan” 的 IP 链接接口 “wwan0-X”,用于 IP 流量。Iproute 网络实用程序用于创建 “wwan0-X” 网络接口并将其与 MBIM IP 会话关联。该驱动程序支持最多 8 个用于同时 IP 通信的 IP 会话。

用户空间管理应用程序负责在建立会话 ID 大于 0 的 MBIM IP 会话之前创建新的 IP 链接。

例如,为会话 ID 为 1 的 MBIM IP 会话创建新的 IP 链接

ip link add dev wwan0-1 parentdev-name wwan0 type wwan linkid 1

该驱动程序会自动将 “wwan0-1” 网络设备映射到 MBIM IP 会话 1。

参考资料

[1] “MBIM(移动宽带接口模型)勘误表-1”
[2] libmbim - “一个基于 glib 的库,用于与 WWAN 调制解调器进行通信和

设备,这些设备使用移动接口宽带模型(MBIM)协议” - http://www.freedesktop.org/wiki/Software/libmbim/

[3] Modem Manager - “一个由 DBus 激活的守护程序,用于控制移动

宽带(2G/3G/4G)设备和连接” - http://www.freedesktop.org/wiki/Software/ModemManager/