首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlueZ:从命令行发送LE定向广告

BlueZ:从命令行发送LE定向广告
EN

Stack Overflow用户
提问于 2018-10-25 14:39:25
回答 1查看 2.1K关注 1票数 5

我试图从命令行发送定向广告,但我想不出怎么做。我已经检查过hc共图hcitoolbtmgmt,和蓝牙BLE ,但它们似乎没有一个能为特定的BLE设备启用定向广告。当使用hc共图检查我可以发送的广告类型时,我看到以下内容:

代码语言:javascript
复制
leadv      [type]   Enable LE advertising
                0 - Connectable undirected advertising (default)
                3 - Non connectable undirected advertising

有什么方法可以从命令行发送定向广告吗?

我使用的是运行在Linux4.15.0-36上的BlueZ ver5.48-通用的,附带了一个蓝牙4.0 dongle。

EN

回答 1

Stack Overflow用户

发布于 2018-11-28 11:49:31

您至少可以使用原始的HCI命令来实现这一点,您可以使用hcitool输入这些命令。您需要的关键HCI命令是"LE Set广告参数命令“(ogf=0x08,ocf=0x0006)。以下是将类型2广告设置为对等地址66:55:44:33:22:11的示例。

代码语言:javascript
复制
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 02 01 00 11 22 33 44 55 66 07 00

第一个A0 00是最小广告间隔(0x00A0x0.625ms=100 is ),第二个是最大广告间隔(您可能实际上希望将它们分开一点)。然后遵循类型(02)、自己的地址类型(随机)、远程地址类型(00表示公共)、对等地址、信道映射(07表示在频道37、38和39上广告)和筛选策略(00表示允许所有)。更多细节可以从蓝牙规范,版本5.0,第2卷,E部分,Chapt 7.8 (可从https://www.bluetooth.com/specifications/bluetooth-core-specification下载)中阅读。

请注意,在使用此命令时,广告不能处于活动状态,否则将失败。

还请注意,您在问题中提到的一些工具可能会将它们自己的缺省值强加给这些参数,例如将广告间隔更改为更大的值。因此,启用带有原始HCI命令的广告也是最安全的,这就是:

代码语言:javascript
复制
sudo hcitool -i hci0 cmd 0x08 0x000a 01

为了完整起见,下面是一组命令,可以使用特定于供应商的有效负载启动定向广告(在本例中,您显然不应该未经许可使用该命令)。广告有效载荷设置为0x08 0x0008。

代码语言:javascript
复制
sudo hciconfig hci0 up
sudo hcitool -i hci0 cmd 0x08 0x0008 0b 09 ff 4c 00 30 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 02 00 01 11 22 33 44 55 66 07 00
sudo hcitool -i hci0 cmd 0x08 0x000a 01

您可以使用btmon (随BlueZ一起提供)监视HCI接口,同时发出这些命令或任何其他命令。它很好地分析了数据包,因此您可以很容易地看到编辑原始命令是如何改变含义的。它还突出显示了它注意到的任何损坏的HCI命令。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52991998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档