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

OTA FWU bootloader timeout after SDK v8.1.0 upgrade

There's no question, I'm just posting this here in the hopes that it helps someone else out.

After I upgraded my Keil packs to the newest SDK (v8.1.0), my OTA FWU bootloader mysteriously stopped working (originally based on example project). I was using Master Control Panel v3.9.0.6 to test it out, and I would get an error as soon as it started. I looked at the MCP log and found this:

Response received for Request Op Code = 3

Ultimately, I traced down the source of the problem by setting a breakpoint in dfu_error_notify() in dfu_transport_ble.c and seeing where it was getting called from, which was this snippet in app_data_process():

err_code = hci_mem_pool_rx_produce(length, (void **) &mp_rx_buffer);
if (err_code != NRF_SUCCESS)
{
    dfu_error_notify(p_dfu, err_code);
    return;
}

It turns out that upgrading the Keil Packs overwrote the contents of hci_mem_pool_internal.h from this (the correct version):

#define TX_BUF_SIZE       4u         	/**< TX buffer size in bytes. */
#define RX_BUF_SIZE       32u  				/**< RX buffer size in bytes. */
#define RX_BUF_QUEUE_SIZE 8u           /**< RX buffer element size. */

to this (the incorrect version and the default if you don't change it):

#define TX_BUF_SIZE       600u         /**< TX buffer size in bytes. */
#define RX_BUF_SIZE       TX_BUF_SIZE  /**< RX buffer size in bytes. */
#define RX_BUF_QUEUE_SIZE 4u           /**< RX buffer element size. */

Moral of the story: be careful when updating Keil Packs!

Parents Reply Children
No Data
Related