我在计算机上运行Arch Linux和Bluez库,我试图通过BLE连接到iPad [w / Retina]。我可以在bluetoothctl中看到iPad,配对,信任它,并连接到它。我的问题分为两部分:
1)我希望能够选择属性,更具体地说是MAP服务。但是,运行
list-attributes
在连接期间或之外不返回任何信息。
2)我的iPad无法通过设置 - >看到电脑就像它可以看到iPad一样。我正在开发的应用中的蓝牙菜单或CBCentralManager。我的电脑设置为可被发现并永久配对,但它只是找不到它。
如果有办法,我怎样能够适当地连接到iPad?
答案 0 :(得分:1)
对使用BlueZ用户空间工具的任何人免责声明:
OP在评论中提到他使用了
hcitool
。最好不要使用hciconfig
或hcitool
,因为这些正在进行中 被逐步淘汰BlueZ并且已经很长时间没有维护 时间。它们容易出错,这些程序所做的原始调用会阻塞并导致对其他蓝牙应用程序的干扰。
BlueZ发布了一些方法,以便用户将蓝牙(LE)功能用于应用程序或任务:DBus和更低级别的方法。 BlueZ用户空间包中包含的程序包括bluetoothctl
,它使用DBus进行蓝牙相关任务,例如扫描,广告和GATT。 btmgmt
之类的工具(可以被视为hcitool
的维护版本)使用较低级别的库。 BlueZ建议将DBus API用于应用程序。一定要编译源代码,并遵循recommended instructions使用上述工具。另外,请始终检查上述工具和源文件的许可,因为某些工具和源文件不能包含在专有软件中。
如果使用bluetoothctl
或DBus
无效,我建议您使用btmgmt
。它可以在user space source code的/tools
文件夹中找到。
如果您正在寻找或想要包含与GATT相关的任务,您可以使用btgatt-client
充当GATT客户端,或btgatt-server
充当GATT服务器同时使用{{1}文件夹。
这些不使用DBus,也不使用像/tools
这样的蓝牙守护进程(bluetoothd
)
最有可能的原因是您没有看到使用bluetoothctl
的服务,但是您没有使用bluetoothctl
标志(实验性)运行上述蓝牙守护程序。目前,所有与GATT相关的功能仅在以此实验模式运行时才可用。 (他们正努力将其从实验模式中解脱出来)我认为因为它仍在开发中。如果我没记错的话,BlueZ也可以在这个实验模式中配置/安装,这样就不需要手动操作了。
要在启用GATT的情况下重新启动BlueZ守护程序(-E
),请运行:
bluetoothd
在大多数情况下,当停止蓝牙服务时,您的蓝牙控制器将关闭,sudo service bluetooth stop && bluetoothd -E
将不会响应启动时的用户输入/冻结。如果确实如此,请使用bluetoothctl
并发出btmgmt
再次为蓝牙控制器供电。
答案 1 :(得分:0)
要查看MAP服务属性,请使用list-attributes查看它们。确保正确拼写。要选择MAP服务,您需要按顺序列出属性,然后选择属性。
听起来你的ipad出了问题。也许尝试再次关闭它。确保你已启用蓝牙!
总有办法!