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线连飞控也行,省事。
硬件接线其实不复杂。拿USB转串口来说,你只需要把它的TX接到飞控的RX,RX接到飞控的TX,GND接GND。说白了就是交叉连接。我见过有人把TX接TX,结果死活没数据,还以为是飞控坏了。
3.2 软件准备:三件套搞定
软件方面,我习惯装这三样:
- Wireshark:抓包界的瑞士军刀。版本无所谓,最新的就行。
- MAVLink Inspector:QGroundControl自带的功能,专门解析MAVLink报文。你打开QGC的Analyze Tools就能看到。
- 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的捕获接口列表里选择对应的串口就行。
配置步骤:
- 打开Wireshark,点击「捕获」->「选项」
- 在「管理接口」里找到「串口」标签
- 选择你的COM口,设置波特率(通常是57600或115200)
- 点击「开始」即可抓包
3.3.3 验证抓包是否成功
配置好之后,怎么知道抓包环境是不是正常的?我一般这样做:
- 打开QGroundControl,连接飞控
- 在Wireshark里开始捕获串口数据
- 观察Wireshark里有没有出现MAVLink报文
如果一切正常,你会看到Wireshark里出现一堆以FE或FD开头的报文。FE是MAVLink 1.0的起始标志,FD是MAVLink 2.0的。说白了,看到这些就说明抓包成功了。
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数据,软件层负责捕获和解析,最后通过验证层确认环境是否正常工作。说白了,就是数据从飞控出来,经过串口,被Wireshark抓到,再被MAVLink Inspector解析,整个过程环环相扣。
3.5 常见问题与解决
环境搭好了,但有时候就是跑不起来。我整理了几个常见问题:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| Wireshark里没有数据 | 串口没选对,或者波特率不对 | 检查设备管理器,确认COM口;在QGC里查看飞控的波特率 |
| 数据全是乱码 | 波特率不匹配,或者接线错误 | 确认TX/RX是否交叉连接;统一波特率 |
| MAVLink Inspector里没有报文 | QGC没连上飞控,或者串口被占用 | 关闭其他占用串口的程序;重新插拔USB |
| 抓到的报文不完整 | USB转串口模块质量差,或者线太长 | 换FT232模块;缩短USB线长度 |
嗯,环境搭建这部分就这些内容。你按照这个流程走一遍,应该半小时内就能搞定。下一节咱们就开始实战抓包了,到时候我会带你分析具体的MAVLink报文。
公众号:蓝海资料掘金营,微信deep3321