This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF UART app works on android, not on iOS 8.4

My ANT BLE application runs on a custom board with a nRF51422, SD 310 rev 2.0.0

I can use the nRF UART app on an android phone, but on an iPhone with iOS 8.4 I can't even see the device.

I can see the device in the list in the DFU Tool in the nRF Toolbox, but in nRF UART nothing.

Are there any connection/advertising/timeout/... parameters I should be aware off, in order to use iOS for UART?

  • The example shows: Device is Connectable: Yes LocalName: Nordic_UART Service UUIDs: 6E400001 etc (reverse of the array in code)

    My code: Device is Connectable - and that's it I'm afraid...

    Thanks for clarifying. I run services_init first, then advertising_init. Could there be something else I'm missing? I guess that some sort of mechanism keeps on advertising while the device is on, but is there something I should do or be aware of in connection with that?

  • This means the NUS service is included properly in the advertising packet.

    I would suggest you to try again with the nRFToolbox app, there is a UART profile included in the app (make sure you update to the lastest one).

    You should test with the ble_app_uart example from the SDK before testing with your application.

  • That kind of puzzles me. The advertising info is different in the two cases as explained in my latest answer, but still you think the NUS service is included properly?

    Regarding ble_app_uart/nRFToolbox app etc : please look at the top of this thread, it's what I have been doing all along ;-)

  • @Peter: OK, I understand now. You meant with the example you can see local name and the NUS service UUID and you can connect using nRFToolbox and nRFUART, when with your application you can only see "Device is connectable" and can't find it using nRFUART on iOS.

    I suspect there could be some issue when you set-up your advertising packet with advertising_init() function. You may need to check if the call for sd_ble_gap_adv_data_set() return NRF_SUCCESS.

    If possible please update your code here so that I can test.

  • Aha! Now we're getting close to the issue I guess. I get NRF_ERROR_DATA_SIZE in the call to adv_data_encode, so I break out before even reaching the call to sd_ble_gap_adv_data_set().

    I guess I have to reduce the amount of advertising data in some way - is there a good way to split the info, or is it necessary to leave some of the info out?

Related