This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-CC2640R2: Can't discover iPhone using simple_central or simple_observer

Part Number: LAUNCHXL-CC2640R2
Other Parts Discussed in Thread: CC2640R2F, BLE-STACK

I am attempting to get the UUID and RSSI from my iPhone or any wearable bluetooth device such as Bose headphones, Apple watch, Fitbit, etc. I have tried using Simple_Observer and Simple_Central to do this, on the CC2640R2, but my devices never show up. Other devices show up, but not the ones I am looking for. I'm not sure if there are compatibility issues between bluetooth versions or types (V5 vs V4.2 or BLE scanning for Bluetooth Classic vs BLE). I think the example that should yield better results is Simple_Central, but that would mean that my iPhone would have to be setup as a Peripheral, if I understand correctly. I've downloaded an app to do this, LightBlue, but am still not able to discover it, the virtual peripheral. Is there a mode or configuration I need to change in the example code to fix this? Also, if it does end up working, will I have to use an app to make the iPhone a peripheral at all times or can the phone do this natively by only having Bluetooth on in settings?

  • Hi Jesus,

    1) Please make sure your phone is advertising as a BLE device. As you say, there are differences between Bluetooth Classic and Bluetooth Low Energy, so you will not be able to discover Bluetooth Classic devices with your CC2640R2F. I am not sure how to set up your specific phone, but please follow any instructions in the Light Blue app.

    2) Please make sure there is no filtering on the scanner side. Per default, simple_central for CC2640R2F from the BLE-Stack will filter out any devices that do not advertise the simple_gatt_service UUID. To disable the filtering, set the following define to FALSE in simple_central.c

    // TRUE to filter discovery results on desired service UUID
    #define DEFAULT_DEV_DISC_BY_SVC_UUID          TRUE

  • I'll keep messing around with Light Blue app. As per your second suggestion, I failed to mention that I have DEFAULT_DEV_DISC_BY_SVC_UUID already set to FALSE in simple_central.c and still to no avail.
  • Hi Jesus,

    You can use a Bluetooth Sniffer to double.check whether the smartphone is actually advertising.
  • Thanks for the suggestion. My phone is broadcasting as a BLE peripheral through the app, Light Blue. Also, I was able to pick it up in both simple_observer and simple_central. I am still not able to pick up modern phones without using the app. A compromise would be using the app at all times so that the CC2640R2 could pick it up, but I noticed the virtual bluetooth address changes every time the peripheral is turned off and on. Meaning I won't be able to go this route. Any suggestions?
  • Hi Jesus,

    You phone is using the "Privacy" feature to change the address. You can read about it here: dev.ti.com/.../privacy.html

    The phone also has an identity address. You can resolve it from the random address to find the identity of the phone. You can also use white list if you only want to connect to this phone. ( dev.ti.com/.../privacy.html )

    You have to use some app to make the phone advertise as a BLE peripheral.