У меня есть приложение, работающее на встроенном устройстве с использованием Bluez 5.X и DBus.
Мое приложение устанавливает агент с возможностью «NoInputNoOutput» и адаптер как не подлежащий связыванию (я не хочу связываться).
Мое встроенное устройство не инициирует соединение (периферийное устройство GAP) и не транслирует рекламу (сервер GATT).
В BlueZ 5.48 (и 5.52), когда я пытаюсь подключиться к своему встроенному устройству с устройства Android, все работает плавно, но когда я пытаюсь использовать iOS, соединение теряется через некоторое время и в инструменте btmon есть следующие журналы:
> ACL Data RX: Handle 68 flags 0x02 dlen 9 #1050 [hci0] 398.940027
ATT: Error Response (0x01) len 4
Read Request (0x0a)
Handle: 0x0016
Error: Insufficient Authentication (0x05)
< ACL Data TX: Handle 68 flags 0x00 dlen 7 #1051 [hci0] 398.940268
ATT: Read Request (0x0a) len 2
Handle: 0x0016
> ACL Data RX: Handle 68 flags 0x02 dlen 9 #1052 [hci0] 398.991500
ATT: Error Response (0x01) len 4
Read Request (0x0a)
Handle: 0x0016
Error: Insufficient Authentication (0x05)
Если мое приложение устанавливает адаптер как платный (но я не хочу), у меня появляется всплывающее окно на iPhone (не на Android), чтобы разрешить сопряжение
Информация:
- У меня нет этой проблемы с BlueZ 5.47
- Я не вижу свое встроенное устройство в обычном списке Bluetooth «Устройства» iPhone.
- У меня проблема, даже если мое приложение не настраивает никаких характеристик
Я не нашел (в журнале изменений и git) изменения с BlueZ 5.47, которое могло бы вызвать эту проблему. Любые идеи ?
Я думаю, что на iPhone есть сервер GATT, потому что я могу видеть много объектов, которые зарегистрированы на DBus при подключении. У меня нет этой проблемы с androïd, даже когда я настраиваю сервер GATT с характеристикой с разрешениями «Чтение зашифрованного» (nRF Connect)
Мой анализ:
На Iphone запускаю соединение со своим встроенным устройством
Мое встроенное устройство пытается что-то прочитать (характеристика защищена?) На iPhone (NOK !! Почему?)
В iPhone отказываются "Недостаточное шифрование" (?)
Мое встроенное устройство отправляет «Запрос безопасности»
Iphone отправляет «запрос на сопряжение»
Мой встроенный отказ "Reason Pairing Not Supported"
Изменить: появляется всплывающее окно с фиксацией «client: Rename set-filter-uuids to uuids» (e1021f7e486ebd6c0618673a758fa2c50d81109c) (между Bluez 5.47 и 5.48)