用bluez 5.4x宣传定制服务uuid

时间:2017-11-22 06:10:14

标签: bluetooth bluetooth-lowenergy bluez

我正在通过BLE编写自定义服务来传输自定义特征。它拥有自己的UUID,例如&#; 4E400001-B5A3-F393-E0A9-E50E24DCCA9E'。

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

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

我认为它会是这样的:

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

1 个答案:

答案 0 :(得分: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卷第C部分C中所示。因此,0x11是AD结构的长度。然后,0x07是AD类型“128位服务类UUID的完整列表”(参见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广告启用命令启用广告:​​

hcitool -i hci0 cmd 0x08 0x000A 01

请参阅btmon输出here