6

我最近试图在树莓派上的 BLE 加密狗(剑桥硅无线电)上配置 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

但是什么都没有被检测到。

因此,从应用商店中去一个名为 LIGHTBLUE 的应用,它会检测到具有不同 UUID 的蓝牙。

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

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

现在,蓝牙不会像 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 位十六进制吗?

谢谢!

4

6 回答 6

11

我看到了与必须删除多余零的内存孔相同的问题。在配置广告数据以使其与我的加密狗正常工作之前,我还必须启用广告。

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

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 加密狗 (CSR8510 A10) 的 Rasberry Pi 上

(我会将此作为评论,但没有足够的代表)

于 2013-12-31T08:11:56.210 回答
3

我还有一个在香港购买的基于 CSR 的 USB 加密狗。我通过删除最后的额外填充使LE Set Advertising Data命令工作。根据蓝牙 4.0 规范,数据字段的长度应为 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 笔记本电脑上运行。

于 2013-12-08T02:20:52.863 回答
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 命令的前面。但只有在删除额外的 00 后它才开始工作。

于 2014-01-31T20:25:49.030 回答
0

我成功使用了一个 Raspberry Pi 和一个应包含 CRS 8510 的 Inateck csr4b5 BT 加密狗。通过遵守 BT 规范 31 个八位字节的长度,就像 memoryhole 所说的那样,并在它工作的最后省略了额外的 00 个八位字节。

编辑:还使用了珍珠加密狗型号 PX-1632-675 和 CSL USB 蓝牙纳米加密狗 CSL-Nr。23996

试试看。

干杯

于 2013-12-08T13:02:06.970 回答
0
HCI Event: 0x0e plen 4 01 08 20 12

转换为:设置广告数据命令已完成运行,出现错误 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 0 0 0 0 00 00 00

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

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

于 2013-12-01T23:20:30.893 回答
0

不幸的是,您需要一个不同的蓝牙加密狗。还有其他报告称 CSR 无法与 Raspberry Pi 上的 Bluez 堆栈一起用于 iBeacon 广告。看这里这里

我已经验证你上面的命令在使用推荐的 IOGear GBU521 时不会出错。

于 2013-12-02T16:18:00.250 回答