如何在不使用 gatttool 的情况下在 Linux 中配对 BLE 设备?

如何在不使用 gatttool 的情况下在 Linux 中配对 BLE 设备?

一些蓝牙低功耗 (BLE) 设备很难在 Linux 中配对。我能找到的所有信息(包括问题)建议gatttool应该使用,如下所示:

sudo gatttool -t random -b E7:2D:83:06:AA:AB -I
[E7:2D:83:06:AA:AB][LE]> connect

不幸的是,gatttool它已被弃用,并且不再在多个 Linux 发行版中分发。

archlinux 文档btgatt-client应该替换gatttool.我尝试了以下方法,但没有成功:

$ btgatt-client -d F9:B9:1D:A5:73:F4 -t random -v
btgatt-client: Opening L2CAP LE connection on ATT channel:
     src: 00:00:00:00:00:00
    dest: F9:B9:1D:A5:73:F4
Connecting to device... Done
[GATT client]# att: (chan 0x5623a9b9d6e0) ATT op 0x08
[GATT client]# att: < 08 01 00 ff ff 3a 2b                             .....:+         
[GATT client]# att: Channel 0x5623a9b9d6e0 disconnected: Software caused connection abort
[GATT client]# gatt: Primary service discovery failed. ATT ECODE: 0x00
[GATT client]# gatt: Failed to initialize gatt-client
[GATT client]# GATT discovery procedures failed - error code: 0x00
[GATT client]# Device disconnected: Software caused connection abort

不幸的是,由于缺乏文档,我不知道如何继续。

答案1

正如您在原来的问题中提到的,bluetoothctl应该用于配对。您还可以btmgmt预先使用来正确设置您的设备。以下是我在 Linux 上配对设备时通常遵循的步骤:

  1. 将您的设备配置为可发现、可连接和可配对
    sudo btmgmt power off
    sudo btmgmt discov on
    sudo btmgmt connectable on
    sudo btmgmt pairable on
    sudo btmgmt power on
    
  2. 设置您的设备以接受数字配对
    bluetoothctl --agent KeyboardDisplay
    
  3. 然后,如果您的设备是外围设备,您应该等待远程设备发出配对请求。

如果您的设备是中心设备,那么您可以使用以下命令启动配对:

pair 00:11:22:33:44:55

00:11:22:33:44:55您要配对的设备的地址在哪里(您可以使用scan on/scan off命令找到该地址)。

以下是一些包含更多信息的链接,可以帮助您回答您的问题:

相关内容