3、抓包环境搭建:硬件准备与软件配置

做MAVLink抓包分析,说白了就是给飞控和地面站之间的对话装个窃听器。这个环境搭得好不好,直接决定你后面能不能顺利抓到数据。我刚开始搞这个的时候,光接线就折腾了一下午,后来发现是USB转串口的驱动没装对。

嗯,咱们一步步来。先把家底备齐了。

3.1 硬件准备:你得有这些家伙

硬件这块,我建议你准备三样东西:

  • USB转串口模块:推荐FT232或者CP2102芯片的,别买太便宜的。我在项目里吃过亏,某宝9块9的模块,抓包时丢数据丢到怀疑人生。
  • Pixhawk或ArduPilot飞控:随便哪个版本都行,Pixhawk 1、Pixhawk 4、Cube Orange都OK。关键是飞控的UART口要能正常工作。
  • 数传模块:433MHz或915MHz的都可以,比如Holybro的SiK Radio。不过说实话,如果你只是做抓包学习,直接用USB线连飞控也行,省事。
我的小建议:如果你手头有现成的Pixhawk,直接用它的USB口连电脑,就能抓到飞控和QGC之间的MAVLink数据。这是最省心的方式。

硬件接线其实不复杂。拿USB转串口来说,你只需要把它的TX接到飞控的RX,RX接到飞控的TX,GND接GND。说白了就是交叉连接。我见过有人把TX接TX,结果死活没数据,还以为是飞控坏了。

注意:飞控的UART口通常是3.3V电平,别直接用5V的串口模块怼上去。虽然大部分飞控有保护,但烧了IO口就麻烦了。我建议用3.3V的串口模块,或者带电平转换的。

3.2 软件准备:三件套搞定

软件方面,我习惯装这三样:

  1. Wireshark:抓包界的瑞士军刀。版本无所谓,最新的就行。
  2. MAVLink Inspector:QGroundControl自带的功能,专门解析MAVLink报文。你打开QGC的Analyze Tools就能看到。
  3. QGroundControl:地面站软件,用来和飞控通信,同时也是抓包的触发源。

你可能会问:为什么不用别的抓包工具?其实Wireshark配合MAVLink插件,能直接解析MAVLink协议,省去你手动查字节的麻烦。我个人习惯用Wireshark抓原始数据,再用MAVLink Inspector看解析后的内容,两边对照着看,不容易漏掉细节。

3.3 环境配置与验证

硬件接好了,软件装好了,接下来就是配置和验证。这一步最关键,也最容易出问题。

3.3.1 串口驱动与端口识别

先把USB转串口插上电脑。Windows下打开设备管理器,看看有没有出现新的COM口。Linux下用ls /dev/ttyUSB*或者ls /dev/ttyACM*查看。我遇到过好几次,驱动没装好,设备管理器里显示黄色感叹号。这时候去官网下个驱动重装就行。

# Linux下查看串口设备
ls -l /dev/ttyUSB*
# 或者
ls -l /dev/ttyACM*

3.3.2 配置Wireshark抓串口数据

Wireshark默认抓网络接口,要抓串口数据需要一点小技巧。Windows下可以用pip install pyserial装个库,然后用serial.tools.list_ports查看端口。Linux下更简单,直接用socat把串口数据转发到虚拟网口上。

不过说实话,我推荐一个更直接的方法:用Wireshark的Extcap接口。Wireshark 3.0以上版本支持通过extcap插件直接捕获串口数据。你只需要在Wireshark的捕获接口列表里选择对应的串口就行。

配置步骤

  1. 打开Wireshark,点击「捕获」->「选项」
  2. 在「管理接口」里找到「串口」标签
  3. 选择你的COM口,设置波特率(通常是57600或115200)
  4. 点击「开始」即可抓包

3.3.3 验证抓包是否成功

配置好之后,怎么知道抓包环境是不是正常的?我一般这样做:

  • 打开QGroundControl,连接飞控
  • 在Wireshark里开始捕获串口数据
  • 观察Wireshark里有没有出现MAVLink报文

如果一切正常,你会看到Wireshark里出现一堆以FEFD开头的报文。FE是MAVLink 1.0的起始标志,FD是MAVLink 2.0的。说白了,看到这些就说明抓包成功了。

避坑指南:我曾经遇到过Wireshark里全是乱码,后来发现是波特率没设对。飞控默认57600,但有些数传模块是115200。你可以在QGC里查看飞控的参数,找到SERIALx_BAUD确认一下。

3.3.4 用MAVLink Inspector辅助验证

Wireshark抓的是原始字节流,看着费劲。这时候MAVLink Inspector就派上用场了。在QGC里打开Analyze Tools,选择MAVLink Inspector,你就能看到解析好的报文:

  • HEARTBEAT:心跳包,证明飞控还活着
  • GPS_RAW_INT:GPS数据
  • ATTITUDE:姿态数据
  • SYS_STATUS:系统状态

我习惯把Wireshark和MAVLink Inspector并排放在屏幕上,左边看原始数据,右边看解析结果。这样既能理解协议底层,又能快速定位问题。

3.4 知识体系总览

为了让你对整个抓包环境有个直观的认识,我画了张图。这张图展示了硬件、软件和数据流之间的关系:

MAVLink抓包环境架构图 硬件层 Pixhawk/ArduPilot 飞控 USB转串口模块 FT232/CP2102 数传模块 433MHz/915MHz UART数据流 软件层 Wireshark 原始数据抓包 MAVLink Inspector 协议解析 QGroundControl 地面站控制 验证:HEARTBEAT / GPS_RAW_INT / ATTITUDE 报文可见

这张图你看明白了吗?硬件层负责产生和传输MAVLink数据,软件层负责捕获和解析,最后通过验证层确认环境是否正常工作。说白了,就是数据从飞控出来,经过串口,被Wireshark抓到,再被MAVLink Inspector解析,整个过程环环相扣。

3.5 常见问题与解决

环境搭好了,但有时候就是跑不起来。我整理了几个常见问题:

问题现象 可能原因 解决方法
Wireshark里没有数据 串口没选对,或者波特率不对 检查设备管理器,确认COM口;在QGC里查看飞控的波特率
数据全是乱码 波特率不匹配,或者接线错误 确认TX/RX是否交叉连接;统一波特率
MAVLink Inspector里没有报文 QGC没连上飞控,或者串口被占用 关闭其他占用串口的程序;重新插拔USB
抓到的报文不完整 USB转串口模块质量差,或者线太长 换FT232模块;缩短USB线长度

嗯,环境搭建这部分就这些内容。你按照这个流程走一遍,应该半小时内就能搞定。下一节咱们就开始实战抓包了,到时候我会带你分析具体的MAVLink报文。


公众号:蓝海资料掘金营,微信deep3321