用于 MTK 基于 PCIe 的 T700 5G 调制解调器的 t7xx 驱动程序¶
t7xx 驱动程序是一个为 Linux 或 Chrome OS 平台开发的 WWAN PCIe 主机驱动程序,用于主机平台和联发科 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(调制解调器信息处理中心)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 调试桥) “一种用于跟踪连接到或运行在给定主机开发机器上的 Android 设备和模拟器实例的机制,采用 ADB 协议”