Wi-Fi 与蓝牙配置

在开发板控制台运行 esp32-config。Network 包含 Wi-Fi 和 IPv4 设置, Bluetooth 包含蓝牙服务、设备名和配对管理。以下命令以 root 身份运行。 保存的设置会在启动时恢复;存储和备份方法见配置。

Wi-Fi 和蓝牙共用一个无线模块。改变启用的服务组合会重启该模块,可能中断两种连接。 重复选择已经保存的启用或关闭状态不会重启无线模块。 保持当前无线模式重新连接 Wi-Fi 时,不会重启蓝牙。

连接 Wi-Fi

  1. 选择 Network → Wi-Fi network → Connect / change network。

  2. 选择附近的网络;隐藏网络或手动输入 SSID 时,选择 Enter network name。

  3. 对于加密网络,输入一次密码并选择 Connect。开放网络不需要输入密码。

网络选择会保存,并立即开始连接。提交前从输入页面返回,会保留原有配置。 Wi-Fi 页面显示选中的网络、连接状态和获得的 IPv4 地址。 选择 Reconnect saved network 可以使用已有密码重新连接。

配置页面提供开放网络和 WPA/WPA2 Personal 选项。当前 SoftMAC 驱动只声明 CCMP 加密支持,因此请将 AP 配置为 WPA2-Personal 与 CCMP/AES;不支持仅提供 TKIP 的网络和 WEP 网络。菜单名称不代表所有 WPA/WPA2 模式均可用。 加密网络接受 8–63 字节的密码,或 64 个十六进制字符组成的 PSK。 包含空格、标点或非 ASCII 字符的网络名会按原样保存。 其他认证方式见进阶 Wi-Fi。

在交互式控制台中,可以用以下命令保存并连接:

esp32-config wifi configure

输入 SSID,再输入一次密码。也可以将网络名写在命令行中,密码仍在单独的提示中输入:

esp32-config wifi connect 'My Wi-Fi'

连接开放网络:

esp32-config wifi connect 'Guest Wi-Fi' open

检查连接或重试

esp32-config wifi status
esp32-config network status

连接完成需要 Wi-Fi 已关联,并获得 IPv4 地址。 如果等待结束时尚未完成,工具会说明设置已保存、连接仍在等待。 连接进程会继续运行,可以离开菜单,稍后再查看状态。 等待未完成本身不代表密码错误。

重试页面保留网络选择,提供 Retry connection、Change password、 Choose another network 和 View details。 也可以从命令行重新应用已保存的 Wi-Fi 配置:

esp32-config apply wifi

查看详细状态和日志:

wpa_cli -p /run/wpa_supplicant -i wlan0 status
cat /run/esp32-config/wpa_supplicant.log
cat /run/esp32-config/udhcpc.wlan0.log

DHCP 客户端持续运行,以获取和续租地址。 选择 Forget saved network,或运行 esp32-config wifi forget,可删除保存的网络并关闭 Wi-Fi。

设置 IPv4 地址和 DNS

选择 Network → IP address and DNS。默认通过 DHCP 自动获取地址和 DNS。 使用静态地址时,选择 Manual,填写地址和前缀;需要网关时再填写网关。 DNS 需手动指定;不需要 DNS 的本地网络可将列表留空。 完成后选择 Save and apply。修改正在使用的连接会重新连接 Wi-Fi; Wi-Fi 关闭时,设置会在下次连接时应用。

例如,网络为 192.168.1.0/24,路由器和 DNS 服务器均为 192.168.1.1, 为开发板分配的空闲地址为 192.168.1.50:

esp32-config network static 192.168.1.50 24 192.168.1.1 192.168.1.1

请使用为实际网络分配的地址。参数分别为 ADDRESS、PREFIX、GATEWAY 和最多三个 DNS 地址。 不需要网关时使用 -。恢复自动地址和 DNS:

esp32-config network dhcp

也可以通过 DHCP 获取地址,同时指定自己的 DNS:

esp32-config network dhcp manual 192.168.1.1

