Multiple BLE(NRF52) devices in the same time CIQ

I have NRF52 SoC devices and would like to connect to two devices simultaneously with a Garmin Forerunner(as I see Garmin can connect for 3 devices at the same time from an app). Tried both solutions 

  1. Scan while not connected for both and pair after discover
  2. Scan and store to an array both, and after stop scanning and try to connect each

The behaviour is very strange, first connection successed, second started, connected, and disconnect immadietly -> getting error from CIQ, with "the device is already paierd". The two "scanResult " object is not the same, i'm filtering by name, and after strogin the scanresult . 

Used 's BLE application and my own, and getting different RAW datas from the scan result. 

If I change the second BLE device to a HR (Polar H10 sensor) it works. (However the Garmin can't see the Polar's advertising name what is very very strange. 

  • you can connect to up to 3 BLE device with unique UUID's, if the 2 devices you are trying to connect has same uuid that will cause the error you are stating "the device is already paired".

  • Nope.  I hacked one of my apps to connect to 2 thingy52 devices at the same time.  Same UUID but different scan results. (and MAC addresses)

    It's easy to see with the thingy52 as you can set the color of the led when it's connected.  I seem to recall it didn't work with some older watches though.

    How different are the devices?  Might they have the same mac address?  You can check that with nRfConnect.

  • oh my bad yeah, I meant to say address not UUID

  • As i tested Anshul is correct. It depends on the sw version of the Garmin watch. During the development it refreshed from factory 8.x to the latest 13.0 (fr415m) and the whole project and the work of bt code broke(8.x handeld two connection) With the latest updates i cant connect to two identical (but not equal macs) hw devices. Also depends on the sdk version(simulator too). Jim as you tested and wrote me a private answer you have connection problems with the fr245 too. 

    So my workaround to this: first ,Garmin connects to the first device and sends a message and my device will reconfigurate itself for the next connection(with a different service uuid), the second device can work with the original uuid. 

    A lot of people have some errors related to this with dual side stages cycle power meter. I have tried to connect the local Garmin company in hungary but they cant help. I have tried to connect the official garmin support but they always sent me to a new supporter. 

    so to summarize i’m not satisfied with the sdk, and the simulator, and with the documantation, and with the lack of sample code in Monkey C. 
    If you would like to test your connect iq field Ou have to release it. 

    i was really disappointed but finally released my first application and it works fine.

    i miss some feedback surface where the testers can test the application. But the ERA is a good tool! 

    Garmin is a really great product itself, but its quite challenging to develop into. 

  • As i analyzed garmin connects to the second device but during the ble information exchange it terminates the connection. So its very clear Garmin stack has some issues. The phone can easy connects to our sensors a bunch in the same time, and central ble device also can connect to several same devices at the same time.

  • can you share your setup please, what is the best way to reproduce the issue you are running into. A Garmin device + 2 ble devices which are similar with different address?

  • I am running into a similar situation with app I am currently working on.

    Trying to pair to two separate device which are programmed with the same registration profiles (identical uuids), and are only differentiated through the device names.

    Can successfully pair to either device independently, but when attempting to pair to the second device, the 'pairDevice(scanResults)' function is never called.

    The current approach is attempting to assign the paired 'device' to a global variable, then attempt to pair the second device to a separate global variable (code snippet shown below).

    Not sure how to get both of these devices paired at the same time.  

    Any advice would be appreciated.

  • Do the two devices have different MAC addresses?  You can't see the Remote's MAC address in CIQ.  Also note, for most devices you won't see the name in the scan result.  You can see what's there with BleScan

    Have you tried using two separate apps?  Right now, I have a DF getting info one sensor, and a glance getting data from a second of the same type/ primary UUID

    I turn  on an LED on the sensor when it's paired.

  • Currently investigating the MAC address approach, since your previous post hinted towards that. 

    Have tried pairing either device independently, which works and pairs to the applicable device (i.e., the logic shown above executes properly, as well as additional test code not shown above).

    Have also tried pairing both in the simulator environment and on the actual Edge1030 Plus device (successful for pairing either device independently, but identical issue when attempting to pair the second device).  This has been tried running both the simulator and the on Edge1030 app simultaneously.

    Separate from the above snippet, I have code that uses the global device variable ('$.frontTire' or '$.rearTire') after the initial pairing.  The logic seems to work correctly when comparing against the global device.  This snippet example is shown below, which is contained within the BLE_Delegate 'onCharacteristicChanged()' function.  The success of the below snippet leads me to believe that I can assign a device to a global variable, but the above problem with pairing the second device tells me I am missing something.

      

    Is there any reason I cannot assign a paired device to a global, or use it in this manner?

  • With something like nRFConnect on your phone, you can see the MAC address of the sensors and they need to be different

    There are devices where more than one Ble pairing is allowed, like the HRM-PRO.  But if the garmin is already paired to that MAC address, you can't pair it a second time.