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

Service Discovery and Bonding Do Not Work in nRF Master Control Panel on Android 5.1 (Nexus 5).

Hi,

Thank you for looking into this issue. The target BLE module we are using is a custom board (Rigado BMD200) based on nRF51822 s110 chip. We have tried a few example projects such as the ble_app_hts on the module.

To test the module, we have downloaded the nRF Master Control Panel on devices including a Nexus 5, a Nexus 7 tablet, and a Asus Zen phone. From the master control panel app, we are able to connect to the module and discover services except for Nexus 5 (runs Android 5.1), where none of the services are discovered. Upon "Connect", errors: (0x81): GATT internal error, (0x16) UnKnown(22) and Error (0x85): GATT ERROR occurred subsequently. (Please find attached the log file retrieved from the app)nRFMasterControl_Nordic_HTS.png

We thought there might something wrong with our Nexus 5 BT, but, we had no problem connecting to and performing services discovery with TI's Sensor tag (CC2541) using the master control app. (Please find attached the screenshot displaying the services from the app) nRFMasterControl_TI_SensorTag.png

One last thing, we also noticed that the "bond" function doesn't work on all the models mentioned above. So, for the HTS example, we could not read the simulated temperature measurement due to the authentication error returned when tried to enable the indicate.

Just wondering if anyone has experienced this issue, and if there's any work around with it.

Thanks.

  • @Peter: I'm testing here with a Nexus 5 and a Nexus 6 both running Android 5.1. Both worked fine. It would take a little bit longer time (with GATT BUSY) to bond, compare to what I experienced before with Android 4.4. But it did managed to bond, enable indication and receive temperature indication. Bond function in the scanning panel also worked in my case.

    Could you let me know:

    • Your MCP version
    • Your firmware's SDK version.

    Do you have that issue at all time or only occasionally ? Turn off/on bluetooth, kill the app and reopen didn't help ?

  • Thanks for your relay Hung. It's a great news to know it works on your side!! The master control panel running on my Nexus 5 is: 2.1.1. The firmware SDK's version is: 8.0.0

    The issue (service discovery not working) happens all the time on my Nexus 5. I have tried turning on/off the phone and BT, also kill the app and reopen. However, the services just wouldn't show up, and would return the GATT ERRORs that I have provided in the log file.

    On the other devices we've tried, Nexus 7 and ASUS Zen, The service discovery would always work, I am able to turn on notification of the battery level characteristic and receive the value. The "Bond" hasn't worked since I downloaded the app.

    Thanks again Hung, please let me know if there's anything you'd like me to try or provide.

  • @PeterH: I tried today with another Nexus 5, it was fine. I suggest you to make sure you un-pair the device on the phone (forget the device in bluetooth setting), erase the whole chip on the nRF51 and test again.

  • @Hung, I think I found what the problem is. The version of the softdevice running on my module was 7.1.0. But in Keil, I am developing with API from version 8.0.0. Not sure how it even worked in the first place.

    After updating the softdevice .hex to 8.0.0 with nRFgo Studio and making the memory regions accordingly in Keil Flash configuration, the examples work now with my Nexus 5.

    Sorry for not checking the versions more in detail. Really appreciate your help!

  • @PeterH: I'm glad that you found the issue. Change from S110 v7.1 to S110 v8.0 is not a very big jump so it could be possible in some cases the code may work on S110 v7.1 for a while :)

Related