ESP32P4 C6 蓝牙配对失败。

作者: Quency-D创建于 2026年8月28日更新于 2026年9月17日
标签Status: Awaiting triageArea: BLE

/ * Secure 服务器使用静态密钥

此示例演示如何使用静态密钥创建一个无 IO 功能的安全蓝牙服务器。服务器将接受具有相同密钥设置的设备的连接。示例密钥设置为 123456。服务器将创建一个服务和一个安全和不安全的特性,用作示例。

此服务器旨在与 Client_secure_static_passkey 示例一起使用。

成功绑定后,示例演示如何以多种格式检索对端和本地身份解析密钥 (IRK):

  • 用逗号分隔的十六进制格式:0x1A,0x1B,0x1C,…
  • Base64 编码 (用于 Home Assistant 私有蓝牙设备服务)
  • 反向十六进制顺序 (用于 Home Assistant ESPresense)

警告:IRK 是设备的长期标识符。任何拥有 IRK 的人都可以使用它来在蓝牙存在系统中跟踪或冒充设备。请谨慎使用。

注意,ESP32 默认使用 Bluedroid,其他 SoC 使用 NimBLE。Bluedroid 在连接时启动安全性,而 NimBLE 则按需启动安全性。这意味着在 NimBLE 中,您可以在不输入密钥的情况下读取不安全特性。在 Bluedroid 中,这是不可能的。

重要提示:必须启用 MITM (中间人保护) 才能使密码提示有效。如果没有 MITM,蓝牙堆栈会假定不需要用户交互,并将使用“Just Works”配对方法(如果启用安全连接则加密)。

基于 Neil Kolban 和 h2zero 的示例。 创建者:lucasssvaz。

*/

#include <Arduino.h> #include <BLEDevice.h> #include <BLEUtils.h> #include <BLEServer.h> #include <BLESecurity.h> #include <nvs_flash.h> #include

// 请参阅以下信息以生成 UUID: // https://www.uuidgenerator.net/

#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" #define INSECURE_CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" #define SECURE_CHARACTERISTIC_UUID "ff1d2614-e2d6-4c87-9154-6625d39ca7f8"

// 此处是一个示例密钥。您应该使用不同或随机的密钥。 #define SERVER_PIN 123456

内容来源: espressif/arduino-esp32