ESP 设备的 BLE 广播名称与 BLE 设备名称的 API 使用说明
BLE 广播 Name 与 Device Name 差异
BLE 设备名称(Device Name)设置
-
ble_svc_gap_device_name_set() API 用于设置
nimble的Device Name。 请参考 “esp-idf/examples/bluetooth/nimble/ble_spp/spp_server” 例程。 -
esp_ble_gap_set_device_name() API 用于设置
bludorid的Device Name。 请参考 “esp-idf/examples/bluetooth/bluedroid/ble/gatt_server” 例程。
【BLE4.2】传统广播名称(Legacy ADV Name)的设置
-
esp_ble_gap_config_adv_data() 和 esp_ble_gap_config_adv_data_raw() API 用于设置
bluedroid的传统广播名称(legacy ADV name )。 请参考 “esp-idf/examples/bluetooth/bluedroid/ble/gatt_server” 例程。 -
ble_gap_adv_set_fields() API 用于设置
nimble的传统广播名称(legacy ADV name)。 请参考:“esp-idf/examples/bluetooth/nimble/ble_spp/spp_server” 例程。
【BLE5.0】 扩展广播名称(Extended ADV Name )的设置
-
esp_ble_gap_config_ext_adv_data_raw() API 用于设置
bluedroid的拓展广播名称 (extended ADV name)。 请参考 “esp-idf/examples/bluetooth/bluedroid/ble_50/multi-adv” 例程。 -
ble_gap_ext_adv_set_data() API 用于设置
nimble的扩展广播名称 (extended ADV name)。“esp-idf/examples/bluetooth/bluedroid/ble_50/multi-adv” 例程。
设备名称(device name)与广播名称(ADV name)的区别
- BLE 设备名称(device name): 它是通过通用访问服务
(UUID: 0x1800)在GATT(通用属性配置文件)服务中公开的 BLE 设备的名称(device name),存储在设备名称特性(UUID: 0x2A00)中。通常在 BLE 配对或连接后的显示。必须先连接BLE 设备,然后通过 GATT 读取。如下:
- BLE 广播名称(ADV Name):它是由 BLE 设备在发广播包中携带的名称,通常为完整的本地名称(类型为
0x09)或缩短的本地名称(类型为0x08)。它是在不连接 BLE 时通过扫描 BLE 广告包可以看到的名称。它受到整个 BLE 广告包长度的限制,可能会被截断或省略。它可以通过扫描附近的 BLE设备获得,而无需连接。如下:

【请注意】
- 传统广播包(Legacy ADV packet)长度为 31 字节
- 拓展广播包(Extended ADV packet )长度为 254 字节
- BLE 设备名称(Device name)最大支持 31 字节
- ESP32 仅支持 BLE4.2 特性,因此仅支持设置传统广播包(Legacy ADV packet)
- ESP32-C 、ESP32-H 与 ESP32-S3 支持 BLE5.0 特性,因此支持设置拓展广播包(Extended ADV packet ),即支持更长的广播名称。
- 详细说明参见:BLE 设备发现
不同手机支持扫描的 BLE 广播设备差异
此示例支持所有物理层的传统广播和扩展广播。对于多广播,为每种广播类型生成随机地址。它启动了 4 种类型的广播:
- 不可连接的扩展广播
- 可连接的扩展广播
- 可扫描的传统广播
- 间隔 5 秒的传统广播
以下是不同手机型号的测试结果:

正如你所看到的,不同型号的手机支持不同的扫描结果。
更多推荐



所有评论(0)