Raspberry Pi iBeacon连接超时

Chr*_*row 8 raspberry-pi bluetooth-lowenergy bluez ibeacon

我目前正在尝试由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
Run Code Online (Sandbox Code Playgroud)

这会使用"Locate iBeacon"应用程序在iPhone上触发"已输入"事件,并以米为单位显示几秒钟的距离.然后它显示"距离:未知"作为几秒钟的范围,然后发生"退出"事件.当我运行"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
Run Code Online (Sandbox Code Playgroud)

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

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

Ray*_*oll 13

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

sudo hciconfig $BLUETOOTH_DEVICE leadv 3
Run Code Online (Sandbox Code Playgroud)

由于笔记本电脑试图连接,我们突然有几秒钟后灯塔熄了.将设备设置为不可连接可解决问题.


bob*_*ggs 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"
Run Code Online (Sandbox Code Playgroud)