本文说明利用nrf52832 CoreBoard变为nrf sniffer dongle,并在ubuntu下搭建nrf sniffer环境进行BLE抓包。

起因 链接到标题

使用nrf52832跑zephyr做两个IPSP节点想连时,因不懂BLE,IPSP Node无法connect成功的,因此还是回到要先了解BLE。为了方便学习BLE,就手上的nrf52832板子,DIY一个BLE sniff,并附带提供一些pca10040的功能。

硬件 链接到标题

CoreBoard提供了nrf52832的核心板和一个usb转ttl相连,参考pca10040的原理图进行扩展,添加了4个led和4个button

连接 链接到标题

P0.05–CTS–不连接 P0.06–RX–引出 P0.07–RTS–GND P0.08–TX–引出

P0.13–BUTTON1–GND P0.14–BUTTON2–GND P0.15–BUTTON3–GND P0.16–BUTTON4–GND

P0.17–LED1–R-V3.3 P0.18–LED2–R-V3.3 P0.19–LED3–R-V3.3 P0.20–LED4–R-V3.3

P0.21–RST–BUTTON–GND–引出 P0.21–RST–引出 SWDIO–引出 SWCLK–引出 VDD–引出

对外的接口 链接到标题

一个USB,用于sniffer 一个UART 一个SWD Debug 供电

实物图 链接到标题

pcb1.png pcb2.png pcb3.png work.png

pca10040cut 链接到标题

因为是参照pca10040进行了改造提供了部分功能,因此叫做pca10040cut。 pca10040包含的jlink-ob, USB供电, nfc, button,led等功能。在pca10040上面的button和led是带switch功能,可以选择直连PIO或是连接由nrf52832 I2C控制的IO扩展芯片PCAL6408A上。 pca10040cut只保留直连PIO的4个button和4个led功能,加入USB转串口,对外透露SWD接口和供电接口。连接daplink后可以被当做简单的开发板使用。开发板功能不是本文的重点,不说明如何使用。

nrf sniffer 链接到标题

nordic官方支援nrf sniffer的硬件是:PCA10028/PCA10031/PCA10040。nrf sniffer采用wireshark+nrf plug的方式, nrf plug从串口收集解析数据,提供给wireshark进行分析显示。PCA10040是用nrf52832,我的pca10040cut也一样,因此可以作为sniffer tool。下面说明如何将pca10040cut当做sniffer来使用。

Dongle固件烧写 链接到标题

官方提供的Hex文件用jlink进行烧写,我用的daplink所以需要需要先转成bin然后用pyocd烧写

获取固件 链接到标题

下载nRF-Sniffer-v2解压缩后在hex/内找到hex 下载hex2bin,解压缩后使用下面命令将hex转为sniffer_pca10040_51296aa.bin

hex2bin sniffer_pca10040_51296aa.hex

烧写固件 链接到标题

用daplink连接上pca10040cut,daplink插入pc usb口,使用下面命令进行烧写

pyocd-flashtool -t nrf52 -a 0 sniffer_pca10040_51296aa.bin

Wireshak配置 链接到标题

安装插件 链接到标题

下载nRF-Sniffer-v2解压缩后在extcap/下找到插件 启动wireshark,打开帮助 > 关于Wireshark,在文件夹选项卡下查看extcap patch插件路径为

/usr/lib/x86_64-linux-gnu/wireshark/extcap

修改脚本属性,添加可执行

chmod +x nrf_sniffer.py

如图 cfg 将解压缩的extcap内全部内容copy到该文件夹下,重启wireshark,打开视图>接口工具栏>nRF Sniffer 勾选,重启后就可以看到nrf sniffer的工具栏,如下图 sniffer

运行抓包 链接到标题

关闭wireshark,插入pca10040cut通过USB连到电脑,开启wireshark选择有nRF Sniffer:/dev/ttyxxx 选项开始抓包,如图 sniffer_cap sniffer_cap1 sniffer_data

Other 链接到标题

wireshark启动是提示"Lua: Error during loading",不影响使用,但强迫症犯了,修改/usr/share/wireshark/init.lua,倒数第二行为

--dofile(DATA_DIR..”console.lua”) 

参考 链接到标题

https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF-Sniffer