使用nRF52840核心板实现蓝牙空口包抓取
本文将详细介绍使用nRF52840核心板(以PCA10056/nRF52840 DK为例)实现蓝牙空口包抓取的完整正常操作流程,步骤清晰、可直接落地,适用于需要调试BLE应用的开发者。
核心流程:准备工具 → 下载抓包工具包 → 烧录抓包固件 → 配置Wireshark插件 → 启动抓包,全程无异常排查,仅保留正常操作步骤。
一、操作准备(必做)
提前准备好以下工具和设备,避免操作中断:
- 硬件:nRF52840核心板(PCA10056/nRF52840 DK)、支持数据传输的USB线
- 软件:
- nRF Connect for Desktop(含Programmer烧录工具,用于烧录固件)
- Wireshark(用于显示和分析蓝牙空口包)
- nRF Sniffer for Bluetooth LE工具包(含抓包固件和Wireshark插件)
- Python 3.x(用于安装插件依赖)
二、步骤1:下载nRF Sniffer for Bluetooth LE工具包
该工具包包含抓包所需的固件、Wireshark插件,推荐下载最新稳定版(v4.1.1),操作如下:
- 打开官方下载页:https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE/Download
- 在“Downloads”栏目下,选择版本「4.1.1」,点击下载文件「nrf_sniffer_for_bluetooth_le_4.1.1.zip」
- 下载完成后,将压缩包解压至任意路径(建议路径无中文、无空格,如D:\nRF_Sniffer)
补充:工具包支持Windows、Linux、macOS系统,可根据自身系统选择对应版本(本文以Windows系统为例,Linux操作逻辑一致)。
三、步骤2:烧录抓包固件到nRF52840核心板
烧录固件支持两种方式,可根据自身工具情况选择,两种方式烧录效果一致,均能实现抓包功能。
3.1 方式一:nRF Connect for Desktop烧录(推荐,图形化操作)
使用nRF Connect for Desktop的Programmer工具烧录,步骤简单、无需命令行,适合新手操作:
- 打开nRF Connect for Desktop,安装并启动「Programmer」工具
- 用USB线连接nRF52840核心板的「J3接口(nRF USB)」和电脑,确保核心板正常上电
- 在Programmer工具中,点击「Select Device」,选择识别到的nRF52840设备(如nRF52840 DK)
- 点击「Erase & Program」,选择步骤1解压后工具包中的固件文件: 路径:解压文件夹 → hex → sniffer_nrf52840dk_nrf52840_4.1.1.hex
- 点击「Start」,等待烧录完成(提示“Success”即为烧录成功)
- 烧录完成后,重新插拔USB线,核心板将枚举为「nRF Sniffer」串口(Windows设备管理器可查看COM号)
3.2 方式二:JLink烧录(调试器烧录,稳定可靠)
若使用JLink调试器烧录,需提前安装JLink驱动,操作步骤如下:
- 将JLink调试器与nRF52840核心板(PCA10056)的JTAG接口连接,确保接线正确(VCC、GND、SWDIO、SWCLK对应)。
- 打开JLink Commander软件,启动后输入命令
connect,选择芯片型号「nRF52840_xxAA」,确认连接成功。 - 输入命令擦除芯片 flash:
erase,等待擦除完成(提示“Erase completed successfully”)。 - 输入命令烧录固件(替换为实际固件路径):
loadbin 你的固件路径\sniffer_nrf52840dk_nrf52840_4.1.1.hex, 0x0。 - 烧录完成后,输入命令
reset重启核心板,重启后核心板将枚举为「nRF Sniffer」串口。
补充:JLink烧录需确保接线无误,避免损坏核心板;固件路径需替换为步骤1解压后的实际路径。
烧录固件支持两种方式,可根据自身工具情况选择,两种方式烧录效果一致,均能实现抓包功能。
四、步骤3:配置Wireshark及nRF Sniffer插件
插件用于将串口传输的抓包数据解析并在Wireshark中显示,配置步骤如下:
- 打开步骤1解压后的工具包,找到「extcap」文件夹(内含插件核心文件)
- 将「extcap」文件夹下的所有文件,复制到Wireshark的「extcap」目录:
- Windows路径:C:\Program Files\Wireshark\extcap
- Linux路径:/usr/lib/x86_64-linux-gnu/wireshark/extcap
- 安装插件依赖:
- 打开终端(Windows以管理员身份运行),进入extcap目录(命令:cd C:\Program Files\Wireshark\extcap)
- 输入命令安装依赖:
pip install -r requirements.txt - 等待安装完成(核心依赖为pyserial,用于串口通信)
- 重启Wireshark,确保插件加载成功
五、步骤4:启动蓝牙空口包抓取
完成以上配置后,即可启动抓包,步骤如下:
- 打开Wireshark,点击顶部菜单栏「Capture → Options」(或快捷键Ctrl+K),打开捕获选项
- 在「接口」列表中,找到「nRF Sniffer for Bluetooth LE (COMx)」(COMx为步骤2中识别到的串口号)
- 双击该接口,打开配置窗口,按以下参数设置:
- Channel(信道):优先选择37、38、39(BLE广播信道),如需抓取特定设备数据,切换到对应数据信道
- Baud rate(波特率):固定设置为1000000(1M),与抓包固件默认波特率一致
- Link-layer type(链路层类型):保持默认「Nordic BLE Sniffer」,无需修改
- 点击「Start」,开始抓取蓝牙空口包
- 在Wireshark过滤栏输入「btle」,可只显示BLE相关数据包,过滤无关数据
- 抓取完成后,点击顶部「Stop」按钮,可保存抓包文件(.pcap格式)用于后续分析
六、操作总结
整个蓝牙空口包抓取流程分为5个核心步骤,全程无异常排查,按顺序操作即可顺利完成:
- 准备所需硬件和软件 → 2. 下载nRF Sniffer工具包 → 3. 烧录抓包固件 → 4. 配置Wireshark插件 → 5. 启动抓包并过滤数据
按照以上步骤,即可使用nRF52840核心板实现蓝牙空口包的实时抓取和分析,适用于BLE应用调试、协议学习等场景。