如何通过USB端口抓取模组日志

通过USB端口抓取模组日志是一个嵌入式开发和调试中的常见任务。由于模组通常将USB虚拟为多个串口(CDC/ACM驱动),因此抓取日志的本质就是捕获这些虚拟串口上的数据流

核心原理

大多数4G/5G/Cat.1等通信模组,当其USB接口连接到电脑时,会在设备管理器中枚举出多个端口:

AT Command Port:用于发送AT命令和接收响应。

Modem Port:用于PPP拨号或NDIS网络连接。

Diagnostic Port / Logging Port这就是用于输出详细日志(尤其是CP Log)的端口。

NMEA Port:用于输出GPS数据(如果模组支持)。

我们的目标就是找到并监听这个 Diagnostic Port

方法一:使用通用串口调试工具(最常用)

这种方法适用于输出明文日志(如AT命令交互、模组状态信息)的场景。

步骤:

识别日志端口

将模组通过USB连接到电脑。

打开 设备管理器

展开 “端口 (COM & LPT)”

你会看到模组新增的多个COM口。通常,诊断端口的名称会有提示,如:


USB Diagnostics Interface


DM Port


Logging Port

或者根据厂商文档确定。如果无法确定,可以逐个尝试。

选择并配置串口工具

Putty: 轻量级,功能全面。

SecureCRT / Tera Term: 功能强大的专业终端。

MobaXterm: 集成了串口、网络等众多功能。

开源工具 (如 
screen
 on Linux/macOS, 
Serial Port Utility
)。

连接并捕获日志

以 Putty 为例:

打开Putty,选择 “Serial” 连接类型。

在 “Serial line” 中输入你找到的日志端口号,例如 
COM10

设置正确的串口参数(最关键的一步):

Speed (Baud rate): 
115200
(最常见,也可能是 
921600
 或其他,需查阅模组手册)。

Data bits: 
8

Stop bits: 
1

Parity: 
None

Flow control: 
None
 或 
XON/XOFF

在 “Session” -> “Logging” 中,选择 “All session output” 并指定一个文件来保存日志。

点击 “Open”,即可开始实时查看并记录日志。

方法二:使用厂商专用诊断工具(用于CP Log等高级日志)

对于高通的芯片平台(如大多数4G/5G模组),其底层的CP Log(信令日志)是二进制的,无法用普通串口工具查看,必须使用专用工具。

步骤(以高通平台为例):

安装驱动和软件

安装QPST Server: 这是高通的基础服务。

安装QXDM / QCAT

QXDM: 用于抓取二进制诊断日志。

QCAT: 用于解析和分析QXDM抓取的 
.dlf
 或 
.isf
 文件。

配置QPST

确保模组的诊断端口已被识别。在设备管理器中,它可能显示为 
Qualcomm HS-USB Diagnostics
 或类似的设备。

打开 QPST Configuration

如果模组端口没有自动出现,点击 “Add New Port”,手动添加对应的COM口。

你应该能在列表中看到你的模组。

使用QXDM抓取日志

打开 QXDM

在 “Options” -> “Communications” 中,选择你的模组对应的端口。

点击红色的 “Record” 按钮开始抓取日志。

复现你的问题(如拨号、ping等)。

点击 “Stop” 按钮停止抓取,并保存为 
.dlf
 或 
.isf
 文件。

使用QCAT分析日志

打开 QCAT

打开刚才QXDM保存的日志文件。

QCAT会将其解析成可读的视图,你可以看到详细的信令流程(如RRC, NAS)、测量报告、错误代码等。

对于其他平台(如移远、广和通等):
它们通常也提供自己的Windows诊断工具,原理类似。你需要从模组厂商那里获取这些工具和相应的驱动。

方法三:在Linux系统下抓取

在Linux下,模组的USB端口会被映射为 
/dev/ttyUSB*
 设备文件。

识别设备

使用 
ls /dev/ttyUSB*
 或 
dmesg | grep tty
 命令查看新增的设备。

通常,
/dev/ttyUSB2
 或更高的编号是诊断端口。

使用 
screen
 命令捕获

# 连接并查看实时日志
screen /dev/ttyUSB2 115200

# 要退出 screen,按 Ctrl+A,然后按 K,再按 Y。

使用 
cat
 和重定向保存日志

# 将日志输出到文件
cat /dev/ttyUSB2 > modem_log.txt &

# 使用 stty 设置参数(如果需要)
stty -F /dev/ttyUSB2 115200

使用 
minicom
 或 
picocom

# 安装 minicom
sudo apt-get install minicom

# 配置并运行 minicom
sudo minicom -D /dev/ttyUSB2 -b 115200 -C capture_log.txt
# -C 选项指定日志文件

一般情况下,基于Linux系统抓取日志,不同平台会输出对应的log工具抓取模组日志,log工具识别日志端口,读取端口输出的日志数据,并按照日志规则将其写入指定文件存储,再用指定的工具进行解析。

总结与最佳实践

场景 推荐方法 输出内容
查看AT命令交互、应用层日志 方法一:通用串口工具 (Putty, Tera Term) 明文文本
深度调试网络问题、分析信令 方法二:厂商专用工具 (QXDM/QCAT, 移远Tools) 解析后的二进制信令
在Linux环境下开发 方法三
screen

minicom

cat
明文文本

关键检查点:

驱动:确保电脑已安装正确的USB驱动。

端口:准确识别哪个是诊断/日志端口。

波特率:设置正确的波特率,否则会看到乱码。

流控:如果数据量大,尝试开启流控(XON/XOFF或RTS/CTS)。

权限:在Linux下,确保当前用户有读写 
/dev/ttyUSB*
 的权限。

通过以上方法,你可以系统地通过USB端口抓取到模组在不同层面产生的日志,为后续的调试和分析提供坚实的基础。

© 版权声明

相关文章

暂无评论

none
暂无评论...