禁用LE Set Scan Enable命令的“Filter duplicates”设置

问题描述 投票:2回答:2

我想使用蓝牙的D-Bus接口,通过HCI命令'LE Set Scan Enable'禁用蓝牙控制器级别的'Filter duplicates'设置。

我已经尝试从SetDiscoveryFilter(org.bluez.Adapter1)设置'DuplicateData'参数,但根据btmon,这不会更改LE Set Scan Enable的'Filter duplicates'的值。我还阅读了'bluetoothd'和'main.conf'的手册页但没有成功。

相比之下,我发现'hcitool lescan --duplicates'可以解决问题。

任何指针将不胜感激!

bluetooth-lowenergy bluez
2个回答
1
投票

欢迎来到StackOverflow。发布问题时,发布所使用的软件和硬件版本非常有用,因为这可以帮助您获得更好的答案。

关于您的问题,这取决于您使用的BlueZ版本。假设这是当前的最新版本(v5.50),则可以选择低能量扫描来禁用重复过滤器。请看这里的文档: -

https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/adapter-api.txt#n107

您还可以在bluetoothctl命令中查看此内容。请看一下: -

https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/client/main.c#n1390

如果您想尝试一下,可以使用bluetoothctl命令,如下所示: -

#bluetoothctl
[bluetoothctl] menu scan
[bluetoothctl] duplicate-data on
[bluetoothctl] back
[bluetoothctl] scan on

这将仅返回广告一次,并且将禁止重复的广告。

我希望这有帮助。


0
投票

非常感谢您的回答。我在bluez 5.48和5.50上尝试了bluetoothctl命令,并得到与我的D-Bus应用程序相同的结果。无论'重复数据'设置(开/关),btmon / HCI始终在'扫描'上显示'过滤器重复:启用'

< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2      #5 [hci0] 10.895438
        Scanning: Enabled (0x01)
        Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4                 #6 [hci0] 10.898311
      LE Set Scan Enable (0x08|0x000c) ncmd 2
        Status: Success (0x00)

让我感到困惑的是,禁用LE扫描('扫描关闭')也会禁用过滤器重复... :-(

< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2     #21 [hci0] 14.969999
        Scanning: Disabled (0x00)
        Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4                #22 [hci0] 14.973667
      LE Set Scan Enable (0x08|0x000c) ncmd 2
        Status: Success (0x00)

在多次阅读doc / adapter-api.txt后,我认为'DuplicateData'过滤器适用于bluez本身而不适用于蓝牙硬件,但我可能错了

© www.soinside.com 2019 - 2024. All rights reserved.