typical throughput in BLE 2M phy

Hi

my project is about live streaming of physiological data at high sampling rates over BLE. 

On the receiver side I have a Laptop(Windows/Mac/Linux) and not a NRF dongle. 

What are typical throughput values when connecting to laptops (not havong NRF modules on central/perpheral side)?

I am using:

  • 2M PHY
  • Connection interval: 7.5 ms
  • 2M phy
  • MTU: 247 bytes
  • Total characteristics used: 1 (for notify)

On my windows machine I only get ~820 kbps. Is that normal? What are typical datarates? 

Here is my config file:

# Enable the UART driver
CONFIG_UART_ASYNC_API=y
CONFIG_NRFX_UARTE0=y
CONFIG_SERIAL=y
CONFIG_UART_ASYNC_API=y
CONFIG_GPIO=y
# CONFIG_POWEROFF=y
## CONFIG_PM_DEVICE=y
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=n
CONFIG_HEAP_MEM_POOL_SIZE=25000
CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
# Enable DK LED and Buttons library
CONFIG_DK_LIBRARY=y
# EEG App requires more workqueue stack
CONFIG_MAIN_STACK_SIZE=10800
#4096
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=10800
# Console
CONFIG_EARLY_CONSOLE=n
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=n
CONFIG_STDOUT_CONSOLE=n
CONFIG_PRINTK=n
CONFIG_USE_SEGGER_RTT=y
CONFIG_RTT_CONSOLE=y
CONFIG_LOG_BACKEND_RTT=y
CONFIG_LOG=y
CONFIG_LOG_MODE_DEFERRED=n
CONFIG_LOG_BACKEND_UART=n
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
CONFIG_BT_GATT_CLIENT=y
CONFIG_BT_CENTRAL=n
CONFIG_BT_MAX_CONN=1
CONFIG_BT_MAX_PAIRED=1
CONFIG_BT_GATT_DM=y
CONFIG_BT_DEVICE_NAME_DYNAMIC=y
# Extended Data and Max Throughput
CONFIG_BT_USER_DATA_LEN_UPDATE=y
CONFIG_BT_USER_PHY_UPDATE=y
CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y

# Allow for large Bluetooth data packets.
CONFIG_BT_L2CAP_TX_MTU=247
CONFIG_BT_BUF_ACL_RX_SIZE=251
CONFIG_BT_BUF_ACL_TX_SIZE=251
CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
CONFIG_BT_CTLR_PHY_2M=y
CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=4000000
CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=500
CONFIG_BT_PERIPHERAL_PREF_MIN_INT=6
CONFIG_BT_PERIPHERAL_PREF_MAX_INT=6
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
CONFIG_REBOOT=y

CONFIG_BT_AUTO_PHY_UPDATE=n
CONFIG_BT_PHY_UPDATE=y

CONFIG_BT_L2CAP_TX_BUF_COUNT=40
CONFIG_BT_BUF_ACL_TX_COUNT=40
# Enable GATT Write Command (Write Without Response) optimization
CONFIG_BT_CONN_TX_MAX=40
# Increase the number of Rx buffers for the controller
CONFIG_BT_BUF_EVT_RX_COUNT=40
# Ensure the controller has enough memory allocated for maximum TX/RX payloads
CONFIG_BT_CTLR_RX_BUFFERS=40
Related