Home Articles

用bluez 5.4x宣传定制服务uuid

Asked
Viewed 413 times
1

我正在通过BLE编写自定义服务来传输自定义特性 . 它拥有自己的UUID,例如'8E400001-B5A3-F393-E0A9-E50E24DCCA9E' .

我发现我希望支持的特定Android应用程序(BLE客户端)要求广告数据包中包含自定义服务UUID .

但是我们的外围设备在debian上通过bluez 5.43运行,我无法弄清楚如何将这个UUID放在广告包中 .

我想它会是这样的:

hcitool -i hci0 cmd 0x08 0x0008 .... ?

1 Answer

  • 1

    我验证了以下命令(BlueZ ver 5.43,Linux 4.9.0-2-amd64(x86_64)):

    hcitool -i hci0 cmd 0x08 0x0008 12 11 07 9E CA DC 24 0E E5 A9 E0 93 F3 A3 B5 01 00 40 8E 00 00 00 00 00 00 00 00 00 00 00 00 00
    

    说明:

    我假设一切都在0x0008之前清楚,如果不是让我知道或者看看规范中LE集广告数据命令的描述 . 0x12是 Advertising_Data_Length ,即之后(填充字节之前)的有用字节数 . 现在你必须插入 Advertising_Data ,其格式如规范的图11.1第11卷第3部分C中所述 . 因此,0x11是AD结构的长度 . 然后,0x07是AD类型"Complete List of 128-bit Service Class UUIDs"(参见here) . 终于来了UUID . 请注意,一切都是小端 .

    然后发送LE Set广告参数命令,例如:

    hcitool -i hci0 cmd 0x08 0x0006 00 08 00 08 00 00 00 00 00 00 00 00 00 07 00
    

    然后通过发送LE Advertising Enable命令启用广告:

    hcitool -i hci0 cmd 0x08 0x000A 01
    

    请参见btmon输出here .

Related