wifi一鍵配網smartconfig原理及應用
智慧家居/家電現階段還處於普及階段,由於家庭wifi網路的普及,目前普遍採用wifi與路由器完成連線,與手機/雲端進行資料互動.
智慧硬體,如智慧插座,智慧空調,智慧空氣淨化器由於不具備人機互動介面,不能像電腦一樣的搜尋/選擇指定路由器,輸入連線密碼的介面,所以必須先解決正確連線路由問題;
目前流行的wifi配置模式一般有以下2種:
1:智慧硬體處於AP模式,手機用於station模式,手機連線智慧插座的AP後組成區域網,手機發送需要連線路由的SSID及密碼至智慧插座,智慧硬體主動去連線指定路由後,完成連線
2:一鍵配置(smartconfig)模式:智慧硬體處於混雜模式下,監聽網路中的所有報文;手機
以上兩種方式都可以達到讓智慧硬體連線至指定路由的效果,但是AP模式需要手動切換手機wifi連線的網路,先連線智慧硬體的AP網路,配置完成後再恢復連線正常wifi網路.有一定的複雜性;
但是smartconfig由於路由器品牌及手機品牌眾多,存在一定的相容性問題,所以目前一般廠家仍保留AP模式,作為smartconfig失敗後的備用配網方案;
下面重點講解一下一鍵配置模式原理及應用;當前主流IOT的wifi方案有:
廠商 |
晶片方案 |
技術名稱 |
發包方式 |
|
1 |
TI |
CC3200 |
SmartConfig |
往某一固定IP發udp包 |
2 |
高通 |
QCA4004/QCA4002 |
SmartConnection |
|
3 |
聯發科MTK |
MTK7681 |
SmartConnection |
組播地址編碼 |
4 |
MARVELL |
MC200+8801/MW300 |
EasyConnect |
組播地址編碼 |
5 |
Reltek |
AMEBA |
SimpleConfig |
組播地址編碼 |
6 |
樂鑫 |
Esp8266 |
SmartConfig |
組播,通過長度編碼 |
7 |
新案線 |
NL6621 |
SmartConfig |
組播地址編碼 |
8 |
微信 |
AirKiss |
全網廣播,通過長度編碼 |
這個功能最早是TI提出並應用於CC3200上;不過從原理上講,只要晶片驅動支援開啟混雜模式(WiFi Promiscuous),就可以支援一鍵配網功能,只是各個廠家叫法及實現編碼方式不同而已;
手機編碼傳送採用有UDP組播或廣播,不同的傳送方式和編碼,對應的解碼過程也不一樣.,當前測試發現,微信是通過UDP廣播包實現的;TI是通過往一固定IP地址傳送udp包;其他晶片廠家提供的一般為UDP組播方式;
由於無線資料傳播必定是廣播的,所以必然可以被監聽到;如果AP沒有加密的話,UDP直接可以把相關的資訊傳送出來.但是路由器AP一般都是加密的,而且加密方式不固定.wifi模組在無法直接解析出資料包
我們通過分析802.11的MAC幀格式,可以知道,鏈路層載荷資料(即網路層的頭部及網路層數)在資料幀中是清晰可見的,只要接到到802.11幀就可以立刻提取出載荷資料.
常見兩種資料幀格式:
Station to AP
AP to Station
DA:目標MAC地址
SA:源MAC地址
LENGTH:表示後面資料的長度
LLC:表示LLC頭
SNAP:表示3byte的廠商程式碼和2byte的協議型別表示
DATA:載荷資料
FCS:幀檢驗序列
傳送端:可以採用2種不同的編碼傳送方式UDP廣播和組播;
一:UDP廣播:小規模測試後,發現當前只有微信的AirKiss採用了全網廣播模式,為啥微信會採用廣播模式,原因未知;TI採用的是固定IP地址的UDP資料包,原理和微信基本一致;
從802.11幀格式分析中獲知,無線訊號監聽方的角度來說,不管無線通道有沒有加密,DA、SA、LENGTH 、LLC、SNAP、FCS欄位總是暴露的,因此訊號監聽方可以從這6個欄位獲取有效資訊.從傳送方講,由於作業系統的限制,如果採用廣播只剩下LENGTH傳送方可通過改變其所需要傳送資料包的長度進行控制.所以只要指定出一套利用長度編碼的通訊協議,就可利用資料包的Lenght欄位進行資料傳遞;
二:UDP組播:
組播地址是保留的D類地址從224.0.0.0-239.255.255.255
IP地址與MAC地址對映關係為:將MAC地址的前25位設定為01.00.5e,而MAC地址的後23位對應IP地址的位;
故傳送端可以將資料編碼在組播ip的後23bit中,通過組播包傳送,接收端進行解碼即可;
接收端進入一鍵配置功能後,wifi智慧硬體從通道1開始監聽路由上的資料,如當前監聽通道有符合規則的資料包,就停止通道切換,停留在當前通道接收完全部資料.否則就依次切換至通道2.3.4....直到通道14後又從通道1開始繼續監聽依次迴圈;
當然,wifi智慧硬體可以在開啟混雜模式之前,先行掃描當前環境下存在的AP獲取所有當前AP的通道,然後只對當前掃描到的通道進行依次監聽,如當前環境下只存在2個路由,分別在1.6通道,只需輪流掃描channel1和channel6,這樣可以提高配置效率