【问题标题】:Raspberry Pi iBeacon connection timing out树莓派 iBeacon 连接超时
【发布时间】:2013-12-13 16:36:42
【问题描述】:

我目前正在尝试 RadiusNetworks 在

上发布的 Raspberry Pi iBeacon 教程

http://developer.radiusnetworks.com/2013/10/09/how-to-make-an-ibeacon-out-of-a-raspberry-pi.html

但我遇到了几秒钟后连接超时的问题。我执行了一个全新的 raspbian 构建,并尝试了 2 个不同的加密狗(AZIO V400 和 IOGEAR GBU521),并且我根据教程尝试了 Bluez 5.8 以及 Bluez 5.11,都在新的 Raspbian 负载上。

当我调用启动脚本时,我看到:

pi@piBlueTest ~ $ ./start
Launching virtual iBeacon...
LE set advertise enable on hci0 returned status 12
< HCI Command: ogf 0x08, ocf 0x0008, plen 44
  1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 
  D0 F5 A7 10 96 E0 00 00 00 00 C9 00 00 00 00 00 00 00 00 00 
  00 00 00 00 
> HCI Event: 0x0e plen 4
  01 08 20 00 
Complete

这会使用“Locate iBeacon”应用在 iPhone 上触发“Entered”事件,并在几秒钟内显示以米为单位的距离。然后它将“距离:未知”显示为几秒钟的范围,然后发生“退出”事件。当我在运行“hcidump”的情况下运行序列时,我得到了

HCI sniffer - Bluetooth packet analyzer ver 5.11
device: hci0 snap_len: 1500 filter: 0xffffffff
< HCI Command: LE Set Advertise Enable (0x08|0x000a) plen 1
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertise Enable (0x08|0x000a) ncmd 1
    status 0x0c
    Error: Command Disallowed
< HCI Command: LE Set Advertising Data (0x08|0x0008) plen 44
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertising Data (0x08|0x0008) ncmd 1
    status 0x00
< HCI Command: LE Set Advertising Parameters (0x08|0x0006) plen 15
    min 1280.000ms, max 1280.000ms
    type 0x00 (ADV_IND - Connectable undirected advertising) ownbdaddr 0x00 (Public)
    directbdaddr 0x00 (Public) 00:00:00:00:00:00
    channelmap 0x07 filterpolicy 0x00 (Allow scan from any, connection from any)
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertising Parameters (0x08|0x0006) ncmd 1
    status 0x00
< HCI Command: LE Set Advertise Enable (0x08|0x000a) plen 1
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertise Enable (0x08|0x000a) ncmd 1
    status 0x00
> HCI Event: LE Meta Event (0x3e) plen 19
    LE Connection Complete
      status 0x00 handle 64, role slave
      bdaddr B8:F6:B1:1C:15:C8 (Public)
> ACL data: handle 64 flags 0x02 dlen 11
    ATT: Read By Type req (0x08)
      start 0x0001, end 0xffff
      type-uuid 0x2a00
> HCI Event: Disconn Complete (0x05) plen 4
    status 0x00 handle 64 reason 0x13
    Reason: Remote User Terminated Connection

iPhone 似乎正在尝试启动与 pi 的连接,然后在协商该连接时失败,然后结束广告。

我已完成从教程到信件的所有步骤,但似乎无法确定导致断开连接的原因。我曾尝试更改 bluez 版本,并尝试了不同的硬件,但无济于事。任何想法我可能会错过哪一步?我已经搜索了所有我能想到的线索,但还没有找到答案。提前感谢您的任何建议!

【问题讨论】:

  • Chris,发生这种情况后,如果您在 Pi 上重新启动 LE 广告,iBeacon Locate 会再次开始跟踪它吗?
  • 嗨,大卫,感谢您的回复。是的,我可以继续重启,它会保持相同的模式,一旦我重启,它会触发一个“Enter”事件,报告距离几秒钟,然后再未知几秒钟,然后在 hcidump 中我会看到断开连接,然后是“退出”事件。
  • 嗯。我从未见过这种行为。我想知道这是否是您的 BLE 加密狗的问题,是您配置 bluez 的方式不同,还是两者兼而有之。
  • 这当然很奇怪。可以肯定的是,昨晚我再次构建了 2013-09-25-wheezy-raspbian.zip,唯一的更改是更改区域设置、更改主机名,然后运行更新和升级。然后我按照教程使用 iogear 加密狗,得到了完全相同的结果。

