You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在蓝牙广播包中配置设备类型?nRF52832键盘适配macOS

解决nRF52832蓝牙键盘在macOS设备图标显示问题

macOS通过蓝牙广播中的**设备类(Device Class)**和服务UUID识别设备类型,你提到的minor type就是设备类里的次设备类字段。针对nRF52832和NRF SDK,按以下步骤配置就能让macOS正确显示键盘图标:

核心配置步骤

1. 定位广播数据配置代码

在你的工程中找到蓝牙广播初始化代码,通常在main.c或ble_advertising.c里,找到ble_advdata_t类型的配置结构体——这是NRF SDK定义广播数据的核心结构。

2. 设置设备类参数

蓝牙HID键盘的标准设备类参数为:

  • 主设备类(Major Class):0x05(外设类)
  • 次设备类(Minor Class):0x01(键盘)
  • 服务类掩码:0x00(无需额外服务类标识,HID服务UUID会补充识别)

在代码中添加定义并关联到广播配置:

// 定义设备类数组(3字节,顺序:服务类掩码、主设备类、次设备类)
uint8_t device_class[] = {0x00, 0x05, 0x01};

// 关联到广播数据结构体
ble_advdata_t advdata = {0};
advdata.device_class = device_class;

3. 广播中包含HID服务UUID

macOS会优先通过服务UUID确认设备类型,需在广播数据中添加HID服务的UUID(0x1812):

// 定义HID服务UUID
ble_uuid_t adv_uuids[] = {{BLE_UUID_HID_SERVICE, BLE_UUID_TYPE_BLE}};

// 配置广播包含完整UUID列表
advdata.uuids_complete.uuid_cnt = sizeof(adv_uuids) / sizeof(adv_uuids[0]);
advdata.uuids_complete.p_uuids = adv_uuids;

4. 完成广播初始化

补充广播标志,编码广播数据并启用广播:

// 设置广播标志:可连接、通用可发现
advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;

// 编码广播数据
uint8_t m_adv_data[BLE_GAP_ADV_SET_DATA_SIZE_MAX];
uint16_t m_adv_data_len = 0;
err_code = ble_advdata_encode(&advdata, m_adv_data, &m_adv_data_len);
APP_ERROR_CHECK(err_code);

// 配置并启动广播
ble_gap_adv_params_t adv_params = {0};
adv_params.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED;
adv_params.p_peer_addr = NULL;
adv_params.fp = BLE_GAP_ADV_FP_ANY;
adv_params.interval = MSEC_TO_UNITS(100, UNIT_0_625_MS);
adv_params.duration = 0;

err_code = sd_ble_gap_adv_set_configure(&m_adv_handle, &adv_params, m_adv_data);
APP_ERROR_CHECK(err_code);
err_code = sd_ble_gap_adv_start(m_adv_handle, APP_BLE_CONN_CFG_TAG);
APP_ERROR_CHECK(err_code);

额外提示

  • 如果你用的是NRF SDK自带的ble_hids_keyboard示例工程,直接在示例的广播配置部分替换上述代码即可,示例已有大部分基础框架,只需补充设备类和UUID配置。
  • 罗技M590鼠标的次设备类是0x02,这是它能显示鼠标图标的原因,可对照这个逻辑验证配置正确性。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:17:07