Acknowledged

I'm creating a ticket to find out why this flag is required and whether it's something we can improve.

Connect IQ BLE scan issue

**UPDATE** Found the reason. The watch will never (in our case) find a scan result from a BLE device which doesn't advertise General Discoverable Mode. However, running your FW on a nRF dongle will get those scan results. I'm not sure the reason why they behave differently. But I guess we can hope that you support getting scan results from devices which doesn't advertise General Discoverable Mode in the future, just like android, iOS, wearOS and watchOS does.

I have an application which starts BLE scanning and then shows the result. It does however work drastically different on a simulator vs an actual watch:

- If I run it on the simulator for Fenix 6X PRO with a nRF plugged into my computer then I see all the desired scan results from devices that are nearby. The app will find almost all the nearby devices and the scan results will properly contain the device name, service UUID etc.

- If I build the app, put it on my Fenix 6X PRO watch and then launch it then it works very intermittently. For some periods of time it doesn't get any scan results. Other periods it will get 1-3 different scan results over and over again, and it's never the result of the desired device.

Our peripheral device advertises regular BLE with a service UUID of 128 bits. The results we see on the watch are only for devices which advertises 16-bit service UUIDS. 

Example of results I do get on the watch when doing BLE scanning:

- FE50 (0000FE50-0000-10000-80000-00805F9B34FB) with name Google

- 1523 (00001523-0000-10000-80000-00805F9B34FB) with name TT214H BlueFrog

- FE4D (0000FE4D-0000-10000-80000-00805F9B34FB) with name EBDMR-CB-DD (Casambi)

The names here have been gotten from nRF connect b/c the watch always thinks that the name (scanResult.getDeviceName()) is null.

What can be the reason for the app functioning so differently on a simulator and a similar watch? Why does it only show some scan results?

I have also tried with BleScan on that same watch and it gets the exact same scan results as I get in my app. Why does that watch only get those results?

  • So when you run BleScan on your actual watch you get ~13 devices. And from those 13 there are some that have actual 128 bit UUIDS? So not 16 bit + BASE_UUID. So if you find the same device using nRF connect on your phone it actually advertises 0x07 + 128 bit UUID? 

  • Yes.  That's what I did long ago, and just verified today.  I don't see the names for all of them with blescan, but I do see the full UUIDs.  That includes a Thingy52 I have that's right here on my desk, where I do see the name.  My Raspberry pi's all have 128 bit UUIDS too and I have CIQ apps that have used them for years...

    The hex file I use with the dongle is "conectivity_1.0.0_usb_with_s132_5.1.0.hex"

  • And regarding your comment that they have a limited implementation.
    I successfully managed to get everything working with the exception that I had to disable bonding on my peripheral device because my Garmin sim didn't support it. But the API has bonding which appears to be supported for newer watches. So from my standpoint I don't see what Garmin is lacking in terms of functionality compared to e.g. Android/iOS. You want to scan, connect, service discovery, write/read from char + bonding and that's basically it from my perspective. So it fully supports our use case.

    With only the small exception of not being able to get the scan results ..

  • Okay. And I see roughly 20 devices on the sim and 3-4 on the watch. And all the 3-4 on the watch are ones with 16 bit UUID's. If you use nRF Connect (preferably on Android), can you see if any of the 13 devices you get on your watch have 128 bit UUIDS? Or perhaps when I think of it, since your BleScan app shows the UUID then my question is if any of your 13 results has a UUID which is not 16 bit + BASE UUID. 

    If it is that simple that Garmin simply cannot handle 128 bit UUID's then there's nothing I can do.

    What would be an improper file flashed to the nRF dongle? It works with my simulator and gives me all the results.

  • With blescan in the sim and a nRf52dk, I see the same info as on a watch, but on the watch, I see fewer devices.  Right now on the watch I see 13 devices, where I see more like 20 in the sim.  That could just be the locations of the watch and borard use in the sim aren't the same.

    Are you sure you got the proper file flashed to the nordic HW?