BLE: адаптер, отправляющий данные с использованием протокола HCI ACL вместо LE LL - PullRequest
0 голосов
/ 02 июня 2018

Я создал приложение для Android, которое действует как центральное, и я нашел реализацию gatt-сервера (github.com/Jumperr-labs/python-gatt-server), который является частью bluez. Когда я спрашиваюс запросом на чтение значения признака от сервера, результирующие пакеты отправляются с использованием протокола ACI HCI, который, как я знаю, неверен. Я установил свой адаптер в режим LE only, используя btmgmt, но я вижу те же результаты.Я что-то пропустил?

Вот текущие настройки адаптера, взятые из команды 'btmgmt info' "Текущие настройки: питание подключаемо, например, реклама secure-conn"

Вот что показывает Wireshark Wireshark

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Я нашел где-то, что wireshark, как и hcidump, выполняет анализ на уровне HCI, не видя нижних уровней. И как только в HCI BLE пакеты отправляются как данные ACL, это нормально! Чтобы увидеть нижние уровни, вынеобходимо купить USB-ключ BLE sniffer.

0 голосов
/ 02 июня 2018

Я не знаю точно, где вы видите эти пакеты ACL, но пакеты данных BLE действительно отправляются как пакеты данных ACL через HCI.

Если вы видите, что соединение использует Bluetooth Classic, вы можете изсторона Android установила для параметра транспорта значение TRANSPORT_LE в вызове connectGatt для принудительной установки BLE.

...