Cer*_*yni 49 linux bluetooth core-bluetooth bluetooth-lowenergy bluez
目标:使用BlueZ和蓝牙4LE加密狗创建一个外围设备,宣传相当于"Hello World"的蓝牙.
我在哪里:我目前有BlueZ堆栈设置和下载,我可以使用hci工具识别并看到蓝牙适配器.我已经使用了hciconfig leadv,但我只是不太了解它/了解正在发生的事情.
我认为我需要什么帮助:我需要进入下一步.如果有人能指出我对一个好的资源,请指导我,或任何事情,非常感谢.如果我需要做额外的腿(搜索)工作,我可以,但我已经用我能想到的这个问题的许多不同衍生物来搜索Google和SO.
*我将此标记为CoreBluetooth,希望可能是iOS开发者在某些时候对此进行了修改.
编辑:回应评论,说明我的最终目标似乎是谨慎的.我最终希望通过加密狗广告最简单的简单消息/信号,并在iOS设备(CoreBluetooth)上进行选择.我已经能够让iOS方面运行良好(与Linux方面相比,大量文档)但对我来说困难的部分是将此适配器设置为外设.BlueZ堆栈对我来说是一个可怕的谜.
编辑:经过更多的挖掘,我最终偶然发现了这篇文章:Raspberry Pi蓝牙4.0连接.这使我走向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 /
dav*_*ung 41
插入蓝牙适配器后,运行以下命令将告诉您设备名称并说明其状态:
$ hciconfig
输出应该如下所示:
hci0: Type: BR/EDR Bus: USB
BD Address: 00:01:02:aa:bb:cc ACL MTU: 1021:8 SCO MTU: 64:1
DOWN
RX bytes:1000 acl:0 sco:0 events:47 errors:0
TX bytes:1072 acl:0 sco:0 commands:47 errors:0
Run Code Online (Sandbox Code Playgroud)
这表示设备被称为hci0处于关闭状态.发出以下命令来启动它:
$ sudo hciconfig hci0 up
现在看起来应该是这样的:
$ hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 00:01:02:aa:bb:cc ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING
RX bytes:1000 acl:0 sco:0 events:47 errors:0
TX bytes:1072 acl:0 sco:0 commands:47 errors:0
Run Code Online (Sandbox Code Playgroud)
接下来,执行以下示例命令以配置要发送的广告数据.
$ sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 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
Run Code Online (Sandbox Code Playgroud)
您可以更改十六进制字节(从1e开始)为您的广告发送不同的字节序列.一,从字面上发送ASCII码为"HELLO WORLD"将使用:48 45 4c 4c 4f 57 4f 52 4c 44
(编辑:但你也必须前缀一个有效的头这条消息,请参见这里.)
现在,使用以下命令激活加密狗上的广告,这将开始发送"Helo World"数据包.
$ sudo hciconfig hci0 leadv 0
编辑: 上面的命令使广告服务可连接.如果您不想允许连接,请将其更改为$ sudo hciconfig hci0 leadv 3
您还可以使用以下命令禁用广告:
$ sudo hciconfig hci0 noleadv
小智 6
在这里添加更多信息(参考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应用程序.
归档时间: |
|
查看次数: |
45994 次 |
最近记录: |