有没有办法增加 BlueZ 中的 BLE 广告频率?
- 2024-11-14 08:29:00
- admin 原创
- 18
问题描述:
我有一台 Linux 计算机,使用以下命令广播 BLE 广告:
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 来执行此操作。
解决方案 1:
我想我已经明白了。
而不是:
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 会将广告设置为每 0xA00.625ms = 100ms 播放一次。将其设置为 40 06 会将广告设置为每 0x06400.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”发出了一个较慢的设置广告间隔命令。
请注意,所有这些都基于 IOGear GBU521,因此可能不适用于其他蓝牙 LE 芯片组。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件