此篇討論如何使用EFR32 sniffer 功能(packet trace)
使用usb線 SOC mode篇
優點:
1.Silicon lab packet trace承襲至ember,使用者買了zigbee 開發套件就會附加有相關功能,不需要額外付費
2.可以透過此功能,確定設備本身真的有收到封包,一般有經驗的RD會發現,旁邊的sniffer收到但自己寫的設備不見得收得到,狀況有很多種,例如設備其實已經睡著了,用此功能可以釐清此問題
3.設備本身有sniffer功能,收到封包的RSSI LQI是真實的,如果是旁邊的sniffer收到,RSSI,LQI只能拿來當參考依據.
4.packet trace功能可以在多片板子同時開啟,甚至可以跟ember Em35x系列同時使用,抓封包會更完善
缺點:
1.EFR32目前無法單純當sniffer,亦即必須搭配zigbee FW,只能解出本身的封包,詳細可以參考這一篇文章
EFR32 be a sniffer
準備工具:
EFR32 底板BRD4151A
準備兩塊BRD4151A板子,
然後分別燒錄 HaSampleGateway and HaSampleLight
此兩個sample只有在ZNET5.9.x以及之前的版本才有,在之後的版本進化到Z3Light.
古老的HaSample code 影片Demo...純分享
HaSample Demo
分別燒錄至兩塊板子
燒錄完成後開啟SSV4在如下位置圈選兩塊板子點選connect,
接著再選擇Launch Console
圈選兩塊板子選擇Start Capture
畫面稍微調整一下...
可以嘗試在console輸入help, or info,確認console可以work
我們先在Gateway端形成zigbee 網路
指令如下
network form [channel:1] [power:1] [panId:2]
- Create a network on the given channel, power and panId.
- channel - INT8U - The channel on which to form the network
- power - INT8S - One byte signed value indicating the TX power that the radio should be set to
- panId - INT16U - Two byte pan id for the network
接著 gateway permit join
network pjoin [seconds:1]
- Permit joining on the network for a given number of seconds
- seconds - INT8U - Number of seconds during which devices will be allowed to join the network. A value of 0xff turns permit joining on permanently
最後HaSampleLight找網路
network find joinable
- Begin a search for a joinable network. Will automatically attempt to join the first network that it finds.
看到如下圖
Sniffer分成三個主要畫面,上半段為淺顯易懂的圖形化,
下面為單獨的封包,包含802.15.4的ack
中間為下層整理過的封包
如果單獨點選下層一個封包可以觀察到每個byte代表的意思
下圖,例如我們可以由這邊確定設備因為看到permit association 所以才會接著做association 的動作.
要觀察封包RSSI以及收發狀態,可以參考下圖開啟"Radio info"功能,
下圖觀察此Beacon是由誰送誰收
此檔案也可以分享給原廠或相關人員進一步debug
在存檔前必須再做一個動作將NWK key加入
這樣存檔給對方對方才可以解開加密過的message
存的附檔名為.isd
silicon lab packet trace 功能在debug上蠻實用的!!