2. 硬件环境搭建:nRF52840 DK + Wireshark 环境搭建、TI CC2540 USB Dongle 驱动安装、Ellisys Vanguard 设备连接
做 BLE 抓包分析,硬件是第一步。工具选不对,后面全是坑。
我个人习惯把抓包设备分成三类:开发板方案、USB Dongle 方案、专业分析仪方案。这三类各有各的适用场景,价格也从几十块到几万块不等。今天咱们就把这三套环境从头到尾捋一遍。
核心观点:没有最好的抓包工具,只有最适合你当前场景的工具。开发板适合学习和调试自家固件,Dongle 适合快速嗅探,Ellisys 适合做认证和复杂协议分析。
2.1 nRF52840 DK + Wireshark 环境搭建
nRF52840 DK 是我最推荐入门方案。为什么?因为它本身就是一块完整的开发板,你既能用它跑 BLE 应用,又能把它当抓包器用。一块板子,两种用途,性价比很高。
2.1.1 硬件准备
- nRF52840 DK(PCA10056 版本)
- Micro USB 数据线(两根,一根供电,一根做抓包通道)
- PC 端 Windows / macOS / Linux 均可
小技巧:我习惯用两根 USB 线。一根接在 J2(供电/调试),另一根接在 J3(串口/抓包数据)。这样抓包时不会因为调试器复位导致数据中断。
2.1.2 固件烧录
nRF52840 DK 需要刷入专用的抓包固件。Nordic 官方提供了 nRF Sniffer for BLE 工具包。
- 下载 nRF Sniffer for BLE 安装包(Nordic 官网免费获取)
- 安装 nRF Connect for Desktop
- 打开 nRF Connect,找到「Programmer」工具
- 选择 nRF52840 DK 目标设备
- 加载 sniffer_nrf52840dk.hex 固件
- 点击「Write」烧录
# 如果你习惯用命令行,也可以用 nrfjprog
nrfjprog -f nrf52 --program sniffer_nrf52840dk.hex --sectorerase
nrfjprog -f nrf52 --reset
注意:烧录抓包固件后,这块板子就不能再跑普通 BLE 应用了。想恢复的话,重新烧回你的应用固件就行。我一般会备两块板子,一块专门抓包,一块做开发。
2.1.3 Wireshark 配置
固件烧好了,接下来让 Wireshark 认识它。
- 安装 Wireshark(建议 3.4 以上版本)
- 安装 nRF Sniffer 配套的 Wireshark 插件(extcap 接口)
- 重启 Wireshark,在接口列表里应该能看到「nRF Sniffer for BLE」
- 选择该接口,点击开始抓包
嗯,这里要注意。第一次用的时候,Wireshark 可能提示缺少「libusb」驱动。Windows 下用 Zadig 工具把 nRF52840 DK 的驱动换成 WinUSB 就行。
# 验证抓包接口是否正常
# 在 Wireshark 中过滤 BLE 广播包
btle.advertising_address == xx:xx:xx:xx:xx:xx
2.2 TI CC2540 USB Dongle 驱动安装
CC2540 USB Dongle 是个小东西,长得跟普通 U 盘似的。价格便宜,淘宝几十块就能买到。但便宜有便宜的代价——驱动折腾起来比较麻烦。
我记得第一次用 CC2540 时,插上电脑没反应,设备管理器里显示一个未知设备。当时我还以为是 Dongle 坏了,后来才发现是驱动问题。
2.2.1 驱动安装步骤
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 下载 TI BLE Packet Sniffer 安装包 | TI 官网注册下载,约 200MB |
| 2 | 安装 Packet Sniffer 软件 | 会自动安装驱动,但有时会失败 |
| 3 | 手动更新驱动 | 设备管理器 → 更新驱动 → 选择驱动目录 |
| 4 | 验证 | 设备管理器出现「TI CC2540 USB Dongle」 |
避坑指南:我曾经在 Windows 10 上折腾了整整一下午。后来发现是驱动签名问题。解决办法:重启电脑时按 F8 进入「禁用驱动程序强制签名」模式,再安装驱动。Windows 11 也有类似问题,建议用兼容模式安装。
2.2.2 与 Wireshark 配合
CC2540 默认用 TI 自家的 Packet Sniffer 软件。但说实话,那个界面太老了,我基本不用。我更推荐用第三方工具「BTLE」或者「Sniffle」把 CC2540 的数据转发到 Wireshark。
# 使用 Sniffle 工具(开源)
# 下载 Sniffle 固件并烧录到 CC2540
# 然后通过串口转发到 Wireshark
python sniffle.py -s COM3 -w
个人建议:CC2540 适合做快速嗅探,比如在展会现场排查干扰问题。但它的缺点是只能抓广播包,连接后的数据包抓不全。如果你要做连接态分析,还是用 nRF52840 DK 或者 Ellisys 吧。
2.3 Ellisys Vanguard 设备连接
Ellisys Vanguard 是专业级 BLE 分析仪。价格不便宜,一台两三万起步。但它的能力也是消费级工具比不了的——硬件级解码、多协议同步、纳秒级时间戳。
我是在做 BLE 认证测试时第一次接触 Ellisys。当时被一个连接参数协商的问题卡了两周,用 nRF Sniffer 怎么都抓不到关键包。换上 Ellisys 后,十分钟就定位到了问题。嗯,专业工具确实有它的价值。
2.3.1 硬件连接
- Ellisys Vanguard 主机(带 USB 3.0 接口)
- 天线(2.4GHz 全向天线,标配)
- USB 3.0 数据线连接 PC
- 电源适配器(12V DC)
2.3.2 软件安装
- 下载 Ellisys BLE Analyzer 软件(官网下载,需授权)
- 安装驱动(Windows 下自动识别,macOS 需安装虚拟串口驱动)
- 打开软件,点击「Connect」
- 选择 Vanguard 设备,等待初始化完成
2.3.3 抓包配置要点
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 中心频率 | 2402 MHz ~ 2480 MHz | 全频段扫描 |
| 采样带宽 | 2 MHz | BLE 标准带宽 |
| 触发模式 | 广播包触发 | 捕获连接建立过程 |
| 时间戳精度 | 0.5 μs | 硬件级精度 |
关键点:Ellisys 的硬件解码能力很强。它能在抓包的同时,实时解析出 Link Layer 状态机、连接事件时序、跳频序列等信息。这些在 Wireshark 里需要手动分析,Ellisys 直接帮你画好了。
2.3.4 常见问题
- 设备无法识别:检查 USB 3.0 驱动,尝试换一个 USB 口
- 抓包丢包:天线位置不对,调整天线角度,避免金属遮挡
- 软件崩溃:Ellisys 软件比较吃内存,建议 16GB 以上 RAM
我的经验:Ellisys 的「Follow Connection」功能特别好用。你只要点一下某个连接请求包,它自动跟踪这个连接的所有后续事件,包括重传、丢包、连接参数更新。做功耗分析时,这个功能能省你大量时间。
2.4 三种方案对比总结
| 对比项 | nRF52840 DK | CC2540 USB Dongle | Ellisys Vanguard |
|---|---|---|---|
| 价格 | 约 ¥500 | 约 ¥50 | 约 ¥30,000+ |
| 抓包范围 | 广播 + 连接 | 仅广播 | 广播 + 连接 + 跳频 |
| 时间戳精度 | 软件级 (ms) | 软件级 (ms) | 硬件级 (μs) |
| 多协议支持 | 仅 BLE | 仅 BLE | BLE + BT Classic + 802.15.4 |
| 学习曲线 | 低 | 中 | 高 |
| 推荐场景 | 学习 / 开发调试 | 快速嗅探 | 认证 / 深度分析 |
说实话,我不建议初学者一上来就买 Ellisys。先用 nRF52840 DK 把抓包的基本功练好,等遇到真正需要硬件级分析的问题时,再考虑升级工具。工具是手段,不是目的。能抓到问题本质的,才是好工具。