0

我正在尝试使用 ESP32 使用蓝牙检查我的 iPhone 是否在家中。问题是当我使用 ESP32 的蓝牙扫描附近的设备时,iPhone 只发送两件事:

  • MAC地址
  • 服务 UUID

Mac地址或多或少每15分钟更改一次,因此没用。

而且 UUID 不是唯一的。我发现其他具有相同 UUID 的设备(奇怪)

有人知道我该如何解决这些限制并识别我的 iPhone 是否在附近?谢谢你们!

4

1 回答 1

2

这都是蓝牙的设计。蓝牙故意使跟踪未配对的设备变得困难。有关其工作原理的高级概述,请参阅保护您的隐私的蓝牙技术。

如果您与手机配对,您可以获得 IRK(身份解析密钥),然后您就可以解析“真实”MAC 地址并识别手机。也就是说,如果您使用的是 esp-idf,则代码表明它不支持 RPA(可解析私有地址)。另请参阅BLE 生成和解析随机 mac 地址无法正常工作,他们还暗示这是 ESP32 的限制。

也就是说,iPhone 确实会宣传 LocalName,如果这只是在您家中使用,并且您可以控制手机的设备名称,则可以在广告包中查找它。请注意,如果本地名称过长或电话需要宣传其他内容,则本地名称可能会被截断或消除。如果不是广告,您可以从 GAP 连接并阅读它。请参阅如何获得蓝牙低功耗设备的实际名称?

于 2021-03-02T13:45:01.077 回答