Nordic iBeacon设备在ios8上无法正常工作的问题

来源:互联网 发布:淘宝网排行榜从哪里进 编辑:程序博客网 时间:2024/05/16 10:29

这些天在研究iBeacon,搞了几个讯联的板子,芯片用的Nordic nRF51822,发现Android上可以正常扫描到的设备,在ios8上却无法正常工作。一开始怀疑是ios8的程序问题,找了两个手机装了AirLocate,一个模拟iBeacon发射器,一个用来检测,发现一切正常。所以不得不怀疑ios系统有什么猫腻。google了一番,确认了我的猜测是正确的:

https://devzone.nordicsemi.com/question/16974/nrf51822-and-ios8/

http://stackoverflow.com/questions/25567716/ibeacon-on-ios8-not-working-properly

问题的根源就是这个company identifier(和UUID无关,ios没有限制UUID的使用),使用android的nRF Master Control Panel查看到Company字段是0x0059,而苹果手机模拟的ibeacon是0x004C。于是问题就来了:咋改啊???????

看了一下Nordic提供的ibeacon源码,发现这个字段是写代码死的,所以答案只有一个:改源码、编译、烧写

解决方案不难,就是有点烦,为了日后万一要用,这里简单记录一下编译和烧写的步骤:

固件编译
1.安装keil 5.2.1   (https://www.keil.com/demo/eval/arm.htm)
2.安装keil compatible device pack 5.2.1   (http://www2.keil.com/mdk5/legacy/)
3.用keil打开代码工程



4.注意修改main.c中的COMPANY_IDENTIFIER,默认为0x0059,苹果为0x004C




5.执行Build,在arm/_build/下生成最终的hex文件




固件烧录
1.安装nrfgo studio 1.15.1  (http://pan.baidu.com/share/link?uk=2738462295&shareid=2627193480&fid=244915420888634)
2.插入烧录器,使用连接线连接beacon设备,注意取下beacon设备的电池:

注意插线方向,观察到beacon设备的led正常亮就算连接ok了。

3.按紧beacon设备上的连接线,打开nRFgo Studio,刷新设备直到连接成功:




4.连接成功后,选择hex镜像文件进行烧写



终于搞定了~ 看来苹果这是下定主意自己玩ibeacon的节奏啊。据小道消息说分众已经在偷偷地部署beacon设备了,弱弱地问,这些设备的company identifier改了没,要是没改的话就都白折腾了。。。。

0 0
原创粉丝点击