用于 MTK PCIe T700 5G 调制解调器的 t7xx 驱动¶
t7xx 驱动程序是一个 WWAN PCIe 主机驱动程序,专为 Linux 或 Chrome OS 平台开发,用于主机平台与联发科 (MediaTek) T700 5G 调制解调器之间通过 PCIe 接口进行数据交换。该驱动程序公开了一个符合 MBIM 协议 [1] 的接口。任何前端应用程序(例如 Modem Manager)都可以轻松管理 MBIM 接口,以实现与 WWAN 的数据通信。该驱动程序还提供了一个通过 AT 命令与联发科调制解调器交互的接口。
基本用法¶
在未管理时,MBIM 和 AT 功能处于非活动状态。t7xx 驱动程序提供代表 MBIM 和 AT 控制信道的 WWAN 端口用户空间接口,并且不参与其功能的管理。用户空间应用程序的任务是检测端口枚举并启用 MBIM 和 AT 功能。
此类用户空间应用程序的示例包括
mbimcli(包含在 libmbim [2] 库中),以及
Modem Manager [3]
管理应用程序需要执行以下操作来建立 MBIM IP 会话:
打开 MBIM 控制信道
配置网络连接设置
连接到网络
配置 IP 网络接口
管理应用程序需要执行以下操作来发送 AT 命令和接收响应:
使用 UART 工具或专用用户工具打开 AT 控制信道
Sysfs¶
驱动程序向用户空间提供 sysfs 接口。
t7xx_mode¶
sysfs 接口为用户空间提供了设备模式的访问权限,该接口支持读写操作。
设备模式
unknown
表示设备处于未知状态ready
表示设备处于就绪状态reset
表示设备处于重置状态fastboot_switching
表示设备处于 fastboot 切换状态fastboot_download
表示设备处于 fastboot 下载状态fastboot_dump
表示设备处于 fastboot 转储状态
从用户空间读取以获取当前设备模式。
- ::
$ cat /sys/bus/pci/devices/${bdf}/t7xx_mode
从用户空间写入以设置设备模式。
- ::
$ echo fastboot_switching > /sys/bus/pci/devices/${bdf}/t7xx_mode
t7xx_debug_ports¶
sysfs 接口为用户空间提供了启用/禁用调试端口的访问权限,该接口支持读写操作。
调试端口状态
1
表示启用调试端口0
表示禁用调试端口
当前支持的调试端口 (ADB/MIPC)。
从用户空间读取以获取当前调试端口状态。
- ::
$ cat /sys/bus/pci/devices/${bdf}/t7xx_debug_ports
从用户空间写入以设置调试端口状态。
- ::
$ echo 1 > /sys/bus/pci/devices/${bdf}/t7xx_debug_ports
管理应用程序开发¶
驱动程序和用户空间接口如下所述。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 网络设备¶
t7xx 驱动程序公开了类型为“wwan”的 IP 链路接口“wwan0-X”用于 IP 流量。Iproute 网络实用程序用于创建“wwan0-X”网络接口并将其与 MBIM IP 会话关联。
在建立 SessionId 大于 0 的 MBIM IP 会话之前,用户空间管理应用程序负责创建新的 IP 链路。
例如,为 SessionId 为 1 的 MBIM IP 会话创建新的 IP 链路
ip link add dev wwan0-1 parentdev wwan0 type wwan linkid 1
驱动程序将自动把“wwan0-1”网络设备映射到 MBIM IP 会话 1。
AT 端口用户空间 ABI¶
/dev/wwan0at0 字符设备¶
驱动程序通过实现 AT WWAN 端口公开 AT 端口。控制端口的用户空间端是 /dev/wwan0at0 字符设备。应用程序应使用此接口发出 AT 命令。
fastboot 端口用户空间 ABI¶
/dev/wwan0fastboot0 字符设备¶
驱动程序通过实现 fastboot WWAN 端口公开 fastboot 协议接口。fastboot 信道管道的用户空间端是 /dev/wwan0fastboot0 字符设备。应用程序应使用此接口进行 fastboot 协议通信。
请注意,驱动程序需要重新加载才能导出 /dev/wwan0fastboot0 端口,因为设备在进入 fastboot_switching
模式后需要进行冷复位。
ADB 端口用户空间 ABI¶
/dev/wwan0adb0 字符设备¶
驱动程序通过实现 ADB WWAN 端口公开 ADB 协议接口。ADB 信道管道的用户空间端是 /dev/wwan0adb0 字符设备。应用程序应使用此接口进行 ADB 协议通信。
MIPC 端口用户空间 ABI¶
/dev/wwan0mipc0 字符设备¶
驱动程序通过实现 MIPC (Modem Information Process Center) WWAN 端口公开诊断接口。MIPC 信道管道的用户空间端是 /dev/wwan0mipc0 字符设备。应用程序应使用此接口进行 MTK 调制解调器诊断通信。
联发科的 T700 调制解调器支持 3GPP TS 27.007 [4] 规范。
参考文献¶
[1] MBIM (移动宽带接口模型) 勘误表-1
[2] libmbim “一个基于 glib 的库,用于与支持移动接口宽带模型 (MBIM) 协议的 WWAN 调制解调器和设备进行通信”
[3] Modem Manager “一个由 DBus 激活的守护进程,用于控制移动宽带 (2G/3G/4G/5G) 设备和连接”
[4] 规范 # 27.007 - 3GPP
[5] fastboot “一种与引导加载程序通信的机制”
[6] ADB (Android Debug Bridge) “一种机制,用于跟踪通过 ADB 协议连接到或运行在给定主机开发机器上的 Android 设备和模拟器实例”