藍牙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 。如下圖:


上圖, 描述的是, 一旦主機和從機連接上後, 到

這一行, 抓包就不在顯示了, 這個時候, 如上填入地址, 並選好信道號, 然後再重新復位從機,主機重新連接,這個時候不一定  SmartRF Packet Sniffer 就能顯示到連接後的數據包, 如果不能連接上, 就試試  把  改成 38、 39等等, 多試試幾次, 就會出現下面圖了。(下圖表明抓取到了ble的數據包)


下面用lightblue進行一個char1的讀操作, lightblue讀取到了0x04.


下面用lightblue進行一個char1的寫操作, lightblue寫入0x01.


在實際開發中, 這個抓包還是顯得比較重要的, 比如android4.3的ble, 目前還不是很穩定,這個時候你又不能確定是不是你代碼的問題還是從機的問題, 我們通過抓取空中傳遞的數據包, 就能確定到底是在主機或從機的問題。

要說的是, 上圖當中, 你要問我各個字段都是什麼意思, 我還真立刻回答不出來,我們要學會就着問題去找答案,而不是背誦。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章