当前位置: 首页 > 面试题库 >

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

公孙驰
2023-03-14
问题内容

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

 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中的广告频率?还是每秒一次是标准且不变的?如果无法使用命令行工具,我很乐意使用C
API进行此操作。


问题答案:

我想我知道了。

代替:

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

做这个:

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设置广告参数。前两个字节A0 00是”最小间隔”。后两个字节A0
00是“最大间隔”。在此示例中,它设置了之间的时间将广告设置为100ms。此设置的粒度为0.625ms,因此将时间间隔设置为01
00可以使广告每0.625ms进行一次。将其设置为A0 00可以使广告每0xA0 * 0.625ms = 100ms进行一次。 40
06将播发设置为每0x0640 * 0.625ms =
1000ms发送一次。第五个字节03将播发模式设置为不可连接。使用不可连接播发,您可以播出最快的速度是100ms,且可连接播发(
0x00),您可以更快地刊登广告。

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

我通过运行hcidump和运行您在问题中发布的原始命令来解决这个问题。这向您展示了由bluez执行的一堆原始的hcitool命令(对其进行了很好的注释)。我刚从hcidump输出中注意到,“
hciconfig hci0 leadv 3”发出了一个较慢的set Advertisement命令。

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



 类似资料:
  • 我已经发布了一个iOS应用程序,但我在使用谷歌移动广告SDK加载奖励视频广告时遇到了问题。 当玩家点击按钮查看视频广告时,玩家很少会看到视频。大多数时候,用户会看到Admob无法填写请求的错误: 有时,他们需要点击几下才能获得一个,有时,无论点击多少次,他们都无法获得一个。这个问题更多发生在我的奖励视频中,但也发生在我的横幅广告中。有时谷歌无法为我提供横幅广告。有人知道为什么这不起作用吗? 我的广

  • 非单调递增的dts是什么意思? 如何使用libavformat以相同的编解码器连接2个视频文件? 流中dts到muxer的非单调递增 我相信当我增加pts和DTS时,我有正确的逻辑。我不知道我到底错过了什么。 谢了。

  • 我正在尝试用discord.js制作一个不和谐的bot,我需要它做的一件事就是自己加入一个语音频道,即使呼叫中没有人。我能找到的使它加入语音通道的唯一方法是,如果有人在文本通道中发送命令,告诉机器人加入,我不想这样。我想让机器人加入一个自己的语音通道,不管有没有人在语音通道。如果有人知道如何做到这一点,请指导我在正确的方向上,我将不得不做什么。谢谢

  • 问题内容: 使用PMD,如果要忽略特定的警告,则可以使该行被忽略。 FindBugs有类似的东西吗? 问题答案: FindBugs的初始方法涉及XML配置文件(也称为过滤器)。这确实不如PMD解决方案方便,但是FindBugs只能在字节码上工作,而不能在源代码上工作,因此注释显然不是一个选择。例: 但是,为解决此问题,FindBugs稍后引入了另一个基于注释的解决方案(请参阅参考资料),您可以在类

  • 代码: 问题: 有时Admob加载带有视频的间隙广告,默认情况下该广告的音量设置为最大,有什么方法可以使其静音吗? 还有奖励视频广告,我找不到任何选项使广告静音,有人能帮忙吗?

  • 问题内容: 有没有一种使用HTML5 标签全屏播放视频的方法? 如果这不可能,那么有人知道这样做的理由吗? 问题答案: HTML5没有提供将视频全屏显示的方法,但是并行的全屏规范提供了允许将任意元素(包括元素)全屏显示的方法。 它在许多浏览器中都具有实验性支持。 原始答案: 根据HTML5规范(撰写本文时:09年6月): 用户代理不应提供公共API来使视频全屏显示。脚本与精心制作的视频文件结合在一