1. 程式人生 > >wifi一鍵配網smartconfig原理及應用

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,這樣可以提高配置效率