云计算百科
云计算领域专业知识百科平台

《WiFi 嵌入式物联网开发全套实战》 | 第 10 章 wpa_supplicant 配置文件完全解析、自动重连、秘钥保存机制

💖 点赞 + 收藏 + 关注,WiFi 嵌入式物联网开发系列持续更新!

上一章讲解驱动、总线、Firmware加载流程。硬件驱动就绪之后,Linux STA模式的核心就是 wpa_supplicant。

很多嵌入式开发者只会复制一份简单配置,遇到多AP切换、掉线不重连、密码明文保存、企业WiFi认证等问题无从下手。

本章完整解析 wpa_supplicant.conf,覆盖全局参数、network网络块、PSK生成、自动重连、后台扫描、密钥持久化,同时提供工程可用模板,梳理量产产品高频坑。

一、wpa_supplicant 基础启动方式

1. 启动命令

启动成功后,会生成控制socket,默认路径 /var/run/wpa_supplicant/wlan0,wpa_cli 通过该socket和守护进程通信。

2. 配合DHCP获取IP

wpa_supplicant只负责WiFi链路层连接,不负责IP地址获取。链路连通后,需要dhcp客户端获取IP:


二、wpa_supplicant.conf 文件整体结构

配置分为两大块:

  • 全局配置段:文件开头,控制扫描、重连、日志、国家码、socket权限。

  • network{} 网络块:每一个network{}代表一组WiFi配置(SSID、密码、加密方式、优先级),可以配置多个AP。

  • 完整工程模板:


    三、全局参数逐项解析(必调)

    • country=CN:国家码,非常关键,决定可用信道、发射功率,必须和内核cfg80211监管域匹配。CN代表中国。

    • ctrl_interface=/var/run/wpa_supplicant:控制socket存放目录,wpa_cli需要访问该路径。

    • ctrl_interface_group=0:socket所属用户组,0为root,嵌入式系统一般保持0。

    • update_config=1:允许wpa_supplicant运行时修改配置文件。wpa_cli add_network添加网络后,会自动写入配置。 0=只读配置,运行时修改不会保存到文件。量产如果不允许运行时修改WiFi,设置为0。

    • ap_scan=1:扫描模式,1=驱动扫描;2=wpa_supplicant软件扫描。绝大多数场景使用1。部分老旧网卡需要设置2。

    • fast_reauth=1:快速重认证,漫游时加速连接。

    • bgscan="simple:30:-5:300":后台扫描配置,格式:模式:扫描间隔(s):RSSI阈值:长间隔。 简单理解:连接WiFi的同时,后台周期性扫描周围AP,用于多AP切换。

    bgscan说明: simple:30:-5:300 信号较好时每30秒扫描一次;信号变差触发阈值‑5dB相对变化;信号很差拉长到300秒扫描。 后台扫描会短暂断流,实时业务对抖动敏感需要调大扫描间隔。


    四、network{}网络块参数详解

    1.WPA2‑PSK最常用配置

    • ssid="TestAP"WiFi名称,带引号,可以包含空格。

    • psk:可以填写明文密码;也可以填写预计算的32字节PSK哈希值,实现配置文件不保存明文密码。

    • priority优先级,数值越大优先级越高。多个network块时,优先连接高优先级AP。

    • key_mgmt密钥管理方式:WPA‑PSK;NONE开放网络;WPA‑EAP企业WiFi。WPA2‑PSK可以省略,wpa_supplicant自动探测。

    2. 开放无密码AP配置

    3. WPA3‑SAE配置

    4. 生成PSK哈希,避免明文密码保存在配置文件

    wpa_passphrase工具,输入SSID和密码,输出哈希psk值:

    把明文那一行注释或删除,只保留psk哈希,配置文件不再保存明文密码,适合产品落地。


    五、自动重连机制原理

    wpa_supplicant默认自带自动重连逻辑,不需要写shell循环。

  • WiFi断开后,wpa_supplicant收到内核nl80211断开事件。

  • 内部状态机进入扫描状态,扫描周围AP列表。

  • 按照priority优先级匹配network块中的SSID。

  • 发起认证、关联、四次握手。

  • 连接成功后通知上层;失败则等待退避时间,继续重试。

  • 常见误区:为什么掉线后不自动重连?

    • 1. update_config=0,同时运行时通过wpa_cli添加网络,配置未持久化,重启守护进程配置丢失。

    • 2. bgscan没有配置,连接状态下不会后台扫描AP,AP消失之后无法发现回来。

    • 3. AP信号已经低于网卡接收灵敏度,扫描不到该SSID,自然无法重连。

    • 4. wpa_supplicant进程崩溃退出,状态机停止。需要systemd/supervise监控进程保活。

    工程建议:量产产品使用systemd托管wpa_supplicant,设置Restart=on‑failure,进程崩溃自动拉起。


    六、wpa_cli常用实操命令

    save_config生效前提:全局配置 update_config=1,并且文件系统可写。只读根文件系统不能使用save_config。


    七、高频故障定位

  • WPA四次握手失败:启动增加‑d参数打开debug日志,看日志报错。绝大多数密码错误、AP加密模式不匹配。

  • 能扫描到AP,但无法关联:检查country国家码,信道是否被监管域禁止。

  • 重启wpa_supplicant配置丢失:update_config=0,或者根文件系统只读,save_config无法写入。

  • 多个AP不会自动切换:配置bgscan后台扫描,设置合理priority优先级。

  • 连接成功,但没有IP地址:wpa_supplicant链路正常,问题出在DHCP客户端,与WiFi无关。


  • 八、本章小结

  • wpa_supplicant.conf分为全局配置段与多个network{}网络块;priority决定多AP连接优先级。

  • update_config控制运行时配置是否持久化;量产只读文件系统设置为0。

  • wpa_passphrase可以生成PSK哈希,配置文件去除明文密码,提升安全性。

  • bgscan后台扫描,实现连接状态下持续探测周边AP,支撑自动重连、简单漫游。

  • wpa_supplicant只处理链路层;IP地址需要dhcp客户端获取;进程崩溃需要外部守护保活。

  • 下一章预告:第 11 章 hostapd配置详解:搭建Linux AP热点、STA隔离、最大接入数、国家码

    💖 点赞 + 收藏 + 关注,WiFi 嵌入式物联网开发系列持续更新!

     

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 《WiFi 嵌入式物联网开发全套实战》 | 第 10 章 wpa_supplicant 配置文件完全解析、自动重连、秘钥保存机制
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!