蓝牙4.0BLE cc2540 usb-dongle的 SmartRF Packet Sniffer 抓取数据方法 【原创,多图】
(仅仅公布于csdn博客, 如需转载,请注明出处,谢谢! )
蓝牙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 。
例如以下图:
上图, 描写叙述的是, 一旦主机和从机连接上后。 到
这一行, 抓包就不在显示了, 这个时候, 如上填入地址, 并选好信道号, 然后再又一次复位从机,主机又一次连接。这个时候不一定 SmartRF Packet Sniffer 就能显示到连接后的数据包, 假设不能连接上, 就试试 把 改成 38、 39等等, 多试试几次, 就会出现以下图了。(下图表明抓取到了ble的数据包)
以下用lightblue进行一个char1的读操作, lightblue读取到了0x04.(lightblue是ios上非常牛的一个软件, 假设不知道。 能够先看看我先前的文章哈,
http://blog.csdn.net/mzy202/article/details/23600587)
以下用lightblue进行一个char1的写操作, lightblue写入0x01.