gpt4 book ai didi

bluez - btmgmt add-adv 命令不起作用

转载 作者:行者123 更新时间:2023-12-04 07:12:12 41 4
gpt4 key购买 nike

我无法使用 btmgmt add-adv 命令。我已经尝试了建议的示例,但它也不起作用。我的目标是使用 BlueZ 5.x 堆栈(我使用的是 5.31 版)使用我自己的自定义负载设置广告和扫描响应负载。

我已启用 le、connectable、a​​dvertising 和 power。我尝试了各种组合(关闭电源、关闭广告等),但仍然无效。这是示例命令(带有响应):

sudo btmgmt add-adv -u 180d -u 180f -d 080954657374204C45 1
Add Advertising failed with status 0x01 (Unknown Command)

谁能帮帮我?

谢谢

最佳答案

啊!!我花了太多时间才弄明白这一点。如果有一些文档,就可以避免这种情况。相反,我觉得我在黑暗中摸索。幸运的是,我戳对了地方,但只是在黑暗中摸索了一个星期之后。以下是使其正常工作所需的条件:

  1. 添加广告失败,状态为 0x01(未知命令) 响应是因为我的 Linux 内核不支持此功能。我使用的是 3.19 版。一旦我升级到 v. 4.1.1(我认为 4.0 可能就足够了),我就不再收到该响应。

  2. 即使在内核升级之后,我仍然无法控制广告负载或扫描响应负载。经过一番摸索,我发现我误解了btmgmt命令中广告标志的含义,即如果你想定制你的广告或扫描响应负载,请不要激活广告标志:

    sudo btmgmt 广告

    这会导致使用默认/预定的广告有效负载而不是您的自定义有效负载(不是很直观)。扫描响应将包含设备名称。相反,像这样关闭该标志:

    sudo btmgmt 关闭广告

    然后像这样使用您自己的自定义广告和扫描负载:

    sudo btmgmt add-adv -d 02010606094142434400 -s 05061805051206000a00020a00 1

    一旦您启动适配器,这将打开您自定义负载的广告。上面的示例在广告负载中设置了完整名称。扫描响应有效负载还设置了以下内容:16 位 UUID、连接间隔范围和 TX 功率级别:

    全名:“ABCD”
    UUID: 1805
    连接间隔范围:7.5 ms 到 12.5 ms
    发射功率电平:0 dBm

如果您想了解我发布的有效负载中 header 字节的含义,我建议您阅读蓝牙核心规范文档。另一个要查看的地方是 BlueZ 源代码(src 目录中的 eir.h)。

我希望这可以帮助下一个走这条路的人节省一些时间。

关于bluez - btmgmt add-adv 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223765/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com