我试图从命令行发送定向广告,但我想不出怎么做。我已经检查过hc共图,hcitool,btmgmt,和蓝牙BLE ,但它们似乎没有一个能为特定的BLE设备启用定向广告。当使用hc共图检查我可以发送的广告类型时,我看到以下内容:
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。
发布于 2018-11-28 11:49:31
您至少可以使用原始的HCI命令来实现这一点,您可以使用hcitool输入这些命令。您需要的关键HCI命令是"LE Set广告参数命令“(ogf=0x08,ocf=0x0006)。以下是将类型2广告设置为对等地址66:55:44:33:22:11的示例。
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命令的广告也是最安全的,这就是:
sudo hcitool -i hci0 cmd 0x08 0x000a 01为了完整起见,下面是一组命令,可以使用特定于供应商的有效负载启动定向广告(在本例中,您显然不应该未经许可使用该命令)。广告有效载荷设置为0x08 0x0008。
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命令。
https://stackoverflow.com/questions/52991998
复制相似问题