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

BLE DFU example is not connectable

Hi,

I have been trying to get the BLE secure DFU example working on a custom board (nrf52840 - BC840 module). I tried it on SDK 15 and SDK 16. When I flash the BLE DFU, I can see it advertise on my mobile (nrfConnect) but I am unable to connect. 

I can, however, connect to it using nrfConnect on the PC. But I have noticed that the RSSI seems a little lower than usual anyhow.

You might think this is a hardware issue but:

  • I flash, s140 6.1.1 softdevice + my app -> no issues
  • I flash pre-compiled "secure dfu test images" -> no issues
  • I compile the SDK 16 secure BLE DFU example, I make flash_softdevice + make flash -> issues
  • I have also used the SDK 15 BLE DFU example but I needed to merge the softdevice and bootloader -> issues

My first idea to solve this was to check my sdk_config.h and make sure that the LF clock settings are correct. I have tried a number of settings without luck. I have on LF crystal on board, but even when I chose the RC clock, it had the same issue.

Finally, I have a nrf52832 dev board (BMD-350-EVAL). When I program the exact same example to the dev board it works fine. So my guess is there is something different about the nrf52832 vs nrf52840 examples/hardware. But I am not really sure.

You help is appreciated!

Parents
  • Ok I solved it,

    I needed to change these lines in the sdk_config:

    #define NRF_DFU_ANT_MTU 1024
    #define NRF_DFU_BLE_MIN_CONN_INTERVAL 12
    
    #define NRF_DFU_BLE_MAX_CONN_INTERVAL 12

    Change them to:

    #define NRF_DFU_ANT_MTU 247
    #define NRF_DFU_BLE_MIN_CONN_INTERVAL 10
    
    #define NRF_DFU_BLE_MAX_CONN_INTERVAL 15

    Changing just the MTU or Just the connection interval didn't work. I had to change both. 

    I am not 100% certain why this is necessary, I assume my phone can only handle certain values?

Reply
  • Ok I solved it,

    I needed to change these lines in the sdk_config:

    #define NRF_DFU_ANT_MTU 1024
    #define NRF_DFU_BLE_MIN_CONN_INTERVAL 12
    
    #define NRF_DFU_BLE_MAX_CONN_INTERVAL 12

    Change them to:

    #define NRF_DFU_ANT_MTU 247
    #define NRF_DFU_BLE_MIN_CONN_INTERVAL 10
    
    #define NRF_DFU_BLE_MAX_CONN_INTERVAL 15

    Changing just the MTU or Just the connection interval didn't work. I had to change both. 

    I am not 100% certain why this is necessary, I assume my phone can only handle certain values?

Children
Related