Hi,
In our project, we're using Mcumgr FS to download files from our device.
After tweaking the BLE configuration parameters using the throughput sample (https://github.com/nrfconnect/sdk-nrf/tree/main/samples/bluetooth/throughput#id1), I'm seeing a maximum speed of 18KBps using Nordic's device Manager on an Android phone with the following connection parameters:
PHY: 2M
Connection Interval: 9
Slave Latency: 0
Connection Supervisory Timeout: 42
And according to this post on GitHub (github.com/.../53558maximum throughput is 18KBps
I would like to confirm if that's still the case or not? or Are there other options I can tweak to improve the throughput?
Kconfig file:
# fs_dirent structures are big. CONFIG_MAIN_STACK_SIZE=2048 # Let __ASSERT do its job CONFIG_DEBUG=y CONFIG_LOG=y CONFIG_LOG_MODE_MINIMAL=y CONFIG_FLASH=y CONFIG_FLASH_MAP=y CONFIG_FLASH_PAGE_LAYOUT=y CONFIG_SPI=y CONFIG_SPI_NOR=y CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096 CONFIG_FILE_SYSTEM=y CONFIG_FILE_SYSTEM_LITTLEFS=y CONFIG_PM_PARTITION_REGION_LITTLEFS_EXTERNAL=y CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=n CONFIG_BT=y CONFIG_BT_DEBUG_LOG=y CONFIG_BT_PERIPHERAL=y CONFIG_BT_MAX_CONN=2 CONFIG_BT_DEVICE_APPEARANCE=962 CONFIG_HEAP_MEM_POOL_SIZE=4096 # Over-ride various BT settings for extended data packet size CONFIG_BT_USER_DATA_LEN_UPDATE=y CONFIG_BT_USER_PHY_UPDATE=y CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y CONFIG_BT_BUF_ACL_RX_SIZE=502 CONFIG_BT_ATT_PREPARE_COUNT=2 CONFIG_BT_L2CAP_TX_BUF_COUNT=10 CONFIG_BT_L2CAP_TX_MTU=498 CONFIG_BT_L2CAP_DYNAMIC_CHANNEL=y CONFIG_BT_CONN_TX_MAX=10 CONFIG_BT_BUF_ACL_TX_COUNT=10 CONFIG_BT_BUF_ACL_TX_SIZE=502 CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 CONFIG_BT_CTLR_PHY_2M=y CONFIG_BT_CTLR_PHY_CODED=y CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT=4000000 CONFIG_BT_GATT_CLIENT=y CONFIG_BT_DEVICE_NAME_DYNAMIC=y # This example requires more workqueue stack CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096 CONFIG_MAIN_STACK_SIZE=4096 CONFIG_BT_RX_STACK_SIZE=4096 CONFIG_BT_HCI_TX_STACK_SIZE=2048 #MCUMGR CONFIG_NET_BUF=y CONFIG_ZCBOR=y CONFIG_CRC=y CONFIG_MCUMGR=y CONFIG_MCUMGR_GRP_OS=y # Enable the Bluetooth mcumgr transport (unauthenticated). CONFIG_MCUMGR_TRANSPORT_BT=y CONFIG_MCUMGR_TRANSPORT_BT_AUTHEN=n CONFIG_MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL=y # Enable the mcumgr Packet Reassembly feature over Bluetooth and its configuration dependencies. # MCUmgr buffer size is optimized to fit one SMP packet divided into five Bluetooth Write Commands, # transmitted with the maximum possible MTU value: 498 bytes. CONFIG_MCUMGR_TRANSPORT_BT_REASSEMBLY=y CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE=2475 CONFIG_MCUMGR_GRP_OS_MCUMGR_PARAMS=y CONFIG_MCUMGR_TRANSPORT_WORKQUEUE_STACK_SIZE=4608 CONFIG_MCUMGR_TRANSPORT_NETBUF_COUNT=6 CONFIG_PM_PARTITION_SIZE_LITTLEFS=0x2000000 CONFIG_FS_LITTLEFS_HEAP_PER_ALLOC_OVERHEAD_SIZE=128 #FS BLE CONFIG_MCUMGR_GRP_FS=y # Enable the storage erase command. CONFIG_MCUMGR_GRP_ZBASIC=y CONFIG_MCUMGR_GRP_ZBASIC_STORAGE_ERASE=y # Disable Bluetooth ping support CONFIG_BT_CTLR_LE_PING=n # Disable shell commands that are not needed CONFIG_CLOCK_CONTROL_NRF_SHELL=n CONFIG_DEVICE_SHELL=n CONFIG_DEVMEM_SHELL=n CONFIG_FLASH_SHELL=n CONFIG_TIMING_FUNCTIONS=y # I2C CONFIG_I2C=y CONFIG_NRFX_TWIM1=y CONFIG_NRFX_TWIM0=y
Best regards,
Mehdi