8

我目前正在尝试 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 版本,并尝试了不同的硬件,但无济于事。任何想法我可能会错过哪一步?我已经搜索了所有我能想到的线索,但还没有找到答案。提前感谢您的任何建议!

4

3 回答 3

13

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

sudo hciconfig $BLUETOOTH_DEVICE leadv 3

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

于 2013-12-07T07:48:47.077 回答
8

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

和 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"
于 2013-12-01T13:12:09.580 回答
1

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

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

于 2013-11-28T13:10:48.400 回答