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
  • Hi mredp, 

    Is the log, i.e. 

    Connected to [MAC ADDRESS]
    Connection parameters updae failed with status 8 (interval: 45.0ms, latency: 0, timeout: 5000ms)
    Error 8 (0x8): GATT INSUF AUTHORIZATION
    Error 8 (0x8): GATT CONN TIMEOUT
    Disconnected

    from the nRF52840 side or the nRF Connect app on your smartphone?

    GATT INSUF AUTHORIZATION usually means that the security level of the link does not match the security requirement set in the characteristic you are trying to read/write to. 

    Have you set NRF_DFU_BLE_REQUIRES_BONDS to 1 in the bootloader sdk_config.h file?

  • Yes your correct, the log is from the nRF Connect app on my smartphone. 

    I have not set it. This is in the sdk_config:

    #define NRF_DFU_BLE_REQUIRES_BONDS 0
     
  • Ok, could you flash the debug version of the bootloader example for the nRF52840, i.e. the one found in nRF5_SDK_16.0.0_684aa2c\examples\dfu\secure_bootloader\pca10056_s140_ble_debug and post the log output from the device when you connect to it with your smartphone. Also please post the entire log from nRF Connect on the mobile side. 

  • Ok so, I got this from the RTT Viewer

    <00> info> app: Inside main
    00> 
    <00> debug> app: In nrf_bootloader_init
    00> 
    <00> debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
    00> 
    <00> debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
    00> 
    <00> debug> nrf_dfu_settings: Using settings page.
    00> 
    <00> debug> nrf_dfu_settings: Copying forbidden parts from backup page.
    00> 
    <00> debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    00> 
    <00> info> nrf_dfu_settings: Backing up settings page to address 0xFE000.
    00> 
    <00> debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    00> 
    <00> debug> app: Enter nrf_bootloader_fw_activate
    00> 
    <00> info> app: No firmware to activate.
    00> 
    <00> info> app: Boot validation failed. No valid app to boot.
    00> 
    <00> debug> app: DFU mode because app is not valid.
    00> 
    <00> info> nrf_bootloader_wdt: WDT is not enabled
    00> 
    <00> debug> app: in weak nrf_dfu_init_user
    00> 
    <00> debug> app: timer_stop (0x200057C4)
    00> 
    <00> debug> app: timer_activate (0x200057C4)
    00> 
    <00> info> app: Entering DFU mode.
    00> 
    <00> debug> app: Initializing transports (found: 1)
    00> 
    <00> debug> nrf_dfu_ble: Initializing BLE DFU transport
    00> 
    <00> debug> nrf_dfu_ble: Setting up vector table: 0x000F1000
    00> 
    <00> debug> nrf_dfu_ble: Enabling SoftDevice.
    00> 
    <00> debug> nrf_dfu_ble: Configuring BLE stack.
    00> 
    <00> debug> nrf_dfu_ble: Enabling the BLE stack.
    00> 
    <00> debug> nrf_dfu_ble: No advertising name found
    00> 
    <00> debug> nrf_dfu_ble: Using default advertising name
    00> 
    <00> debug> nrf_dfu_ble: Advertising...
    00> 
    <00> debug> nrf_dfu_ble: BLE DFU transport initialized.
    00> 
    <00> debug> nrf_dfu_flash: Initializing nrf_fstorage_sd backend.
    00> 
    <00> debug> app: Enter main loop
    00> 

    And this is the log from my mobile phone.

    As you can see I tried to connect 4 times. This error code is different than the one I get from the pca10056_s140_ble project.

Reply
  • Ok so, I got this from the RTT Viewer

    <00> info> app: Inside main
    00> 
    <00> debug> app: In nrf_bootloader_init
    00> 
    <00> debug> nrf_dfu_settings: Calling nrf_dfu_settings_init()...
    00> 
    <00> debug> nrf_dfu_flash: Initializing nrf_fstorage_nvmc backend.
    00> 
    <00> debug> nrf_dfu_settings: Using settings page.
    00> 
    <00> debug> nrf_dfu_settings: Copying forbidden parts from backup page.
    00> 
    <00> debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    00> 
    <00> info> nrf_dfu_settings: Backing up settings page to address 0xFE000.
    00> 
    <00> debug> nrf_dfu_settings: Destination settings are identical to source, write not needed. Skipping.
    00> 
    <00> debug> app: Enter nrf_bootloader_fw_activate
    00> 
    <00> info> app: No firmware to activate.
    00> 
    <00> info> app: Boot validation failed. No valid app to boot.
    00> 
    <00> debug> app: DFU mode because app is not valid.
    00> 
    <00> info> nrf_bootloader_wdt: WDT is not enabled
    00> 
    <00> debug> app: in weak nrf_dfu_init_user
    00> 
    <00> debug> app: timer_stop (0x200057C4)
    00> 
    <00> debug> app: timer_activate (0x200057C4)
    00> 
    <00> info> app: Entering DFU mode.
    00> 
    <00> debug> app: Initializing transports (found: 1)
    00> 
    <00> debug> nrf_dfu_ble: Initializing BLE DFU transport
    00> 
    <00> debug> nrf_dfu_ble: Setting up vector table: 0x000F1000
    00> 
    <00> debug> nrf_dfu_ble: Enabling SoftDevice.
    00> 
    <00> debug> nrf_dfu_ble: Configuring BLE stack.
    00> 
    <00> debug> nrf_dfu_ble: Enabling the BLE stack.
    00> 
    <00> debug> nrf_dfu_ble: No advertising name found
    00> 
    <00> debug> nrf_dfu_ble: Using default advertising name
    00> 
    <00> debug> nrf_dfu_ble: Advertising...
    00> 
    <00> debug> nrf_dfu_ble: BLE DFU transport initialized.
    00> 
    <00> debug> nrf_dfu_flash: Initializing nrf_fstorage_sd backend.
    00> 
    <00> debug> app: Enter main loop
    00> 

    And this is the log from my mobile phone.

    As you can see I tried to connect 4 times. This error code is different than the one I get from the pca10056_s140_ble project.

Children
Related