This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Modifying nRF Beacon App for iOS to work on iOS 8.x

I asked this question (devzone.nordicsemi.com/.../) to get an answer that I needed to apply for getting the Apple iBeacon certification.

Now I applied for Apple iBeacon certification, and received Account number. What's the next step to make the nRF Beacon App for iOS to work?

From this blog (devzone.nordicsemi.com/.../), I found this comment, which I'm not exactly sure what make the beacon code from Nordic iBeacon compliant means.

To design an iBeacon with Nordic solution you must be an iBeacon Licensee to get the information needed to make the beacon code from Nordic iBeacon compliant.

What could be the next step to make the nRF Beacon App for iOS to work on iOS 8.x with nRF51822 Bluetooth Smart Beacon Kit (www.nordicsemi.com/.../eng-GB)

Edit 1

I received a Proximity Beacon Specification Release document. It tells about the 30 bytes Proximity Beacon Advertising Packet format; byte 5-6 is the company ID, and 7-8 is the beacon type. I see that iOS 8 only responds only to a specific (apple) vendor.

I'm still trying to understand how to change the company ID and beacon type in the example Xcode project (nRFBeacons example that I downloaded).

I found this chunk of code that specifies the uuid, major and minor number, but not the companyID or beacon type.

BeaconData *newBeacon = [[BeaconData alloc]init];
newBeacon.name = @"nRF Beacon";
newBeacon.uuid = uuid;
newBeacon.major = [NSNumber numberWithInt:major];
newBeacon.minor = [NSNumber numberWithInt:minor];
newBeacon.event = [[Utility getBeaconsEvents] firstObject];
newBeacon.action = [[Utility getBeaconsActions] firstObject];
newBeacon.enable = [NSNumber numberWithBool:YES];

How to set the companyID and beacon type in the code? Or, do I need to modify the firmware inside the nRF51822 Bluetooth Smart Beacon Kit?

Edit 2

How to modify the firmware and download the firmware into nRF51822? My working environment is Mac OS X.

  • Q1: I downloaded from "My Page" nRF51822-BK-FW (nRF51822_beacon_firmware_1.1.0.msi), but I can't use this file; I could open (unzip) the file, but the files inside are all binary files.
    Is this the correct firmware that needs to be modified? If so, What tool do I need to open it?
  • Q2: How to compile (I mean, what tools do I use or buy) the source code?
  • Q3: How to download the firmware into the kit?
Parents
  • Log in to your Apple MiFi account, download the Proximity Beacon Specification Release PDF (you need to make yourself the technical contact and it takes a couple of days until the document is available for some reason). Then go change the source code to fix bytes 5, 6, 7 and 8 of the advertising data to match the spec, or any other of the bytes which are different.

    There's nothing 'secret' about the iBeacon, it's a simple advertisement and it's easy to sniff and see what's in the advertising packet and it was rapidly reverse-engineered and the packet format is easily found on the internet. However the first two bytes of the manufacturer specific data is Apple's Company ID (it has to be, that's what the BTLE spec says) so only Apple, or someone they license to, can use it. That's the only reason why you have to join the iBeacon program.

    Edit #1

    You need to change the firmware downloaded to the beacon to have the Apple manufacturer id in it and your own beacon UUID and major and minor number as well as the Xcode project in which you just need to change the UUID.

    The change in the firmware code is trivial, it's all in main.c and all the constants have #define names so it's very easy to figure out what to do. The example code has Nordic's manufacturer ID in there because that's the rules, they can't put Apple's in there without permission, which is why you have to go do it yourself.

    You basically have 22 bytes of information to change in main.c and you're done with that part and then you put the UUID you chose for your beacon in the Xcode project to match the one on the beacon and you're done.

    Edit #2

    Since I don't have the beacon kit, I have other kits, I don't know what comes in the downloads. An MSI file is a windows installer anyway, you run it in windows.

    According to this blog devzone.nordicsemi.com/.../nordic-beacons-and-ios, the kit comes with source examples, also the nRF51 SDK has an example (that's the one I referenced, I'm sure they are very similar). The documentation and those kits also tell you what tools you need, and with the latest 7.x SDK it has makefiles for using gcc which is all you need for something that simple.

    This thread devzone.nordicsemi.com/.../ tells you everything you might want to know about programming the board and also references places you can download the source code/example.

    You have some reading to do. This isn't hard, but if you know nothing about programming the chip, nothing about the tools and softdevice and nothing about putting files onto the dev board, you have to learn a few things before you can proceed. All the documentation is however very good at Nordic, you just have to read it.

  • @RK: Thanks, I could setup the programming environment to get the HEX file, but I still have some questions. I opened another question (devzone.nordicsemi.com/.../).

Reply Children
No Data
Related