专栏:《WiFi 嵌入式物联网开发全套实战》 专栏定位:嵌入式 Linux/ESP32 WiFi 从原理→驱动→配网→协议→稳定性→抓包调试→量产优化全套工业实战适配:物联网设备、智能家居、工控网关、无线透传设备、4G+WiFi 双模设备 💖 点赞 + 收藏 + 关注,嵌入式 WiFi 量产实战全套教程持续更新!
本章前言
上一章讲解了广播、组播、SmartConfig 三类一键配网方案,ESP‑Touch(乐鑫 SmartConfig)与 AirKiss(微信配网)是 IoT 产品落地最高频的两套配网协议。绝大多数开发者只调用esp_smartconfig组件 API,demo 跑通就认为配网功能完成。 到量产阶段就会遇到各类疑难问题:部分手机配网概率低、偶现解码失败、部分路由器环境完全无法配网、解码得到错误 WiFi 账号密码。只修改超时参数根本无法定位根因,必须下沉到空口抓包层面,看懂报文序列、编码规则、完整交互流程。
本章从协议定义、编码逻辑、空口报文特征、Wireshark 抓包实操、完整交互时序、真实故障抓包案例逐层拆解。读完本章你可以独立完成配网问题定位,看懂空中报文,也可以为其他芯片平台移植同类配网协议。
前置阅读:第 17 章 WiFi SmartConfig 一键配网代码实现、第 21 章广播配网、组播配网、SmartConfig 原理对比、第 33 章 Wireshark 无线抓包环境搭建。
22.1 ESP‑Touch 与 AirKiss 基础概念
22.1.1 ESP‑Touch
ESP‑Touch 是乐鑫定义的一键配网协议,也就是常说的 SmartConfig。 核心设计思路:有效信息不放在 UDP 的 Payload 载荷内,而是编码在 UDP 报文总长度字段,Payload 填充随机无效数据。 手机 APP 把 SSID、密码、校验信息转换成一组不同长度的 UDP 数据包,同时发送广播报文、组播报文两条数据流做冗余,提升复杂环境下配网成功率。 ESP32 设备切换到 WiFi 混杂监听模式,循环扫描 2.4G 全部信道,捕获空中 UDP 报文序列,依靠报文长度还原 WiFi 账号密码。
22.1.2 AirKiss
AirKiss 是微信硬件平台推出的配网协议,适配微信小程序、公众号,用户无需安装独立 APP 即可完成设备配网。同样采用 UDP 长度编码,但是前导特征序列、默认组播地址、CRC 校验算法和 ESP‑Touch 存在差异。 ESP‑IDF 的 smartconfig 组件内置兼容模式,设置SC_TYPE_ESPTOUCH_AIRKISS即可解析 AirKiss 报文。
硬性共同约束
- 两套协议仅支持 2.4GHz 频段。手机连接 5G 频段时,配网报文运行在 5G 信道,工作在 2.4G 监听的设备完全接收不到报文。
- 设备需要轮询切换 1‑13 信道,只有设备监听信道与手机工作信道一致,才能捕获配网数据流。
- 报文载体为 UDP,Payload 不承载有效业务数据,全部信息存储在 UDP 报文长度。
22.2 ESP‑Touch 协议完整编码原理
22.2.1 UDP 长度编码底层逻辑
UDP 完整报文构成:IP 头部 20 字节 + UDP 头部 8 字节 + UDP Payload。 UDP 总长度 = 20 + 8 + Payload 长度。 协议利用 UDP 总长度的数值映射原始数据字节,设备抓包读取 UDP 长度字段,不需要解析 Payload 内容,还原出 SSID、密码。
整套配网报文数据流分为三大部分:前导序列 (Preamble)、数据载荷序列、CRC 校验序列。
- 前导序列:一组固定长度特征 UDP 包。设备捕获该组特征包,识别到配网数据流到来,停止信道轮询,锁定当前信道接收后续报文。前导包丢失则设备无法识别配网开始,直接导致配网失败。
- 数据载荷序列:依次编码 SSID 长度、SSID 原始字节、WiFi 密码长度、密码字节、版本信息、预留字段。
- CRC 校验序列:对 SSID + 密码做 CRC 计算。2.4G 环境干扰会造成报文乱序、丢包,CRC 校验不通过直接丢弃解析结果,设备继续等待新一轮配网数据流,避免解析出错误账号密码。
22.2.2 ESP‑Touch 设备完整工作时序
- 应用层调用
esp_smartconfig_start(),WiFi 切换混杂监听模式,关闭 STA 连接; - 设备循环遍历 2.4G 1‑13 信道,每个信道维持几十毫秒停留时间;
- 在某一信道捕获 ESP‑Touch 前导特征报文,终止信道切换,锁定当前信道接收完整报文流;
- 持续接收报文序列,依据 UDP 长度还原 SSID 与密码,执行 CRC 完整性校验;
- CRC 校验通过,抛出
SC_EVENT_GOT_SSID_PSWD事件,上层拿到 WiFi 账号密码; - 调用
esp_smartconfig_stop()退出混杂监听模式,恢复 WiFi 硬件正常状态; - WiFi 切换为 STA 模式,发起和目标路由器的扫描、认证、关联流程;
- STA 成功获取 IP 地址之后,设备向手机发送 UDP 应答报文,通知 APP 配网完成;
- APP 收到应答包,结束配网交互。
⚠️ 量产坑点:拿到
SC_EVENT_GOT_SSID_PSWD事件之后,必须调用 esp_smartconfig_stop ()。不关闭混杂监听,WiFi 硬件状态异常,STA 模式会出现各类诡异连接故障。
22.3 AirKiss 协议和 ESP‑Touch 关键差异
AirKiss 同样采用 UDP 长度编码,但多处细节和 ESP‑Touch 不兼容:
- 默认组播地址:
239.255.255.250,端口固定10000; - 前导 Preamble 特征报文序列完全不一样,ESP‑Touch 模式下无法识别 AirKiss 数据流;
- CRC 校验算法实现不同;
- 应答机制:设备联网成功之后发送组播应答包给到微信小程序。
工程风险:AirKiss 受微信版本、iOS / 安卓系统权限管控,存在较多兼容性问题,量产产品禁止把 AirKiss 作为唯一配网途径。
22.4 Wireshark 空口抓包实操
22.4.1 抓包环境准备
- 支持 Monitor 监听模式的 USB 无线网卡,手动锁定路由器 2.4G 信道,禁止网卡自动跳信道;
- 手机连接路由器 2.4G WiFi,启动 APP 开始发送配网;
- 开启 Wireshark 抓包,保存 pcap 文件用于事后分析。
关键提醒:网卡信道必须和手机所在信道保持一致,自动信道切换会直接漏掉配网报文。
22.4.2 Wireshark 过滤语法
ESP‑Touch(广播 + 组播混合)
udp and !udp.port == 53AirKiss 专用过滤规则
udp.port == 10000 && ip.addr == 239.255.255.25022.4.3 抓包识别配网数据流特征
- 配网触发后,空中会出现短时间密集爆发的大量 UDP 小包;
- Wireshark 查看
UDP length字段,可以看到规律性变化的长度数值序列,这就是编码信息; - 数据流开头出现一组固定长度报文,就是前导 Preamble 序列;
- 如果抓包看不到密集 UDP 报文:手机处于 5G 频段;APP 异常;路由器广播 / 组播抑制丢弃报文。
22.4.4 抓包定位三类典型故障现象
- 抓包存在完整配网报文,设备始终不触发 SC_EVENT_GOT_SSID_PSWD根因:设备信道轮询和手机信道没有命中;空口干扰丢失前导特征包;CRC 校验失败丢弃解析结果。
- 抓包完全看不到手机发出配网 UDP 报文根因:手机连接 5G WiFi;APP 异常;路由器开启广播风暴抑制、IGMP 关闭,报文被路由器直接丢弃。
- 设备解析出 SSID 密码,但是 STA 连接路由器失败根因:无线干扰报文错乱,CRC 偶现失效,解析得到错误账号密码;抓包核对解析出来的 SSID、密码字符串。
22.5 ESP‑IDF 核心事件与代码片段
esp_smartconfig_config_t sc_cfg = { .type = SC_TYPE_ESPTOUCH, // ESP‑Touch模式 //.type = SC_TYPE_ESPTOUCH_AIRKISS, // 切换AirKiss兼容模式 }; esp_smartconfig_start(&sc_cfg);SmartConfig 核心事件说明
SC_EVENT_START:配网模块启动,开始信道扫描监听SC_EVENT_GOT_SSID_PSWD:解码成功,获取 SSID 和密码SC_EVENT_FAIL:解码失败,CRC 错误、报文序列异常SC_EVENT_STOP:配网模块停止工作
22.6 量产高频故障抓包案例分析
案例 1:配网成功率不稳定,时而成功时而失败
抓包现象:空中存在配网 UDP 流,但部分前导 Preamble 报文丢失。 根因:2.4G 信道干扰,空口丢包,设备识别不到配网起始信号。 优化方案:适当增大配网超时时间;产品必须集成 SoftAP 网页配网作为降级兜底。
案例 2:部分手机配网正常,部分手机完全无法配网
抓包现象:正常手机可以捕获密集 UDP 序列;故障手机抓不到任何配网报文。 根因:手机系统对高频 UDP 广播 / 组播做限流过滤;手机挂在 5G 频段。 优化方案:UI 提示用户手机连接 2.4G;提供 SoftAP 降级入口。
案例 3:AirKiss 小程序配网无响应
抓包现象:抓不到目的地址 239.255.255.250 端口 10000 的组播报文。 根因:微信版本权限限制;路由器关闭 IGMP Snooping 丢弃组播报文。 优化方案:不把 AirKiss 作为主配网手段。
案例 4:解码拿到账号密码,密码乱码,WiFi 连接失败
抓包现象:配网报文大量出现重传、乱序。 根因:无线干扰导致报文错乱,CRC 校验偶现失效。 优化方案:WiFi 连接失败增加重试计数;多次重试失败自动回退至配网等待状态。
22.7 ESP‑Touch / AirKiss 协议固有局限
- 依赖 UDP 广播、组播报文,路由器开启广播风暴抑制、AP 隔离,报文会被直接丢弃,软件层面无法绕过路由器策略;
- 依赖设备信道轮询,存在固有配网延时,信道干扰越强耗时越长;
- 原生不支持 5GHz WiFi 配网;
- AirKiss 受制于微信、手机操作系统版本,兼容性不可控。
量产铁律:ESP‑Touch/AirKiss 只能作为主配网方案,产品一定要实现 SoftAP 网页配网兜底,不能作为唯一配网方式。
22.8 本章小结
ESP‑Touch 与 AirKiss 巧妙利用 UDP 报文长度序列完成 SSID、密码编码,Payload 不承载有效业务数据。抓包分析是排查配网疑难问题最高效手段。通过 Monitor 模式抓取空口报文,我们可以快速区分故障归属:APP 侧问题、路由器策略拦截、无线空口干扰、还是设备解码逻辑异常。
产品开发不能只满足 demo 跑通,量产前需要搭建抓包环境复现各类失败场景,定位真实根因,保障大批量设备配网成功率。
💖 点赞 + 收藏 + 关注,嵌入式 WiFi 量产实战全套教程持续更新!
下一章:第 23 章 网页配网 HTTP 服务搭建、参数保存、恢复出厂逻辑