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