Adding a characteristic to the standard GAP (0x1800) and GATT (0x1801) services

BT SIG has decided to add a new characteristic to one of these services (forgot which one and I am trying to get it) and I have to support it. The new characteristic will tell the client what security levels the server supports. This allows the client to know ahead of time whether or not the device will need to be paired/bonded.

So how can I do this? I do not see any obvious options in the SoftDevice API. I am sure creating my own GAP or GATT service will result in disaster as these are done, for the most part, under the hood since they are required.

Any help on how to do this would be greatly appreciated. Nordic is going to have to do it anyways in a short time as this has been approved up to 0.9 in BT SIG.

I have to admit that I was pretty ticked off when BT SIG did this as I knew it would likely be a real pain in the butt using the Nordic API and I had invested months of time keeping up with the spec using the Nordic SoftDevice. Arrggg!

  • Hi,

    (forgot which one and I am trying to get it)

    Ok. Let me know if you have any more info about this. The name of this, links to resources, etc

    So how can I do this?

    I don't see any ways to do this. You might need to move over to nRF Connect SDK to have support for this new feature when it's released.

    Note that our SoftDevice and nRF5-SDK solution is Bluetooth 5.1 qualified. It's now in maintenance mode, and we don't plan to add new features here.

    See this statement here:  nRF Connect SDK and nRF5 SDK statement 

  • I know about the move to nRF Connect SDK. I was at the seminar in Boston (Waltham) MA, USA a few months ago. But the bottom line I am hearing is that with the current SDK and SoftDevice it is still not possible to add characteristics to these two required services.

    BT SIG has been developing a new spec over the past year and a half called Generic Health Service where they step outside of the BT-SIG box and have one profile that covers all health devices. The secret - they use codes to represent semantics (like the IEEE 11073 and HL7 standards). I have been using the Nordic platforms (nRF51 and nRF52) to test this spec on the server side and the Android to test the client side. As I stated above I thought I might be in trouble when they went for the addition of the new characteristic for security in the GAP/GATT required-everywhere services.

    After two years of coding using SoftDevice its a huge amount of work to move this over to nRF Connect. It would be even worse if I did that and found I still could not add characteristics to the two base services. 

    Update: More information. Link to update:

    (Not able to be released yet)

  • Hi,

    brianreinhold said:
    But the bottom line I am hearing is that with the current SDK and SoftDevice it is still not possible to add characteristics to these two required services.

    That is correct, you can not add custom characteristic to the standard GAP (0x1800) and GATT (0x1801) services in nRF5-SDK / Softdevice.

    brianreinhold said:
    After two years of coding using SoftDevice its a huge amount of work to move this over to nRF Connect. It would be even worse if I did that and found I still could not add characteristics to the two base services. 

    I'm sure the Zephyr Bluetooth Host(the Bluetooth Host used in nRF Connect SDK) will support this if/when this new spec gets adopted. The nRF Connect SDK is our main SDK from now onward, and it's here new features will be added. PS: Here is the relevant file where this new feature would need to be added: https://github.com/zephyrproject-rtos/zephyr/blob/zephyr-v3.2.0/subsys/bluetooth/host/gatt.c#L222

Related