This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Characteristic limit

I've got 4 services with 15 characteristics between them. Trying to add any more than that results in sd_ble_gatts_characteristic_add() returning NRF_ERROR_NO_MEM.

All characteristics longer than 4 bytes are BLE_GATTS_VLOC_USER, all user descriptions are also in user space.

I've already tried increasing attribute table size to the (theoretical) maximum with .attr_tab_size = 0x6000.

I don't understand what exactly is the limitation I'm running into. I'm using nRF51422_xxAC.

What else is there that I can try?

EDIT:

My hack for the time being is to remove characteristic descriptions.

  • Hi Andrey,

    I've run into a similar issue. I think the issue is that while you do employ BLE_GATTS_VLOC_USER, that only moves the location of the actual value itself to the application memory. Everything else about that characteristic, it's UUID, handle, properties, characteristic properties, descriptors, etc., still live in the ATT table (which is in the memory region of the softdevice).

    I resolved it on my end by consolidating characteristics common to all of my services into their own service with only that single, common characteristic. Of course, this was my workaround, and highly specific. You will have to be more creative in your own resolution.

    Hope this helps, past

  • I understand that BLE_GATTS_VLOC_USER changes only the location of the value and everything else stays in the table. What I don't understand is why increasing it's size doesn't help.

  • My assumption, having read about this problem a few times, is that there is still some fixed-size table somewhere unaffected by the free memory you give to the attribute table. eg perhaps you can store the attribute data there and increase the size for that, however the internal data for the characteristics themselves can't use the extra room.

    Why don't you file a support case on this and see if you can get some help from engineering.

  • andrey, could you please update this thread with latest info, if this answer helped you then please click the ✓ to the left of the answer so that others can come and look here.

  • I run into the same problem. Cannot increase the attribute table enough to add a 10th attribute. Neither with _STACK nor with _USER. Will have to do similar consolidation as RK.

Related