实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

在蓝牙的开发过程中,使用抓包器对蓝牙模块收发数据进行抓包BLE分析,无疑会极大地提高我们的研发开发效率,同时能帮我们快速地定位问题。对于初学者或者开发者来说,BLE抓包分析能让我们更快地理解蓝牙的工作过程。

市面上有几款常见的抓包工具,本文详细对比了Wireshark和TI CC2540 Sniffer软件Packet Sniffer对蓝牙模块抓包的测试体验。

经过测试Wireshark对比Packet Sniffer的使用体验,主要有三点:

1.    Wireshark优化的软件布局和简化的抓包流程。

2.    Wireshark解析彻底的抓包数据结构,便于分析。

3.    Wireshark对抓包数据提前解析数据包类型,方便查找到对应的数据包。

在测试中,我们选用了信驰达科技基于nRF52832RF-DG-32A硬件抓包工具,其价格、性能、稳定性上要好于TI的CC2540 USB Dongle硬件,各位电子工程师们可以尝试一下这款RF-DG-32A

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

当然本文重点是软件方面的实测对比,具体的测试分析过程请看下面。

首先我们需要在测试前做好软硬件准备。

硬件部分我们需要准备信驰达科技的基于nRF52832的RF-DG-32A硬件抓包工具以及测试的模块:RF-BM-ND04模块和RSBRS02ABR模块。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

软件部分我们需要准备Android手机端软件:nRF-connect,这个软件在应用商店可以很容易找到下载。在PC我们需要下载安装Wireshark软件,它的下载地址如下:https://www.wireshark.org/download.html

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

以上软硬件准备完毕后,我们就可以开始进行RF-DG-32A的抓包测试。

一、首先我们使用RF-BM-ND04模块进行测试。

具体步骤为:

1. RF-DG-32A插上电脑的USB接口,然后打开“我的电脑”—“管理”—“设备管理器”—“端口”,查看设备的 COM 端口号。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

2.Wireshark软件,选择对应的COM号,双击COM号进入。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

3.将RF-BM-ND04模块上电,打开手机上对应的软件 nrf connect,查看设备的MAC 地址,软件里可以看到RF-BM-ND04设备地址是FA:8D:0D:27:50:C6。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

4.在Wireshark软件中点击“Device”选择框,在下拉选项框中选择MAC地址为FA:8D:0D:27:50:C6的设备。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

5.手机端软件nRF connect点击“CONNECT”连接到蓝牙模块。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

6.在手机端软件nRF connect中选择“Nordic UART Service”,在“TX”中发送数据 “rf-star”到模块。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

 

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

7.Wireshark软件在模块没有发送数据前,数据包显示是广播包LE LL 格式。Wireshark抓包正确的数据包格式为ATT,我们只需要找到ATT格式数据包,并双击ATT即可查看数据 。

 实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

8.数据包界面如下图所示,解析出接收到的数据为rf-star,收发一致。说明已经成功抓到该数据

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

我们更换发送的数据,重复上述发送数据步骤进行测试:

1.重复上述操作,手机发送的数据修改为:https://www.szrfstar.com/。Wireshark抓包结果为:

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

2.手机多次向模块发送同一个数据包:“rf-star”,抓包显示的数据如下:

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

提示:在使用Wireshark时,可以注意几个使用技巧,需要查看数据时可以先点击停止捕获按钮(红色),再观察数据。需要重新抓取则需要点击重新开始当前捕获按钮(绿色) ,点击后需要把设备断开连接,Wireshark会自动重新开始抓包 ,再重新连接上设备即可正常工作。 如果连接后发现Wireshark数据停止 则重新断开设备连接并重新连接即可正常工作

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验 

二、接下来我们使用RF-DG-32A对RSBRS02ABR模块进行测试抓包。

具体步骤为:

1. RF-DG-32A插上电脑的USB接口,然后打开“我的电脑”—“管理”—“设备管理器”—“端口”,查看设备的 COM 端口号。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

2.Wireshark软件,选择对应的COM号,双击COM号进入。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

3.将RSBRS02ABR模块上电,打开手机上对应的软件 nRF connect,查看设备 的MAC 地址,在本例中可以看到RSBRS02ABR设备地址是BA:03:28:1A:74:90。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

