蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法

一、简介

本文讲解如何用USB_dongle如何进行蓝牙数据的抓包。


二、实验平台

协议栈版本:BLE-CC254x-1.4.0

编译软件:IAR 8.20.2

硬件平台:Smart RF(主芯片CC2541),Usb_dongle


版权声明

博主:si_zhou_qun_84342712

声明:喝水不忘挖井人,转载请注明出处。

原文地址:

联系方式:[email protected]

开源四轴群:84342712

开源四轴(淘宝店):

四:基础知识

       蓝牙4.0的开发, 现在真热火的很, 但是用cc2540 usb-dongle如何抓包, 并且, 即使很多朋友到TI官网论坛去找信息,不少朋友依然是无功而返,实际上, 用cc2540 usb-dongle来进行ble数据的抓包,并不像用电脑的wireshark等软件来抓取ip包一样简单。

        我们需要明白的是,ble的广播是可以指定广播信道的,广播信道分别是37、38、39, 但TI的协议栈官方例程里已经默认设置了在广播阶段 同时三个信道一起广播,但是一旦跟主机连接上后,就只在其中的一个信道传输数据,所以我们是要指定其中的一个信道的, 可恶的是, 这个连接上的信道也是随机的, 我们可以在抓取到连接包后, 填入发起者(即是主机)的地址和信道即可。

       下面我们用 TI官方例程  SimpleBLEPeripheral  结合 cc2540 usb-dongle  和  SmartRF Packet Sniffer  软件来实现数据包的抓取和读写

       【1】首先要让开发板跑 SimpleBLEPeripheral , 这里不是重点, 先不说哈。

       【2】然后,把烧录了“ sniffer_fw_cc2540_usb.hex” 固件的 usb-dongle插入到pc, 如果没有安装驱动, 是要安装的驱动的, 但是如果你已经安装了 SmartRF Packet Sniffer 软件, 那么驱动就已经默认安装了。

       【3】 运行 SmartRF Packet Sniffer 。如下图:

蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法_第1张图片

上图, 描述的是, 一旦主机和从机连接上后, 到

这一行, 抓包就不在显示了, 这个时候, 如上填入地址, 并选好信道号, 然后再重新复位从机,主机重新连接,这个时候不一定  SmartRF Packet Sniffer 就能显示到连接后的数据包, 如果不能连接上, 就试试  把  改成 38、 39等等, 多试试几次, 就会出现下面图了。(下图表明抓取到了ble的数据包)

蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法_第2张图片

下面用lightblue进行一个char1的读操作, lightblue读取到了0x04.

蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法_第3张图片

下面用lightblue进行一个char1的写操作, lightblue写入0x01.

蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法_第4张图片

在实际开发中, 这个抓包还是显得比较重要的, 比如android4.3的ble, 目前还不是很稳定,这个时候你又不能确定是不是你代码的问题还是从机的问题, 我们通过抓取空中传递的数据包, 就能确定到底是在主机或从机的问题。

要说的是, 上图当中, 你要问我各个字段都是什么意思, 我还真立刻回答不出来,我们要学会就着问题去找答案,而不是背诵。


你可能感兴趣的:(BLE4.0)