了解 LE Read Advertising Physical Channel Tx Power 命令的输出

Understanding of the output of LE Read Advertising Physical Channel Tx Power command

最近我正在研究从 Raspberry Pi 广播 BLE 广告。请注意,大部分部分已经完成,我可以从另一个 Raspberry Pi 收到广告消息。我唯一不清楚的是如何读取 TX 功率电平,因此也可以发送 TX 功率信息。

根据 Core Specification(第 4 卷第 7.8 部分 E 部分),我了解到

sudo hcitool -i hci0 cmd 0x08 0x0007

是读取TX功率电平的命令。但是我无法弄清楚输出的含义,即

< HCI Command: ogf 0x08, ocf 0x0007, plen 0
> HCI Event: 0x0e plen 5
  01 07 20 00 0C

这几天玩各种命令,我能理解一部分。例如,plen 可能表示参数长度。 0x0e 表示 HCI_Command_Complete(第 7.7.14 节,E 部分,第 4 卷)。最后一行的07是输入的ocf。我的问题是: 00 是否表示命令成功并且 0C 给出了发射功率级别?或者 0C 是 Command Disallowed 错误代码?

此外,我想知道是否有人可以提供一份文件来解释输出消息中代码的所有含义HCI Event

在此先感谢您。

注意:我之前的问题不知何故被关闭说它属于 https://raspberrypi.stackexchange.com/ 网站。但我认为这个问题更多地与蓝牙标准和 bluez 有关。我确实在这个网站上看到了很多相关的问题。如果我理解有误,请告诉我。

如果您 运行 "sudo btmon" 在您 运行 您的测试命令时在另一个终端中,它应该解码所有 hci 消息。

Chang:你在回复中看到的是

0x01 查询完成事件,事件代码

0x07 0x20 您发送的命令的操作码(经过一些 OGF 和 OCF 的调整)

0x00状态码,0x00正常

0x0C TX 功率电平 0x0C == 12 十进制

但现在有一个问题:Chang 报告读数为 0x0c dBm。 在我的盒子上,我看到 0x07 dBm。

这两个值似乎都非常高....在扫描仪上,我得到的 RSSI 为 -49 dBm(phone 几乎在喜气洋洋的笔记本电脑顶部 - 一些 DELL Ubuntu 与 bluez)

鉴于读数为 0x07 dBm,我的 iBeacon 扫描仪显示出令人难以置信的距离下降 179526552.90 米 :-)

知道为什么 hcitool/bluez/Ubuntu 会 return LE Read Advertising Physical Channel Tx Power 命令的错误值吗?