wifi一鍵配網smartconfig原理及應用

智能家居/家電現階段還處於普及階段,由於家庭wifi網絡的普及,目前普遍採用wifi與路由器完成連接,與手機/雲端進行數據交互.

智能硬件,如智能插座,智能空調,智能空氣淨化器由於不具備人機交互界面,不能像電腦一樣的搜索/選擇指定路由器,輸入連接密碼的界面,所以必須先解決正確連接路由問題;

目前流行的wifi配置模式一般有以下2:

1:智能硬件處於AP模式,手機用於station模式,手機連接智能插座的AP後組成局域網,手機發送需要連接路由的SSID及密碼至智能插座,智能硬件主動去連接指定路由後,完成連接

2:一鍵配置(smartconfig)模式:智能硬件處於混雜模式下,監聽網絡中的所有報文;手機APPSSID和密碼編碼到UDP報文中,通過廣播包或組播報發送,智能硬件接收到UDP報文後解碼,得到正確的SSID和密碼,然後主動連接指定SSID的路由,完成連接

以上兩種方式都可以達到讓智能硬件連接至指定路由的效果,但是AP模式需要手動切換手機wifi連接的網絡,先連接智能硬件的AP網絡,配置完成後再恢復連接正常wifi網絡.有一定的複雜性;

但是smartconfig由於路由器品牌及手機品牌衆多,存在一定的兼容性問題,所以目前一般廠家仍保留AP模式,作爲smartconfig失敗後的備用配網方案;

下面重點講解一下一鍵配置模式原理及應用;當前主流IOTwifi方案有:

 

廠商

芯片方案

技術名稱

發包方式

1

TI 

CC3200

SmartConfig

往某一固定IPudp

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.11MAC幀格式,可以知道,鏈路層載荷數據(即網絡層的頭部及網絡層數)在數據幀中是清晰可見的,只要接到到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幀格式分析中獲知,無線信號監聽方的角度來說,不管無線信道有沒有加密,DASALENGTH LLCSNAPFCS字段總是暴露的,因此信號監聽方可以從這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信道,只需輪流掃描channel1channel6,這樣可以提高配置效率

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