Отключить параметр «Фильтровать дубликаты» для команды «Включить сканирование LE» - PullRequest
2 голосов
/ 25 марта 2019

Я хотел бы отключить настройку «Фильтровать дубликаты» на уровне контроллера Bluetooth с помощью команды HCI «LE Set Scan Enable» с использованием интерфейса D-Bus bluetoothd.

Я уже пытался установить параметр 'DuplicateData' из SetDiscoveryFilter (org.bluez.Adapter1), но, согласно btmon, это не меняет значение 'Filter duplicates' для LE Set Scan Enable. Я также прочитал справочные страницы для «bluetoothd» и «main.conf», но безуспешно.

В отличие от этого я обнаружил, что «hcitool lescan - duplicates» делает свое дело.

Любые указатели будут с благодарностью!

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Добро пожаловать в 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 голосов
/ 29 марта 2019

Большое спасибо за ваш ответ.Я попробовал команду bluetoothctl на bluez 5.48 и 5.50 и получил тот же результат, что и в моем приложении 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 ('scan off') также отключает дубликаты фильтров ...: - (

< 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 ине к оборудованию Bluetooth, но я могу ошибаться

...