4.在Wireshark软件中点击“Device”选择框,在下拉选项框中选择MAC地址为BA:03:28:1A:74:90的设备。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

5.手机端软件nRF connect点击“CONNECT”连接到蓝牙模块

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

6.在手机端软件nRF connect中ffe5-ffe9下拉菜单中发送数据 “rf-star” 到模块。Wireshark软件在模块没有发送数据前,数据包显示是广播包LE LL 格式。Wireshark抓包正确的数据包格式为ATT,我们只需要找到ATT格式数据包,并双击ATT即可查看数据 。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

 

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

7.数据包界面如下图所示,解析出接收到的数据为rf-star,收发一致。说明已经成功抓到该数据

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

我们更换数据,重复上述发送数据进行测试:

1.重复上述操作,手机发送的数据修改为:https://www.szrfstar.com/。Wireshark抓包结果为:

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

2.手机多次向模块发送同一个数据包:“rf-star”,抓包显示的数据如下:

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

三、使用RF-DG-32A硬件对Wireshark抓包测试后,我们再使用TI CC2540 Sniffer抓包工具Packet Sniffer进行测试。

硬件准备CC2540官方USB Dongle硬件以及RF-BM-ND04模块。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

软件准备Android手机端:nRF-connect。

PC端:Packet Sniffer,下载地址为:http://www.ti.com.cn/tool/cn/PACKET-SNIFFER?keyMatch=PACKET%20SNIFFER&tisearch=Search-CN-everything

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

1. 安装好所需软件之后,打开Packet Sniffer,界面选择Bluetooth Low Energy  ,点击下方start。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

 

2.点击star后界面如下所示,设备会自动识别官方USB Dongle设备

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

3.我们点击下方 Radio Configuration 栏,选择广播信道(373839),点击上方的三角形开始按钮搜索附近设备的广播信息

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

4.打开手机APP nrf-connect,查看需要监听设备的地址信息为:BA:03:28:1A:74:90。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

5.点击软件下方Display filter栏, Field Name 中选择 ADV_IND Adva

6.Filter conditon 中输AA1=0x+ BA03281A7490 地址。点击first AA1=会自动增加,后面直接加上MAC地址BA03281A7490,点击 Add 添加该设备。再点击 Apply filter,即可抓到指定MAC地址的包。

实测对比Wireshark利用nRF52832 Sniffer和Packet Sniffer 利用CC2540 Dongle 抓包使用体验

通过上面Wireshark和的对比测试,我们可以看出,Wireshark的抓包体验好于TI公司的Packet Sniffer。

其一:Wireshark在进入抓包前,选择相应的COM口再进入抓包,Packet Sniffer则是通过底部区域选择对应的设备,底部区域占幅较大的设计使得抓包过程数据展示效果和Wireshark相比差很多。Packet Sniffer软件风格和布局过于陈旧,相比Wireshark在软件优化上做的更好。

其二:在Wireshark抓包展示的数据中,可以实时点击数据查看数据结构,双击即可查看底层协议的具体解析。而Packet Sniffer仅仅只能展示拆分的数据结构,展示部分结构的具体数值。相比之下,Wireshark可以完整地展示接收到的数据包的每一个结构的具体数值,堪称完美解析。

其三:Packet Sniffer需要逐条查看哪一条信息是接收到的数据,需要一定分析的方法才能找到正确的数据。而Wireshark提前解析好了每一条数据,可以清楚的知道哪一条是LE LL,哪一条是ATT,需要找到发送的数据包可以直接通过标记ATT的数据找到,非常方便高效,而且数据可以根据时间、协议排序,根据实际的数据查找要求,高效地、清楚地找到。毕竟Wireshark自被开源以来,经过至少数千名开发者的开发优化,使用体验得到很好的优化,免费好用的特性会吸引更多人的去尝试。

综合以上测评体验,如果选择蓝牙抓包软件进行BLE模块测试的话,推荐使用Wireshark。抓包硬件方面,信驰达推出的RF-DG-32A比TI 原厂的CC2540 USB Dongle使用体验更好,大家有兴趣可以尝试一下。