【问题标题】:How to initiate BLE pairing on BlueZ如何在 BlueZ 上启动 BLE 配对
【发布时间】:2015-11-07 09:21:42
【问题描述】:

我想在 Bluez 上启动与蓝牙低功耗设备的配对。 虽然有一些关于如何使用 GATT 触发 SMP 程序的帖子,但如果您不想使用 GATT,则没有太多可用的帖子。

我的用例是我想为 bluetooth-6lowpan 使用加密链接,它通过基于 L2CAP 信用的模式而不是 ATT/GATT 交换数据。

此外,我想使用 OOB 模式进行 SMP 配对。

感谢有关如何使用命令行或编写 C 程序来触发 SMP 配对的指针。

谢谢!

【问题讨论】:

  • 你的问题太宽泛了。一个更具体的问题会有所帮助。如果您想从命令行配对,您可以使用bluetoothctl 实用程序。如果您想以编程方式配对,请使用 bluez DBUS device API
  • 谢谢艾伦!我已根据您的建议编辑了我的问题! bluetoothctl 实用程序在我的平台(Ubunut 和 R Pi)上似乎不可用。我有蓝牙代理来触发配对,但我不知道如何设置配对参数,如 OOB 数据。欢迎所有意见!

标签: security bluetooth-lowenergy bluez


【解决方案1】:

我认为不使用 GATT 命令(仅从命令行)就无法执行 BLE 配对。原因是 LE 中的安全性是基于 GATT 操作的。换句话说,特征/服务权限决定了您是否需要与设备配对(即,要读取心率特征,设备可能会指示您需要先配对)。为此,操作类似于:

gatttool --sec-level=high --device=00:11:22:33:44:55:66 --char-read --uuid=0x2A37

此命令将在读取特征之前先建立配对。

至于如何使用 C 程序执行此操作,您可以下载 BlueZ 源代码并查看传递此“sec-level”选项的作用。我快速浏览了代码并在 utils.c 中找到了这个:-

            chan = bt_io_connect(connect_cb, NULL, NULL, &tmp_err,
            BT_IO_OPT_SOURCE_BDADDR, &sba,
            BT_IO_OPT_SOURCE_TYPE, BDADDR_LE_PUBLIC,
            BT_IO_OPT_DEST_BDADDR, &dba,
            BT_IO_OPT_DEST_TYPE, dest_type,
            BT_IO_OPT_CID, ATT_CID,
            BT_IO_OPT_SEC_LEVEL, sec,
            BT_IO_OPT_INVALID);

其中 sec 设置为 sec = BT_IO_SEC_HIGH;

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2015-03-08
    • 2021-06-02
    • 2021-02-12
    • 2018-11-13
    相关资源
    最近更新 更多