当前位置: 首页 > 知识库问答 >
问题:

将BlueZ Stack用作外围设备(广告客户)

李敏学
2023-03-14

>

  • 目标:使用BlueZ和蓝牙4LE加密狗创建一个外设,宣传蓝牙相当于“你好世界”。

    我现在的位置:我目前已经安装下载了BlueZ堆栈,我可以使用hci工具识别和查看蓝牙加密狗。我已经修补了hciconfig leadv,但我只是不太了解它/了解发生了什么。

    我想我需要什么帮助:我需要让它进入下一步。如果有人能为我指出一个好的资源,带我走过这条路,或者做任何事情,我将不胜感激。如果我需要做额外的腿部(搜索)工作,我可以,但我已经搜索了谷歌,所以我能想到的关于这个问题的各种衍生工具。

    *我也将其标记为Core蓝牙,希望可能iOS开发人员在某个时候对此进行了修补。

    编辑:作为对评论的回应,陈述我的最终目标似乎是谨慎的。我最终希望通过加密狗宣传最简单的简单消息/信号,并在iOS设备(CoreBooth)上进行宣传。我已经能够让iOS端的东西运行良好(与Linux端的东西相比,有大量文档),但对我来说,最困难的部分是将这个适配器设置为外设。BlueZ堆栈对我来说是一个可怕的谜。

    编辑:经过更多的挖掘,我最终偶然发现了这篇文章:覆盆子皮蓝牙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

    最后编辑:嘿,所有人,这个链接涵盖了如何使用树莓派布鲁斯创建一个iBeacon...http://www.wadewegner.com/2014/05/create-an-ibeacon-transmitter-with-the-raspberry-pi/

  • 共有2个答案

    年文柏
    2023-03-14

    在此添加更多信息(参考BlueZ5. x):

    >

  • bluez没有为gatt服务器注册公开DBUSAPI;您可以使用一些概要文件实现,但您需要使用--enable-experimental选项或plugin文件夹下的enable-gatt-example来配置和编译它,从而注册一些gatt服务器作为示例

    当您在做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 00c5 00 00 00 00 00 00 00 00 00 00 00 00 00

    粗体部分用于与标志字段相关的广告结构(请在bluetooth spec下检查Advertisigin数据格式)。通过此标志设置,设备将同时作为LE和BR-EDR进行宣传。

    根据我的经验,当以这种方式做广告时,扫描充当BLE外围设备的蓝牙设备的Android设备将触发通过经典蓝牙(由于标志设置)而不是通过BLE的连接(请注意,LE和经典的连接过程不同)。不确定苹果中央设备在这种情况下如何行动。无论如何,为了避免它,你可以设置06而不是1A,这样BR-EDR的支持就不会被宣传。这样,您将看到通过BLE的连接。

    如果你想测试它使用中央Android设备有一个免费的北欧应用程序

  • 齐修贤
    2023-03-14

    插入蓝牙加密狗后,运行以下命令将告诉您设备名称并给出其状态:

    $hcconfig

    输出应如下所示:

    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
    

    这表示称为hci0的设备处于关闭状态。发出以下命令将其调出:

    $sudo hcicon fig 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
    

    接下来,执行以下示例命令来配置要发送的广告数据。

    $ 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
    

    您可以更改十六进制字节(从1e开始)以发送广告的不同字节序列。按字面意思发送“HELLO WORLD”ASCII码的邮件将使用:48 45 4c 4c 4f 57 4f 52 4c 44(编辑:但您还必须在邮件前面加上有效的标题,请参见此处。)

    现在,使用以下命令激活加密狗上的广告,这将开始发送“Helo World”数据包。

    $sudo hcicon fig hci0领先0

    编辑:上面的命令使广告的服务可连接。如果您不想允许连接,请将其更改为$sudo hcicon fig hci0 led v 3

    您还可以使用以下命令禁用广告:

    $sudo hciconfig hci0 noleadv

     类似资料:
    • 问题内容: 目标 :使用BlueZ和Bluetooth 4LE加密狗创建一个外围设备,用于宣传与“ Hello World”类似的蓝牙。 我现在在哪里 :我已经安装并下载了BlueZ堆栈,我可以使用hci工具来识别并查看蓝牙加密狗。我已经修改过hciconfig leadv,但我只是不太了解它/了解发生了什么。 我认为我需要什么帮助 :我需要进行下一步。如果有人可以将我引向一个好的资源,或者带我逐

    • 我试图使用新的Google-service-libs在我的应用中设置AdMob广告。在Genymotion模拟器广告中一切看起来都很好。但他们没有像我的Galaxy Ace GT5830i和Android 2.3.6这样的真实设备。我不知道是什么问题。 下面是一些代码: XML: 我的Ad_Unit_Id以字符串形式保存。res/文件夹中的xml文件。 java语言: 如果您需要更多代码,请告诉我

    • 有没有人使用三星的蓝牙LE API让三星Android设备作为iBeacon做广告?这应该是可能的,但我没有访问设备来尝试它。 如果有人用它来做三星Android设备的广告,作为任何其他蓝牙LE外设,我也想知道这一点。 编辑:这现在可以在Android L上实现。请参见此处。

    • 我试图构建一个Android应用程序,作为一个BLE外设,也作为GATT客户端。 以下是我试图实现的步骤: 但是,如何在Android设备上通知我可以建立连接,以便调用函数连接到GATT服务器? 我也通过启动广告后获取远程设备进行了尝试。 我错过了什么?

    • 这听起来很基本,但我是Android BLE开发的初学者。到目前为止,我能够创建我的Nexus9设备作为外围设备和Moto G作为中心设备。而且我正在成功连接设备。但我不知道当我从中央设备发送一个特性时,它将从外设接收到哪里?广告回调仅在广告启动成功而不是(在我的例子中是成功的)时才返回 这是我的外设代码 我正在从中央使用连接的Gatt的writeCharacteristic命令,但不知道如何从外

    • Linux 支持众多的硬件设备,比如:鼠标、打印机、扫描仪、PCMCIA 和 USB 设备。 然而,在安装系统的时候,大部分设备并不需要。 USB 硬件通常工作得很好,只有一些 USB 键盘需要额外地配置(参考 第3.6.4.4节 , "USB BIOS 支持与键盘")。 另外,参考 Linux Hardware Compatibility HOWTO 来判断你的硬件是否被 Linux 支持。