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.

Bluetooth Mesh 1.1 Performance

In this blog, we explore different performance capabilities of the Bluetooth Mesh 1.1 network…

Bluetooth® Channel Sounding: A Technical Overview

The forthcoming update to the Bluetooth® core specification adds a new feature called Channel…

The Bluetooth® Mesh Primer

An introduction and explanation of important Bluetooth® Mesh concepts.

Low Energy Audio – Basic One-Way Unicast Audio

This document gives an introduction to Bluetooth LE Audio by explaining the basics of…

Low Energy Audio – Using UCIs, URIs, and URI Schemes

This document describes how implementers can use the UCIs, URIs, and URI schemes in…

Using a Bluetooth LE Wireless Module to Accelerate Time-to-market

Wireless connectivity makes dumb products intelligent. Smart devices can transmit information about their surroundings…

Now Available: Auracast™ Developer Best Practice Guides公開中:Auracast™開発者向けベストプラクティスガイド

When Bluetooth® LE Audio was released, it introduced broadcast audio to Bluetooth technology. This…

Automated Emergency Light Testing Through Bluetooth Mesh

During a summer internship at Nordic, I took on a project that focused on…

Coded PHYs + Advertising Coding Selection = Superior Bluetooth® Range

Bluetooth® v5.0 introduced LE Coded PHYs to extend the original range of the 1M…

Bluetooth Low Energy Fundamentals

The Bluetooth Low Energy (LE) Fundamentals Course is designed to give you the knowledge…

The Latest in HADM with Bluetooth LE

HADM, or high accuracy distance measurement using Bluetooth does exactly what it says –…

Mr. Beacon Podcast: Snapdragon Sound with Mike Canevaro

This episode of the Mr. Beacon Podcast explores the revolutionary world of Bluetooth audio.…

Bluetooth® Technology for Linux Developers

Learn how to use the interprocess communication system D-Bus and the BlueZ APIs to create Bluetooth applications for Linux computers.

Designing and Developing Bluetooth® Internet Gateways

Learn about Bluetooth® internet gateways, how to make them secure and scalable, and design and implement your own...

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.

 Get Help