- 由 zhongluqiang创建, 最后修改于5月 22, 2023
Wi-Fi快速配网介绍
一类让不具备人机交互功能的Wi-Fi设备实现配网的技术方案,也称为一键配网、智能配网、无感配网、零配配网、Wi-Fi快连等。
快速配网的目的是让待配网设备获得无线路由器的SSID、密码、加密方式这三项内容,除此外,不同厂商还会根据需要传递一些比如注册token、设备ID、设备类型之类的数据,以便于设备连网成功后向云端发起注册,或是便于在局域网内发现当前设备。
目前市面上存在着众多的快速配网方案,这些方案实现原理大体一致,都是让待配网的Wi-Fi设备处在监听模式(也称为混杂模式),通过监听无线信道中特定的网络包,来实现获取配网信息的目的,含有配网信息的网络包一般由已连接路由器的APP发出,或是由路由器本身发出,或是局域网内其他已配网的同类设备发出。
由于无线路由器的工作信道是固定的,而待配网的设备并不知道路由器的工作信道,所以设备一般需要逐个扫描所有的信道,通过检测当前信道是否存在的一些事先约定的具有明显特征的网络包,来锁定真正用于配网的信道。配网信息发送方除了要发送配网包,还要发送一些具有明显特征的包,以便于设备锁定信道。锁信道策略的好坏,将直接影响快速配网的速度。
除了信道锁定,快速配网还要具有纠错和抗丢包能力,因为无线信道是共用的,设备有可能收到其他设备发出的具有配网包特征、但并非配网包的数据包,这就要求算法具有纠错能力,不能返回错误的配网信息。同时,无线信道也是复杂的,设备在接收配网包时有可能丢包,这就要求算法要有抗丢包能力,考虑一轮接收不到全部配网包的情况下,要能够通过多轮接收来获得全部配网包。
信道扫描+锁信道方式的快速配网一般用于2.4G Wi-Fi,5G频段由于信道数量多且信道绑定复杂,信道扫描并不合适,这时可以使用管理帧配网,比如向路由器发起Probe请求时携带一些定制字段,路由器收到带有定制字段的Probe请求时在Probe响应中嵌入配网信息字段,但这种方式缺点也显而易见,那就是路由器端的程序也要定制,普通的路由器不支持。
以下是一些Wi-Fi快速配网的方案示例:
方案名称 | 厂家 | 配网技术 | 备注 |
---|---|---|---|
HiLink | 华为 | ||
FastConfig | 雄迈 | 广播+组播配网 | 只支持2.4G频段,需要扫描信道,方案通用,任何路由器都可以实施。 |
BeaconConfig | 雄迈 | beacon包配网 | 路由器将配网信息写在beacon包中,设备扫描beacon包获取配网信息。 缺点:私有协议,路由器和设备端程序都要定制。 |
Pegasus配网 | 涂鸦 | 管理帧配网 | 采用802.11协议中Beacon/Probe Request/Probe Response帧实现待配网设备无感配网,支持2.4G/5G频段,无需扫描信道,缺点是路由器需要定制,比如路由器要能够在Probe Response中嵌入配网信息。 缺点:私有协议,路由器和设备端程序都要定制,且设备端对Wi-Fi协议栈的操作性要求较高。 |
AirKiss配网 | 腾讯 | 广播+组播配网 | 参考:物联网开发平台 AirKiss配网开发-设备端开发指南-文档中心-腾讯云 |
零配配网 | 阿里云 | 通过局域网内已配网的设备对未配网的设备进行配网 | 参考:Wi-Fi设备配网方案介绍-零配配网 |
ESP-TOUCH | 乐鑫 | 广播+组播配网 | 参考:ESP-TOUCH编码规则及解码 |
SmartConfigTM | 德州仪器 | 广播+组播配网 |
除了上述方案,还有以下方案也可以实现设备配网:
配网方案 | 说明 |
---|---|
二维码配网 | 摄像头类产品使用,扫描含有配网信息的二维码实现配网。 |
AP配网 | 待配网设备先切换到AP模式,手机连接设备AP热点后输入路由器SSID和密码,设备收到后再切换回STA模式并连接指定路由器。 |
声波配网 | 参考链接:给摄像机远程配网,原理是手机将配网信息编码到音频声波中,待配网设备通过识别音频信号来获取配网信息。 |
蓝牙辅助配网 | 通过蓝牙发送配网信息。 |
WPS配网 | 这是WPA标准支持的配网方式,有按键和pin码两种模式,按键模式下,设备进WPS配网状态后,路由器上按下WPS按键即可完成配网,pin码模式下,设备进WPS配网状态后,输入路由器上指定的pin码可以完成配网。 |
路由器私有协议配网 | 以小米快连为例,路由器内置私有的配网协议,可实现小米生态链设备零配置配网,并且路由器修改密码后设备可自动同步密码。这为方案的本质其实也是管理帧配网或广播+组播配网。 |
NFC触碰配网 | 路由器内置NFC芯片并写入配网信息,设备扫描NFC后获取配网信息。 |
参考链接:
广播+组播快速配网原理
配网原理
已连接无线路由器的APP重复向局域网发送广播和组播配网信息包,待配网设备切到监听模式并逐个扫描所有Wi-Fi信道,通过配网特征包定位到路由器所在的Wi-Fi信道,再接收配网包,待所有的配网包都收齐后,解析其中的SSID、密码、加密方式并连网。
由于使用广播+组播的方式,所以在实现上只能使用UDP,而不能使用TCP,也就是将配网信息编码到广播或组播的UDP报文中,再发送出去。
为什么不使用单播?
这点保留疑问,理论上单播应该也是可行的,因为Wi-Fi通信是大喇叭模式,单播的Wi-Fi报文从天线上发出来后,附近所有设备都可以收到。
可以解释的地方是,Wi-Fi单播需要明确指定对端的MAC地址,这个MAC地址对于待配网设备来说是未知的,不能用于锁定配网包,另一方面局域网内可能并不存在其他设备,无法发起有效的单播,而随便向一个不存在的地址发起单播,则数据有可能被路由器丢弃,导致配网成功率降低。
广播和组播则没有上面的问题,广播是APP发出后,无线路由器会向局域网内的所有设备都转发报文,组播是无线路由器会向局域网内特定的某些设备转发报文,不管局域网内有没有其他设备,无线路由器都会转发报文,这就可以大大提高配网成功率。
配网信息怎么在配网包中表示?
最直接的想法是将配网所需的SSID、密码、加密方式写入到Wi-Fi帧的数据部分,设备收到数据帧后,再从帧数据中取出SSID、密码和加密方式,然而这种方式是行不通的,除非是开放网络,否则所有Wi-Fi报文的数据都是加密过的,不可能从中解析出配网信息。这点和以太网通信不一样,在以太网中,用wireshark抓包得到的报文,其数据部分是未加密的明文。
既然不能通过Wi-Fi帧数据来传递配网信息,那就只能通过其他的内容来传递了。参考前面的Wi-Fi帧结构,除去帧数据,一个Wi-Fi报文中可变的部分就只有几个地址字段了,所以我们可以将配网信息嵌入到地址字段中。除此外,整个Wi-Fi报文的长度也可以用来传递信息,即将配网信息嵌入到报文的长度中。
广播配网原理
通过广播包的长度来携带配网信息。
组播配网原理
通过组播包的地址来携带配网信息。
网络包的数据部分都是加密过的,将配网信息写在数据部分的路走不通。
注意点:
- 机密性,配网包很容易截获,要使得配网信息不容易被破解。
- 加密内容尽量短,比如典型的异常加密,不增加长度。
- 抗丢包性,考虑一轮接收不到全部配网包的情况下,要能够多轮接收配网信息。
- 方便接收端锁定信道。
- 兼容性,不同的路由器,不同的加密方式,都要能够适配,考虑WPA3能否跑通快速配网,WPA3PSK肯定使用的也是AES加密,和WPA2PSK长度理论上应该是一样的,这两者会不会无法区分,还有WPA3 SAE认证和OWE认证等等。
Q&A:
- 为什么不需要输入认证方式?
广播+组播快速配网实现
发送的数据包不能超过802.11帧最大长度2346字节,否则会被分片。
可以考虑Wi-Fi设备配网适配开发这样的实现,将HAL接口实现与算法分离,定义一套通用的快速配网算法,在适配不同的Wi-Fi设备时,只要实现其对应HAL接口即可,涂鸦好像也是这么做的。
广播+组播快速配网方案注意点
无线路由器不转发组播包,但大概率会发送广播包。
设备既可能收到APP发出的配网包,也可以收到路由器转发的配网包。
锁信道,纠错,抗丢包(重复发能力)。
配网什么时候结束?APP怎么检测设备已经配好网了?
- 无标签