为什么两个不同的 BLE 适配器在扫描时显示不同的设备?

Why are two different BLE adapters show different devices when scanning?

我有两个板子: 第 1 板:PixiePro 运行 Arch Linux、Bluez 5.4 |板载蓝牙适配器 第 2 板:Raspberry Pi 运行 Raspbian,Bluez 5.39 | USB 蓝牙适配器

在使用 hcitool 扫描 Board 1 上的 BLE 设备 (iBeacon) 时,我只收到一个设备的地址(下图)。

AC:BC:32:72:8C:6B

我有超过 10 个适配器应该找到的 iBeacon。我尝试了以下技术:

开始hcitool lescan,删除重复项

sudo hcitool lescan --duplicates

开始 hcitool lescan 处理并从 hcidump

读取数据
sudo hcitool lescan --duplicates 1>/dev/null &
sudo hcidump --raw

这些都只是显示一两个不同的 mac 地址。我附近的各种 iBeacon 应该有几个不同的 mac 地址。

这是 Board 2 使用 USB 蓝牙加密狗的输出以供比较:

sudo hcitool lescan

如您所见,有许多不同的设备,其中一些可以立即识别为 Kontakt iBeacon。注意:我周围的大多数信标都不是 Kontakt iBeacons

使用 hcitool lescan 时是否缺少或需要启用的设置?

我会尽力帮助你。

您的 PixiePro 设备似乎有问题,但是您提供的信息不足以诊断问题。

这可能是设备本身或 Bluez 堆栈的问题,或者仅仅是因为设备超出了 PixiePro 设备的检测范围。

为了调试您的问题,您可以尝试执行以下操作:

  • 首先检查mac-addresses, uuid, major and minor values 你的设备。通常您可以在门户网站上找到此信息 您的 iBeacon 供应商;

  • 确保所有设备都已打开并正常工作。最简单的方法 是检查它们是否被手机检测到 phone。你可以 安装 free iOS or Android 应用程序。您应该能够检测到所有设备。还要检查每个 iBeacon 设备的 RSSI 值。请注意,即使从 phone 到 iBeacon 的距离相同,值也会有所不同。但是,当您将它们移近或移近接收设备时,移动应用程序应该可以清楚地识别该行为;

  • 一旦您 100% 确定所有 iBeacon 设备都已 正常工作,你应该能够检测到 mac-addresses on 你的开发板设备。 为此,我建议 运行 hcitool 第一个终端 window 和第二个终端中的 hcidump 工具 没有任何额外的参数。不像 hcitool 命令它 还将输出捕获数据包的 RSSI 值,如下所示:

    HCI Event: LE Meta Event (0x3e) plen 42 
    LE Advertising Report 
    ADV_NONCONN_IND - Non connectable undirected advertising (3) 
    bdaddr 02:AB:26:D4:9A:EE (Public) 
    Flags: 0x1a 
    Unknown type 0xff with 25 bytes data 
    RSSI: -72 
    

这些值将帮助您比较在不同设备上扫描的行为。不要期望它们在任何地方都相等,这些只是相对值。现在尝试将每个设备移动到靠近接收板的位置,您应该能够在 hcidump 工具的输出中看到它的 mac-地址。

  • 在这种情况下,如果您仍然没有看到您的 iBeacon 设备,那么请 确定 你的板子某处有问题。 可能是 硬件或软件。这是我推荐的地方:

    1. 安装 最新固件,可能会修复 BLE 堆栈中的错误 实施。
    2. 如果这种方法没有帮助 - 那么这意味着 问题出在硬件的某个地方,因此,您唯一要做的就是 能做的就是更换你的主板设备。

祝你好运!

如有任何问题,欢迎随时提问!