首页 > 解决方案 > 执行 hciconfig hci0 重置时出现无效的参数问题

问题描述

我在 5.0 以上的内核中观察到这个问题。并且使用启用了扩展广告的控制器。我目前已经用 bluez-5.50 进行了测试。

这个问题与“MGMT_ADV_FLAG_SEC_MASK”标志有关,这是我可以从代码中得到的。但是我不明白何时以及如何修改这个标志。

配置:内核 5.4.24(任何 5.0+ 内核都出现问题),bluez 5.50 我正在执行以下步骤: 1. hciattach BLE 扩展 ADV 启用控制器。2. hciconfig hci0 重置。

我收到扩展扫描 rsp 命令的以下错误(在 hciconfig hci0 重置序列期间):

LE Set Extended Scan Response Data (0x08|0x0038) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)

这是因为下面用 core_v5.2 编写的:“如果广告集是不可扫描的并且主机使用此命令而不是丢弃现有数据,则控制器应返回错误代码 Invalid HCI Command Parameters (0x12) . 如果广告集使用可扫描的传统广告 PDU 并且 Operation 不是 0x03 或 Scan_Response_Data_Length 参数超过 31 个八位字节,则控制器应返回错误代码 Invalid HCI Command Parameters (0x12)。如果 Operation 不是 0x03 并且 Scan_Response_Data_Length 为零,则控制器应返回错误代码 Invalid HCI Command Parameters (0x12) "

因此,在扩展扫描 rsp 集之前的扩展 HCI 命令扩展广告集命令中:

*LE Set Extended Advertising Parameters (0x08|0x0036) plen 25 

        Handle: 0x00
        Properties: 0x0010
          Use legacy advertising PDUs: ADV_NONCONN_IND

由于在内核代码中检查了 MGMT_ADV_FLAG_SEC_MASK,因此设置了这个遗留广告。我想知道控制器 LE 功能中的哪个参数或其他需要正确设置的参数。

在我的蓝牙控制器中,不支持多 ADV,支持扩展 ADV。

标签: bluetoothbluetooth-lowenergybluez

解决方案


得到了问题,它与内核 5.4.24 的扩展广告有关。在内核版本 5.7.7 中。我在文件 hci_request.c,函数 get_adv_instance_scan_rsp_len 中发现了这种差异,目前(内核 5.4.24)代码是:

static u8 get_adv_instance_scan_rsp_len(struct hci_dev *hdev, u8 instance)
{
        struct adv_info *adv_instance;

        /* Ignore instance 0 */
        if (instance == 0x00)
                return 0;

在 5.7.7 中改为:

static u8 get_adv_instance_scan_rsp_len(struct hci_dev *hdev, u8 instance)
{
        struct adv_info *adv_instance;

        /* Instance 0x00 always set local name */
        if (instance == 0x00)
                return 1;

这应该改变的是,它应该满足以下条件,而目前没有。所以基本上应该设置扫描 rsp 数据 cmd 不会失败的可扫描标志:

 } else if (get_adv_instance_scan_rsp_len(hdev, instance)) {
                if (secondary_adv)
                        cp.evt_properties = cpu_to_le16(LE_EXT_ADV_SCAN_IND);
                else
                        cp.evt_properties = cpu_to_le16(LE_LEGACY_ADV_SCAN_IND);

推荐阅读