0

我正在我的计算机上运行 Arch Linux 和 Bluez 库,我正在尝试通过 BLE 连接到 iPad [w/Retina]。我可以在 bluetoothctl 中看到 iPad,配对、信任并连接到它。我的问题分为两部分:

1)我希望能够选择属性,更具体地说是针对 MAP 服务。然而,运行

list-attributes

在连接期间或连接之外都不会返回任何信息。

2) 我的 iPad 无法像看到 iPad 一样看到计算机,无论是通过设置 --> 蓝牙菜单还是我正在开发的应用程序中的 CBCentralManager。我的计算机设置为永远可发现和可配对,但它就是找不到它。

如果有办法,我将如何正确连接到 iPad?

4

2 回答 2

1

对使用 BlueZ 用户空间工具的任何人的免责声明:

OP 在他使用的评论中提到hcitool。最好不要使用hciconfig它们,hcitool因为它们正在逐步退出 BlueZ 并且已经很久没有维护了。它们容易出错,并且这些程序进行的原始调用会阻塞并干扰其他蓝牙应用程序。

BlueZ 发布了一些方法,以便用户将其蓝牙 (LE) 功能用于应用程序或任务:DBus 和较低级别的方法。BlueZ 用户空间包中包含的程序包括bluetoothctl,它使用 DBus 执行蓝牙相关任务,例如扫描、广告和 GATT。类似的工具btmgmt,可以被认为是 的维护版本hcitool,使用较低级别的库。BlueZ 建议对应用程序使用DBus API。请务必编译源代码并按照推荐的说明使用上述工具。还要始终检查上述工具和源文件的许可,因为有些工具和源文件不能包含在专有软件中。


无 DBus 解决方案:

如果使用bluetoothctlorDBus不适合你,我建议你使用btmgmt. 它可以在用户空间源代码/tools的文件夹中找到。

如果您正在寻找或想要包含与 GATT 相关的任务,您可以btgatt-client用作 GATT 客户端或从同一文件夹btgatt-server中充当 GATT 服务器。/tools这些不使用 DBus,相应的蓝牙守护进程 ( bluetoothd)bluetoothctl也一样

DBus解决方案:

但是,您没有看到使用 的服务的最可能原因是您bluetoothctl没有运行上述带有-E标志的蓝牙守护程序(实验性)。目前,所有与 GATT 相关的功能仅在此实验模式下运行时可用。(他们正在努力让它脱离实验模式)我认为因为它仍在开发中。如果我没记错的话,BlueZ 也可以在这个实验模式下配置/安装,因此不需要手动操作。

要在启用 GATT 的情况下重新启动 BlueZ 守护程序 ( bluetoothd),请运行:

sudo service bluetooth stop && bluetoothd -E

在大多数情况下,停止蓝牙服务时,您的蓝牙控制器会断电,并且bluetoothctl不会响应用户输入/启动时冻结。如果确实是这种情况,请使用btmgmt并发出 apower on再次为蓝牙控制器供电。

于 2016-02-02T13:41:02.740 回答
0
  1. 要查看 MAP 服务属性,请使用 list-attributes 来查看它们。确保拼写正确。要选择 MAP 服务,您需要按顺序列出属性然后选择属性。

  2. 听起来你的 ipad 有问题。也许尝试将其关闭然后再打开。确保您已启用蓝牙!

  3. 总会有办法的!

于 2016-01-27T19:06:00.103 回答