October 14, 2019

BLE Basics


From the beginning, the focus was to design a radio standard with the lowest possible power consumption, specifically optimized for low cost, low bandwidth, low power, and low complexity.

The name Bluetooth comes from the tenth-century king Harald Bluetooth who united dissonant Danish tribes into a single kingdom.

The Bluetooth logo is merging the runic letter ᚼ and ᛒ, Harald's initials.

  • Released in Bluetooth Core Spec 4.0 in 2010
  • Latest version is 5.1 of Jan 2019
  • Limits
    • Theoretical 1 Mbit/s
    • Optimal 125 Kbit/s
    • Typical 10 Kbit/s
  • Range
    • Optimal 30 m
    • Typical 2 to 5 m

network topology

  • Broadcast
  • Connections
    • Central (master)
    • Peripheral (slave)


Profiles: “Vertical slices” of functionality covering either basic modes of operation required by all devices (Generic Access Profile, Generic Attribute Profile) or specific use cases (Proximity Profile, Glucose Profile), profiles essentially define how protocols should be used to achieve a particular goal, whether generic or specific.

  • GAP -- Generic Access Profile
  • GATT -- Generic Attribute Profile
  • Further SIG-defined GATT-based profiles (https://www.bluetooth.com/specifications/gatt/) include:
    • Glucose Profile
    • Health Thermometer Profile
    • Cycling Speed and Cadence Profile (!)

GAP profile

  • Can be understood as the topmost control layer of BLE
    • Discovery
    • Broadcast
    • Establish secure connection
    • Fundamental operations

GATT profile

  • Can be understood as the topmost data layer of BLE
  • GATT establishes how profile and user data is exchanged
  • Data is organized hierarchically services, which group conceptually related pieces of user data called characteristics.


  • GATT Client
  • GATT Server


  • Attributes store static and user data
  • Handle
  • Type
  • Permissions
    • Access permissions: None, Read, Write, RW
    • Encryption
    • Authorization
  • Value


  • Characteristics are containers for user data
  • Include at least two attributes
    • Declaration
    • Value


  • pairing