This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Why use BLE without GATT?

I've come across a couple of products that shows up as both classic and BLE. But when connecting to these products via nRF Connect or inspecting the traffic, I can't seem to find any GATT services. One example is the Bose QuietComfort 35 headphones, another one is the iHealth HS4S scale.

Is there a specific reason for these products to enable BLE at all? Are they using BLE for something else than GATT?

  • Hi Per,

    The main advantage of using BT LE GATT layer is interoperability and application interworking: it allows you to easily define mutliple use cases/functions/applications living together on one device. It is also the only way to use some mutli-applicational devices and APIs like Android and iOS phones.

    However if you don't build interoperable solution, you own both ends of wireless link (= HW and SW) and you want to use BT LE (for some reason) then why to bother with higher layers then Link Layer? You can define your own protocol directly on top of generic PDU structure and the same for advertising/scanning phase (just CONNECT_REQ will be standard). Resulting solution will probably be more efficient then to bother with L2CAP/ATT/GATT overhead and procedures (not speaking about notoriously mulfunctioning security manager layer - unless you use latest asymmetric scheme based on ECC). So products such as headphones/headsets or similar things which rely on dongle/custom HW on host (PC) side and built-in BT radio inside the product can easily use BT LE for some specific signalling but not with usual "interoperable" framework of GATT and GAP. Also they usually use some proprietary radio PHY and/or higher layer protocols, because BT LE is handy only if your device must interwork with other type of HW/SW or if you can gain some development advantage by reusing some layers...

    Not a complete insider but this is my personal explanation.

    Cheers Jan

  • Hi Per,

    When I connect to a Bose QuietComfort 35 with nRF-Connect I see 4 services (Generic attribute, Generic Access, Device information and a Vendor specific one (shown as unknown in nRF-Connect)). The Vendor specific have 3 different characteristics.

    image description

  • Good point about using a custom protocol above the link layer. But as you write I think the products that I have looked into must use the APIs available on Android and iOS since they have their own apps.

  • Aha, this is not what I see. On my Nexus 5X running Android 7.1.1 there are no services shown in nRF-Connect. I've tried to reset the Bose QuietComfort 35 and also to remove the bonding, but still no services shown. I see in the release notes for nRF-Connect that "On Nexus 4 and 7 some problems may occur when connecting to devices, a specially bondable ones. Bluetooth sensor reset may be required to fix the problem." Maybe this is true for Nexus 5X as well. Any idea about how to reset the Bluetooth sensor?

  • I have now tested with a Nexus 5X myself, and I see the same issue here. I was not even able to connect with the 5X (GATT error was returned), so the services will not be listed/discovered. A sensor reset is just resetting the QC-35, but this did unfortunately not solve the problem. On a Samsung S6 everything worked perfectly, so this is an issue with the Nexus 5X.

Related