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.

Parents
  • 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

  • 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.

Reply
  • 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.

Children
No Data
Related