Under Review
over 2 years ago

Not all BLE Devices found by scanning

Having several BLE Sensors and wanting to display their data on-screen of the watch. Scanning for the BLE Sensor returns all kinds of apple devices, but not the sensor i'm looking for.

Both sensors contain Bluetooth Classic and Bluetooth Low Energy chips. 

One of the older sensors still has a static LE mac address and shows up in the scan. NRF Connect shows this device as "Classic and LE Capable".

The newer sensors do not show up on the scan, and are shown in NRF Connect as "LE Only".

I have attempted to 'spoof' the newer sensor to appear as a device capable of both, but no luck.

If anyone could shed some light on this issue and perhaps a solution that would be great!

  • I fully agree with you, randomization is a big issue if you want to connect such a device to your Garmin... I am not able to connect my device natively because it has randomization and I hoped that using Connect iQ could solve this issue but it seems it is not the case... I wanted to verify with Jim's app but it doesn't work on my Fenix 5... Did you tried Jim's app on your side ? I don't want to have to buy a Garmin Edge X30 head unit just for checking this point if it doesn't work afterwards...

  • With CIQ, things are not learned over a connection.  Services and characteristics must be defined in the app's BLE profile.

    How are you communicating if you aren't doing a pair request and waiting for a connection?  Then there are things like the 22 byte limit for reads.

    Sound to me that unless there are changes made to the sensor, you won't be able to use CIQ.

  • Saving the scan result won't work as the connection parameters change every 15 minutes. We also do not advertise with service UUID's, with the exception of a sensor that has google fast pair, which wouldnt be usefull to scan for, since lots of devices can have that feature.

    Our sensor (on the ble side) has no pair option available. I think the watch detects that it is pairable if the mac address of BLE is the same as the Classic mac.
    Then when the random mac is turned on, it can no longer resolve to be pairable on the classic side?

  • You mean the sensor changes it's BLE MAC address?  When scanning you want to look at the UUID.  Even if the MAC address is static, if the sensor is replaced, the MAC address will (or should) change.

    In some things. once I scan and find a valid device, I save that scan result in Application.Storage, and then the next time I want to use that device, I don't scan, but just pair using the saved scan result.

    The Garmin device itself uses the same MAC address all the time, but it could change if a full reset is done on the device.  For security with some of my pi apps, I have a list of valid MAC addresses of the garmin devices that are allowed to connect

  • Thanks for your help, with the above documentation I found the 'bleno' library and used it to further debug the capabilities of our sensors in combination with the Watch.

    Now I can fairly certainly say that the issue is with randomized Bluetooth Low Energy addresses.
    After updating the sensor firmware to disable the randomized address it showed up in the scanner right away.

    This fix is okay to use for my testing in development, but unfortunately this fix cannot be applied on production sensors, for privacy reasons (Bluetooth Addresses & Privacy in Bluetooth Low Energy | Novel Bits)

    Now my next question is, could the Connect IQ Library be updated to work with these randomized addresses?