蓝牙 4.0 扫描响应

23

BLE扫描响应数据包是什么?

由于在线上几乎找不到任何信息,我们希望现在知道这个。

扫描响应数据包是否是响应设备扫描的,还是像每隔x秒发送的广告数据包一样?

4个回答

34
BLE扫描响应是由广告设备(外围设备)在接收到扫描请求后发送的数据包(即回复设备扫描)。扫描响应通常比广告数据包包含更多数据。换句话说,中央设备向广告设备发送扫描请求,以通过扫描响应获取其他用户数据。请注意,与更动态的广告数据相比,扫描响应被认为具有固定的“静态”数据。
广告数据包和扫描响应共享相同的格式,并通过相同的三个物理通道进行传输(它们都作为广告事件发送),但它们是两个不同的东西。
要了解更多信息,请查看SIG核心规范中关于扫描响应数据包的内容,该规范可在此处找到:此处
希望这能帮到你。

7
一个重要的补充信息来自yousif saeed的回答:
根据Bluetooth 4.x规范,接受扫描请求的外设设备,
  • 必须在协议头中使用特定的Advertising Type值进行广播
  • 必须使用等于或大于100ms的广告间隔,以便中央/外围设备可以在两个连续的广告数据包(广告间隔)之间的时间内交换扫描请求/响应数据包。
请注意,还取决于您特定的硬件平台和蓝牙低功耗软件堆栈,
  • 您可能会发现接受扫描请求的外围设备是不可连接的,也就是说,可能被限制为像纯信标一样运行(无连接性)。

我不相信这是准确的,可连接设备也可以提供扫描响应数据。在4.2规范的第4.4.3.2节中,它说:“链路层在进入扫描状态后,应向所有广告者发送至少一个SCAN_REQ PDU,这些广告者根据接收到的ADV_IND或ADV_SCAN_IND PDU允许扫描器过滤策略。” ADV_IND广告者是可连接的。 - Sogger
感谢@Sogger对我的回答进行纠正和审核。我会根据你的指示再次检查BTLE规范。我正在修改回答。 - jose.angel.jimenez

4

我正在寻找这些信息,不过在基础描述以外的好的技术资源很难找到。

有一家制造商网站上有几页非常好的内容,详细介绍了他们的硬件与这些通信的交互方式。

扫描响应包包括: 设备名称, 传输功率, Beacon ID, 固件版本, 电池电量

https://support.kontakt.io/hc/en-gb/articles/201492492-iBeacon-advertising-packet-structure https://support.kontakt.io/hc/en-gb/articles/201493072-Beacon-services https://support.kontakt.io/hc/en-gb/articles/201492492-iBeacon-advertising-packet-structure

我并不是推销Kontakt.io,但他们提供了非常详细的答案。


1
问题不在于人们通常将什么放入扫描响应数据包中,而是如何以及何时通过无线电发送。在外设发出广告后,扫描器可以在确切的150微秒后发送SCAN_REQ数据包。如果外设抓住了这个请求,它会在确切的150微秒后发送SCAN_RSP数据包。 - Emil
2
重申一下,其中一个问题是“什么是BLE扫描响应数据包?”由于我最近也遇到了这个问题,我觉得我的回答有助于增加对话的内容或者至少为其他可能有类似问题的人提供资源。但是,我很感激你提供的额外信息。我不知道通信的时间响应。这为研究通信过程中的延迟提供了一些方向,所以我很感谢你的评论。 - Christopher Wade Cantley
好的,现在你这么说,我理解你对问题的解释了 ;) - Emil

0

是的,它确实取决于设备扫描。

我最近有这样的经历。

我正在使用 Nordic 设备工作,并开始发送包括扫描响应数据的广告数据包。但是,我要么没有收到扫描响应数据包,要么几乎没有收到数据包。问题在于我没有从我的另一个 Nordic 设备进行扫描。一旦我开始从另一个设备进行扫描,扫描响应数据包就开始快速到达。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接