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

Archiving high throughput with IPSP

Hi,
I have a set up consisting of an nRF52840 and Raspberry Pi communicating over IPSP following the zephyr OS sample docs.zephyrproject.org/.../README.html
 

My application running on the nRF52840 needs to stream data with ~50Kbit/s.
Unfortunately, I get the following warning, when I send data with this data rate:

[00:00:20.695,800] <wrn> bt_l2cap: No credits to transmit packet

How to make sure that my Raspberry gives sufficient credits to the nRF52840, so the desired data rate can be achieved?

Parents
  • Hi,

    Try setting these:

    CONFIG_BT_RX_BUF_LEN=255
    CONFIG_BT_GATT_CLIENT=y
    CONFIG_BT_ATT_TX_MAX=10
    CONFIG_BT_ATT_PREPARE_COUNT=2
    CONFIG_BT_CONN_TX_MAX=10
    CONFIG_BT_L2CAP_TX_BUF_COUNT=10
    CONFIG_BT_L2CAP_TX_MTU=247
    CONFIG_BT_L2CAP_RX_MTU=247
    CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y
    CONFIG_BT_CTLR_PHY_2M=y
    CONFIG_BT_CTLR_RX_BUFFERS=2
    CONFIG_BT_CTLR_TX_BUFFERS=10
    CONFIG_BT_CTLR_TX_BUFFER_SIZE=251
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251

    And see if that helps. If that does not solve the problem, let me know what version/branch/commit/tag you are working on.

  • Hi

    I managed to solve it with these configurations on the device side:

    CONFIG_BT=y
    CONFIG_BT_DEBUG_LOG=n
    CONFIG_BT_SMP=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_CENTRAL=y
    CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y
    CONFIG_BT_CTLR_DATA_LENGTH_CLEAR=y
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 
    CONFIG_BT_DEVICE_NAME="test-dev"
    CONFIG_BT_DATA_LEN_UPDATE=y
    CONFIG_BT_AUTO_DATA_LEN_UPDATE=y
    CONFIG_BT_PERIPHERAL_PREF_MAX_INT=7
    CONFIG_BT_PERIPHERAL_PREF_MIN_INT=6
    CONFIG_BT_CTLR_PHY_2M=y
    CONFIG_BT_RX_BUF_LEN=255
    CONFIG_BT_GATT_CLIENT=y
    CONFIG_BT_ATT_TX_MAX=10
    CONFIG_BT_ATT_PREPARE_COUNT=2
    CONFIG_BT_CONN_TX_MAX=10
    CONFIG_BT_L2CAP_TX_BUF_COUNT=10
    CONFIG_BT_L2CAP_TX_MTU=2000 
    CONFIG_BT_L2CAP_RX_MTU=2000 
    CONFIG_BT_CTLR_RX_BUFFERS=2
    CONFIG_BT_CTLR_TX_BUFFERS=10
    CONFIG_BT_CTLR_TX_BUFFER_SIZE=251 
    CONFIG_BT_DEBUG_L2CAP=y
    CONFIG_BT_EATT=y
    CONFIG_BT_EATT_RX_MTU=519

    and seting the connection event intervals on the Raspberry in:

    /sys/kernel/debug/bluetooth/hci0/conn_max_interval to 7 
    /sys/kernel/debug/bluetooth/hci0/conn_min_interval to 6 

Reply
  • Hi

    I managed to solve it with these configurations on the device side:

    CONFIG_BT=y
    CONFIG_BT_DEBUG_LOG=n
    CONFIG_BT_SMP=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_CENTRAL=y
    CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y
    CONFIG_BT_CTLR_DATA_LENGTH_CLEAR=y
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 
    CONFIG_BT_DEVICE_NAME="test-dev"
    CONFIG_BT_DATA_LEN_UPDATE=y
    CONFIG_BT_AUTO_DATA_LEN_UPDATE=y
    CONFIG_BT_PERIPHERAL_PREF_MAX_INT=7
    CONFIG_BT_PERIPHERAL_PREF_MIN_INT=6
    CONFIG_BT_CTLR_PHY_2M=y
    CONFIG_BT_RX_BUF_LEN=255
    CONFIG_BT_GATT_CLIENT=y
    CONFIG_BT_ATT_TX_MAX=10
    CONFIG_BT_ATT_PREPARE_COUNT=2
    CONFIG_BT_CONN_TX_MAX=10
    CONFIG_BT_L2CAP_TX_BUF_COUNT=10
    CONFIG_BT_L2CAP_TX_MTU=2000 
    CONFIG_BT_L2CAP_RX_MTU=2000 
    CONFIG_BT_CTLR_RX_BUFFERS=2
    CONFIG_BT_CTLR_TX_BUFFERS=10
    CONFIG_BT_CTLR_TX_BUFFER_SIZE=251 
    CONFIG_BT_DEBUG_L2CAP=y
    CONFIG_BT_EATT=y
    CONFIG_BT_EATT_RX_MTU=519

    and seting the connection event intervals on the Raspberry in:

    /sys/kernel/debug/bluetooth/hci0/conn_max_interval to 7 
    /sys/kernel/debug/bluetooth/hci0/conn_min_interval to 6 

Children
No Data
Related