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

DFU GATT error on nrf51822

I use bootloader example of SDK8.1.0, when I begin OTA, I got GATT error.

I use nRF Toolbox Version1.16.2

here is application upload: dfu_test_app_hrm.bin

here is the init file: manifest.json

how to fix it ? Thank you !

here is the bootloader

Parents
  • Both .json and .bin seems correct. Please try the following steps and see if you get the same GATT error:

    • Load s110 v.8.0.0 and bootloader from SDK 8.1.0
    • Download the dfu_test_app_hrm_s110.zip found in \nRF51_SDK_8.1.0\examples\dfu\ble_dfu_send_hex\test_images_update to your phone.
    • In nrftoolbox select the .zip file, connect to "dfutarg" and start uploading.

    Note that if you're using nRF51 variant with 16K of RAM you need to adjust the linker settings accordingly. Also for custom boards you may not have the external crystal for LF clock(?)

    Linker settings for 16K RAM variants (Cross module optimization must be selected as well):

    image description

Reply
  • Both .json and .bin seems correct. Please try the following steps and see if you get the same GATT error:

    • Load s110 v.8.0.0 and bootloader from SDK 8.1.0
    • Download the dfu_test_app_hrm_s110.zip found in \nRF51_SDK_8.1.0\examples\dfu\ble_dfu_send_hex\test_images_update to your phone.
    • In nrftoolbox select the .zip file, connect to "dfutarg" and start uploading.

    Note that if you're using nRF51 variant with 16K of RAM you need to adjust the linker settings accordingly. Also for custom boards you may not have the external crystal for LF clock(?)

    Linker settings for 16K RAM variants (Cross module optimization must be selected as well):

    image description

Children
  • Firmware updates successfully when I use SDK6 with the example:"Keil\ARM\Device\Nordic\nrf51822\Board\nrf6310\device_firmware_updates\bootloader" in the function ble_stack_init(void) of sdk6 SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, true);

    However I choose sdk 8.1.0,s s110 V8.0.0, I got gatt error when use bootloader by example: "nRF51_SDK_8.1.0_b6ed55f\examples\dfu\bootloader" I find out function "static void ble_stack_init(bool init_softdevice)" has the same code:"SOFTDEVICE_HANDLER_APPSH_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, true);" So I wonder the external crystal is not the key to resolve the question.

  • I have adjust the linker settings,Target Option -->Device tab, I choose nRF51822_XXAA; Target Option -->C/C++ tab --> Preprocessor Symbols I change to "BOARD_PCA10001" however, DFU still got gatt error.

  • Changing the device type will reset the project settings to the default ones. Please try opening a clean project and only change the linker settings.

  • I have uploaded the bootloader that I got gatt error when I DFU. Am I configure wrong ? or how to fix it ? Thank you !

  • I have solved this problem by updating SDK to SDK 9.0.0