iBeacon仿真ubuntu错误



我想把我的电脑用作iBeacon,但我没有成功(在Windows8.1上运行在virtualBox环境中的Ubuntu 14.04上)

这是我使用的代码

#!/bin/bash                                                                                           
sudo hciconfig hci0 up
sudo hciconfig hci0 noleadv
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
sudo hciconfig hci0 leadv

我的hciconfig结果

hci0:   Type: BR/EDR  Bus: USB
    BD Address: 00:C2:C6:18:C5:E9  ACL MTU: 310:10  SCO MTU: 64:8
    UP RUNNING PSCAN ISCAN 
    RX bytes:5333127 acl:66 sco:0 events:887454 errors:0
    TX bytes:40617442 acl:64 sco:0 commands:887224 errors:0

我安装了bluez版本5.36(使用bluetoothd -v检查)


我看过很多关于这方面的Stack溢出帖子,但无法理解!检查这里、这里或这里。


我买了一个真正的iBeacon来看看什么能帮助我,下面是我的:

使用hcidump -R我读取此

< 01 0B 20 07 01 10 00 10 00 00 00 
> 04 0E 04 01 0B 20 00 
< 01 0C 20 02 01 01 
> 04 0E 04 01 0C 20 00 
> 04 3E 2A 02 01 00 01 4F 00 00 02 4D CD 1E 02 01 06 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 BB 
> 04 3E 2A 02 01 04 01 4F 00 00 02 4D CD 1E 02 0A F4 08 16 F0 
  FF 64 00 00 00 00 11 09 4D 69 6E 69 42 65 61 63 6F 6E 5F 30 
  30 30 37 39 BB 
> 04 3E 2A 02 01 00 01 4F 00 00 02 4D CD 1E 02 01 06 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 BB 
> 04 3E 2A 02 01 04 01 4F 00 00 02 4D CD 1E 02 0A F4 08 16 F0 
  FF 64 00 00 00 00 11 09 4D 69 6E 69 42 65 61 63 6F 6E 5F 30 
  30 30 37 39 BB 
< 01 0C 20 02 00 01 
> 04 0E 04 01 0C 20 00

问题是,我不明白为什么有这么多不同的paquet大小和类型(可能是其他蓝牙非信标设备)

我很确定这是信标,但这些数据对我来说毫无意义

04 3E 2A 02 01 00 01 4F 00 00 02 4D CD 1E 02 01 06 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 BB 

我试着用这个来理解它,但失败了(使用了一些堆栈溢出响应,如下所示)


首先,为了让BlueZ进行广告,您提供的字节序列必须包括一个有效的BLE广告标头,该标头至少为8个字节。所以要宣传"你好世界",你实际上需要发送:

sudo hcitool -i hci0 cmd 0x08 0x0008 10 02 01 1a 0c ff 18 01 48 45 4c 4c 4f 57 4f 52 4c 44

前8个字节是标头,接下来的10个字节是编码为8位ASCII的字符串"helloworld"。

前8个字节可以这样分解:

10 # Total length of the advertising packet
02 # Number of bytes that follow in first AD structure
01 # Flags AD type
1A # Flags value 0x1A = 000011010  
   bit 0 (OFF) LE Limited Discoverable Mode
   bit 1 (ON) LE General Discoverable Mode
   bit 2 (OFF) BR/EDR Not Supported
   bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller)
   bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host)
0C # Number of bytes that follow in second (and last) AD structure
FF # Manufacturer specific data AD type
18 01 # Company identifier code (0x0118 == Radius Networks)

---------------------

如果你有什么可以帮助我了解iBeacon地板是如何构建的,请感谢

天哪!我发现有人和我有完全相同的问题。

看这里。


@Richard Wifall 的回应


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

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

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上

(我本来会把它作为注释,但没有足够的rep)

最新更新