Comprehensive Online Training for Bluetooth Developers

Bluetooth Developer Academy

Online training and community for embedded engineers to help each other advance in Bluetooth Low Energy development.

Featured in the Media

Premium Bluetooth Low Energy Resources

The best introductory book for learning Bluetooth Low Energy

Intro to Bluetooth Low Energy e-book

The only practical Bluetooth 5 & BLE developer guide for the nRF52

Bluetooth 5 & Bluetooth Low Energy: A Developer's Guide cover

Latest Blog Posts and Tutorials

Understanding SN and NESN in a BLE Link Layer packet

By Mohammad Afaneh | November 11, 2016 | 0 Comments

In my previous video looking at connection data captured via a BLE sniffer, I missed explaining two bits in the data that can be confusing to understand. The bits are the SN and NESN in the LL data packet. A few notes to better understand these bits: NESN and SN are used for data flow and making sure data is not missed (ACKs and NACKs). NESN and SN are looked at independently When the device sends a packet, the NESN is the next expected SN from the other side in the next packet coming back. When the device receives a…

How do I choose a UUID for my custom services and characteristics?

By Mohammad Afaneh | October 19, 2016 | 0 Comments

First, a few things to know: “A UUID is a universally unique identifier that is guaranteed to be unique across all space and all time” (Bluetooth 4.2 spec, Vol 3, Part B, section 2.5.1 UUID) A UUID is a 128-bit value. There are reserved UUIDs by the Bluetooth SIG that are generally represented by their 16-bit aliases. These aliases are used for convenience and represent a 128-bit value computed as follows: 128-bit value = 16-bit-value * 2^96 + BluetoothBaseUUID where the BluetoothBaseUUID is 00000000-0000-1000-8000-00805F9B34FB Examples include: 0x180F -> Battery Service UUID (128-bit UUID: 0000180F-0000-1000-8000-00805F9B34FB) 0x2A00 -> Device Name Characteristic UUID (128-bit UUID: 00002A00-0000-1000-8000-00805F9B34FB)…

What is the maximum size of data that can be encapsulated in a characteristic?

By Mohammad Afaneh | October 19, 2016 | 0 Comments

The answer: 512 bytes. But to understand where that came from, let’s first look at what a characteristic really is. Attributes are the generic term describing the smallest element in the Generic Attribute Profile (GATT). So each of Services, Characteristics, and Descriptors is actually an attribute, and according to the Bluetooth 4.2 spec (Volume 3, Part F, section 3.2.9): “The maximum length of an attribute value shall be 512 octets” which leads us to the answer: 512 bytes.

Bill Colwell

Bill Colwell

Firmware Engineering Senior Manager, Allegion

"Mohammad Afaneh has been instrumental in working with our Allegion engineers to quickly further our understanding of Bluetooth Low Energy and making leaps in our security products very quickly."

Keith Broerman Portrait

Keith Broerman

Embedded Firmware Architect, Allegion

"Mohammad keeps abreast of the latest BLE requirements, tools, and techniques, and doesn’t hesitate to share his knowledge."

Copyright © 2019 Novel Bits, LLC | All Rights Reserved