Paging all BLE experts...

I am trying to connect to a BLE FTMS service that is being broadcast by an Android application.  My ConnectIQ software successfully scans for and shows several devices, such as a smart trainer, other BLE devices, etc.  But this particular service is invisible to the ConnectIQ code.

Is there any really low level information available discussing ConnectIQ and advertising packets?

When I compare BLE advertising packets that are seen by a ConnectIQ app and this one, the difference seem to be in the flags.  The working one does not advertise simultaneous connections.

Below is how this advertisement is captured in WireShark.

Any ideas why I can't see this advertisement in ConnectIQ?

  • These are the flags for the working device:

  • With this app you can see everything you can see with CIQ BLE on a device.  Some don't show names, some don't show UUIDs, some don't show at all.

    https://apps.garmin.com/en-US/apps/9bcc8b66-8385-4afb-b93e-f69e01422284

    CIQ BLE is a minimal implementation.  For things that don't show, you may spot the difference using something like nRFConnect on your phone and checking the flags between a device that shows and one that doesn't

    What I'm suspecting in this case is that your watch and phone are already known to each other with the basic pairing and you're not seeing advertisments from the same BLE Mac address.  No solution I know of.

  • Thanks for the reply,  Yes, I've already tried BleScan on my watch with the same results (not seeing the advertisement).   I hadn't considered the fact that my phone is already paired with my watch.  But I have been testing this on my PC in the simulator with the Nordic dongle.  And I've also tried someone else's phone that was never paired with any of my devices.

    The screen shots above are from Wireshark using a Nordic dongle flashed with BLE firmware and shows exactly the difference between a working and non working device.  I'm trying to understand if there's any more control over what the watch / ConnectIQ will see via BLE.  I don't really understand why it won't see this data.

  • I think it's not the flags. It's the length of the advertising package. Garmin's BLE stack truncates every packet after 20 bytes. So it sees only the first 20 bytes of an advertising packet. Thus, it depends how the advertising device forms the advertising packet. 

    Yes, this is very odd. Please rate up the bug report on this, found in bugs forum.

  • yes. Thus, is there any hope that it will be ever fixed...? I doubt.

  • If you can modify your advertising package, try to put device name first in the package. Then Garmin will show it.

  • Thanks for the replies.  I changed my phone device name to 3 characters from 13, so that should make the advertising packet data less than 20 bytes.  However that made no difference. 

    The onScanResult delegate is still not being called in the simulator.  Neither does it show up in BleScan on my FR945.  So it's not a question of truncated data.  That the BLE subsystem doesn't even let the app know an advertisement has been seen.

    To make matters even more confusing, BleScan on my Edge 530 actually sees the advertisement I am interested in (size 19 bytes!).  But simulating the Edge does not show it on my PC.

    My Edge reports something like 30 devices in BleScan.  The FR945 reports 0.  I am assuming that is because the Edge has a better antenna.  Both devices are up to date.

    @jim_m_58, I just realized you're the BleScan author.  Thanks for posting that!

  • Did you see the adv frame with the shortened name in wireshark? There are more data fields in an adv packet, i.e. UUIDs, and those may appear in front of the device name. Shortening the device name then can have no eHeartbeatffect. All devices which do not show up on BleScan, which i analysed, had their device name not in the first 20 bytes of the adv packet. Thus my assumption is, the 20 byte truncation in CIQ not only affects the payload data frames, but also the adv frames.

  • As I say in the description for BleScan, there are devices you won't see with CIQ Ble, some you won't see a name, some you won't see a UUID.  There a field called "raw" that's the size of the raw data seen (you can see that data by pressing select in the app).  Just ran blescan, and I'm seeing 14 devices, with "raw" having a max of 30 bytes and a min of 8 bytes.