Arch Linux 和 iPad 之间的通信问题

Communication issues between Arch Linux and iPad

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

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

list-attributes

连接期间或连接外returns 无信息。

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

如果有办法,我怎样才能正确连接到 iPad?

  1. 要查看 MAP 服务属性,请使用 list-attributes 查看它们。确保拼写正确。要 SELECT MAP 服务,您需要依次 list-attributes 然后 select-attributes。

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

  3. 总会有办法的!

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

OP mentioned in the comments that he utilized hcitool. It's best not to use hciconfig nor hcitool as these are in the process of being phased out of BlueZ and have been unmaintained for a very long time. They are prone to errors and the raw calls these programs make are blocking and cause interference with other Bluetooth applications.

BlueZ 发布了一些方法,以便用户将其蓝牙 (LE) 功能用于应用程序或任务:DBus 和较低级别的方法。 BlueZ 用户 space 包中包含的程序包括 bluetoothctl,它使用 DBus 执行蓝牙相关任务,例如扫描、广告和 GATT。像 btmgmt 这样的工具可以被认为是 hcitool 的维护版本,使用较低级别的库。 BlueZ 建议使用 DBus API for applications. Be sure to have compiled the source code and have followed the recommended instructions 来使用上述工具。还要经常检查提到的工具和源文件的许可,因为有些不能包含在专有软件中。


无 DBus 解决方案:

如果使用 bluetoothctlDBus 不适合您,我建议您使用 btmgmt。它可以在 user space source code/tools 文件夹中找到。

如果您正在寻找或想要包括与 GATT 相关的任务,您可以使用 btgatt-client 作为 GATT 客户端或 btgatt-server 作为来自相同 /tools文件夹。 这些不使用 DBus,也不使用相应的蓝牙守护进程 (bluetoothd),如 bluetoothctl does

DBus解决方案:

然而,您没有看到使用 bluetoothctl 的服务的最可能原因是您没有 运行 使用 -E 标志(实验性).目前,所有与 GATT 相关的功能仅在 运行 在此实验模式下可用。 (他们正在努力使其脱离实验模式)我认为是因为它仍在开发中。如果我没记错的话,BlueZ在这个实验模式下也可以configured/installed,这样就不需要手动操作了

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

sudo service bluetooth stop && bluetoothd -E

在大多数情况下,当停止蓝牙服务时,您的蓝牙控制器会断电并且 bluetoothctl 不会在启动时响应用户 input/freezes。如果确实如此,请使用 btmgmt 并发出 power on 再次为蓝牙控制器供电。