Is the NUS service speed limited by distance?

Hi,

I’m streaming high-rate sensor data over BLE with an nRF52840 running NCS v2.9.0.

  • Data rate: 1 kHz, ≈ 8 400 B/s

  • Packing: 5 samples → 42-byte packet, pushed into an msgq

  • Sending: A dedicated thread dequeues the packets and transmits them with bt_nus_send().

At very short range (0.3 – 0.5 m) everything is stable.
When the distance increases to 0.5 – 2 m, the msg gradually fills, and packet-loss grows with distance (≈ 2 % at 0.6 m, ≈ 32 % at 2 m). bt_nus_send() rarely returns an error, yet queue overflows and packet drops occur simultaneously.

Is such a sharp drop in throughput over this distance typical for the Nordic UART Service, or am I likely missing a configuration step (connection interval, PHY, MTU / DLE, flow control, etc.)?
Any recommendations on parameters or best practices to maintain ~8 kB/s without loss would be greatly appreciated.

the prj.conf as following:

# add BT peripheral rola support ad
CONFIG_BT_PERIPHERAL=y
# enable updata BT connect param
CONFIG_BT_GATT_CLIENT=y     
CONFIG_BT_USER_PHY_UPDATE=y 
CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y
CONFIG_BT_PERIPHERAL_PREF_MIN_INT=24   
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=24
CONFIG_BT_PERIPHERAL_PREF_LATENCY=0
CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=400   
CONFIG_BT_USER_DATA_LEN_UPDATE=y 
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
CONFIG_BT_BUF_ACL_RX_SIZE=251
CONFIG_BT_BUF_ACL_TX_SIZE=251
CONFIG_BT_L2CAP_TX_MTU=247
CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=4000000
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
CONFIG_BT_KEYS_OVERWRITE_OLDEST=y

CONFIG_BT_MAX_CONN=1
#Enable the NUS service
CONFIG_BT_NUS=y

Thank you!

Best regards,

Ben

Parents Reply Children
Related