Vivoactive 5 pairDevice not working anymore

Hi everyone, since an update on my vivoactive 5 (now  fw16.07) my datafield cannot pair with a custom BLE device.

Calling BluetoothLowEnergy.pairDevice on a scanResult now return an object not null but the watch doesn't connect and the device returned doesn't have name or Services (can even crash and restart the watch)

Any clue on what is happening as it was working well before the update ?

  • Have you tried rebooting the watch?  press and hold the upper button for 15-20 seconds and the watch turns off.  Then turn it back on.

    I'm able to pair my va5 with no issue.

  • Yes i've tried several things, connect seems to work with your app https://apps.garmin.com/en-US/apps/9bcc8b66-8385-4afb-b93e-f69e01422284 (Great for testing !) 

    I am using a class that extend Toybox.BluetoothLowEnergy.BleDelegate to scan and connect.

    Currently i'm trying to remove services to see if that is the problem and looking for solutions. But i don't understand HOW a garmin firmware update can break the datafield that way ? 

    I tried SDK sample NordicThingy52 and i can connect fine with the App. Then i tried the NordicThingy52CoinCollector datafield sample and i have the same behavior with my datafield, device is scanned but after pairDevice, connect never happen.

    Edit : I found an nRF53 evaluation board and flashed the examples on both the watch and the board. The result: the watch app scans and connects fine, but the watch data field still doesn’t work.

  • Ok, on the va5 with data files, you ned to follow this.

    https://forums.garmin.com/developer/connect-iq/b/news-announcements/posts/connect-iq-sdk-8-2-now-available

    Non-data field don't need it, like my apps and the 1st nordic sample.

  • If I understand you correctly—and based on the link you shared—it seems I need to add a SensorDelegate to enable pairing with a BLE sensor. Is that right? But this is only available in App not datafield ?

    I hadn’t considered that approach because the data field sample in SDK 8.3.0 doesn’t appear to use it, so I wasn’t looking in that direction.

    I’ll give it a try and keep you posted. Thanks a lot for the lead!

    Edit : quick question but does BluetoothLowEnergy.pairDevice() in an app is enough to use the sensor for future use in a datafield or do you have also to do RequestBond() on the device ?

  • I got my hands on another garmin and the datafield work fine on a Fenix 8 47mm with API leve 5.2.0 and system 8.

    Can someone explains or give an hint on why it's stopped working on the vivoactive 5 after the watch firmware update ?

  • Why? The announcement uses the word "can", not "needs", it sounds to me optional

  • From the tests i've been running with the Fenix 8, it doesn't need it indeed, even on datafields. My new hypothesis is that Garmin "broke" the vivoactive 5 (easy to say...) so what can i do now ? is there a way to have any kind of support or infos from the garmin team ?

  • I have the same issue on the vivoactive 5. I have a datafield working on at least 20 devices and it broke on the vivoactive around the time of your post.
    Last few days i spend 40h+ debugging and i still can not fix it. Some "Insights":
    1) The vivoactive seems to start the datafield twice. I put 

        function initialize() {
            AppBase.initialize();
    System.println("booting...");
        }

    and booting is called twice in a single start exit circle, where the first booting never makes it to far into the other print debugging. I believe this has to do with the extra screen on the vivoactive where you are not seeing the field, but you are already kind of in the activity

    2) The connection process is broken. I check for correct UUIDs and then call 


                try{

                    Ble.pairDevice(bestScanResult);
                }catch(e) {

                    var erMessage = e.getErrorMessage();

                    if(erMessage.equals("Device Already Paired")){
                        System.println("reconnect due to paired");
                        checkExistingConnection();

                    }
                    System.println("error conencting");
                    System.println(erMessage);
                }

    However, the connection process always fails with the error "already connected" error, potentially also due to the "double boot". However, when accessing the paired devices over 

    var pairedDevices = Ble.getPairedDevices();

    I can't reach the apparently not-paired devices.


    Looking at Jim_m_58 response, i might figure that the new setup flow is a *requirement* and not an extra on the vivoactive 5? This would be really odd since my datafield works on the vivoactive 6, Fenix 8, Forerunner 965, ... which are all even never devices.


  • Somme additional Info: The datafield also used to work a year ago