BLE working on Simulator with BLE USB Dongle but no on Watch Fenix 6 Solar

Hi,

i develop my app using the simulator with the USB Dongle nRF52840 and the app works fine and can connect to the external peripheral device.

I can read/write to/from characteristics and also receive update notification.

But running the same app on the watch it doenst scan the external peripheral device. I can see all the other scan results but not mine.

I comment the BLE profile registration hoping to see all scan results raw data but it doenst even output my peripheral device raw data?

Is the bluetooth low energy version from the watch 4.2? If not is it compatible with peripherals that are running 4.2?

Here is some data from the log file from the watch:

[ble] result.getRawData() [2, 1, 26, 2, 10, 12, 11, 255, 76, 0, 16, 6, 19, 30, 154, 192, 213, 78] result.getAppearance() 0
[ble] result.getRawData() [2, 1, 26, 2, 10, 12, 17, 255, 76, 0, 15, 8, 192, 10, 148, 184, 6, 0, 64, 11, 16, 2, 1, 4] result.getAppearance() 0
[ble] result.getRawData() [2, 1, 26, 2, 10, 12, 11, 255, 76, 0, 16, 6, 19, 30, 154, 192, 213, 78] result.getAppearance() 0
[ble] close
On Stop...

Here is the output console from the simulator on scan results:

result.getRawData() [3, 2, 144, 204, 25, 255, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 11, 155, 15, 146, 3, 201, 4, 236, 255, 248] result.getAppearance() 0

I can read the raw data from all other bluetooth peripherals around but not mine. Any idea? Why is it working on simulator and not on the watch?

(BluetoothLowEnergy permission is set on Manifest.xml)

Best regards,

Michael

  • Is the device already paired with your watch as a sensor?  Try removing it there.

  • Hi Jim,

    the device is not paired as a sensor. 

    Is there something else i am missing? Do i have to first pair it as a sensor? Is the watch limited on which type of sensor it can connect to?

  • No, in fact I was thinking that pairing to the watch as a sensor could cause the problem.

    What kind of sensor are you trying to use?  I've had no issues with a few different things.

  • Hi Jim,

    its a custom bluetooth low energy device with 3 services that i develop. It works already for iOs and Android.

    Its strange that it doesn't appear on the scan results on the garmin watch but it does on the simulator.

    Is there anything else i can try? I develop similiar to the CIQpi project.

  • Try nRF Connect on a phone and see if anything odd jumps out at you.

  • If you have something like the "contains" function used in the thingy sample or my code, maybe try logging all scan results and not just the one you are looking for.

  • Hi Jim,

    i can connect with the nRF Connect App to the peripheral device and everything looks normal.

    I do use the "contains" function but i was always logging all raw data before the if condition.

    Any idea?

  • Is there any BLE Scan app on the watch directly?

  • Nope.  Nothing standard.  I think when you do a general scan in Sensors&Accessories>add New>search all, it only will look for certain types.

    One thing, and this is something I've done a few times.  Are you connected to the device from the sim while you are trying to scan on the watch?  It's one at a time.

  • Hi Jim,

    i have now tryied your app and print all raw data from the scan results but still doesnt show my device:

    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 30, 10, 255, 117, 0, 1, 0, 2, 0, 1, 2, 2, 3, 25, 192, 0]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]
    [ble] onScanResults
    [ble] scanResults.next() result.getRawData()[2, 1, 6, 10, 255, 76, 0, 16, 5, 75, 28, 143, 69, 152]