首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法增加BlueZ中的BLE广告频率?

有没有办法增加BlueZ中的BLE广告频率?
EN

Stack Overflow用户
提问于 2014-01-15 06:06:55
回答 1查看 22.3K关注 0票数 22

我有一台linux计算机,使用以下命令广播BLE广告:

代码语言:javascript
复制
 sudo hciconfig hci0 up
 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
 sudo hciconfig hci0 leadv 3

这很有效,但计算机每秒只广播一次蓝牙广告。我想把这个频率提高到每秒10次或更多。有没有办法提高BlueZ的广告频率?或者每秒一次是标准的和不可改变的?如果命令行工具不能做到这一点,我很乐意用APIs完成这项工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-15 08:11:45

我想我想通了。

而不是:

代码语言:javascript
复制
sudo hciconfig hci0 up
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
sudo hciconfig hci0 leadv 3

执行以下操作:

代码语言:javascript
复制
sudo hciconfig hci0 up
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
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 03 00 00 00 00 00 00 00 00 07 00
sudo hcitool -i hci0 cmd 0x08 0x000a 01

第二个hcitool命令(0x08 0x0006)是"LE Set Advertising Parameters“。A0 00的前两个字节是“最小间隔”。后两个字节A0 00是“最大间隔”。在本例中,它将通告之间的时间设置为100ms。此设置的粒度为0.625毫秒,因此将间隔设置为01 00会将广告设置为每0.625毫秒播放一次。将其设置为A0 00会将通告设置为每隔0xA0*0.625ms = 100ms传播一次。将其设置为40 06将广告设置为每隔0x0640*0.625ms = 1000ms发送一次。第五个字节03将广告模式设置为不可连接。使用不可连接的广告,您最快可以广告100ms,使用可连接的广告(0x00),您可以更快地广告。

第三个hcitool命令(0x08 0x000a)是"LE Set Advertise Enable“。有必要使用hciconfig而不是hciconfig发出此命令,因为"hciconfig hci0 leadv 3“会自动将广告速率设置为较慢的缺省值1280ms。

我通过在运行问题中发布的原始命令的同时运行hcidump解决了这一问题。这向您展示了一组原始的hcitool命令(对它们所做的事情进行了很好的注释),这些命令由bluez执行。我只是碰巧从hcidump输出中注意到"hciconfig hci0 Leadv3“发出了一个较慢的设置广告间隔命令。

请注意,所有这些都是基于IOGear GBU521的,因此这可能不适用于其他蓝牙LE芯片组。

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

https://stackoverflow.com/questions/21124993

复制
相关文章

相似问题

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