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

时间:2016-06-29 21:23:52

标签: bluetooth ibeacon archlinux bluetooth-lowenergy bluez

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

使用hcitool扫描板1上的BLE设备(iBeacon)时,我只接收单个设备的地址(下图)。

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

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

启动hcitool lescan,删除重复项

sudo hcitool lescan --duplicates

single BLE device detected on Board 1 (PixiePro)

启动hcitool lescan流程&从hcidump

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

single BLE device detected on Board 1, <code>hcidump</code> output

这两个只显示一个或两个不同的mac地址。我附近的各种iBeacons应该有几个不同的mac地址。

这是Board 2使用USB蓝牙适配器输出的比较:

sudo hcitool lescan

basic <code>hcitool lescan</code> in same physical location, from Board 2

正如您所看到的,有很多不同的设备,其中一些可以立即识别为Kontakt iBeacons。注意:我周围的大部分信标都不是Kontakt iBeacons

使用hcitool lescan

时是否缺少设置或需要启用此设置?

1 个答案:

答案 0 :(得分:1)

我会尽力帮助你。

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

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

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

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

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

  • 一旦您100%确定所有iBeacon设备都是 工作正常,你应该能够检测到mac-addresses 您的电路板设备。为此,我建议您运行hcitool 第一个终端窗口和第二个终端窗口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-address。

  • 在这种情况下,如果您仍然没有看到您的iBeacon设备 确定你的主板上某处存在问题。也可能是 硬件或软件。这是我建议的地方:

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

如果有任何问题,请随时提出!