This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Too many services and characteristics --> NRF_ERROR_NO_MEM

Hello,

i create a custom profile with two services and with 30 characteristics. The first service has 29 characteristics. Up to this point everything is ok, but when I want to create the next service, NRF_ERROR_NO_MEM is returned. I already read that there is a static 1.5 kB of memory allocated for the GATT table internally in the softdevice. All my characteristics are located in BLE_GATTS_VLOC_USER. But the message NRF_ERROR_NO_MEM will nevertheless returned. What can I do to reduce the size in stack memory?

  • I'm terribly sorry for the delay here. However, I've now checked this, and unfortunately you're right. There will be a large difference between the number of attributes you can fit using a custom UUID versus the number you can fit using a Bluetooth SIG UUID.

    The reason is that when adding an attribute with a custom UUID, the whole 128-bit UUID is stored in the attribute table and eats of the 1.5 kB, while when you use a Bluetooth SIG UUID, only the 16-bit UUID is stored, and hence consumes much less memory.

    There isn't any way to work around this currently. However, be aware that the Bluetooth SIG currently runs a program where you can request your own 16-bit UUIDs, if this is important to you. This is available here, but only if you are signed into your Bluetooth.org account.

    I can unfortunately not comment on future developments, so this is something you should discuss with our sales manager for your area. PM me with your location if you don't have his contact information.

  • May I ask you, "10 vendor specific base UUIDs" is a limitation for 9.0.0 or 10 ?

Related