hcitool lescan 不适用于蓝牙版本 5

hcitool lescan does not work on Bluetooth version 5

我发现 hcitool 无法在蓝牙 v5.X 硬件上 运行 lescan。 运行 sudo hcitool lescan 会导致此错误:Set scan parameters failed: Input/output error.

社区建议改用 bluetoothctl(例如 here),但 gatttool 依赖于 hcitool 来扫描 ble 设备。虽然 gatttool 在许多应用程序上充当 ble 后端,但仍然没有提供解决上述 Input/output 错误的解决方案。有人知道如何解决上述错误吗?

我已经在 Windows 10 上测试了我的 BLE 的全部功能,但在 Ubuntu 上我到目前为止都失败了。我的笔记本电脑具有以下蓝牙硬件:

$ hciconfig -a
hci0:   Type: Primary  Bus: USB
    BD Address: 4C:1D:96:30:83:6E  ACL MTU: 1021:4  SCO MTU: 96:6
    UP RUNNING 
    RX bytes:8099 acl:34 sco:0 events:591 errors:0
    TX bytes:11990 acl:34 sco:0 commands:452 errors:0
    Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
    Link policy: RSWITCH SNIFF 
    Link mode: SLAVE ACCEPT 
    Name: 'xxxx'
    Class: 0x0c010c
    Service Classes: Rendering, Capturing
    Device Class: Computer, Laptop
    HCI Version: 5.1 (0xa)  Revision: 0x100
    LMP Version: 5.1 (0xa)  Subversion: 0x100
    Manufacturer: Intel Corp. (2)

我有 Ubuntu 20.04 和 bluez v5.53。

gatttool 和 hcitool 都是 deprecated 2017 年的。

D-Bus API is documented at: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc

还有示例:https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/test

对于命令行探索,btmgmtbluetoothctl 应该涵盖大多数情况。