nRF Sniffer 環境搭建
說明:此文檔參考nordic官方文檔《nRF_Sniffer_UG_v2.2.pdf》制作,針對里面描述不是特別詳細的地方做了補充。Sniffer是嗅探器的意思,也就是監聽的意思,可以通過sniffer來抓取我們的手機和我們開發的藍牙從端設備的空中數據來協助分析問題,從而加快開發進度。
此文只介紹環境的搭建,具體怎么使用wireshark和sniffer抓取數據,請參閱《Wireshark配合nRF Sniffer使用技巧.docx》一文。
監聽架構:
- 1. 需要硬件
要想實現抓包,至少要有一個nordic的開發板,將它刷入特定的sniffer固件,制作成一個sniffer才行,我們可以使用如下的板子:
• nRF51 Development Kit (PCA10028) v1.0 or later and a micro USB cable(nrf51422)
• nRF51 Dongle (PCA10031)(nrf51422)
• nRF51822 Evaluation Kit (PCA10001) and a mini USB cable
• nRF51422 Evaluation Kit (PCA10003) v3.0.0 or later and a mini USB cable
• nRF51822 Development Kit dongle (PCA10000)
• nRF52 Development Kit (PCA10040) and a micro USB cable(nrf52832)
- • nRF52840 Development Kit (PCA10056) and a micro USB cable
你會發現nrf51822、nrf51422、nrf52832和nrf52840等藍牙芯片均可以制作成sniffer,但是他們均需要刷入不同的固件程序,並且nrf51822和nrf51422硬件最多支持到藍牙4.2的版本,而nrf52832和nrf52840可以支持到藍牙5.0版本。
- 2. Windows版本需要軟件
(1) nRF Sniffer software v2.x or later ,包含了jlink驅動等,下載網址:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Sniffer/Download#infotabs
下載圖示:
(2)Wireshark v2.4.6 or later.下載: https://www.wireshark.org/#download
下載圖示:
(3)python v2.7.x https://www.python.org/downloads/release/python-2716/
注意:這個不能用最新的python版本,否則可能無法使用。
下載圖示:
• pyserial v3.4 or later
pyserial一般不用下載,安裝python后用命令即可安裝此插件,后續會介紹。
按照以上網址和圖片所示的位置下載以上三個軟件即可,准備后續使用。下圖是我下載的:
文件介紹:
nrfsniffer200beta312oct20181c2a221.zip解壓后如下圖所示:
- 3. 軟件安裝與配置
注意:安裝步驟不要變,否則可能安裝失敗。
(1) 安裝wireshark:
雙擊Wireshark-win64-3.0.1.exe進行安裝,一路next,選中下圖桌面創建快捷方式:
如下圖,選中USBPcap並進行安裝:
剩下就是一路允許和接受,直到安裝完畢,然后重啟計算機。
(2) 配置wireshark環境:
打開wireshark->幫助->關於wireshark->文件夾->雙擊打開Extcap路徑,如下所示:
解壓nrfsniffer200beta312oct20181c2a221.zip文件,將里面的extcap文件夾里的四個文件復制到剛剛打開的這個wireshark的extcap路徑下,如圖所示為復制完畢的效果圖:
然后雙擊wireshark里的個人配置的網址,如下圖所示:
在彈出的文件夾下打開profiles文件夾,然后將解壓的nrfsniffer200beta312oct20181c2a221.zip文件中的Profile_nRF_Sniffer_v2_001文件夾拷貝到profiles文件夾中,如下圖為拷貝完畢的效果圖:
(3) 安裝python:
雙擊python-2.7.16.amd64.msi進行安裝,一路next,直到如下界面:
此處需要選擇該項,即添加環境變量,然后一路next即可,直到安裝完畢。
(4) 安裝pyserial v3.4:
按下鍵盤的Windows鍵和R鍵調出運行,然后輸入cmd后回車,則進入命令行界面(注意以管理員身份運行cmd,我的默認就是管理員身份,如果不是,請百度“如何以管理員運行cmd”),cmd窗口輸入“pip --version”命令,查詢python的pip版本,如下所示,則代表已經正常啟動pip且版本號為18.1:
輸入”python –m pip install –upgrade pip”命令,更新一下pip,如下所示則更新成功:
輸入“cd C:\Program Files\Wireshark\extcap”命令,將cmd操作界面定位到“C:\Program Files\Wireshark\extcap”目錄下,注意,這時wireshark安裝目錄的extcap目錄,也就是剛剛我們往這里拷貝四個文件的地方,wireshark安裝目錄不同,此路徑可能不同,請自行調整,切換后如下:
(如果切換不順利,也可直接通過在C:\Program Files\Wireshark\extcap文件夾下按住shift按鍵的同時,鼠標右單機空白處,在彈出的菜單中選擇“在此處打開命令窗口”來進行切換。)
切換目錄后,輸入“pip install -r requirements.txt”命令,則會自動啟動pyserial v3.4的安裝,成功后如下圖所示:
(5) 安裝jlink.exe
在nrfsniffer200beta312oct20181c2a221.zip解壓縮后的文件夾內有個
segger_jlink文件,打開里面的segger_jlink_v6_34b,雙擊JLink_Windows_V634b.exe進行安裝,一路next即可安裝完畢。
如果上述步驟都正確完成,電腦端的開發環境基本就搭建完畢了。
- 4. 開發板的設置:
不同的開發板需要燒錄不同的hex文件才能成為sniffer,hex文件放在nrfsniffer200beta312oct20181c2a221.zip解壓縮后的hex文件夾中,如下圖所示:
我們以圖中pca10056為例進行說明,即52840的板子,該板子可支持藍牙5.0的抓包。
我們要將sniffer_pca10056_1c2a221.hex下載到pca10056的板子上。這里可以采用多種方式,例如使用jlink命令下載,也可以用nordic的nrfjprog動態庫命令下載,也可以通過nrfgo studio界面化工具下載,但無論采用哪種方式,都要先擦除芯片,再燒錄程序。
首先,我們以jlink.exe為例進行說明:
- 用USB數據線將PCA10056開發板和電腦連接;
- 打開J-Link Commander V6.43b;
- 輸入connect;
- 輸入問號:‘?’
- 在彈出的對話框選擇nrf52840(因為pca10056是這個芯片,其它板子選對應的即可。)然后點擊ok即可。
- 輸入s選擇SWD接口:
- 速率默認即可,直接回車;
- 然后擦除芯片,輸入erase,然后回車即可,此過程稍長,耐心等待;
- 然后下載文件,輸入: loadfile “d:\ sniffer_pca10056_1c2a221.hex”,回車,這里我為了少輸入數據,將hex文件直接放到了d盤的根目錄了,可自行調整。
- 輸入r重啟52840;
- 輸入g使52840運行程序。
完整圖如下:
然后,我們以nrfgo studio為例進行說明:
如圖所示,識別的開發板后,先erase all, 然后選擇program application選項卡,然后選擇對應的hex文件,然后點擊program進行下載即可,比較簡單。
- 5. 驗證sniffer是否安裝成功:
上述准備完畢,再打開wireshark,則會出現nRF Sniffer字樣的東西,如下圖所示,則說明安裝成功了,后面就可以使用此環境進行抓包了。如果未能安裝成功,請仔細核對以上所有步驟是否有未操作正確的。