Designing your Bluetooth GATT: Custom Services and Characteristics [MIDI controller use case]

One thing I wish I had when I started developing for BLE is more blog posts that walk you step-by-step on how to tackle the different phases of the system design and implementation. One such phase is designing your Bluetooth GATT: Services and Characteristics.

I just published a new blog post tackling this phase. I lay out the step-by-step process for designing a custom GATT for a BLE MIDI controller using the nRF52 platform including the complete source code. The post covers the following:

  • Attribute Protocol (ATT) and the Generic Attribute Profile (GATT).
  • Profiles, Services, and Characteristics.
  • How to Design your custom GATT (step-by-step).
  • Implementation of a custom GATT using a real-life example of a MIDI device on the nRF52 platform.
  • Testing and verification using the nRF Connect mobile application.

Read the full blog post here:

Bluetooth GATT: How to Design Custom Services & Characteristics [MIDI use case]

Hope others find it useful!

  • Thank you Mohammad for the post .

    i tried the tutorial but i'm having a small problem. my device is not advertising; the device doesn't show while scaning and there are no errors while executing .I don't know what might be the problem and did anyone have the same problem before?

  • Thanks for this detailed post !

    But it was initially made for the SDK12.3 if I'm not mistaking? It's not working with the 14.2, for example, there is no ble_evt_dispatch function anymore so maybe some code are missing. I got stopped by a vector catch (HardFault_Handler) at the SVCALL for the sd_ble_gap_device_name_set.

    Do you have an updated version of your tutorial that could help?