1

示例之后,我使用以下命令启动了我的 Pi:

pi@raspberrypi ~ $ sudo hciconfig hci0 up
pi@raspberrypi ~ $ hciconfig
hci0:   Type: BR/EDR  Bus: USB
    BD Address: 00:1A:7D:DA:71:13  ACL MTU: 310:10  SCO MTU: 64:8
    UP RUNNING
    RX bytes:1094 acl:0 sco:0 events:54 errors:0
    TX bytes:768 acl:0 sco:0 commands:54 errors:0

pi@raspberrypi ~ $ 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 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 C5 00 00 00 00 00 00 00 00 00
00 00 00 00
> HCI Event: 0x0e plen 4
01 08 20 12
pi@raspberrypi ~ $ sudo hciconfig hci0 leadv 3

然后,打开我的 Android 4.4 手机,它与我从在线零售商(无品牌)订购的 Ibeacon 设备完美配合。

完美运行意味着我可以看到 Java 代码中的所有广告数据(通过遵循 onLeScan(...) 回调)以及 RSSI,并解析它们(UUID、major、minor 等)。

奇怪的是我将调试信息放入:

public synchronized void onLeScan(final BluetoothDevice device,
                int rssi, byte[] scanRecord)

我从 PI 得到的 byte[] scanRecord 是:

02 01 0A 02 0A 08 0C 09 43 53 52 38 35 31 30 20 41 31 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

我无法读取这些似乎与通过 Pi 命令行设置的字节完全不匹配的字节,我尝试使用 App IBeacon Locate,仍然找不到我的 Pi,请帮助,谢谢。

添加更多详细信息:只有 BLE 加密狗是与示例不同的品牌,因为我不在美国,我不确定它的驱动程序是否在 PI 中正确安装,实际上我没有为它明确安装任何驱动程序(我是 Linux 的新手),我只是插入并启动了命令行。

4

1 回答 1

1

一些拥有不同蓝牙加密狗的人报告说,在启用它之前必须更改命令的顺序并禁用广告。尝试:

sudo hciconfig hci0 up
sudo hciconfig hci0 noleadv
sudo hciconfig hci0 leadv 
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

您也可以让我们知道您的蓝牙加密狗的型号以及它向 Linux 报告的内容。你可以通过输入看到这个lsusb

顺便说一句,很好地捕获了 Android 的 onLEScan 方法读取的字节。超级有帮助!

于 2014-06-10T01:55:01.840 回答