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

I tried to write iOS APP, and the UUID I scanned could not send data until I downloaded nRF Connect ,and then APP can send the data

SDK:【nRF5_SDK_15.0.0_a53641a】【examples】【ble_peripheral】【ble_app_uart】【pca10056】【s140】【arm5_no_packs】

Before downloading nRF Connect ,the results of my scan is

【service1 UUID】181E

【service2 UUID】Device Information

【characteristic1 UUID】2AA5

【characteristic2 UUID】2AA4

【characteristic3 UUID】Manufacturer Name String

Until I download APP【nRF Connect】 and run after

Once again, open own APP

The service and characteristic of the scan are different

6E400001-B5A3-F393-E0A9-E50E24DCCA9E【service1 UUID】

6E400002-B5A3-F393-E0A9-E50E24DCCA9E【characteristic1 UUID】

6E400003-B5A3-F393-E0A9-E50E24DCCA9E【characteristic2 UUID】

than characteristic1 can send data

Is there any way to avoid it ?

It is impossible for customers to download 【nRF Connect】 first ,then download the other APP ?

  • Have you connected to the device when you read those UUIDs?

  • Yes, it has been connected successfully.

    And I didn't change SDK example code.

  • Some of those numbers look familiar.
    Bluetooth.org has the following adopted services:

    Bond Management Service UUID:                                     0x181E
       Bond Management Control Point Characteristic UUID:  0x2AA4
       Bond Management Features Characteristic UUID:         0x2AA5
    Device Information Service UUID:                                      0x180A
       System ID Characteristic UUID:                                      0x2A23
       Model Number Characteristic UUID:                               0x2A24
       Serial Number Characteristic UUID:                               0x2A25
       Firmware Revision Characteristic UUID:                         0x2A26
       Hardware Revision Characteristic UUID:                         0x2A27
       Software Revision Characteristic UUID:                          0x2A28
       Manufacturer Name Characteristic UUID:                       0x2A29
       IEE Regulatory Data List Characteristic UUID:               0x2A2A
       PnP ID Characteristic UUID:                                           0x2A50 
    Looking through the Nordic UART Service example code I see that the characteristic UUIDs for the service are:

    6E400000-B5A3-F393-E0A9-E50E24DCCA9E for the Base UUID
    6E400002-B5A3-F393-E0A9-E50E24DCCA9E for the TX UUID
    6E400003-B5A3-F393-E0A9-E50E24DCCA9E for the RX UUID

    So the numbers that you saw at the end are correct for the Nordic UART example.
    Looking through the above UUIDs it would appear that your scan is mixing data from different services.
    I'll admit that I don't know anything about iOS, but I'd be looking at how you're initialising your app and the iOS BLE manager. I suspect that there may be a missing call or initialisation, particularly with storage of service/characteristic handles, say for the GATT table, that isn't performed correctly by your app, but is by the Nordic nRF Connect app.
    I'm sorry that I can't be of better assistance, but I hope that helps.

  • Further to what I wrote above. I couldn't find a setup for the Bond Management nor the Device Information Services within the example code.

    I've programmed a DK board with the precompiled hex for the UART example and checked the advertised data with a generic BLE sniffer.

    As suspected the Nordic code is only advertising Generic Access Service, Generic Attribute Service and Nordic's Custom UART Service.

    I suspect that the other services are either non-existent, meaning a really bad bug in your code, or more likely they are picked up from a different device.

    Are you trying to determine which is your device by scanned BLE Address or device name?

    I wouldn't advise using BLE address as I have seen issues in the past, something to do with iOS obfuscating the address during scanning and you'll only get the correct one once you've connected, try with the device name to start with or maybe search for a device advertising the Nordic service UUID.

  • I wonder why 【nRF Connect】 is downloaded and executed.

    And then run my APP ,  scanned services and characteristics ,

    Then it turns into TX UUID and RX UUID ?

    (I scan "all" the services UUID and characteristics UUID in iOS APP)

    This TX UUID and RX UUID is exactly what I want .

    But the next Mobile phone , Will it also need to download nRF Connect APP ?

Related