【发布时间】:2020-03-31 12:41:20
【问题描述】:
我有一个使用 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(不是安卓)上弹出一个窗口,以授权配对
信息:
- BlueZ 5.47 没有这个问题
- 我没有在 iPhone 的常规蓝牙中看到我的嵌入式设备 “设备”列表。
- 即使我的应用程序没有设置任何 特点
我没有发现(在 ChangeLog 和 git 中)自 BlueZ 5.47 以来的更改,这会导致此问题。有什么想法吗?
我认为 iPhone 上有一个 GATT 服务器,因为我可以看到许多在连接时在 DBus 上注册的对象。即使我设置了具有“读取加密”权限(nRF Connect)的特性的 GATT 服务器,我也没有这个问题。
我的分析:
在 Iphone 上,我启动了与嵌入式设备的连接
我的嵌入式设备尝试读取某些内容(受保护的特征 ?) 在 iPhone 上(不行!!为什么?)
iPhone 拒绝“加密不足”(?)
我的嵌入式设备发送“安全请求”
Iphone 发送“配对请求”
我的嵌入式拒绝“不支持原因配对”
编辑: 弹出窗口出现提交“客户端:将 set-filter-uuids 重命名为 uuids”(e1021f7e486ebd6c0618673a758fa2c50d81109c)(在 Bluez 5.47 和 5.48 之间)
【问题讨论】:
-
你能弄清楚它试图读取哪个属性吗?
标签: ios iphone bluetooth-lowenergy bluez pairing