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.