☰
《WiFi 嵌入式物联网开发全套实战》| 第 22 章 AirKiss/ESP‑Touch 协议底层抓包解析
2026/9/28 3:47:47 网站建设 项目流程

专栏:《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 报文。

硬性共同约束

  1. 两套协议仅支持 2.4GHz 频段。手机连接 5G 频段时,配网报文运行在 5G 信道,工作在 2.4G 监听的设备完全接收不到报文。
  2. 设备需要轮询切换 1‑13 信道,只有设备监听信道与手机工作信道一致,才能捕获配网数据流。
  3. 报文载体为 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 校验序列。

  1. 前导序列:一组固定长度特征 UDP 包。设备捕获该组特征包,识别到配网数据流到来,停止信道轮询,锁定当前信道接收后续报文。前导包丢失则设备无法识别配网开始,直接导致配网失败。
  2. 数据载荷序列:依次编码 SSID 长度、SSID 原始字节、WiFi 密码长度、密码字节、版本信息、预留字段。
  3. CRC 校验序列:对 SSID + 密码做 CRC 计算。2.4G 环境干扰会造成报文乱序、丢包,CRC 校验不通过直接丢弃解析结果,设备继续等待新一轮配网数据流,避免解析出错误账号密码。

22.2.2 ESP‑Touch 设备完整工作时序

  1. 应用层调用esp_smartconfig_start(),WiFi 切换混杂监听模式,关闭 STA 连接;
  2. 设备循环遍历 2.4G 1‑13 信道,每个信道维持几十毫秒停留时间;
  3. 在某一信道捕获 ESP‑Touch 前导特征报文,终止信道切换,锁定当前信道接收完整报文流;
  4. 持续接收报文序列,依据 UDP 长度还原 SSID 与密码,执行 CRC 完整性校验;
  5. CRC 校验通过,抛出SC_EVENT_GOT_SSID_PSWD事件,上层拿到 WiFi 账号密码;
  6. 调用esp_smartconfig_stop()退出混杂监听模式,恢复 WiFi 硬件正常状态;
  7. WiFi 切换为 STA 模式,发起和目标路由器的扫描、认证、关联流程;
  8. STA 成功获取 IP 地址之后,设备向手机发送 UDP 应答报文,通知 APP 配网完成;
  9. APP 收到应答包,结束配网交互。

⚠️ 量产坑点:拿到SC_EVENT_GOT_SSID_PSWD事件之后,必须调用 esp_smartconfig_stop ()。不关闭混杂监听,WiFi 硬件状态异常,STA 模式会出现各类诡异连接故障。

22.3 AirKiss 协议和 ESP‑Touch 关键差异

AirKiss 同样采用 UDP 长度编码,但多处细节和 ESP‑Touch 不兼容:

  1. 默认组播地址:239.255.255.250,端口固定10000;
  2. 前导 Preamble 特征报文序列完全不一样,ESP‑Touch 模式下无法识别 AirKiss 数据流;
  3. CRC 校验算法实现不同;
  4. 应答机制:设备联网成功之后发送组播应答包给到微信小程序。

工程风险:AirKiss 受微信版本、iOS / 安卓系统权限管控,存在较多兼容性问题,量产产品禁止把 AirKiss 作为唯一配网途径。

22.4 Wireshark 空口抓包实操

22.4.1 抓包环境准备

  1. 支持 Monitor 监听模式的 USB 无线网卡,手动锁定路由器 2.4G 信道,禁止网卡自动跳信道;
  2. 手机连接路由器 2.4G WiFi,启动 APP 开始发送配网;
  3. 开启 Wireshark 抓包,保存 pcap 文件用于事后分析。

关键提醒:网卡信道必须和手机所在信道保持一致,自动信道切换会直接漏掉配网报文。

22.4.2 Wireshark 过滤语法

ESP‑Touch(广播 + 组播混合)

udp and !udp.port == 53

AirKiss 专用过滤规则

udp.port == 10000 && ip.addr == 239.255.255.250

22.4.3 抓包识别配网数据流特征

  1. 配网触发后,空中会出现短时间密集爆发的大量 UDP 小包;
  2. Wireshark 查看UDP length字段,可以看到规律性变化的长度数值序列,这就是编码信息;
  3. 数据流开头出现一组固定长度报文,就是前导 Preamble 序列;
  4. 如果抓包看不到密集 UDP 报文:手机处于 5G 频段;APP 异常;路由器广播 / 组播抑制丢弃报文。

22.4.4 抓包定位三类典型故障现象

  1. 抓包存在完整配网报文,设备始终不触发 SC_EVENT_GOT_SSID_PSWD根因:设备信道轮询和手机信道没有命中;空口干扰丢失前导特征包;CRC 校验失败丢弃解析结果。
  2. 抓包完全看不到手机发出配网 UDP 报文根因:手机连接 5G WiFi;APP 异常;路由器开启广播风暴抑制、IGMP 关闭,报文被路由器直接丢弃。
  3. 设备解析出 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 协议固有局限

  1. 依赖 UDP 广播、组播报文,路由器开启广播风暴抑制、AP 隔离,报文会被直接丢弃,软件层面无法绕过路由器策略;
  2. 依赖设备信道轮询,存在固有配网延时,信道干扰越强耗时越长;
  3. 原生不支持 5GHz WiFi 配网;
  4. AirKiss 受制于微信、手机操作系统版本,兼容性不可控。

量产铁律:ESP‑Touch/AirKiss 只能作为主配网方案,产品一定要实现 SoftAP 网页配网兜底,不能作为唯一配网方式。

22.8 本章小结

ESP‑Touch 与 AirKiss 巧妙利用 UDP 报文长度序列完成 SSID、密码编码,Payload 不承载有效业务数据。抓包分析是排查配网疑难问题最高效手段。通过 Monitor 模式抓取空口报文,我们可以快速区分故障归属:APP 侧问题、路由器策略拦截、无线空口干扰、还是设备解码逻辑异常。

产品开发不能只满足 demo 跑通,量产前需要搭建抓包环境复现各类失败场景,定位真实根因,保障大批量设备配网成功率。

💖 点赞 + 收藏 + 关注,嵌入式 WiFi 量产实战全套教程持续更新!


下一章:第 23 章 网页配网 HTTP 服务搭建、参数保存、恢复出厂逻辑

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询