用於 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 裝置和模擬器例項”