Board: PCA10040 (NRF52832)
Compiler: GCC
SDK: 14.1
I'm trying to add the buttonless DFU service to my application and I've had several issues.
First, I have a custom BLE service and the DFU service also requires a custom 128-bit UUID. When I have both of them initialized, the application crashes with "fatal error" and constantly resets.
If I only have my service initialized, everything runs correctly. When only the DFU service is initialized, my device advertises correctly (seen from the nRFConnect app) but once I connect, none of my services appear and nRFConnect shows:
Error 133 (0x85): GATT ERROR
Disconnected
I've modified my code according to this example from Nordic and added the following code to my init function:
err_code = ble_dfu_buttonless_async_svci_init();
APP_ERROR_CHECK(err_code);
after seeing this suggested from another user. This hasn't solved my problem however.
When I program my board, I go through the following steps:
- Program the softdevice (5.0.0)
- Program the bootloader (from the secure_ble_bootloader)
- Program the bootloader settings (generated using nrfutil)
- Program my application
- Reset the board
Has anyone had this problem with the buttonless dfu service?
EDIT: So a quick update. I was able to get everything working. Here's how:
-
I had already changed the sdk_config.h with the values that Hung suggested but I had remembered reading that you needed to change what I assumed was a global "sdk_config.h" in "<sdk_root>/config/sdk_config.h". This is what I was changing the entire time and nothing worked until I changed the local sdk_config.h. So that was dumb.
-
I went through the entire process I listed previously and everything worked after changing my local sdk_config.h.
Thank you for your help Hung!