-
Goal :使用BlueZ和蓝牙4LE加密狗创建一个外围设备,宣传相当于"Hello World"的蓝牙 .
-
Where I'm At :我已经用hciconfig leadv进行了修改,但是我正在进行 .
-
What Help I Think I Need :我需要进入下一步 . 如果有人能指出我对一个好的资源,请指导我,或任何事情,非常感谢 . 如果我需要做额外的腿(搜索)工作,我可以,但我已经用我能想到的这个问题的许多不同衍生物来搜索Google和SO .
*我将此标记为CoreBluetooth,希望可能是iOS开发者在某些时候对此进行了修改 .
编辑:回应评论,说明我的最终目标似乎是谨慎的 . 我最终希望通过加密狗广告最简单的简单消息/信号,并在iOS设备(CoreBluetooth)上进行选择 . 我已经能够让iOS方面运行良好(与Linux方面相比,大量文档)但对我来说困难的部分是将此适配器设置为外设 . BlueZ堆栈对我来说是一个可怕的谜 .
编辑:经过更多的挖掘,我最终偶然发现了这篇文章:Raspberry Pi Bluetooth 4.0 Connection . 这使我走向GATT服务器的主题,我将继续追求这个话题 .
编辑:好吧,所以我继续学习 . 在过去的几天里,我深入研究了hci *,sdptool和gatttool工具 . 我已经到了能够设置适配器做广告的程度,“hciconfig hci0 leadv” . 此时,我可以成功“看到”适配器,但我实际上无法读取任何内容 . 我甚至没有看到友好的名字 . 我将保持卡车运输,但一如既往,任何帮助/建议都非常受欢迎 .
编辑:相关链接,关于iOS的蓝牙LE的可靠概述 . https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/AboutCoreBluetooth/Introduction.html#//apple_ref/doc/uid/TP40013257-CH1-SW1
最后编辑:嘿所有,这个链接涵盖了如何使用Raspberry Pi BlueZ创建iBeacon ... http://www.wadewegner.com/2014/05/create-an-ibeacon-transmitter-with-the-raspberry-pi/
2 回答
插入蓝牙适配器后,运行以下命令将告诉您设备名称并说明其状态:
$ hciconfig
输出应该如下所示:
这表示设备被称为hci0处于关闭状态 . 发出以下命令来启动它:
$ sudo hciconfig hci0 up
现在看起来应该是这样的:
接下来,执行以下示例命令以配置要发送的广告数据 .
您可以更改十六进制字节(从1e开始)为您的广告发送不同的字节序列 . 从字面上发送"HELLO WORLD"的ASCII代码的那个将使用:
48 45 4c 4c 4f 57 4f 52 4c 44
( EDIT: 但是您还必须使用有效的标头为此消息添加前缀,请参阅here.)现在,使用以下命令激活加密狗上的广告,这将开始发送“Helo World”数据包 .
$ sudo hciconfig hci0 leadv 0
EDIT: 以上命令使广告服务可连接 . 如果您不想允许连接,请将其更改为
$ sudo hciconfig hci0 leadv 3
您还可以使用以下命令禁用广告:
$ sudo hciconfig hci0 noleadv
在这里添加更多信息(参考BlueZ5.x):
bluez没有暴露DBUS api用于gatt服务器注册;您有一些配置文件实现可用,但您需要使用--enable-experimental选项配置和编译它,或者在插件文件夹下启用gatt-example,以tregister some gatt server为例
当你做广告时做hciconfig hci0 leadv注意广告数据 . 在以下示例中为iBeacon
sudo hcitool -i hci0 cmd 0x08 0x0008 1e **02 01 1a** ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 00 00 00 00 00 00 00 00 00 00 00 00 00
粗体部分用于AD结构,该结构与标志字段相关(在蓝牙规格下检查广告数据格式) . 通过此标志设置,设备将自己宣传为同时LE和BR-EDR .
根据我的经验,当以这种方式进行广告时,扫描bluez设备充当BLE外设的Android设备将触发经典蓝牙连接(由于标志设置)而不是BLE(请注意LE和Classic的连接过程不同) . 不确定Apple中央设备在这种情况下的行为方式 . 无论如何要避免它,你可以设置06而不是1A,这样就不会宣传BR-EDR支持 . 通过这种方式,您将看到通过BLE的连接 .
如果您想使用中央Android设备进行测试,可以使用免费的Nordic应用程序 .