t7xx driver for MTK PCIe based T700 5G modemÂķ
The t7xx driver is a WWAN PCIe host driver developed for linux or Chrome OS platforms for data exchange over PCIe interface between Host platform & MediaTekâs T700 5G modem. The driver exposes an interface conforming to the MBIM protocol [1]. Any front end application (e.g. Modem Manager) could easily manage the MBIM interface to enable data communication towards WWAN. The driver also provides an interface to interact with the MediaTekâs modem via AT commands.
Basic usageÂķ
MBIM & AT functions are inactive when unmanaged. The t7xx driver provides WWAN port userspace interfaces representing MBIM & AT control channels and does not play any role in managing their functionality. It is the job of a userspace application to detect port enumeration and enable MBIM & AT functionalities.
Examples of few such userspace applications are:
mbimcli (included with the libmbim [2] library), and
Modem Manager [3]
Management Applications to carry out below required actions for establishing MBIM IP session:
open the MBIM control channel
configure network connection settings
connect to network
configure IP network interface
Management Applications to carry out below required actions for send an AT command and receive response:
open the AT control channel using a UART tool or a special user tool
SysfsÂķ
The driver provides sysfs interfaces to userspace.
t7xx_modeÂķ
The sysfs interface provides userspace with access to the device mode, this interface supports read and write operations.
Device mode:
unknownrepresents that device in unknown statusreadyrepresents that device in ready statusresetrepresents that device in reset statusfastboot_switchingrepresents that device in fastboot switching statusfastboot_downloadrepresents that device in fastboot download statusfastboot_dumprepresents that device in fastboot dump status
Read from userspace to get the current device mode.
- ::
$ cat /sys/bus/pci/devices/${bdf}/t7xx_mode
Write from userspace to set the device mode.
- ::
$ echo fastboot_switching > /sys/bus/pci/devices/${bdf}/t7xx_mode
t7xx_debug_portsÂķ
The sysfs interface provides userspace with access to enable/disable the debug ports, this interface supports read and write operations.
Debug port status:
1represents enable debug ports0represents disable debug ports
Currently supported debug ports (ADB/MIPC).
Read from userspace to get the current debug ports status.
- ::
$ cat /sys/bus/pci/devices/${bdf}/t7xx_debug_ports
Write from userspace to set the debug ports status.
- ::
$ echo 1 > /sys/bus/pci/devices/${bdf}/t7xx_debug_ports
Management application developmentÂķ
The driver and userspace interfaces are described below. The MBIM protocol is described in [1] Mobile Broadband Interface Model v1.0 Errata-1.
MBIM control channel userspace ABIÂķ
/dev/wwan0mbim0 character deviceÂķ
The driver exposes an MBIM interface to the MBIM function by implementing MBIM WWAN Port. The userspace end of the control channel pipe is a /dev/wwan0mbim0 character device. Application shall use this interface for MBIM protocol communication.
FragmentationÂķ
The userspace application is responsible for all control message fragmentation and defragmentation as per MBIM specification.
/dev/wwan0mbim0 write()Âķ
The MBIM control messages from the management application must not exceed the negotiated control message size.
/dev/wwan0mbim0 read()Âķ
The management application must accept control messages of up the negotiated control message size.
MBIM data channel userspace ABIÂķ
wwan0-X network deviceÂķ
The t7xx driver exposes IP link interface âwwan0-Xâ of type âwwanâ for IP traffic. Iproute network utility is used for creating âwwan0-Xâ network interface and for associating it with MBIM IP session.
The userspace management application is responsible for creating new IP link prior to establishing MBIM IP session where the SessionId is greater than 0.
For example, creating new IP link for a MBIM IP session with SessionId 1:
ip link add dev wwan0-1 parentdev wwan0 type wwan linkid 1
The driver will automatically map the âwwan0-1â network device to MBIM IP session 1.
AT port userspace ABIÂķ
/dev/wwan0at0 character deviceÂķ
The driver exposes an AT port by implementing AT WWAN Port. The userspace end of the control port is a /dev/wwan0at0 character device. Application shall use this interface to issue AT commands.
fastboot port userspace ABIÂķ
/dev/wwan0fastboot0 character deviceÂķ
The driver exposes a fastboot protocol interface by implementing fastboot WWAN Port. The userspace end of the fastboot channel pipe is a /dev/wwan0fastboot0 character device. Application shall use this interface for fastboot protocol communication.
Please note that driver needs to be reloaded to export /dev/wwan0fastboot0
port, because device needs a cold reset after enter fastboot_switching
mode.
ADB port userspace ABIÂķ
/dev/wwan0adb0 character deviceÂķ
The driver exposes a ADB protocol interface by implementing ADB WWAN Port. The userspace end of the ADB channel pipe is a /dev/wwan0adb0 character device. Application shall use this interface for ADB protocol communication.
MIPC port userspace ABIÂķ
/dev/wwan0mipc0 character deviceÂķ
The driver exposes a diagnostic interface by implementing MIPC (Modem Information Process Center) WWAN Port. The userspace end of the MIPC channel pipe is a /dev/wwan0mipc0 character device. Application shall use this interface for MTK modem diagnostic communication.
The MediaTekâs T700 modem supports the 3GPP TS 27.007 [4] specification.
ReferencesÂķ
[1] MBIM (Mobile Broadband Interface Model) Errata-1
[2] libmbim âa glib-based library for talking to WWAN modems and devices which speak the Mobile Interface Broadband Model (MBIM) protocolâ
[3] Modem Manager âa DBus-activated daemon which controls mobile broadband (2G/3G/4G/5G) devices and connectionsâ
[4] Specification # 27.007 - 3GPP
[5] fastboot âa mechanism for communicating with bootloadersâ
[6] ADB (Android Debug Bridge) âa mechanism to keep track of Android devices and emulators instances connected to or running on a given host developer machine with ADB protocolâ