What is a Profile?

A profile is a formal specification that defines two or more devices and how they can work together. TThis article focuses on profiles for Bluetooth implementations.

The Bluetooth Special Interest Group (SIG) defines a number of standard profiles called adopted profiles. I will explain why later. Examples include the Proximity Profile, the Heart Rate Profile, and the newly released Continuous Glucose Monitoring Profile. You can find the full list on the adopted specification.

A key component of the Bluetooth Smart architecture is the Generic Attribute Profile (GATT). It defines the types of state data that a device exposes and how that data can be used. It does this in terms of structures known as services, characteristics and descriptors. Amongst other things, a Bluetooth profile must define the GATT services that each device of this type must (mandatory) or may (optional) implement. There is a many-to-many relationship between profiles and services so particular services may be used by multiple, distinct profiles. This is a simple but powerful idea and one that saves time and money for developers implementing device firmware, since it supports and promotes reuse of code across different device types.

Services are self-contained descriptions (at the specification level) or implementations (at the code level) of a set of closely related behaviors and device data. They’re completely decoupled from the profile they’re used by and so, having no “awareness” of the type of device they’re used in, can be thought of as completely self-contained components—this is what makes them perfect for reuse. For example, you’ll find the Device Information Service and the Battery Service used in a whole range of different profiles.

The data which services contain is expressed as a series of GATT characteristics. For example, the Device Information Service contains a characteristic called Serial Number, whilst the Battery Service contains a characteristic called Battery Level. Profiles, services and characteristics are three of the fundamental technical aspects of the Bluetooth architecture, defined by GATT.

Adopted vs. Custom

Those profiles, services, and characteristics defined and published by the Bluetooth SIG are termed adopted. Bluetooth SIG working groups develop and maintain adopted specifications that eventually become industry standard.

The Bluetooth SIG designed Bluetooth technology with innovation in mind. In addition to the adopted profiles and services published by the Bluetooth SIG, third-party developers are permitted to define their own profiles using the GATT architecture. We call these custom profiles. It’s permissible to define your own custom services and characteristics too.

Custom vs. Standard

If you create a custom profile, service, or characteristic, does it mean your device will be non-compliant with the Bluetooth standards? Happily, the answer is a resounding NO! This is the power and beauty of custom profiles — you can invent your own device types and device behaviors, define and implement them as a custom profile, and are still compliant with the relevant Bluetooth standards. How incredible is that?

So adopted profiles are standard profiles created and maintained by the Bluetooth SIG while custom profiles are ones created by third parties. Both categories of profiles are fully compliant with Bluetooth SIG standards.

A Closer Look at Custom Profiles

With custom profiles, you have complete flexibility. You may incorporate both adopted services and custom services in the same custom profile. The same applies to custom services; they can contain a mixture of adopted services from the Bluetooth SIG and custom services that you invented. You may also create a custom profile by assembling a new combination of previously adopted services.

How Do You Create a Custom Profile?

Watch the video above for a detailed review of the process of creating a custom profile. Your target Bluetooth chip or module will provide a software developer kit (SDK) that should include a mechanism by which you can define and implement your device’s profile and its constituent services. For a hands-on introduction to the topic, I recommend you download the Bluetooth Starter Kit and work through the labs. You will implement a custom profile using an Arduino board with Bluetooth shield plus one or more mobile applications that use that profile.

To Publish or Not to Publish?

That is the question, or at least one of them. Adopted profiles benefit from the fact that the Bluetooth SIG publishes their specification, so it’s easy for developers to work with devices that implement them. There’s a thriving third-party app developer ecosystem for smartphones and tablets where we see the result of this openness applications.

Some manufacturers choose to publish details of their custom profiles for other third-party developers to exploit, while others do not. This is a business decision not a technical one.

Custom Profiles in 2015

While the concept of custom profile creation allows for great flexibility from a developer’s point of view, the Bluetooth SIG is studying ways to make it even easier for developers to share, discover, and reuse custom profiles. Since custom and adopted profiles are structured the same way — via services and characteristics — the advent of a creation tool of these elements is definitely possible. We are currently working on something to make the process of using adopted profiles, or creating custom profiles, in a consistent and easy way in the near future.

Wireless Connectivity Options for IoT Applications - Asset Tracking

If you recall from the previous article in this series, we covered the application…

How Bluetooth Technology Uses Adaptive Frequency Hopping to Overcome Packet Interference

Interference is one of the biggest challenges for any wireless technology in providing reliable…

A Technical Overview of LC3

An Introduction to LE Audio Over the past two decades, since its inception, Bluetooth®…

How Bluetooth Technology Creates Reliability From Unreliable Foundations

Figure 3a – A stack configuration supporting Bluetooth LE with GAP/GATT/ATT Bluetooth® enabled devices…

Bluetooth Mesh and DALI - Under the Hood

In my previous article on Bluetooth Mesh and DALI – the Perfect Match, we…

Bluetooth Mesh and DALI – The Perfect Match

In May 2020, the Bluetooth Special Interest Group (SIG) and DiiA (Digital Illumination Interface…

An Introduction to Bluetooth Low Energy for Swift Developers

All smartphones support Bluetooth® Low Energy (LE) and it is used in all manner…

Building a Sensor-Driven Lighting Control System Based on Bluetooth® Mesh

A technical examination of which Bluetooth mesh models to use in different types of…

Wireless Connectivity Options for IoT Applications - Condition Monitoring

In this post, we continue our series on the comparison between the different wireless…

Bluetooth Security and Privacy Best Practices Guide

This guide is intended to help implementers better understand why certain available security and…

Advanced Bluetooth for Android Developers

Android developers can take this guided tour of the most recent features and interesting…

How to Deploy BlueZ on a Raspberry Pi Board as a Bluetooth Mesh Provisioner

This step-by-step study guide will teach you: How to rebuild the kernel on a…

Discussing Bluetooth Range

Watch Nordic address some of the most common myths concerning Bluetooth range, discuss the…

The Bluetooth LE Security Study Guide

Learn about fundamental security concepts, the security features of Bluetooth Low Energy, and gain some hands-on experience using those features in device code.

How to Make Wearables Bluetooth Mesh Provisioners

Learn how to create applications for smartwatches and other platforms that can monitor and control nodes in a Bluetooth mesh network.

Bluetooth Direction Finding: A Technical Overview

This comprehensive overview examines how two new Bluetooth direction finding methods can enable location services solutions that support high-accuracy.

 Get Help