Using a special firmware image provided by Nordic Semiconductor and the open source network analysis tool Wireshark, an Adafruit nRF52840 board can be used as a low cost Bluetooth Low Energy sniffer.
Once things are all setup, usage is fairly easy. However, there are numerous separate items that need to be installed and configured. So the initial setup can be a bit cumbersome.
This guide will go through each step, but it can also help to have a general understanding of the overall setup.
Here's a simplified diagram:
Here's a summary of all the parts needed:
- The actual BLE sniffing hardware, this guide use an Adafruit nRF52840 board running sniffer uf2 firmware.
- nRF52840 native USB shows up as virtual serial (cdc)
- The BLE sniffing plugin uses Python.
- To talk to the virtual com port from Python, the pyserial module needs to be installed.
- Wireshark is the main software front end used to facilitate BLE sniffing and decoding.
- To talk to the BLE sniffer from Wireshark, the Nordic Semiconductor nRF Sniffer for BLE plugin is used.
These parts come from different sources - at least 5 different vendors are shown in the diagram above. So this will be quite the journey.
In order to use your nRF52840 board as sniffer hardware, you need to flash the sniffer firmware on your board first. Click the link below to download the Sniffer UF2 firmware file.
Double-click the Reset button on your board, and you will see the NeoPixel RGB LED turn green (identified by the arrow in the image). If it turns red, check the USB cable, try another USB port, etc.
Note: on nRF52840 USB Key with TinyUF2 (PID 5199) you need to hold its button while plugging into your PC.
You will see a new BOOT disk drive appear e.g FTHR840BOOT.
Drag the sniffer_nrf52840dongle_4.1.0.uf2 file to FTHR840BOOT.
The LED will flash. Then, the FTHR840BOOT drive will disappear and a new device with a virtual com port appear
Bus 001 Device 018: ID 1915:522a Nordic Semiconductor ASA
That's it, you have successfully converted your board into a BE sniffing device and it's ready to use.