As seen on Kickstarter

GATT Profile

« Back to tutorials

Connect to RuuviTag and read sensor values faster



"The Generic Attributes (GATT) define a hierarchical data structure that is exposed to connected Bluetooth LE devices"

"GATT profiles enable extensive innovation while still maintaining full interoperability with other Bluetooth® devices. The profile describes a use case, roles and general behaviors based on the GATT functionality. Services are collections of characteristics and relationships to other services that encapsulate the behavior of part of a device. This also includes hierarchy of services, characteristics and attributes used in the attribute server."

"GATT is built on top of the Attribute Protocol (ATT) (see Bluetooth Core System Architecture for block diagram and explanations), which uses GATT data to define the way that two Bluetooth Low Energy devices send and receive standard messages. Note that GATT is not used in Bluetooth BR/EDR implementations, which use only adopted profiles."

Ruuvi GATT profile

The GATT profile for RuuviTag is currently under development.

Essentially, this provides connectable access to RuuviTag with a 2-way communication channel between the application and the RuuviTag. More details can be found in an excellent introduction to GATT by Adafruit.

Right now, the application is in an extremely fluid development state and can consume battery life quickly. The development firmware can be obtained from driver improvement fork.

The profile contains support for de-facto standard Nordic UART service, which can send and receive any 20-byte long information over Bluetooth. Right now the work for device information service, battery level service and transmission power service is underway.

Future development

Our current approach to GATT profile is to implement an application layer protocol for configuring and reading sensors. The protocol is designed to be portable to different transport layers, such as upcoming BLE Mesh. More details about package formats can be found on Github.

We'd be happy for any ideas on what you'd want to see with acceleration service. Leave a comment to contribute.


On the receiver side, we've implemented a quick proof-of-concept Web Bluetooth site which can connect to RuuviTag and graph acceleration.

The code is on GitHub and site is available here. Please note that you must have the Web Bluetooth enabled.

Please note that you must have the Web Bluetooth enabled on the device. So far we've tested it out only using Chrome on Android 6.0.1+.

Other features can be tested with mobile applications such as nRF Connect.


Share your project

#ruuvitag / @ruuvicom

Ruuvi Innovations Ltd (Oy) / Finland

Web Design Niku Creative