将Windows笔记本电脑变成iBeacon

时间:2014-09-17 09:50:13

标签: windows debugging testing ibeacon

如果你愿意的话,我有一台装有蓝牙4.0的笔记本电脑或低功耗蓝牙。

出于测试目的,我想将这台Windows 8笔记本电脑变成一个假的iBeacon UUID / MajorID / MinorID,这样我就可以测试我写的应用程序了。

是否有可用于广播信标的软件?或者我可以(轻松)自己编写的任何API或库?

像这样,但是对于Windows:https://github.com/timd/MactsAsBeacon

实际的iBeacon正在这里,但我很乐意在此期间进行一些测试。

3 个答案:

答案 0 :(得分:12)

所以,这是可能的,但你需要Windows 8中的Linux VM。这是一个小指南。

第1步:VirtualBox

  • 安装VirtualBox和VirtualBox Extention Pack,确保它们是相同的版本。
  • 创建新的Ubuntu Linux VM,安装ubuntu安装光盘,然后安装操作系统。我使用了服务器版本,因为GUI是不必要的,并且减慢了一切。
  • 确保在VM的设置中USB 2.0控制器已打开,并为您的蓝牙设备创建了一个过滤器。
  • 然后启动您的VM并在正在运行的VM窗口中,启用共享您的蓝牙设备:菜单设备> USB设备>选择蓝牙设备。

第2步:Linux

执行命令

sudo apt-get install bluez
sudo hciconfig hci0 up
sudo hciconfig hci0 leadv 3
sudo hciconfig hci0 noscan
hciconfig

在继续之前,最后一个命令应显示UP RUNNING

如果找不到hci0设备,则可能是VM usb过滤器设置不正确,或者Windows正在使用您的设备。我发现在Windows设备管理器中禁用和启用设备有助于VM识别它。当您启用从VirtualBox共享蓝牙设备时,当您选择“显示隐藏设备”时,设备管理器应显示灰色的蓝牙适配器。

第3步:汇总广播命令

  1. 生成UUID:python -c 'import sys,uuid; sys.stdout.write(uuid.uuid4().hex)'
  2. 命令的格式为:
    1. hcitool -i hci0 cmd 0x08 0x0008
    2. 1E 02 01 1A 1A FF(特定于iBeacon的标志)
    3. 公司ID,4C 00是Apple
    4. 02 15(iBeacon广告指示器)
    5. UUID:16对2个十六进制数字,用空格分隔
    6. 主要ID:00 00
    7. 次要ID:00 00
    8. 校准Tx功率:C8 00或简称:C8
  3. 您的命令应如下所示,将__替换为您的UUID:

    sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ 00 00 00 00 C8
    

    第4步:开始广播!

    示例命令:

    sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 00 00 00 00 C8
    

    如果该命令成功,它应该继续传输。抓住您的Android或iPhone设备并安装 iBeacon locate 应用程序,看看您是否可以找到您的信标广播。

    快乐的应用调试!

    致谢:很多想法都来自this article

答案 1 :(得分:3)

不幸的是,Windows 8无法作为BLE信标进行传输。虽然Windows 8.1具有BLE API,但它们只能在配对后用于与标准蓝牙配置文件设备通信。只有操作系统才能进行扫描和配对。这使得第三方应用程序无法扫描信标或传输信标。我们希望Windows 9能够改变这种状况。

Windows上的替代方案是安装VirtualBox等虚拟机软件,并使用Linux虚拟机进行传输。这里有一个免费的例子:http://developer.radiusnetworks.com/altbeacon/virtual

请注意,此示例向知识产权传输免费的AltBeacon广告。但修改虚拟机的altbeacon_transmit脚本以传输任何其他信标格式是微不足道的。您可以在此处查看发送器脚本的源代码:https://github.com/RadiusNetworks/altbeacon-reference/blob/master/altbeacon_transmit

答案 2 :(得分:1)

现在有一个名为WinBeacon的托管C#库就是这样做的。