DHCP 续租不会覆盖保存的手动 DNS 策略。这些设置用于受管理的 Wi-Fi 接口。 USB 网络使用独立的地址设置,见 USB 功能。

使用内置蓝牙应用

启用蓝牙后,镜像通过 /etc/init.d/S40btstack 启动 /usr/sbin/s31-btstack-a2dp。这是一个使用 /dev/s31-hci 的 BTstack 主机,在同一进程中提供 Classic A2DP 接收端、AVRCP 支持和一个小型 BLE GATT 外设。

内置 A2DP 应用接收压缩的 SBC 媒体数据,用于传输测试。SBC 解码已在编译时移除,也没有 PCM 播放后端。 因此,连接手机并启动媒体流后,会在日志中得到状态和数据包计数;要实际播放声音,还需要开发应用。

1. 启动蓝牙

esp32-config bluetooth enable
esp32-config bluetooth info
/etc/init.d/S40btstack status
cat /run/s31-btstack-a2dp.log

服务状态报告进程是否运行。控制器初始化、广播、配对和媒体流事件应通过日志检查。

2. 配对并发送 Classic 音频流

在手机或电脑上打开蓝牙设置,选择名称为 S31 Radio 的设备,或在 Bluetooth → Device name 中保存的名称。完成对端的配对提示,并将开发板选为音频输出设备。内置示例会自动接受 SSP 确认请求,并拒绝旧式 PIN 码配对。

在对端开始播放音频,然后暂停,再次查看服务日志。检查媒体流启动、暂停事件,以及媒体数据包和 SBC 字节计数。这些结果反映传输测试应用的接收情况。服务日志还会记录序列号缺口和重复数据包。

3. 读取 BLE 测试特征

在另一台设备上使用 BLE 中心设备或 GATT 查看应用。扫描配置的蓝牙名称(初始为 S31 Radio),连接后发现服务 0xff10,并读取特征 0xff11。它的值为文本 ready;该测试特征不要求配对。手机普通蓝牙设备列表可能不显示 GATT 外设,请使用 BLE 应用的扫描功能。

开发板上的 esp32-config bluetooth scan 命令会报告不支持扫描。内置主机提供外设角色;BLE 随 Classic 蓝牙一同启用。

修改蓝牙名称或清除配对

选择 Bluetooth → Device name,可以统一设置 Classic 蓝牙、BLE 扫描响应和 GAP Device Name 使用的名称。名称长度为 1–29 字节,不能包含控制字符。 UTF-8 名称中的一个字符可能占多个字节。例如:

esp32-config bluetooth name 'My S31'

蓝牙启用时,改名会重启蓝牙,并断开当前连接的设备;Wi-Fi 服务继续运行。

选择 Clear saved pairings,可清除当前控制器保存的 Classic 和 BLE 密钥。 蓝牙需要已经启用并正在运行。对应命令为:

esp32-config bluetooth clear-pairings

操作会重启蓝牙。重新配对前,请先在手机或电脑上移除旧配对。 如果已经保存启用设置,但服务启动失败,可选择 Retry starting Bluetooth, 或运行 esp32-config bluetooth restart;此恢复操作也可能重新连接 Wi-Fi。

停止、重启或交接控制器

任务

开发板命令

停止当前 Wi-Fi 连接,保留保存的策略

esp32-config stop

根据已保存配置重新启动 Wi-Fi

esp32-config apply wifi

禁用 Wi-Fi,并在后续启动时保持禁用

esp32-config wifi disable

停止 BTstack,将 /dev/s31-hci 交给其他应用

/etc/init.d/S40btstack stop

在保存策略已启用时再次启动 BTstack

/etc/init.d/S40btstack start

禁用蓝牙,并在后续启动时保持禁用

esp32-config bluetooth disable

其他程序打开 /dev/s31-hci 前,先停止 BTstack;该设备只允许一个客户端。重启服务前,先关闭自己的程序。无线参考介绍了直接 HCI API、模块参数和 radio_health 诊断信息。

启动失败的排查方法见调试。配对数据和设置使用配置中介绍的存储方式;服务日志是临时文件。