标签: raspberry-pi bluetooth-lowenergy bluez ibeacon


【解决方案1】:

尝试将设备设置为“广告且不可连接”(3 而不是 0)而不是“广告且可连接”

sudo hciconfig $BLUETOOTH_DEVICE leadv 3

由于笔记本电脑试图连接,我们突然在几秒钟后发现信标关闭。将设备设置为不可连接即可解决问题。

【讨论】:

  • 谢谢雷纳!我进行了建议的更改并重新安装了“敲门”应用程序进行检查。 pi 信标现在通过此调整保持稳定运行。我找不到任何解释leadv各种模式的东西,所以感谢你的提示。像魅力一样工作!很难找到有关 bluez 之类的信息。
  • 好发现!我们将更新 Radius Networks howto 和我们预组装的 iBeacon 开发套件
  • 好的,Radius Networks HOWTO 现已更新以包含此内容,我们预装的所有 iBeacon 开发套件也是如此。
  • 如果我在运行该命令后得到LE set advertise enable on hci0 returned status 12 怎么办?
【解决方案2】:

看起来你已经解决了,但我会继续为其他可能遇到与我相同问题的人发帖并找到这个帖子。

和 Chris 一样,我完成了教程中的步骤,但使用的是 bluez 5.11。经过一些实验后,我不得不更改“开始”脚本中的步骤顺序。不知道为什么,但这似乎是它可以正常工作的唯一顺序。也许我做错了什么?

#!/bin/sh
. ./ibeacon.conf
echo "Launching virtual iBeacon..."
sudo hciconfig $BLUETOOTH_DEVICE up
sudo hciconfig $BLUETOOTH_DEVICE noleadv
sudo hciconfig $BLUETOOTH_DEVICE leadv 0
sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 $UUID $MAJOR $MINOR $POWER 00 00 00 00 00 00 00 00 00 00 00 00 00
echo "Complete"

【讨论】:

  • 按此顺序运行命令也对我有用。
  • 使用推荐的 5.8 和 iogear.com/product/GBU521 我还必须使用 bobscaggs 修改后的功能顺序。
【解决方案3】:

也许您可以通过让任何尝试连接的设备停止这样做来阻止这种情况发生。这对于 iOS 来说是不正常的。你告诉它尝试连接吗?你确定是iOS设备在做这个吗?也许是你的电脑?

或者,如果您自己不能让它工作,我可以提供一个免费的 .iso 文件,其中包含我们在我们销售的预组装单元上放置的确切代码。这可以消除构建问题。如果您想尝试这个,请通过我们的销售联系人发送备注。

【讨论】:

  • 谢谢大卫,我会关闭 Mac 看看是否有帮助!我没有从任何设备请求连接,所以连接/断开连接肯定让我感到困惑。如果没有,如果您不介意,我可能会为那个 .iso 麻烦您。非常感谢您的帮助!
  • 就是这样!我在我的 macbook 上禁用了蓝牙,现在它将保持连接。非常感谢您的指导。现在,我只需要找到一种方法让信标更加健壮,这样来自其他设备的连接尝试就不会杀死它。
  • 作为其他遇到此问题的人的后续行动,我现在看到它是我在我的 macbook 上运行的“敲门”应用程序,它正在驱动连接尝试并杀死 ibeacon。 Knock 是一款应用程序,可让您使用 BLE 在 iPhone 上敲击 2 次即可解锁 Mac。当我运行 Knock 时,它会尝试连接到 pi,并杀死信标。如果我关闭 macbook 上的敲门应用程序,一切都很好。
  • 有趣。你的报告是我第一次听到这样的报告。我想让基于 Pi 的 iBeacon 足够强大,以便从中恢复。如果发生这种情况,我们可能可以通过重新启动广告的流程来做到这一点,但我怀疑有一种方法可以简单地告诉 Bluez 禁止连接并继续广告。
猜你喜欢
  • 2015-02-11
  • 2014-08-06
  • 1970-01-01
  • 2013-04-09
  • 2021-11-19
  • 2017-07-21
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多