在sample之后,我用命令启动了我的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,主要,次要等) 。
奇怪的是我将调试信息放入:
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的新人),我只是插入并启动了命令行。
答案 0 :(得分: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方法读取的字节很好。超级有帮助!