Arch Linux和iPad之间的通信问题

时间:2016-01-27 16:39:20

标签: ios ipad bluez bluetooth-lowenergy archlinux-arm

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

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

list-attributes

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

2)我的iPad无法通过设置 - >看到电脑就像它可以看到iPad一样。我正在开发的应用中的蓝牙菜单或CBCentralManager。我的电脑设置为可被发现并永久配对,但它只是找不到它。

如果有办法,我怎样能够适当地连接到iPad?

2 个答案:

答案 0 :(得分:1)

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

  

OP在评论中提到他使用了hcitool。最好不要使用hciconfighcitool,因为这些正在进行中   被逐步淘汰BlueZ并且已经很长时间没有维护   时间。它们容易出错,这些程序所做的原始调用会阻塞并导致对其他蓝牙应用程序的干扰。

BlueZ发布了一些方法,以便用户将蓝牙(LE)功能用于应用程序或任务:DBus和更低级别的方法。 BlueZ用户空间包中包含的程序包括bluetoothctl,它使用DBus进行蓝牙相关任务,例如扫描,广告和GATT。 btmgmt之类的工具(可以被视为hcitool的维护版本)使用较低级别的库。 BlueZ建议将DBus API用于应用程序。一定要编译源代码,并遵循recommended instructions使用上述工具。另外,请始终检查上述工具和源文件的许可,因为某些工具和源文件不能包含在专有软件中。

无DBus解决方案:

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

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

DBus解决方案:

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

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

bluetoothd

在大多数情况下,当停止蓝牙服务时,您的蓝牙控制器将关闭,sudo service bluetooth stop && bluetoothd -E将不会响应启动时的用户输入/冻结。如果确实如此,请使用bluetoothctl并发出btmgmt再次为蓝牙控制器供电。

答案 1 :(得分:0)

  1. 要查看MAP服务属性,请使用list-attributes查看它们。确保正确拼写。要选择MAP服务,您需要按顺序列出属性,然后选择属性。

  2. 听起来你的ipad出了问题。也许尝试再次关闭它。确保你已启用蓝牙!

  3. 总有办法!