Hi all,
I am trying to send a large stream of bytes(60kb) to an NRF52823 using bbowl. BBowl exposes the uart through a TCP socket connection using noble.
I modified the gatt_init code in SDK13 to support the largest MTU possible:
void gatt_init(void) {
ret_code_t err_code;
err_code = nrf_ble_gatt_init(&m_gatt, gatt_evt_handler);
APP_ERROR_CHECK(err_code);
err_code = nrf_ble_gatt_att_mtu_periph_set(&m_gatt, 155);
APP_ERROR_CHECK(err_code); }
I validated that the MTU is set properly and that packets are being sent by using:
sudo hcidump -i -x
Problems
- The connect is very slow. It takes 2-5 minutes to transfer the full 60 kilobytes depending on the MTU.
- If the MTU is set above 64 bytes on the raspberry pi the transfer times out and/or the NRF52DK reboots.
Questions
- Could the NRF52DK be running out of memory due to the extremely fast MTU? Is there any way to verify? I didn't see anything in the J-Link logs.
- Is there a setting I can change to achieve an MTU of 241 bytes instead of 158?
- Do I need to increase the RX/TX buffer?
- Would it help to enable DLE with the SDK 13 examples? Or is it already enabled?
Thanks so much for your help!