覆盆子iBeacon没有检测到

时间:2013-11-30 12:37:49

标签: bluetooth raspberry-pi bluetooth-lowenergy bluez ibeacon

我最近试图在覆盆子pi上的BLE加密狗(cambridge硅收音机)上配置ibeacon。 参考:http://developer.radiusnetworks.com/2013/10/09/how-to-make-an-ibeacon-out-of-a-raspberry-pi.html

我收到此消息:

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 12

该应用程序甚至找不到信标。虽然我可以看到加密狗对这个命令闪现一些亮点:

sudo hciconfig hci0 leadv 0

但没有人被发现。

所以从appstore获取一个名为LIGHTBLUE的APP,它会检测到具有不同UUID的蓝牙。

我已经尝试了很多次了。并完成了本教程中的所有步骤。但是这个蓝牙设备就不会出现了。

另外,我很想知道什么是0x08和0x0008 如果我想投出不同的UUID,我该怎么办?但那是后来的一部分......

现在,BLUETOOTH不会像Radius Networks的教程那样投出Estimote UUID。

希望尽快收到回复。

我写的命令(在此之后无法工作我将电源更改为C9):

$ sudo hcitool -i hci0 cmd 0x08 0x0008 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 c5 00 00 00 00 00 00 00 00 00 00 00 00 00

并且令人惊讶的是,错误是:错误:无效的HCI命令参数; 怎么会无效? 是因为CSR支持128位而不是64位十六进制?

谢谢!

6 个答案:

答案 0 :(得分:11)

我看到了与memoryhole相同的问题,我不得不删除额外的零。 在配置广告数据以使其与我的加密狗一起正常工作之前,我还必须启用广告。

以下是对我有用的确切序列/命令:

sudo hciconfig hci0 up
sudo hciconfig hci0 leadv 3
sudo hcitool -i hci0 cmd 0x08 0x0008 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 c5 00

这是我的Radius脚本版本看起来像:

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

这是一款带有ORICO BTA-402-BK品牌BLE加密狗的Rasberry Pi(CSR8510 A10)

(我会留下这个评论,但没有足够的代表)

答案 1 :(得分:3)

我还在香港购买了基于CSR的USB Dongle。我通过删除末尾的额外填充来获得 LE Set广告数据命令。根据{{​​3}},数据字段应为31个八位字节长。我不确定为什么Radius Networks教程会增加额外的零。试试这个:

$ sudo hcitool -i hci0 cmd 0x08 0x0008 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 c5 00

注意:我没有在Raspberry Pi上运行它,而是使用bluez-4.98的Ubuntu 12.04笔记本电脑。

答案 2 :(得分:2)

我从亚马逊购买了一些这些:

http://www.amazon.de/CSL-Bluetooth-Adapter-Technologie-neuester-Standard/dp/B00C68IQ3C

并且在Radius tut之后没有开始工作。在给出hcitool命令时,在另一个窗口中运行hcidump会显示错误消息:

> HCI Event: Command Complete (0x0e) plen 4
    LE Set Advertising Data (0x08|0x0008) ncmd 1
    status 0x12
    Error: Invalid HCI Command Parameters

在hcitool命令结束时删除额外的00后,它工作正常。我的配置文件是:

export BLUETOOTH_DEVICE=hci0
# E2C56DB5-DFFB-48D2-B060-D0F5A71096E0
# export UUID="e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0"
export UUID="92 77 83 0A B2 EB 49 0F A1 DD 7F E3 8C 49 2E DE"
export MAJOR="00 00"
export MINOR="00 00"
export POWER="C5 00"

注意POWER中的额外00!这个额外的00很重要。

我的beaconstart脚本是:

#!/bin/sh
. ./ibeacon.conf
echo "Launching virtual iBeacon..."
sudo hciconfig $BLUETOOTH_DEVICE up
sudo hciconfig $BLUETOOTH_DEVICE noleadv
sudo hciconfig hci0 noscan
sudo hciconfig $BLUETOOTH_DEVICE leadv 3
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 $UUID $MAJOR $MINOR $POWER
# sudo hciconfig $BLUETOOTH_DEVICE leadv 3
echo "Complete"

在尝试错误的同时,我还添加了noscan并将leadv 3放在hcitool命令的FRONT中。但只有在删除额外的00后,它才开始起作用。

答案 3 :(得分:0)

HCI Event: 0x0e plen 4 01 08 20 12

转换为:set advertising data命令已完成运行,错误0x12“无效的HCI命令参数”

ogf 0x08, ocf 0x0008是设置广告包数据的命令,因此您可以更改该命令的参数以修改UUID。您想要更改与UUID对应的十六进制字符串部分。请注意:

  

sudo hcitool -i hci0 cmd 0x08 0x0008 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 c5 00 00 00 00 00 00 00 00 00 00 00 00

     

iBeacon广播简介UUID    E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 ,主要为0,次要为0

您确定自己拥有蓝牙4.0加密狗吗?你键入的确切命令是什么? (将其复制到你的问题中)

答案 4 :(得分:0)

不幸的是,你需要一个不同的蓝牙加密狗。还有其他报道称CSR不能与Raspberry Pi上的Bluez堆栈一起用于iBeacon广告。请参阅herehere

我已经验证了上面的命令在使用推荐的IOGear GBU521时没有出错。

答案 5 :(得分:0)

我成功使用了一个Raspberry Pi和一个Inateck csr4b5 BT Dongle,它应该包含CRS 8510.通过遵守BT规范,31个八位字节长度就像memoryhole一样,并且在结束时省略了额外的00个八位字节。

编辑:还使用Pearl Dongle型号PX-1632-675和CSL USB Bluetooth Nano Dongle CSL-Nr。 23996

试一试。

干杯