ESP32P4 C6 蓝牙配对失败。
/ * 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